2007年12月4日
19:25
要点 1.面向对象程序设计(Object-oriented Programming, OOP) 2.人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。 类型:指“所抽象的是什么?” 3.面向对象思想的实质是:程序可以通过添加新类型的对象使自身适用于某个特定问题。 4.OOP运行根据问题来描述问题,而不是根据运行解决方案的计算机来描述问题。但是它仍然与计算机有联系:每个对象看起来都有点像一台微型计算机----它具有状态,还有操作,用户可以要求对象执行这些操作。 5.对象:对象具有状态、行为和标识。 6.面向对象思想的基本特性:
7.每个对象都有一个接口
8.任何程序都是你所设计的系统的一种仿真。 9.接口确定了对某一特定对象所能发出的请求,而决定接口的并使类型(类)。 10.每个对象都提供服务 11.被隐藏的具体实现 访问控制存在的原因:
12.Java使用三个关键字在类的内部设定边界:public private protected 这些访问指定词(access specifier)决定了紧跟其后被定义的东西可以被谁使用。
Java的默认访问权限(没有指定以上关键字): 包访问权限 (类可以访问在同一包--库构建-中的其他类的成员,但是在包之外,这些成员如同指定了private一样)。 12.复用具体实现 新类可以由任意数量、任意类型的其它对象以任意可以实现新的类中想要的功能的方式所组成,这种概念被称为:组合(composition)(has-a 关系) ; 如果组合是动态发生的,那么它通常被称为:聚合(aggregation) 13.在创建新类时,应该首先考虑组合,因为它更加灵活简单,然后再考虑使用继承。 14.继承 基类、超类、父类<---->导出类、继承类、子类 一个基类型包含了其所有导出类型所共享的特性和行为。 使用继承时使基类和导出类产生差异的两种方式:
15.是一个(is-a) 和 像是一个(is-like-a)关系 is-a: 导出类只覆盖基类的方法,导出类和基类具有完全相同的接口,它们是完全相同的类型。---->纯粹替代、替代原则 Is-like-a: 导出类中添加了新的接口元素(接口扩展),基类无法访问新添加的方法。 16.伴随多态的可互换对象 非面向对象编程的编译器参数的函数调用采用:前期绑定 OOP采用:后期绑定(编译器确保被调用方法的存在,并对调用参数和返回值进行检查(强类型),但是并不知道将被执行的确切代码。) 向上转型 17.单根继承结构 除C++以外,所有的OOP语言都是单根继承的。 18.容器 |