一、面向对象的基本概念
对象、类、实例、消息、方法
对象:对象能够表示现实或抽象的事物,具有良好定义的责任和良好定义的行为,以及良好 定义的接口。
对象具有封装性、自治性、通信性、被动性、暂存性、持久性
类:类的定义是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。
实例:每个对象都属于一个类,属于某个类的对象称为该类的一个实例,类和对象间具有 instance-of 关系。
类是静态概念,对象是动态概念。类是 对象之上的抽象,有了类之后,对象则是类的具体化,是类的实例。
消息:消息就是向对象发出的服务请求,它应含有提供服务的对象标识、服务标识、输入信息和回答信息。
消息用来请求对象处理或回答某些信息的要求,消息统一了数据流和控制流。程序的执行是靠在对象间传递消息来完成的。
方法:方法(method)也称作行为(behavior),指定义于某一特定类上的操作与法则。
面向对象的设计方法放弃了传统语言中控制结构的概念,以往的一切控制结构的功能都可以通过对象及其相互间传递消息来实现
二、面向对象的基本特征
封装、继承、多态
封装:封装是面向对象方法的一个重要原则,它有两个含义:第一个含义是,把对象的全部 属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象);第二个含义也称作信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系。
继承:继承是一种使用户得以在一个类的基础上建立新的类的技术。新的类自动继承旧类的属性和行为特征,并可具备某些附加的特征或某些限制。
继承是面向对象语言中功能最强大、最有代表性的特性。首先,继承使新的类变得简洁明了;其次,通过继承可以重复使用和扩展那些经过测试的已有的类,实现重用。最后,是利用继承可以增强处理的一致性。
多态:在收到消息时对象要予以响应,不同的对象收到同一消息可以产生完全不同的结果, 这一现象叫做多态。
三、面向对象的建模
所谓模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书 面描述。通常,模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述 问题域中的术语和概念。更进一步讲,模型是一种思考工具,利用这种工具可以把知识规范地表示出来。
面向对象的建模不仅仅是新的编程语言的汇总,而是一种新的思维方式,一种关于计 算和信息结构化的新思维。面向对象的建模,把系统看做是相互协作的对象,这些对象是结构和行为的封装,都属于某个类,那些类具有某种层次化的结构。系统的所有功能通过 对象之间相互发送消息来获得。面向对象的建模可以视作一个包含以下元素的概念框架: 抽象、封装、模块化、层次、分类、并行、稳定、可重用和可扩展性。
对象模型、动态模型、功能模型
对象模型:对象模型表示静态的、结构化的系统的“数据性质”。
面向对象方法强调围绕对象而 不是围绕功能来构造系统。对象模型为建立动态模型和功能模型,提供了实质性的框架。
动态模型:动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列通常,用状态图来描绘对象的状态、触发状态转换的事件以及对象的行为(对事件的响应)。
功能模型:功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。 通常,功能模型由一组数据流图组成。
三者之间的关系:它使用数据结构(对象模型),执行操作(动态模型),并且完成效据值的变化 (功能模型)。
四、面向对象设计
准则:模块化、抽象化、信息隐藏和封装、对象的高内聚和弱耦合、可扩充性、可重用性。
面向对象设计的内容
五、面向对象的实现
设计风格
提高可重用性
提高方法的内聚、降低耦合
减小方法的规模
保持方法的一致性
尽量做到全面覆盖
分开策略方法和实现方法
利用继承机制
提高可扩充性
封装实现策略
慎用公有方法
控制方法的规模
测试策略
六、面向对象方法学的优点与缺点
优点
1.与人类习惯的思维方法一致
2.稳定性好
3.可重用性好
4.可拓展性
5.可维护性
缺点
1.面向对象需要更关注需求、分析和设计
2.面向对象需要完全改变每一个人的思想
3面向对象需要改变软件开发文化
4.面向对象的许多优点是长期的
5.面向对象要求先在培训、教育和工具上投资
6.面向对象要求更多的测试工作
7.面向对象技术不能保证能构造出正确的系统