面向对象方法(OO):是一种实用的系统化软件开发方法。以客观世界中的对象为中心,其分析和设计思想符合人们
的思维方式,分析与设计的结果与客观世界也比较接近,易于被人接收。
一、面向对象基础
1.1面向对象的基本概念:
面向对象 = 对象(object) + 类(class) + 继承(inheritance) + 消息传递(communication with massages);
对象:客观存在的实体,具有属性(数据 data)和操作行为(方法 function),对象通常由对象名、属性和方法三部分组成。
类:位于对象之上的抽象,类是创建对象的模板,对象是类的实例化。
继承:继承是父类和子类之间共享数据与方法的机制,体现出一种层次关系。
消息传递:对象之间的通信,是通过传递消息实现的。(参数传递)
多态:在收到消息时,对象要与以响应,不同对象在收到同一消息时会产生不同的结果,这一现象称为多态。
1.2面向对象分析(OOA):
目的:为了获取对应问题的理解(确定系统的功能以及性能要求);
组成:认定对象、组织对象、对象间的相互作用、基于对象的操作、定义对象的内部信息;’
1.3面向对象设计(OOD):
含义:设计分析模型以及相应源代码的实现;
1.4面向对象程序设计(OOP):
实质:采用面向对象程序设计语言,运用对象、类、继承等相关概念进程程序设计;(java,C# 等)
类(具有实例化功能,包括实例的产生与消除):(类及其实例的特征)
1)同一类的不同实例具有相同的数据结构(属性和方法名相同);
2)同一类的不同实例具有不同的值(属性值)和状态(方法返回值);
3)实例的初始化可以在实例化时确定(在创建对象时完成初始化);
类的层次结构(继承:分为单继承(java)和多继承(C++)两种):
1)类的定义与继承的定义:
class 类名 extends 父类名 (java)
class 类名 :public[限定符] 父类名 (C++) #类通过关键字class定义;
2)执行顺序(重点):父类静态代码块 > 子类静态代码块 > 父类代码块 > 父类构造 > 子类代码块 > 子类构造;
(即:静态的先执行,其余的按照由父到子的顺序执行,静态变量仅加载一次)
对象、消息传递&方法:对象之间通过消息传递的方式进行通信,对象可以接收识别外部消息,拒绝其不能识别的消息。
对象自身的引用(this):用于表示当前对象,使得方法体中引用的成员名(属性和方法)与特定对象相关。
重写和覆盖(overriding):子类中重新定义父类中已经定义的方法(基本思想动态绑定机制)。
在 C++ 中通过virtual function来定义,在 java 中通过abstract method来定义。
无实例类(抽象abstract类):不能进行实例化的类(此类没有任何实例对象);
1.5面向对象测试
测试要尽可能的早,程序调试是从最底层开始,从单元测试、综合测试到系统测试;(与传统测试基本一致)
面向对象软件测试的分层(4层):
1)算法层(相当于单元测试);2)类层(模块测试);3)模板层(集成测试);4)系统层(系统测试);
二、UML(统一建模语言)
UML的组成要素:UML基本构造块、支配构造块的规则以及运用整个语言的公共机制;(3条)
UML的构造块包含3种:事物、关系和图(事物是模型中最具代表性的成分的抽象,关系将事物连接,图将事物聚集)
2.1事物:(结构事物、行为事物、分组事物、注释事物)
1)结构事物:UML模型中的名词,通常是模型的静态部分,表述概念或物理元素。
常用的结构事务包括类、接口、协作、用例、主动类、构件、制品以及结点。(8种)
2)行为事物:UML模型中的动态部分(动词),包括交互、状态机以及活动。
交互(interaction):在特定语境中完成一定任务的一组对象之间交换的消息。交互涉及到消息、动作序列和链
在图形上用有向直线代表一个消息,箭头上注明消息名称;
状态机(state machine):一个对象或者一个交互在生命周期内响应的事件所经历的状态序列。一个状态机涉及到
的元素包括:转换、事件和活动,图形上状态表示为一个圆角矩形(内部注明状态名或子状态);
活动(activity):计算机执行的步骤序列,每一个步骤称之为一个动作,图形中用圆角矩形表示一个动作。
3)分组事物:UML模型中的组织部分,如 包 package。
4)注释事物:UML模型中的解释部分,便于用户理解,起到解释说明的作用。
2.2关系(依赖、关联、泛化、实现)
1)依赖关系:一个事物(独立事物)发生会影响另一个事物(依赖事物),用虚线箭头表示;
2)泛化关系:泛化表示特殊/一般的关系(继承),用空心三角箭头的实线表示,由子元素指向父元素;
3)关联关系:一种结构关系,表示事物之间存在联系,用实线表示(线上可注明1:1,1;n,m:n 重复度和角色名)
其中聚集是一种特殊的关联,其描述了整体和部分的关系,用菱形空心箭头的实线表示;
4)实现关系:用于接口可实现其的类之间或者用于用例和实现其协作之间,用空心三角箭头的虚线表示;
2.3UML中的图
在UML中提供了13种图:类图、对象图、用例图、序列图、通信图、状态图、活动图、构件图、部署图、组合结构图
包图、交互概览图以及计时图。其中序列图、通信图、交互概览图和计时图称为交互图;
类图:展现一组对象、接口、协作以及它们之间的关系;
类名 |
属性名:属性类型 ...... |
方法名() ....... |
接口用圆形表示,类与类之间通过关系相互连接(关系上注明关系名以及重复度)
对象图:描述某一时刻对象以及它们之间的关系;
用例图:参与者、用例、系统边界以及关系(箭头)组成;(<<extend>>扩展关系,<<include>>包含关系)
交互图:对系统的动态方面进行建模,由一组对象和它们之间的关系组成(包括它们之间可能传递的消息)
状态图:展现了一个状态机(由状态、转换、事件组成)
活动图:一种特殊的状态图,展现了系统内一个活动到另一个活动的流程;
(初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示)
构件图:展现一组构件之间的组织和依赖。
组合结构图:用于描述一个分类器的内部结构,分类器和系统中其他组成部分的交互端口;
部署图:用于对面向对象系统的物理方面的建模方法,展现运行时处理结点及其构件的配置。
包图:用于吧模型本身组织成层次结构的通用机制,不执行,体现由模型本身分解而成的组织单元及其域来关系;
类图,对象图,用例图,部署图,构件图,包图为静态图 状态图 ,顺序图,活动图,协作图为动态图;
三、设计模式
设计模式的核心:提供相关问题的解决方案,使人们可以更加简单方便的复用承购的设计的体系结构;
创建型与对象的创建有关;结构型处理类或对象的组合;行为型对类或对象如何交互和怎样分配职责进行描述。
3.1设计模式的要素(4条)
1)模式名称;2)问题;3)解决方案;4)效果;