《写给大家看的面向对象编程书》读书笔记【含思维导图】
内容简介
《写给大家看的面向对象编程书(第3版)》是一部独具特色的面向对象技术著作。书中结合代码示例生动透彻地讲述了面向对象思想的精髓,让读者真正学会以对象方式进行思考。此外,《写给大家看的面向对象编程书(第3版)》还讨论了各种与面向对象概念密切相关的应用主题,包括XML、UML建模语言、持久存储、分布式计算和客户/服务器技术等。《写给大家看的面向对象编程书(第3版)》内容精炼,示例简单明了,适合各层次面向对象开发人员阅读,也是高校相关专业面向对象课程的理想教学参考书。
阅读完整理了几张思维导图,可以帮助理解整个OO设计各个概念之间的关系
其他零碎的一些笔记,某些概念附带超链接
1.OO和过程式程序设计的区别:在OO设计中,属性和行为都包含在一个对象中(称为封装),而在过程式程序设计(结构化设计)中,属性和行为是分开的。
2.在OO设计术语中,数据称为属性,行为称为方法。
3.获取方法和设置方法提供了对对象的数据的一种受控访问,获取方法和设置方法有时分别称为访问方法和修改方法。
4.类是对象的模板。当创建一个对象时,称为对象被实例化。必须在创建对象前先设计类。
5.类的数据由属性表示。每个类必须定义属性来存储由这个类实例化的各个对象的状态。
6.要实现数据隐藏,所有属性都应当声明为private。在大多数OO语言中,接口中的方法都指定为public。
7.超类(或父类或基类)包含继承自该类的所有子类(或派生类)共同的属性和行为。
8.在大多数OO语言中,一个类只能有一个父类——单重继承。有些语言(如C++)则允许一个类有多个父类——多重继承。
9.初始化顺序:①对象的初始化顺序:先静态成员,再非静态成员,再构造方法;②继承中构造方法的调用顺序: 先父类,再子类。
10.如果一个子类从超类继承了一个抽象方法,它就必须为这个方法提供具体实现。
11.a.构造函数(constructor)指一个与其所在类同名的方法,且该方法没有提供任何返回类型。构造函数是类的入口点,对象由此构建。构造函数非常适合完成初始化。new关键字用于类的实例化并分配所需的内存。
Cabbies myCabbie = new Cabbie();
b.初始化是构造函数完成的一个常见功能。如果没有为Cabbie类提供一个构造函数,就会自动插入以下默认构造函数
public Cabbie()
{
super();
}
c.如果类中有属性,好的实践往往是在构造函数中初始化这些属性。
d. 使用多个构造函数(重载方法):利用函数不同的签名。签名 =方法名 + 参数列表
public String getRecord(int key)
e. 超类如何构造:①调用该类超类的构造函数;②初始化对象的各个类属性;③执行构造函数中的其余代码
12.实现细节对用户是隐藏的。实现的任何部分可以改变而不影响类的用户接口。接口包含调用一个方法以及返回一个值的语法。如果这个接口没有改变,用户就不关心实现是否发生了改变。
13.对象持久性(object persistence)指保存对象的状态,从而可以在以后恢复并使用。方案①,将对象保存到平面文件(使用专有的串行化技术或者使用可以跨多个平台和语言的XML模型);方案②,写至关系数据库。
14.OO设计的目标是设计抽象、高度可重用的类。
15.尽可能为用户提供最小接口。确定最终的接口是一个迭代的过程。
16.异常粒度:可以捕获不同粒度的异常。可以捕获所有异常也可以只检查某些异常。
17.this:关键字是当前对象的一个引用,而super:表示当前对象父类对象的引用 。
18.静态属性:为该属性分配一段内存用于由这个类实例化的所有对象,该属性由该类的所有对象共享。这有些接近全局数据的概念。
19.操作符重载(operator overloading)可以改变一个操作符的含义,如"+"可以用作加号,也可以用作字符串拼接。大多数OO语言并不允许操作符重载。
20.a.继承和组合存在的最主要原因可能就是对象重用。继承——is-a关系;组合——has-a关系。
b.继承是子类使用父类的方法,而多态则是父类使用子类的方法。重载、重写、继承、多态的区别
Triangle tri = new Triangle(); //继承
Shape shape = new Triangle(); //多态
c.重载是在一个类里一系列名字相同参数不同的方法,而重写(override)是指子类的实现替代父类中的实现,继承后重新实现父类的方法。
d.Object类在Java和.Net环境下是所有类的基类。
21.每个新的继承关系都会为继承方法的使用建立一个新的上下文。需要为每一个这样的上下文考虑一个完整的测试策略——测试新的代码。
22.创建可重用代码的一种方法就是创建框架。框架的思想围绕着即插即用和重用原则。可以用接口和抽象类来创建框架。
23.契约(contract):要求开发人员遵守应用编程接口规范所需的机制。在.Net中,实现契约两种方法:抽象类和接口。
24.继承是一种严格的is-a关系,但接口不是。接口可以跨多个类。
25.a.XML(extensible markup language)是不同系统之间定义和传输数据的一种标准机制,面向对象数据定义语言。
b.HTML表示数据,XML描述数据(格式化数据),还可以用CSS辅助格式化数据(侧重于显示的样式)。与HTML相比,XML提供了合法性检查——DTD(Document Type Definition)。为了能够验证文档使得XML文档更为健壮,需要在DTD中定义用来描述数据的标记。
26.含有抽象方法的类必然是抽象类,而抽象类的方法不一定都是抽象方法。抽象类不能被实例化。抽象类不能是密封的或静态的,抽象类被子类继承并实现它的方法。
只有虚方法或静态方法可以被重写,抽象方法可以看成是没有实现体的虚方法。基类的抽象方法需要子类去实现,而虚方法已经在基类中实现,子类是否选择覆盖基类方法取决于子类的需求。抽象方法和虚方法的区别
27.面向对象的三大特征:①封装:保证对象自身数据的完整性、安全性;②继承:建立类之间的关系,实现代码复用、方便系统的扩展;③多态:相同的方法调用可实现不同的实现方式。面向对象的多态性
28.密封类是类的一种,用sealed修饰,不能用作基类。因此,它也不能是抽象类。密封类主要用于防止派生。
29.访问修饰符
---------------------------THE END--------------------------------