`
文章列表
方法调用绑定 将一个方法调用同一个方法主体关联起来被称作绑定。若在程序执行前进行绑定,叫做前期绑定。读者可能以前从来没有听说过这个术语,因为它是面向过程的语言中不需要选择就默认的绑定方式。 上面问题的解决办法就是后期绑定,它的含义就是在运行时根据对象的类型进行绑定。后期绑定也就做动态绑定或运行时绑定。如果一种语言想实现后期绑定,就必须具有某种机制,一遍在运行时能判断对象的类型,从而调用恰当的方法。也就是说,编译器一直不知道对象的类型,但是方法的调用机制能找到正确的方法体,并加以调用。后期绑定机制随编程语言的不同而有所不同,但是只要想一下就会得知,不管怎样都必须在对象中安置某种“类型信息”。 ...
第一种方法非常直观,就是组合。第二种方法就是继承。 组合只需将对象的引用置于新类中即可。 初始化基类 当创建了一个导出类的对象时,该对象包含了一个基类的子对象。这个子对象与你用基类直接创建对象是一样的。 ...
如果将两个含有相同名称的类库以“*”形式同时引入,将会出现什么情况呢?如果同时引用了一个类,那么就会产生冲突。如: Vactor v = new Vactor();  但是如果改成:java.util.Vactor()冲突就解决了。 定制工具库 可以使用import static 语句在你的系统上使用静态的方法: import static com.neu.edu.Print.*; 上面的Print是一个类,此时在下面的方法中就可以直接使用Print类里面的静态方法了。 public接口访问权限 package access.dessert; public class Cookie { ...
用构造器确保初始化 注意,由于构造器的名称必须与类名完全相同,所以“每个方法首字母小写”的编码风格并不适合于构造器。 区分重载方法 参数顺序不同也足以区分两个方法。不过一般情况下不要这么做。 设计基本类 ...
臭名昭著的goto public class LabeledFor { public static void main(String[] args) { int i = 0; outer: for(;true;) { inner: for(; i<10; ) { System.out.println("i = " + i); if(i == 2) { System.out.println("continue"); continue; } if(i ...
提升 如果对基本数据类型执行算术运算或按位运算,大家会发现,只要类型比int小(即char byte short),那么在运算之前,这些值会自动转化成int。这样一来,最终生成的结果就是int类型。如果想把结果赋值给较小的类型,就必须使用类型转换。通常,表达式中出现的最大的数据类型决定了表达式最终结果的数据类型。 当两个足够大的int类型进行相加的时候,可能出现溢出,但是不会出现异常等。 如果两个操作数中一个是double类型的,另一个操作数就会转换为double类型。 否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型。 否则,如果其中一个操作数是long类型 ...
储存到什么地方 栈放引用,堆放对象。 基本类型的变量不用new来创建,而是创建一个并非是引用的自动变量。这个变量直接存储“值”,并置于栈中,因此更加高效。 基本成员默认值 若类的某个成员是基本数据类型,即使没有进行初始化,java也会确保它获得一个默认值,如下: Boolean false; char \uoooo null;  byte (byte)0;  short (short)0;  int 0; long oL;  float 0.0f;  double 0.0d 然而上述确保初始化的方法并不适用于“局部”变量。因此如果在某个方法定义中有: int x; 那么 ...
Alan Kay曾经总结了第一个成功的面向对象语言,Smalltalk的五个基本特性 1.万物皆为对象。 2.程序师对象的集合,它们通过发送消息来告知彼此所要做的。 3.每个对象都有自己的的由其他对象所构成的存储。 4.每个对象都拥有其类型。 5.某一特定类型的所有对象都可以接受同样的消息。 每个对象都提供服务 当正在试图开发或理解一个程序设计时,最好的方法之一就是将对象想象为“服务提供者”。程序本身将向用户提供服务,它将通过调用其他对象提供的服务来实现这一目的。你的目标就是去创建能够提供理想的服务来解决问题的一系列对象。
通俗地讲,用例是文本形式的情节描述,用以说明某参与者使用系统以实现某些目标。 定义:参与者、场景和用例 参与者是某些具有行为的事物,可以是人、计算机系统或组织,例如收银员。 场景是参与者和系统之间的一系列特定的活动和交互,也称为用例实例。场景是使用系统的一个特定情节或用例的一条执行路径。例如,使用现金成功购买商品的场景,或者由于信用卡付款被拒绝造成的购买失败场景。 用例就是一组相关的成功和失败场景集合,用来描述参与者如何使用系统来实现其目标。 用例是文本文档,而非图形;用例建模主要是编写文本的活动,而非制图。 用例的主要思想是:为功能性需求编写用例,从而降低详细的老式特性列表的重要性 ...
定义:需求 需求就是系统必须提供的能力和必须遵从的条件。 需求不应该是一开始就确定的,需求也是应该是迭代了。应该符合“我与企业共成长”的主题。 需求分析的最大挑战是寻找、沟通和记住什么是真正需要的,并能够清楚地讲解给客户和开发团队的成员。 需求的类型和种类 功能性:特性、功能、安全性 可用性:人性化因素、帮助、文档 可靠性:故障频率、可恢复性、可预测性 性能:相应时间、吞吐量、准确性、有效性、资源利用率 可支持性:适应性、可维护性、国际化、可配置性 FURPS+中的“+”是指一些辅助性的和次要的因素,如: 实现,接口,操作,包装,授权。 UP制品如何组织需求: 用例模型: ...
在OO开发中,至关重要的能力就是熟练地为软件对象分配职责。 《UML和模式应用》这本书给我们了9中基本指导原则,并将他们称之为GRASP,这些原则都有各自的名称,如信息专家和创建者等。 首先我们需要明确一点,什么是分 ...
17. JavaScript中的继承。 1) 对象冒充 <html> <head> <script type="text/javascript"> function Parent(username) { this.username = username; this.sayHello = function() { alert(this.username); } } function Child(username, password) { ...
JavaScript中定义对象的几种方式(JavaScript中没有类的概念,只有对象): 1) 基于已有对象扩充其属性和方法(就是给属性和方法赋值): <html> <head> <script type="text/javascript"> var object = new Object(); object.n ...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title> New Document </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content=""> <meta nam ...
2. JavaScript中有五种原始数据类型:Undefined、Null、Boolean、Number以及String。 3. Undefined数据类型的值只有一个:undefined。 4. Null数据类型的值只有一个:null。 5. Boolean数据类型的值有两个:true和false。 6. JavaScript中没有char数据类型。 7. typeof是一元运算符,后跟变量的名称,用于获取变量的数据类型,其返回值有5个:undefined、boolean、number、string以及object。 8. 在JavaScript中,如果函数没有声明返回值,那么会返回unde ...
Global site tag (gtag.js) - Google Analytics