一、了解什么是面向对象的软件开发方法
答:1、OOSD是一种把面向对象的思想应用于软件开发过程,是一种当今成熟的、普遍流行的软件开发方法
2、面向对象方法的解决思路是从现实世界中的客观对象入手,尽量运用人类的自然思维方式来构造软件系统。是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。
3、面向对象方法中,把一切都看成是对象。对象是功能抽象和数据抽象的统一,较过程稳定。
二、面向对象软件开发的主要思想
答:1、按照人类的自然思维的方式,对客观世界建立软件模型。
2、客观实体和实体之间的联系构成了现实世界的所有问题。
3、面向对象技术将现实世界中的实体及相互关系映射为对象及对象间的关系,实体间的相互作用被映射为对象间的消息发送等。
三、面向对象方法的主要优点
答:(1)把易变的数据结构和部分功能封装在对象内并加以隐藏
i、保证了对象行为的可靠性。
ii、对其修改并不会影响其它对象,有利于维护,对需求变化有较强的适应。
(2)封装性和继承性有利于复用对象
i、把对象的属性和操作捆绑在一起,提高了对象(作为模块)的内聚性,减少了与其它对象的耦合,为复用对象提供了可能性和方便性。(高内聚,低耦合)
ii、在继承结构中,特殊类对一般类的继承,本身就是对一般类的属性和操作的复用。
四、面向对象开发方法的组成
答:(1)OOA(Object-Oriented Analysis)面向对象的分析
(2)OOD(Object-Oriented Design)面向对象的设计
(3)OOP(Object-Oriented Program)面向对象的程序设计
五、掌握面向对象的核心元素有哪些?
1、对象 2、类 3、抽象 4、封装 5、继承 6、接口 7、多态性消息 8、结构与连接
六、什么是对象?
答:1、客观世界里的任何实体都可以被称为对象。
2、软件中的对象是与应用问题(问题域或实现域中)有一定关联的某个事物,是事物的一种抽象描述。不同的角度和不同的问题域对一个对象的描述有所不同。
3、对象是一个封装数据属性和操作行为的实体。
4、对象可以是具体的、有形的物,也可以是无形的事物或概念。
5、对象的标识(名字)
对象的状态(属性描述和属性值)
对象的行为(操作行为)
七、什么是类?
答:1、类是对一类具有相同特征的对象的描述
类共享相同的属性、操作、关系,以及用来描述对象集合的语义,并定义每个对象的结构和行为。
2、类的属性
i、属性是类的特征或特性。
ii、属性的值是某一特定对象的属性值,不同对象属性值可以有所不同。
3、类的行为(操作、方法)
i、操作访问或修改对象的属性值。(封装性)
ii、一个类的所有对象都可以使用在这个类中定义的操作。
八、什么是抽象?
答:1、抽象是抽取对问题域有帮助的对象属性和行为。
2、抽象是从众多的事物中抽取出共同的、本质性的特征。
3、问题域不同,抽象程度不同,抽象结果也不同。
九、什么是封装?
1、封装的含义
数据抽象(对象属性和方法的结合)
信息隐藏
2、封装的目的
将对象的使用者和对象的设计者分开,使用者不必知道行为实现的细节,只需用设计者提供的消息来访问该对象。
把定义和实现分开,可以大大提高软件的可维护性、可修改性。
十、什么是继承
1、继承指子类自动获得父类中定义的数据、方法和关系,并可以添加新的成员的机制。
2、起始类称为基类、超类、父类或者泛化类,而继承类称为派生类、子类或者特化类。
3、继承可以帮助我们借助已知和熟悉的事物理解新的事物。
4、继承可提高软件的可复用性。
5、继承简化了对现实世界的描述,定义子类时只需专注于自己特有的属性和操作。
6、继承具有传递性。
7、继承关系表示类之间的层次关系。
类间具有共享特征
类间具有差别或新增部分
类间具有层次关系
8、继承的好处
i、通过继承可实现代码复用和扩展,可降低软件开发和维护的费用,继承是OO技术和非OO技术的一个很明显的区别。
ii、继承的另一个好处是可以保证类之间的一致性,父类可以为所有的子类定制规则,子类必须去遵守这些规则。
如C++中的虚函数(抽象类–纯虚函数),Java中的接口。
iii、子类继承一个或多个父类,从而实现了不同的抽象层次,实现多态处理。
9、继承可分单继承和多继承。
i、单重继承:子类只有一个父类
ii、多重继承:子类可以有多个父类
十一、什么是接口
1、接口是一组没有相应方法实现的操作,非常类似于仅包含抽象方法的抽象类。
2、接口是对对象行为的描述,但是并不给出对象的实现和状态。(通俗的说,接口只是说明函数应该做什么what,但没有定义函数如何做how。)
3、接口一般只包含操作而不包含属性。
4、一个类可以实现多个接口。一个接口可以被多个类实现。
5、使用接口比使用抽象类要安全得多,因为它可以避免许多与多重继承相关的问题。
6、如果需要几个类共享公共基类中没有的一些特性,且希望确保每个类自己实现这些特性,就应使用接口。
7、Java和C#等新型编程语言允许类实现多个接口,但只能继承一个通用或抽象类。
十二、什么是多态
1、多态性定义:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
2、多态性是“一个接口,多种实现方法”。
3、使用接口可以实现多态。
4、接口支持“即插即用(plug and play)”的结构。
5、多态性的实现方式
通过接口实现多态性
通过继承实现多态性
通过抽象类实现的多态性
6、多态性的优势
i、面向对象技术正是利用多态提供的动态行为特征,来封装变化,适应变更,以达到系统的稳定。
ii、增加了面向对象软件系统的灵活性。
iii、进一步减少了信息冗余。
iv、提高了软件的可重用性和可扩展性。
v、面向对象的设计原则充分体现了多态性的运用。
十三、什么是消息
1、每个对象都至少与另一个对象联系,孤立的对象是无用的。
2、对象一旦建立了联系,就可以协作完成复杂的任务。
3、对象之间是通过相互发送消息进行协作的。
4、消息是向对象发出的服务请求。
5、消息传递机制:一个对象发送一个操作消息给另一个对象,接收消息的对象就执行此操作。
6、消息的属性:消息名、接受对象的标志、服务(方法)标志、输入信息、回答信息等。
7、一个对象能够接收多个形式、内容不同的消息。
8、相同形式的消息可以发送给不同的对象。
9、不同的对象对于形式相同的消息可以有不同的解释,做出不同的反应。(多态形式)
10、注意:消息和函数存在区别
i、消息可以包括同步消息和异步消息。
ii、如果消息是异步的,则一个对象发送消息后,就继续自己的活动,不用等待消息接收者返回控制,而函数调用往往是同步的,消息发送者要等待接收者返回。
十四、什么是结构和连接
1、问题域中对象关系之间的描述
对象的分类关系、对象之间的组成关系,对象属性之间的静态关系,对象行为之间的动态关系。
2、面向对象方法用以下四种方法描述对象之间的关系。
(1)一般/特殊结构
(2)整体/部分结构
(3)实例连接
(4)消息连接
3、一般/特殊结构又称做分类结构,是一组由一般/特殊关系的类所组成的结构。(UML中的泛化关系)
4、整体/部分结构又称为组成、组合结构,描述对象之间的组成关系。
5、实例连接反映对象和对象间的静态关系。
6、消息连接描述对象之间的动态联系。一个对象需要另一个对象对它提供服务。
消息连接是有向。连接从消息发送者指向消息接收者。