版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象分析与设计面向对象要素什么是对象?从人类认知的角度来说,对象应是以下之一:可触摸或可见的东西可以被理性理解的东西可以进行想象或施加动作的东西第2页,共67页,2024年2月25日,星期天什么是对象?(续)具有良好定义的封装了状态和行为边界的具体实体,类的实例。对象具有状态、行为和唯一标识。类似对象的结构和行为在它们的共同类里定义。术语“实例”和“对象”是可以互换的。对象代表了一个单独的、可确认的物体、单元或实体,它可以是具体的也可以是抽象的,它在问题领域里有确切定义的角色。第3页,共67页,2024年2月25日,星期天状态对象的状态包括对象的(通常是静态的)所有属性和这些属性的当前(通常是动态的)值。属性是一种内在的或独特的性质、特点、质量或特征,它构成一个独一无二的对象。第4页,共67页,2024年2月25日,星期天行为行为是一个对象根据它的状态改变和消息传送所采取的行动和所作出的反应。对象的行为代表其对外的可见和可测试的活动。对象的行为通常表现为操作的执行,操作的执行结果与对象所处状态密切相关,而执行操作后常常反过来改变对象的状态。第5页,共67页,2024年2月25日,星期天操作的类型修改器—改变对象状态的操作选择器—获取对象的状态但不修改其状态的操作。迭代器—允许按预定的顺序访问对象所有部分的操作。构造器—创造一个对象或初始化对象状态的操作析构器—释放对象状态或销毁对象自身的操作。第6页,共67页,2024年2月25日,星期天对象的特点对象拥有区别其它对象的唯一标识;对象拥有状态,存在从创建到销毁的生命周期;对象负有确定的职责并表现出特定的行为;对象对外提供服务,同时也可以将一定责任委派给其它对象;对象都能被归类;对象将内部结构细节对外封闭;对象将实现与接口分离;第7页,共67页,2024年2月25日,星期天对象的生命周期对象拥有从创建、经历一系列状态变迁直到销毁的生命周期;例子是一个FILE对象的状态转换图,描述了它的整个生命周期第8页,共67页,2024年2月25日,星期天对象间的关系与协作对象总是以群体的方式而存在(单个对象是没有意义的),对象之间的协作是通过消息的传递来实现的;消息是由发送对象向接收对象发出的调用某个操作的请求,一般由接收对象名、调用操作名和相关参数组成;第9页,共67页,2024年2月25日,星期天消息对象通过其提供的服务在系统中发挥作用系统中的一个对象请求另一个对象执行某个服务时,该对象响应这个请求,完成服务在OO方法中,把向对象发出的服务请求称为消息目前在大部分面向对象的编程语言中,消息可以与函数(或过程)调用对应在语法上,一条消息应包括 •消息名、入口参数和返回参数
在语义上,一条消息应包括 •发送者、接收者和其它需传送的信息第10页,共67页,2024年2月25日,星期天消息第11页,共67页,2024年2月25日,星期天什么是类?共享相同属性、操作、方法、关系或者行为的一组对象的描述符。相同类的所有对象必须具有相同的操作集合、相同的属性集合以及相同的关系集合。一个对象是一个类的实例.一个类是一个抽象,它:强调相关的特性隐藏不相关的特性第12页,共67页,2024年2月25日,星期天类间的关系关联继承聚合使用实例化元类第13页,共67页,2024年2月25日,星期天类间的关系-关联类之间的静态联系称作关联关联是最普通的也是语义最弱的是概念(对象)之间的一个有意义或者使人产生兴趣的连接类间关联的识别通常是分析和早期设计的活动,可以帮助我们理解概念模型第14页,共67页,2024年2月25日,星期天类间的关系-关联(1)建立关联原则识别概念比识别出关联重要得多关联太多不仅不能有效展示概念模型,反而会使概念模型变得混乱注意力集中在那些需要将概念之间的关系信息记忆一段持续时间的关联要避免关联之间的信息冗余以及减少派生关联第15页,共67页,2024年2月25日,星期天类间的关系-关联(2)关联的类型一对一一对多多对多StorePOSTSalePayment11111..*1..*ContainsCapturesPaid-by第16页,共67页,2024年2月25日,星期天类间的关系-继承继承关系的建模要保证确实存在”isakindof”的关系继承关系中,子类可以替代父类,反之则不可第17页,共67页,2024年2月25日,星期天类间的关系-聚合一个(较复杂的)对象由其它若干(较简单的)对象构成称为聚合关系语义是”hasa”或”isapartof”聚合刻画了现实事物之间的构成关系第18页,共67页,2024年2月25日,星期天类间的关系-聚合(续)简单聚合:
–描述松散、灵活的关系,例如公司与法律顾问 –部分对象和整体对象都是独立定义和创建的,在整体对象中设立一个属性,它的值是部分对象的标识,或者是指向部分对象的指针 –在这种形式中,一个部分对象可以属于多个整体对象,生命期可以不同组合:
–描述紧密、固定的关系,例如汽车与发动机 –用部分对象的类作为一种数据类型,用于定义整体对象的类的属 性,构成嵌套对象。 –在这种形式中,一个部分对象只能属于一个整体对象第19页,共67页,2024年2月25日,星期天类间的关系-聚合(续)第20页,共67页,2024年2月25日,星期天类之间的关系Dependency(依赖)体现“暂时使用”的含义,或者B的变更会导致A的变更是一种暂时的关系可以有以下几种实现方式对象具有“全局”范围,系统中的任何对象都可以向它发送消息一个对象可以作为一个参数传递给第二个对象对象可以在操作内创建和破坏(即“临时”对象)Association(关联)体现“use”的含义实现:类A的定义中有类B的指针变量第21页,共67页,2024年2月25日,星期天类之间的关系Aggregation(聚合)体现“Isapart-of”(包含、拥有)的含义Composition(组合)体现“Isapart-of”(包含、拥有)的含义组合与聚合的区别是组合的整体和部分的object具有相同的生命周期,而聚合则不同Generalization(泛化)或Inheritance(继承)体现“Isakindof”的含义子类不仅继承了超类的attribute和operation,同时还继承了超类的relationship
类之间关系的强弱顺序依赖<<关联<<聚合<<组合<<继承
第22页,共67页,2024年2月25日,星期天类之间关系相关的其它概念
Role(角色)表示参与关联关系的对象在关联关系中承担的角色
Multiplicity(多重性)表示类A的一个object对应类B的几个object,代表的是businessruleNavigability(导向性)表示对象访问的方向右图中0..1表示一个类B的对象可以对应0个或1个类A的对象0..n表示一个类A的对象可以对应类B的0个或多个对象关系上的箭头就是navigability,表示类A的对象可以访问类B的对象,但是类B的对象不能访问类A的对象,如果关系上没有箭头,表示Navigability是双向的第23页,共67页,2024年2月25日,星期天类和对象的关系每个对象都是某个类的实例,每个类都有零个或多个实例。类是生成对象的模板类是静态的。所以它们的存在、语义和关系都在程序执行之前就是确定的。对象是动态的,在应用程序的生命周期中被创建和销毁。第24页,共67页,2024年2月25日,星期天对象模型的要素主要要素抽象封装模块化(聚集)层次(继承)次要要素类型定义并发性持久性第25页,共67页,2024年2月25日,星期天抽象抽象表示一个对象与其他对象相区别的基本特征,因此提供同观察者角度有关的清晰定义的概念界限。为给定域指定正确的抽象集合是面向对象设计的核心问题。抽象来自于对真实世界中特定对象、情况或过程之间的相似性的认识,并决定专注于这些相似性而忽略存在差异的时刻。第26页,共67页,2024年2月25日,星期天抽象的种类实体抽象一个对象,用来表示问题域或解决方案领域中实体的有用模型行动抽象一个对象,提供一组泛化的操作,其中所有操作都执行同类功能虚拟机器抽象一个对象,将全部由某个高层控制使用的操作组合在一起,或是将全部使用某个低层操作集合的操作组合在一起重合抽象一个对象,将互不关联的一组操作打包第27页,共67页,2024年2月25日,星期天封装封装是划分抽象的结构和行为元素的过程。封装用来分离抽象的契约接口和它的实现。所谓封装是指将特性(属性、行为)在物理上局限于一个单独的黑盒抽象中,且将它们的实现(和相关的设计决定)隐藏于公共接口背后;在面向对象的范式中,从系统、子系统到对象都拥有封装的特性。第28页,共67页,2024年2月25日,星期天封装(续)封装多是由信息隐藏得到的,通过信息隐藏达到封装,信息隐藏的过程就将对象的所有与其最基本的特征无关的秘密隐藏起来。通常,对象的结构和它的方法实现都是隐藏的。每个类必须有两部分:接口和实现类的接口仅捕获它的外观,并包括类的所有实例都有的行为的抽象。类的实现包含抽象的表示法及得到所需行为的机制第29页,共67页,2024年2月25日,星期天抽象vs封装抽象和封装都是一种简化问题的思维模式抽象剔除了不相关的内容,以突出重点;相对应地,封装则隐藏了相关但不需要被知道(不能被剔除)的内部细节,以减少依赖。抽象和封装是两个互补的概念。抽象注重着重于对象的可观察行为封装着重于引起这种行为的实现第30页,共67页,2024年2月25日,星期天模块化模块化是被分解成具有内聚性但松散耦合的模块的系统特性。模块化的实质-分而治之。模块化是指将程序分成若干模块,这些模块可独立编译,但与其它模块又有联系。分解模块的较好办法是将在逻辑上相关的类和对象放到同一个模块中,只显示出那些其他模块绝对要看到的要素。分解成模块的总目标是通过允许独立设计和修改模块来削减软件成本,每个模块的结构应尽量简单而便于被充分理解。第31页,共67页,2024年2月25日,星期天模块化(续)将某种复杂的事物分解为可以管理的分块第32页,共67页,2024年2月25日,星期天层次层次是抽象的排列或排序。所谓层次化是指任何组织成为一种树状结构的抽象级别或顺序;两个最重要的层次类结构(“是一个”层次)对象结构(层次的“一部分”)第33页,共67页,2024年2月25日,星期天层次化(续)在面向对象的范式中,层次结构包括:聚合层次结构包容层次结构类层次结构泛化层次结构继承层次结构具体化层次结构划分层次结构类型层次结构第34页,共67页,2024年2月25日,星期天示例:层次化在层次结构中级别相同的类应当处于同样的抽象级别第35页,共67页,2024年2月25日,星期天对象模型的通俗理解第36页,共67页,2024年2月25日,星期天对象模型的通俗理解通过通俗简单的生活事例来演绎对象建模的基本概念。树立面向对象的世界观。掌握用面向对象方法分析问题的要领。为学习对象建模方法热身。第37页,共67页,2024年2月25日,星期天建模就是认识现实世界客观世界世界主观世界认识世界改造世界世界是什么样的呢?第38页,共67页,2024年2月25日,星期天不同类型的人有不同的世界观E=MC2事物,运动矛盾,变化,发展X+Y=Z1+1=?类,关联,对象持不同的世界观就会得到对现实世界的不同认识—— 建立不同的世界模型。第39页,共67页,2024年2月25日,星期天只存在同一个现实世界所以,模型没有对错、只有符合建模人目的多少之分。第40页,共67页,2024年2月25日,星期天软件人的目的现代目的: 在计算机中模拟现实世界的物和事。传统目的: 控制计算机运行。第41页,共67页,2024年2月25日,星期天站在六个角度来看待事物A.这里面有什么东东?B.每个东东看上去是什么样的?C.每个东东能做点什么用?D.这些东东都呆在什么地方?E.这些东东之间有什么关系?F.这些东东是怎么成事的?FACEBD举例说明……第42页,共67页,2024年2月25日,星期天“昨天我的一个朋友结婚了”这里面有什么东东?月老,小伙,姑娘,恋人,玫瑰花。每个东东看上去是什么样的?月老,看上去有些年纪了,挺热心的。小伙,看上去很强壮,很实诚的。姑娘,看上去好漂亮,还很温柔。恋人,看上去很黏糊,当然就结婚了。玫瑰花,火红火红的,难怪姑娘动情了。本故事纯属虚构,如有雷同,请莫对号入座……第43页,共67页,2024年2月25日,星期天每个东东能做点什么用?月老:牵线搭桥,介绍认识。小伙:追求献花,表达爱意。姑娘:仰慕倾情,以身相许。恋人:拍拖…结婚。玫瑰花:令姑娘头晕,传情示爱。第44页,共67页,2024年2月25日,星期天这些东东都呆在什么地方?月老:婚介所,交友网站。小伙:软件园,住唐家。姑娘:人民医院,住新香洲。恋人:情侣路,电影院,…玫瑰花:花店里,小伙手中,姑娘手中。第45页,共67页,2024年2月25日,星期天这些东东之间有什么关系?关系月老小伙姑娘恋人玫瑰月老干妈舅妈撮合者没关系小伙干儿子男友老公男主角买送主姑娘外甥女女友太太女主角受主恋人作品组合组合使用者玫瑰没关系信物受物心意信物第46页,共67页,2024年2月25日,星期天这些东东是怎么成事的?月老牵线搭桥,介绍小伙和姑娘认识;姑娘和小伙一见钟情,成为一对恋人;一对恋人开始拍拖;小伙追求献花,表达对姑娘的爱意;姑娘收到999火红玫瑰,激动得头晕目眩;小伙真心求婚,姑娘以身相许;一对恋人终于走入婚姻殿堂。第47页,共67页,2024年2月25日,星期天用面向对象世界观看事物的答案A.这里面有些什么东东?答:这里面有的都是事物。注:如果第一个翻译Object的人不翻译为“对象”,而是把它翻译为“事物”就好了,这样就可以省掉这个问题。如上例,有月老,小伙,姑娘,恋人,玫瑰等事物(对象)第48页,共67页,2024年2月25日,星期天B.每个事物看上去是什么样的?每个事物看上去都有自己的属性,在每个属性上都有一个特征值。如上例中:月老,有属性:年纪,特征值:较大;小伙,有属性:体格,特征值:强壮;姑娘,有属性:性情,特征值:温柔;恋人,有属性:关系,特征值:黏糊;玫瑰花,有属性:颜色,特征值:火红。第49页,共67页,2024年2月25日,星期天C.每个事物能做点什么用?每个事物都具备某种能力;这些事物有什么用,就要看它有什么能力了。注:如果第一个翻译Method的人就把它翻译为“能力”就好了,这样也可以省掉这个问题。如上例中:月老有牵线搭桥,介绍认识的能力(方法);小伙有“追求”的能力,姑娘有“嫁人”的能力;恋人有“拍拖”的能力,玫瑰有“示爱”的能力。第50页,共67页,2024年2月25日,星期天D.这些事物都呆在什么地方?每个事物都会有它合理的或者必须的空间位置和逻辑位置。尤其当这些位置对事物的行为造成重要影响的时候,表明他们的位置是极其重要的。面向对象的世界观中叫事物的部署。第51页,共67页,2024年2月25日,星期天E.这些事物之间有什么关系?事物之间的关系非常多,面向对象的观点一般分为主要的三类:整体-部分关系,甲是乙的一个组成部分。如恋人和小伙,恋人和姑娘的关系。笼统-具体关系,甲是乙的一个特例。如人和小伙,人和月老,人和姑娘的关系。伙伴关系,甲会对乙做点什么。如月老和小伙、姑娘,小伙和玫瑰,小伙和姑娘的关系。第52页,共67页,2024年2月25日,星期天F.这些事物是怎么成事的?每个事物都会尽量利用伙伴的能力;整体事物的能力依靠部分事物的能力;笼统事物的属性和能力就是具体事物的属性和能力;具体事物除了有笼统事物的属性和能力外,还可以有自己特殊的。事物分工协作,互通信息,共同完成整体的目标。第53页,共67页,2024年2月25日,星期天俗语对术语的映射俗语术语例子出了什么事?用例我的一个朋友结了婚。具体事物对象我的一个朋友,他未婚妻…事物类型类小伙,姑娘,玫瑰,月老…属性属性年龄,体格,性情…能力方法牵线,追求,结婚…位置部署软件园,情侣路…整-部关系聚集关系恋人-小伙,恋人-姑娘笼-具关系继承关系人-小伙,人-姑娘伙伴关系关联关系小伙-姑娘,小伙-玫瑰成事过程用例实现相识,相恋,结婚第54页,共67页,2024年2月25日,星期天术语的图形符号类名属性方法A属性方法B属性方法A是B的聚集A属性方法B属性方法B继承了A,A是B的泛化A属性方法B属性方法A与B有关联对象名第55页,共67页,2024年2月25日,星期天用术语来建模还是问上述六个问题;可以打乱顺序问,同时问;顺着知道答案的问题问下去;把答案用术语的图形记下来。用术语图形再次演绎古典浪漫爱情故事……第56页,共67页,2024年2月25日,星期天“我的一个朋友结婚了”A.这里面有什么东东?我我的朋友我朋友的妻子故事与“我”无关,去掉“我”,我的朋友是小伙,他妻子是姑娘,于是得到两个类:姑娘小伙第57页,共67页,2024年2月25日,星期天他们怎么就成了?他们已经拍拖两年了,如胶似漆,你情我愿,不就成了。拍拖必须是一对恋人所为,于是出来:旁白:一对恋人是由一个姑娘和一个小伙组成,一对恋人能够拍拖
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绿氢产业未来展望
- 计算机研究方向及就业
- 2026年高职(兽药生产与营销)兽药生产工艺综合测试题及答案
- 微波与天线就业解析
- 2026 八年级下册《生物多样性保护》课件
- 电工安全管理培训
- 2026年软件开发维护合同协议
- 就业指导课程讲解
- 江苏省定额学习资料
- 腊八节主题活动策划方案
- 安徽省专升本英语词汇表词汇表
- 2025年危险品水路运输从业资格考试复习题库(共500题)
- 股票市值管理协议书
- 多轴加工项目化教程课件 项目三 任务3-2 三叉右阀体的多轴加工
- 2024年甘肃省兰州市城七里河区小升初数学试卷
- MOOC 职场英语-西南交通大学 中国大学慕课答案
- 三年级寒假阅读与写作专项提高资料汇编
- 高考地理一轮复习课件运用水循环环节及其影响因素分析相关现象++
- 人像摄影的造型技巧课件
- 广东工商职业技术大学辅导员考试真题2022
- 国家开放大学《应用概率统计》综合作业1-4参考答案
评论
0/150
提交评论