面向对象方法学(2)

9.2.2对象 类及类之间的分析

1、类与对象的关系

类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体,对象又称为是类的一个实例,类又称为是对象的模板,类与对象的关系示意图9.5图

同类对象具有相同的属性和服务,是指它们的定义形式相同,但并不表示每个类对象的属性值都相同。

类是静态的,类的语义和类之间的关系在程序执行之前已经定义,但对象是动态的,在程序执行过程中可以动态地创建和删除对象。

类代表一类抽象的概念或事物,对象是在客观世界中实际存在的类和实例,分析和设计中不需要逐个对对象进行说明,着重描述代表一批对象共性的类。

2、类与类之间的关系

(1)继承(Inheritance)

继承是指能够直接获得已有的性质或特征,而不必重复定义它们,继承是子类自动共享父类中的定义的数据和方法的机制,从子类抽取共同通用的特征形成父类的过程也叫做泛化,继承可以表示类与类接口与接口之间,或类与接口之间实现关系,泛化关系是从子类指向父类的与继承或实现的方法相反,例图9.6所示,为继承关系示意图

具有继承关系的类之间,具有共享特性,又具有差别或新增部分,并且类之间具有层次结构,具有传递性,当一个类只有一个父类时为单继承,有多个父类时为多重继承,例图9.7所示

 

(2) 多态性(Polymorphism)

指在父类中定义的属性或操作被子类继承后可以具有不同的数据类型或表现出不同的行为,多态性指的是使一个实体在不同上下文条件下具有不同意义或用法的能力。

多态性是一个重要的概念,由消息的接受者确定一个消息如何解释,而不是由消息的发布者确定,发送者指需知道另外的实例可以执行一种特定操作即可。

多态性的实现有两种形式:编译时多态性和运行时的多态性,编译时的多态性是指在程序编译阶段就可以确定的多态性,由重载机实现,包括函数重载和运算符重载。

运行时的多态性:指导程序运行时才可以确定的多态性,有继承性结合虚函数的动态绑定技术实现。

(3)关联

是模型元素的一种语义联系,它是对具有共同的机构特性,行为特性、关系和语义的连接(link)的描述,相互关联的两个对象间的连接是关联的一个实例。

关联体系的是两个类之间语义级别的强依赖,不存在依赖关系的偶然性,也不是临时性,一般是长期的,双方关系一般是平等的,关联可以是单向的,双向的,关联关系由关联类A指向关联类B带箭头实现便是,例图9.9所示

(4)依赖

依赖就是一个类A使用到另一个类B,这种关系是具有偶然性的,临时性的,非常弱的。但是类B的变化会影响到类A,假如类A的某个方法中使用了类B,那么久说明类A依赖于类B,它们是依赖关系,类A的某个方法使用类B,可能是方法的参数是类B,也可能是在方法中获得一个类B的实例,无论那种情况类B在类A中都是以局部变量的形式存在,因此类A中有B类型的局部变量,就是说类A依赖于类B.

在UML类图设计中,依赖关系用带箭头虚线表示,箭头表示依赖,箭头的指向被依赖的类,参见图9.10

(6) 聚集(Aggregation)与组合(Composition)

一个类有时可以由一个或多个部分类组成,这种表示组成关系的整体和部分之间的关联又可以细分为聚集和组成,在UML中聚集表示为空心菱形,组合表示为实心菱形,如图9.12所示

关联和聚合(聚集和组合) 的区别如下

①关联和聚合在代码层面的表现是一致的,只能从语义级别来区分关联的两个对象之间一般是平等的,聚集则一般不是平等的,表示一个对象是另一个对象的组成部分。

②关联是一种结构化的关系,指一种对象和另一种对象有联系。

继承与实现体现的是一种类与类或类与接口之间的纵向关系,其他4种(组合、聚集、关联、依赖)表示的是类与类或类与接口之间的引用横向关系,四者之间的强弱关系依次为:组合>聚集>关联>依赖。

9.2.3典型的面向对象开发方法

1、Booch方法

面向对象的软件分解更接近对客观事物的理解,而功能分解只通过问题空间的转换来获得,Booch方法把系统的开发工作分为“微观过程”和“宏观过程”两个部分,参见图9.13图

Booch方法采用的对象模型要素包括:封装、模块化、层次类型、并发等重要的概念,模型是类和对象、类和对象的特征,类和对象之间的关系,使用的图形文档包括6种:类图、对象图、状态转换图、 交互图、模块图和进程图。

设计部分可以分为:逻辑设计和物理设计,其中逻辑设计包含类图文件(描述类与类之间的关系)和对象图文件(描述实例和对象间传递信息)物理设计包含了模块图文件(描述构件)和进程图文件(描述进程分配处理器的情况)用来描述软件系统结构。

Booch方法实施过程,第一步在一定抽象层确定类(从问题域中找出关键的对象和类)第二步确定类和对象的含义(从外部研究类、研究对象之间的协议)第三定义类与对象的关系、第四步实现系统中的类与对象 第五步 给出类的界面与实现,实施过程参见图9.14

2、Coad/Yourdon方法(简称Coad或OOAD方法) 

OOAD是一种逐步进阶的面向对象建模的方法,集中于建立类和对象模型,优点:在对象、结构、属性和操作的认定方面,提出了一套系统的原则,Coad方法主要由面向对象分析OOA和面向对象设计OOD构成,强调OOA和 OOD采用完全一致的概念和表示法,使分析和设计之间不需要表示法的转换。

Coad方法主要包括两个过程OOA 和OOD

1)OOA(面向对象分析)建立概念模型由类与对象属性,服务结构和主题5个分析层次组成,模型示意图参见9.15

OOAD方法的分析过程跟Booch一样,第一步要在给定的抽象层次上发现类和对象,第二步在类和对象的基础上识别类的层次结构,识别整体与部分之间的关系结构。第三部就是主题划分通过主题划分来整个大系统分解为若干主题的子系统,第四部定义属性,即定义对象的数据或状态信息,第五步定义服务,所谓服务就是对象的具体行为。

(2) OOD(面向对象设计)

OOD的设计模型在面向对象分析的5个层次基础上由4个部件组成,问题域部件、人机交互部件、任务管理部件、数据管理部件。

问题域部件设计的目的是了解开发系统的应用领域,即在客观世界中由该系统处理的业务范围,在此基础上让对面向对象分析的5个层次不断完善。

人机交互部件:即对人机交互界面的设计,包括问题域与用户,系统外部和专用设备,磁盘文件和数据管理界面等。

任务管理部件设计:明确划分任务的类型,并把任务分配到硬件或软件上去,包括任务的运行和任务的交互管理等。

数据管理部件即各种数据的存储的设计,通常有文件系统和数据库管理系统两类存储模式。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值