华南理工大学UML-2面向对象方法学_第1页
华南理工大学UML-2面向对象方法学_第2页
华南理工大学UML-2面向对象方法学_第3页
华南理工大学UML-2面向对象方法学_第4页
华南理工大学UML-2面向对象方法学_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件需求分析与建模-面向对象方法学概述主讲:( )2022年8月27日1内容面向对象方法学的基本要素对象概念OOA、OOD和OOP信息系统建模1. 面向对象方法学的要素31.1 对象:世界由对象构成对象是面向对象开发模式的基本成份。每个对象可用它本身的一组属性和它可以执行的一组操作来定义。属性一般只能通过执行对象的操作来改变。操作又称为方法或服务,它描述了对象执行的功能,若通过消息传递,还可以为其它对象使用。1.2 类:物以类聚类是一组具有相同数据结构和相同操作的对象的集合。类的定义包括一组数据属性和在数据上的一组合法操作。类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象。

2、在一个类中,每个对象都是类的实例 (Instance),它们都可使用类中提供的函数。对象的状态则包含在它的实例变量,即实例的属性中。例: class Post_office private : loc_type location ; emp_type employee ; public : void send (req_type request, money_type payment); void sell (int goods, money_type payment) ; ; main ( ) Post_office My_PO ; req_type My_request ; money_t

3、ype My_payment ; My_PO.Send ( My_request, My_payment) ; 继承(inheritance):类可分层,下层子类与上层父类有相同特征,称为继承。继承是使用已存在的定义做为基础建立新定义的技术。新类的定义可以是既存类所声明的数据和新类所增加的声明的组合。新类复用既存的定义,而不要求修改继承类。既存类可当做基类来引用,则新类相应地可当做派生类来引用。1.3 继承:世界的相似性与多样性使用继承设计一个新类,可以视为描述一个新的对象集,它是既存类所描述对象集的子集合。这个新的子集合可以认为是既存类的一个特殊化。Quadrilateral类是Polygo

4、n类的特殊化。Quadrilateral是限制为四条边的多边形。我们还可以进一步地把类Quadrilateral特殊化为Rectangle 。类Quadrilateral的界面可以等同于类Polygon的界面,而Rectangle类的界面又与Quadrilateral类的界面相同。新类的界面还可以被看做是既存类界面的一个扩充界面。例如,从一个既存的车辆类派生的四轮驱动车类可能不仅是车辆类子集合定义的特殊化,而且还可能在新类的界面中引入新的能力。在类的继承层次中,Quadrilateral的实际参数可以替换Polygon的形式参数。类Quadrilateral的界面与类Polygon的界面是相容

5、的Quadrilateral的界面可响应Polygon界面的所有消息。 1.4 消息:合作之道消息(message):对象间只能通过发送消息进行联系,外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。消息是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。发送给一个对象的消息定义了一个方法名和一个参数表(可能是空的),并指定某一个对象。一个对象接收的消息则调用消息中指定的方法,并将形式参数与参数表中相应的值结合起来。例如,要获取一个人的身高,可以使用以下语句:aPerson.getHeight(aUnit);关联和聚合对象与对象之间

6、通过消息传递机制形成了不同的关系,这些关系可根据强弱程度分为:关联(Association)和聚合(Aggregation).1.关联:是一种弱的连接关系,不构成完全的依赖关系。(例如,汽车和乘客,或者教室与学生,书架与书)2.聚合:是一种强关联关系,表示“拥有”关系或整体与部分的关系;通常用于将不同的对象通过聚合关系形成一个整体,即形成了“部分-整体”的层次结构”(例如汽车,电脑,微波炉)通常还存在另外两种关联关系,称为组合(Composition)和依赖关系(Dependency)3.组合:表示一种强得多的“拥有”关系,在一个组合关系里面,部分和整体的生命周期是一样。(例如,人和四肢,树和

7、树叶,公司和部门)在Java语言里面,聚合和组合从语法上是没办法区分的,需要考察类之间的逻辑关系。4.依赖关系:依赖总是单向的,表示一个类依赖于另一个类的定义。(例如人可以买房或买车)依赖关系:Public class PersonPublic void buy (Car car)Public void buy(House house)关于重用面向对象方法中的两种主要重用方式:(1)继承;(2)组合/聚合。一般的重用类别:(1)Copy & Paste;(2)函数重用;(3)类库;(例如JDK)(4)组件、构件或中间件;(如IBM MQ)(5)设计模式;(6)框架;(例如EJB,VCL,STL

8、)2. 对象概念21f1f2f3fifnSgi(X,S)S输出输出1、Object : = ID + Method + Attribute + Message特点:以数据为中心,不设与数据无关的操作;Object主动处理而不 被动地等待被处理,外部只能通过message请求操作;具有黑盒性:外部操作时,无须知道该object内部的数据结构及算法;具有并行性:不同object各自独立地处理自身数据,彼此间仅通过传递message完成通信;模块独立性好: 内聚强( )、耦合松( )2、Class:具有相同数据和相同操作的一组对象;3、Instance:某个class描述的具体对象;4、Messag

9、e: = object_ID. method_ID (parameter(s);5、Method: object能做的操作,亦称为service 、responsibility, 在 class 中须定义相应的代码;6、Attribute :object 的固有数据; 7、Inheritance:子类自动共享父类的attributes 和methods ,而不必重复定义。类和对象对象实体类抽象数据类型计算机世界实例化抽 象映 射映 射现实世界类和对象的关系每一个对象都是某一个类的实例每一个类在某一时刻都有零个或更多的实体类是静态的;它们的存在、语义和关系在执行前就已经定义好了对象是动态的; 它

10、们在程序执行时可以被创建和删除Class 中国人中国人 Attributes中国人 Methods张山 (instance) Class 中国人 张山的 AttributesClass 上海人 (子类)上海人 Attributes 上海人 Methods Class 中国人李士 (instance) 中国人李士的 Attributes上海人李士的 Attributes Class 上海人例:特点:若上海人的 methods中有与中国人的同名,则李四使用该 method 时以上海人为准,不执行中国人中定义的同名 method。传递性(transitivity):AB、BC AC, 一个 clas

11、s 继承了上层全部 classes 的一切性质。一个子类只 有 一 个父类称为单 继 承 (single inheritance), 一个子类可有多个父类称为多重继承(multiple inheritance). 注意:multiple inheritance 在定义中应避免二义性(ambiguity),即二个父类中定义重名,但各具不同性质。FemaleChineseScholarICardDeckGraphicalObjectGraphicalDeckMethod:Draw := take a card from a deckMethod:Draw := displaya graphical

12、 objectMethod:Draw := ?例:8 多态Polymorphism:以不同方式响应同一消息的不同对象,使对象可以不必知道相互的类型而交互不同层次的 classes 可共享一个method名,但按各自的方式来实现这种 method。C+ 中定义了虚函数(virtual function)来实现这一功能。即一个method有多个版本,运行时才决定执行哪一个。故亦称为动态联编(dynamic binding)或滞后联编(late binding)修改与扩充可以很容易地通过派生子类来完成范例:多态class abstract Shape public abstract void dra

13、w();class Rectangle extends Shape / 覆盖(override)基类方法 public void draw() . /* 绘制矩形 */ class Circle extends Shape / 覆盖(override)基类方法 public void draw() /* 绘制圆形 */ 应用多态性假设我们有一个数组sharr,里面放着一排Shape,但是不知道哪些是Rectangle,哪些是Circle。利用多态性,我们可以:for (int i = 0; i sharr.length; +i) Shape shape = (Shape)sharri; sha

14、pe.draw();遍历整个数组的过程中,各个Shape自己知道应当如何在画布上绘制自己。shape.draw()这同一行代码在shape指向不同的对象时表现出不同的行为,这就是所谓多态性double avg (const double a , int size) ;double avg (const int a , int size) ;double avg (const double a , int size) ; double sum = 0.0 ; for ( int i = 0; i size; +i ) sum += ai ; return ( sum / size ) ; dou

15、ble avg (const int a , int size) ; int sum = 0 ; for ( int i = 0; i size; +i ) sum += ai ; return ( (double) sum / size ) ; main() int k3 = 1, 2, 3 ; double x3 = 1.1, 2.2, 3.3 ; cout avg(k, 3) “ int average n” ; cout avg(x, 3) “ double average n” ;9、Overloading Function (or parameter) overloading :不

16、同函数共用一个名字,而调用参数的特征不同。例: Operator overloading : 同一运算符 (operator)作用于不同类型的操作数 (operand) 上面。在编译(compile)阶段就决定了使用类型及执行代码,故亦称为静态联编 (static binding)或先前联编 (early binding) 。 3. 面向对象的分析/设计/编程353.1 概述面向对象的分析(OOA)分析问题论域,找出问题解决方案,发现对象,分析对象的内部构成和外部关系,建立软件系统的对象模型面向对象的设计(OOD)根据已确定的系统对象模型,运用面向对象技术,进行系统软件设计面向对象的编程(OO

17、P)在软件生命周期全过程运用面向对象方法L.M.Northrop:“尽管面向对象语言正取得令人振奋的发展,但编程并不是软件开发问题的主要根源。需求分析与设计问题更为普遍并且更值得解决。因此面向对象开发技术的焦点不应该只对准编程阶段,而应更全面地对准软件工程的其他阶段。面向对象方法真正意义深远的目标是它适合于解决分析与设计期间的复杂性并实现分析与设计的复用。面向对象的开发不仅仅是编程,必须在整个软件生命周期采用一种全新的方法,这一观点已被人们所接受。软件工程百科全书纽约,1994面向对象的分析面向对象的设计面向对象的编程面向对象的测试面向对象的软件维护3.2 面向对象的分析1. 问题论域分析业务

18、范围,业务规则,业务处理过程,确定系统的责任,范围和边界,确定系统的需求2. 发现和定义对象和类识别对象和类,确定它们的内部特征:属性和操作,这是一个抽象过程3. 识别对象的外部联系对象与对象,类与类之间的各种外部联系,包括一般与特殊,整体与部分,实例连接(关联),消息连接等4. 建立系统的静态结构模型对象类图和对象图,系统与子系统结构图等,绘制相应的图5. 建立系统的动态行为模型对象之间的交互关系等3.3 面向对象的设计设计对象和类具体设计对象和类的属性,操作,设计对象与类的各种外部联系的实现结构,设计消息与事件的内容、格式等设计系统结构设计组件与子系统,以及它们的相互的静态和动态关系设计问题论域子系统负责领域的业务服务设计人机交互系统设计数据管理子系统设计任务管理子系统进程管理设计优化,提高系统性能详细的面向对象设计与语言有关。一般地,所有的语言都可以完成面向对象实现,但某些语言能够提供更丰富的语法,能够显式地描绘在面向对象分析和面向对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论