面向对象讲解(2)

 

概念讲解

泛化(Generalization

o_Generalization.gif

图表1 泛化

在上图中,空心的三角表示继承关系(类继承),在UML的术语中,这种关系被称为泛化(Generalization)。Person()是基类,Teacher(教师)Student(学生)Guest(来宾)是子类。

若在逻辑上BA的“一种”,并且A的所有功能和属性对B而言都有意义,则允许B继承A的功能和属性。

例如,教师是人,Teacher Person的“一种”(a kind of )。那么类Teacher可以从类Person派生(继承)。

如果A是基类,BA的派生类,那么B将继承A的数据和函数。

如果类A和类B毫不相关,不可以为了使B的功能更多些而让B继承A的功能和属性。

若在逻辑上BA的“一种”(a kind of ),则允许B继承A的功能和属性。

 

聚合(组合)

o_aggregationBase.gif

图表2 组合

若在逻辑上AB的“一部分”(a part of),则不允许BA派生,而是要用A和其它东西组合出B

例如,眼(Eye)、鼻(Nose)、口(Mouth)、耳(Ear)是头(Head)的一部分,所以类Head应该由类EyeNoseMouthEar组合而成,不是派生(继承)而成。

 

聚合的类型分为无、共享(聚合)、复合(组合)三类。

 

聚合(aggregation

 

o_aggregation.gif

图表3 共享

上面图中,有一个菱形(空心)表示聚合(aggregation)(聚合类型为共享),聚合的意义表示has-a关系。聚合是一种相对松散的关系,聚合类B不需要对被聚合的类A负责。

 

组合(composition

o_composition.gif

图表4 复合

这幅图与上面的唯一区别是菱形为实心的,它代表了一种更为坚固的关系——组合(composition)(聚合类型为复合)。组合表示的关系也是has-a,不过在这里,A的生命期受B控制。即A会随着B的创建而创建,随B的消亡而消亡。

 

依赖(Dependency)

o_Dependency.gif

图表5 依赖

这里 B A 的关系只是一种依赖 (Dependency) 关系,这种关系表明,如果类 A 被修改,那么类 B 会受到影响。


欢迎您使用http://Blogmove.cn提供的"博客搬家"和"博文三窟"服务.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ooa(object oriented analysis)面向对象分析 ood(object oriented design)面向对象设计 如所熟知,面向对象作为一种程序设计技术最早于60年代后期提出,用于Simula的应用程 序开发。到了70年代,面向对象成为Smalltalk语言的一个重要特征。当时,面向对象技术主要 用于程序设计。进入90年代,人们的注意力逐渐从程序设计转向系统分析和设计,用对象的观 点来认识现实世界、设计问题的可行解,随之也就出现了许多OOA和OOD方法。但这些方法 还不很成熟,在OOA与OOD的边界划分上也存在着争议。如:有人认为面向对象软件开发 过程可以分为面向对象分析、面向对象设计和面向对象程序设计三个阶段;有人认为分析和设 计可以交叉进行不必做严格区分;还有人沿用传统方法进行分析和设计,用面向对象程序设计 语言来实现系统。O OA/OOD的一些较有代表性的工作有Gray.Booch的OOAD方法,Coad&Yourdon的 OOA和OOD方法,Shlaer&Mellor的OOA方法,Rumbaugh的OOAD方法等。不同的方法 体系都分别体现了人们对OOA、OOD,以及面向对象软件开发过程的不同认识。本文的主要 目的就是,试图通过对现有OOA与OOD方法的共性进行纵观分析,弄清二者之间的边界问 题,评析从OOA到OOD过渡的难易,并讨论实现这种过渡所涉及的主要工作。 ooa:分析阶段所做的主要工作是理解问题和需求构模,将现实世界中的问题映射到问题域。在该 阶段,要明确用户提出了哪些功能要求,为完成这些要求,系统应有哪些构件,采用什么样的结构,并写出详细的需求规约。OOA中引入了许多面向对象的概念和原则,如,对象、属性、服务 、继承、封装等,并利用这些概念和原则来分析、认识和理解客观世界,将客观世界中的实体抽 象为问题域中的对象,即问题对象,分析客观世界中问题的结构,明确为完成系统功能,对象间 应具有的联系和相互作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值