版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 面向对象的分析与设计方法第一节 面向对象方法的基本概念1、对象:是系统中用于描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务构成。2、属性:用来描述对象静态特征的一个数据项。3、服务:用来描述对象动态特征的一个数据项。4、封装:就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。5、可见性:指对象的属性和服务允许对象外部存取和引用的程度。6、消息:就是向对象发出的服务请求。7、类:是具有相同属性和服务的一组对象的集合,他为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。8、实例:类的一
2、个成员对象。9、一般类和特殊类(超类和子类):不同对象既具有共同性又具有特殊性,运用抽象原则,舍弃对象的特殊性,抽取其共同性,则得到一个适应一批对象的类,则该类为一般类。在该类范围内,考虑定义该类时舍弃的某些特殊性,则该类中,有一部分对象具有这些特殊性,这部分对象构成一个新的类,它是前一个类的子集,称作一般类的特殊类。10、继承:即特殊类的对象拥有一般类的全部属性和服务。第二节 发现对象1、对象可以是:物理的和概念的,例:人、组织、物、事件等;2、出发点:问题域和系统责任。 问题域:客观存在与系统对象的映射;系统责任:责任由那些对象来完成;3、抽象原则:围绕系统责任目标进行抽象,且先松后紧,即
3、选出各种可能的侯选对象,再审查筛选。4、方法:名词分析法(注意考虑隐含的名词)5、审查与筛选:A、属性包含有用的信息且可以定义成适用所有场合的公共属性; 或 B、有能改变其属性值的操作且该操作能被定义为公共服务;6、精简:只有一个属性或只有一个服务的对象。 例:班主任 班7、对象的简单定义: 例:学生:当前已经被大学录取,有资格进行注册的人。8、发现SRS对象学生注册系统需求分析我们被要求为大学开发一个自动化学生注册系统(SRS),这个系统将使学生可以在线注册每个学期的课程,也可以用于跟踪学生的学习进展,直至其获得学位。当学生被大学录取后,学生使用SRS建立学习计划,即确定满足特定学位所需要的
4、课程,并选择一名导师。SRS要检验所提出的学习计划是否满足该学生所希望获得的学位的要求。一旦建立了学习计划,则在以后每个学期的注册期间学生都可以在线查看课程计划,选择要选修的课程,如果课程由多名教授讲授,则还可以指定听课时间(星期几、几点)。SRS要参考学生所完成课程的成绩单(学生可以随时查看自己的成绩单),检验学生是否满足所申请课程的必要的预修条件。若1、所要求的预修课程都已修完;2、课程在该学生的学习计划之内;3、课程尚有空位;则学生可以参加听课。如果1、2条件满足,但3不满足,则该学生要放到一个先入先出的等待队列中。如果学生以前所等待的课程可以提供(或者由于某学生取消了听课计划,或者由于
5、该课程的听课位置增加了),则该学生会被自动录取到所等待的课程中。只要允许学生听课,则SRS向该学生发送E_mail通知。如果该学生不再对该课程感兴趣,可以最迟在学期的第一个星期末决定退出所选的课程,否则,若学生被允许听课,则学生要为该课程付费。隐含:班、教室类清单:课程、课程计划、学习计划、教授、学生、班、成绩单第三节 定义属性一、策略1、按一般常识这个对象应该有哪些属性;2、在当前的问题域中这个对象应该有哪些属性;3、按系统的责任要求这个对象应该有哪些属性;4、建立该对象是为了保存和管理哪些信息;5、为实现其功能应增加哪些属性;6、对象有哪些需要区别的状态,是否需要增加一个属性来区别这些状态
6、。二、审查与筛选1、该属性是否体现了以系统责任为目标的抽象;2、该属性是否描述了对象本身的特征;3、该属性是否破坏了对象特征的原子性;4、该属性是否可以从其他属性中导出;三、属性的详细说明1、属性的命名;2、属性的解释;3、属性的数据类型;4、实现要求及其他;四、定义SRS各对象属性ProfessorSSNNameTitleSectionNoDayofweekTimeofdaySemesterRoomSeatingcapacitySectionCourseCourseNoCourseNameCreditsStudentSSNNameMajorDegree详细说明:Section.Timeofd
7、ay:授课时间(范围),例如下午24时;Section.Seatingcapacity:注册某个班所允许的最大学生数量;Professor.SSN:唯一的社会安全号码;Student.Major:学生的主修专业,例如“计算机科学与技术”(假设一名学生只有一个专业)第四节 定义服务一、策略1、考虑系统责任和问题域:设置这个对象的目的是什么?若是完成某些功能,则由哪些服务来完成这些功能;若是保存某些信息,那么系统怎样运用这些信息,是否需要对这些信息进行某种计算或加工,然后向对象外部提供,怎样提供?对象在问题域中有哪些行为,应该设置何种服务来模拟这些行为?2、分析对象状态:分析对象所能呈现的每一种状
8、态,考虑在每一种状态下对象可以发生什么行为?应该由什么服务来描述?对象由一种状态转换到另外一种状态是由什么操作引起的?是否设置了相应的服务?3、追踪服务的执行路线:分析员把自己设想成当前服务的执行者,模拟每个服务的执行,并追踪服务的执行路线,直至全部服务都被模拟过。用于发现遗漏的服务。二、审查与调整1、按照系统责任要求检查每个服务是否有用;2、检查每个服务是否是高内聚的:三、服务的详细说明1、服务解释:该服务的作用与功能2、消息协议:给出服务的入口消息格式,服务名称、输入输出参数、参数类型3、消息发送:指出在这个服务执行时,需要请求哪些别的对象服务4、约束条件:四、SRS的部分服务1、Stud
9、ent的部分服务添加班:addSection注销班:dropSection是否被批准:isEnrolledIn打印成绩单:printTranscript2、Section的部分服务招收学员:enroll(Student s)显示学员列表:displayStudentRoster()确认空座:confirmSeatAvailability()注销学生:drop(Student s)给定成绩:getGrade(Student s)第五节 一般特殊结构一、对象与外部的关系1、对象之间的分类关系,即对象之间的一般特殊关系,用一般特殊结构表示(分类结构)2、对象之间的组成关系,即整体部分关系,用整体部分
10、结构表示(装配结构)3、对象之间的静态联系,即通过对象属性反映的联系,用实例连接表示一般类特殊类特殊类4、对象之间的动态联系,即对象行为之间的依赖关系,用消息连接表示二、一般特殊结构表示法三、发现一般特殊结构1、学习当前领域的分类学知识:植物分类法、图书分类法等2、按常识考虑事物分类:例如人,可按人种分,按年龄段分,按性别分等;3、回顾一般特殊类的定义4、考察属性和服务:例,公司人员具有属性姓名、身份证、股份、工资等,但股份仅适用于股东,而工资适用于职工,则建立如下结构: 公司人员股东职员姓名身份证号股份工资分红5、考虑领域范围内的复用:(类构件)例:某超市使用的现钞收款机具有属性A、B、C、
11、D、E、F,服务X、Y、Z。其中属性A、B、C,服务X、Y是任何收款机所共有的属性和服务,而属性D、E、F和服务Z是现钞收款机所特有的属性和服务。则可定义收款机类和现钞收款机类,构成一般特殊结构,这样收款机类成为可供本领域其他系统复用的领域构件。四、审查与调整1、问题域是否需要这样的分类:书善本书2、系统责任是否需要这样的分类:职员生产人员、营销人员3、是否符合分类学常识:A是一种B4、是否构成了继承关系:船航标船五、简化交通工具汽车飞机发动机载重量速度飞行高度运输自动导航汽车汽车飞机发动机载重量速度飞行高度运输自动导航交通工具汽车飞机发动机载重量速度飞行高度运输自动导航1、特殊类没有自己特殊
12、的属性和服务(学生大学生、研究生)2、某些特殊类之间的差别可以通过一般类的某个属性值体现(人,性别、国籍)3、一般类下只有一个特殊类(收款机现钞收款机)通常一般类应符合:它有两个或以上的特殊类或需要用它创建对象实例或者有助于软件复用,才有存在价值。六、多继承人学生教职工身份证号姓名学号班级专业单位专业工作量在职研究生教学系数在职研究生身份证号姓名学号班级专业单位专业工作量教学系数多继承存在命名冲突,所以标准JAVA不支持多继承,通过接口完成相应功能。第六节 整体部分结构一、表示法整体对象部分对象MN连接符两端的字母或数字表示结构中对象实例的多重性,即位于连接符一端的对象实例要求另一端多少个对象
13、实例与自己进行整体部分组合。固定数量:固定数字;不定数量:M,N;固定范围:下界,上界;例4,6;不定范围:1,M;0,N;二、实现方式1、嵌套对象:用部分对象类作为数据类型;2、对象指针:指向部分对象的指针;整体对象 部分对象 整体对象部分对象 部分对象 部分对象三、发现整体部分结构1、物理上的整体事物和它的组成部分:汽车发动机、轮胎、车身2、组织机构和它的下级组织及部分:学院系3、团体与成员:班学生4、一种事物空间上包容其它事物:车间厂房、机器、人5、抽象事物的整体与部分:书章6、具体事物和它的抽象方面:人员身份、职责、奖罚四、审查和筛选1、是否属于问题域:如公司业务管理系统中,家庭职员;
14、2、是否是系统责任的需要:如工会员工;3、部分对象是否具有一个以上的属性:轮胎规格4、是否有明显的整体部分关系:学生课程五、用途1、基本用途:表达问题域中事物之间的组成关系2、简化对象定义:飞机有50个属性,20个服务,其中与发动机和导航仪有关的属性各有10个,服务各有5个,则可建立发动机类和导航仪类,然后使用整体部分结构与飞机组合,简化了飞机的定义。3、支持软件复用:图4、表示数量不定的组成部分;书章5、表示动态变化的对象特征:人员由营业员变为会计师、经理;机床车床刨床钻床送料车起重机电动机六、两种结构的关系汽车冷藏车制冷设备汽车制冷设备冷藏车冷藏车汽车制冷设备一般特殊结构是特殊类经过继承而
15、拥有一般类的特征;整体部分结构是整体对象通过组装而拥有部分对象的特征;表达自然是选用结构的标准;七、SRS中的整体部分结构1、成绩单与成绩单记录2、课程计划与班3、学习计划与课程第七节 实例连接一、简单的实例连接1、实例连接:用于表达对象之间的静态联系,静态联系是指最终可通过对象属性来表示的一个对象对另一个对象的依赖关系。例:教师指导学生毕业设计、某课程是另外课程的预修课、两个城市间有航班等。2、表示法城市0,m0,m有航线教师学生0,m1指导论文类1类2mn连接名称在具有实例连接的类之间画一条连接线把它们连接起来;连接线的旁边给出表明其意义的连接名;在连接线的两端用数字标明其多重性。一对一连
16、接:一对多连接:多对多连接:3、实现方式实例连接一般可用对象指针实现,即在被连接的两个类中选择一个,在它的对象中设立一个指针类型的属性,用于指向另一个类中与它有连接关系的对象实例。一般可在多重性1端的对象中建立指针。若系统要求从两个方向都能快速地相互查找和引用,则两个对象都要建立指针。4、与整体部分结构的异同二、复杂的实例连接1、表示法mn类1类2连接名称1连接属性连接服务教师学生0,m1指导论文1论文题目答辩时间成绩2、 用对象表示实例连接的复杂性教师学生0,m1毕业论文1论文题目答辩时间成绩1120,m航线距离班次城市三、多元关联某人使用某语言从事某项目;任务项项目名人员语言语言项目人员某
17、公司委托某代理商在某公证机构的监督下为某个项目招标;招标事件公司项目代理商公证机构验收公司项目代理商公证机构方法:在多元关联的汇集点增加一个对象,使之转化为二元的实例连接,新增这个对象的属性是分别指向每个元的对象指针。四、多对多实例连接教师课程0,m1,n任务书主讲教师课程五、对象、属性的增补1、对象增补:复杂实例连接、多元关联、多对多实例连接要求增加一些新的类2、属性增补:每一个实例连接,应该在它的某一端(若要求相互引用则是两端)所连接的对象类中增加相应的属性,其类型应被说明为指向另一端的对象指针。六、实例连接说明详细说明实例连接的实际意义。七、SRS的实例连接1、教授教班,一个教授可教多个
18、班,每个班一个教授教,是一对多实例连接,由于系统责任要求能够从两个方向都能快速地相互查找和引用,则两个对象都要建立指针,故教授设立teaches属性,班设立instructor属性。PersonSSNNameProfessorTitleteachesStudentMajorDegreeTranscriptattendsPlanOfStudyProfessor StudentCourseCourseCourseNoCourseNameCreditsprerequisitesOfferedAsSectionSectionSectionNoDayOfWeekTimeOfDayRoomSeatingC
19、apacityRepresentedCourseenrolledStudentsofferedIninstructorassignedGradesTranscriptTranscriptEntriesstudentOwnerTranscriptEntryGradeStudentSectiontranscriptScheduleOfClassesSemester sectionsOffered1m11m0,1mm1m1mm1mm1110,m1mm12、每个学生有一份成绩单,两者有一对一实例连接,故学生设立Transcript属性,成绩单设立studentOwner属性。3、 每个学生可参加多个班
20、,每个班可有多个学生参加,两者存在多对多实例连接,故学生设立attends属性,班设立enrolledStudents属性。4、每个学生有一份学习计划,两者有一对一实例连接,通过在学习计划中设立Student属性建立两者的联系。5、每份学习计划要求一名教授审核,每名教授可审核多份学习计划,两者有一对多实例连接,在学习计划中设立Professor属性,建立两者的联系。6、每门课程可以有多门预修课,该门课程又可能是多门课程的预修课,存在一元自反关联,故设立prerequisites属性。7、每门课程可以有多个班,每个班只能上一门课程,两者有一对多实例连接,在课程中设立OfferedAsSectio
21、n属性,班设立RepresentedCourse属性,建立两者的联系。8、每条成绩单记录须明确是哪个学生获得的成绩,两者存在实例连接,故在成绩单记录设立student属性用于建立两者之间的联系。9、每个班结业时会有一份该班的成绩,该成绩要写入每个学生的成绩单记录,每条成绩单记录要求一个班的成绩,每个班的成绩由于包含多个学生该门课程的成绩,故会产生多条成绩单记录,两者有一对多实例连接,在班中设立assignedGrades属性,用于存储该班的成绩,在成绩单记录中设立section属性,建立两者之间的联系。 第八节 消息连接一、顺序系统中的消息1、顺序系统中消息的特点A、每个消息都是向对象发出的一
22、个服务请求,它必定引起接收者一个服务的执行;B、除了主动对象唯一的主动服务外,其它对象服务只有在接收到消息时才开始执行;C、每个消息的发送和接收都是同时进行的,即消息是同步的;D、消息是从正在执行的服务中发出的。消息发出后,发送者暂停执行位于消息发送点之后的其它操作,将控制权转移到接收者,直到接收者执行完相应的服务后才返回到发送消息的服务,继续执行其它操作。即所有操作都是串行的。2、消息的语法特征A、消息名:即接收消息的服务名;B、入口参数:即接收消息的服务要求的输入参数(0个或多个);C、返回参数:即接收消息的服务提供的输出参数(0个或多个);3、消息的语义特征A、发送者:通过消息发送点的位
23、置隐含表明,不需要显式的表示;B、接收者:由消息名表达;C、其它需传送的信息:通过入口参数和返回参数表示;二、并发系统中的消息1、并发系统:有多个控制线程(thread of control)并发执行的系统;每个控制线程是由一系列顺序执行的操作所构成的活动序列。2、并发系统中的消息A、发生在控制线程内部的消息;B、发生在控制线程之间的消息;3、消息的同步与异步不同控制线程之间的消息可分为同步消息(synchronous message)和异步消息(asynchronous message)A、同步消息:仅当发送者要发送一个消息而且接收者已经做好接收这个消息的准备时才能传送的消息;B、异步消息:
24、发送者不管接收者是否做好接收准备都可以发送的消息;4、接收者对消息的响应方式A、在消息产生之前,处理这个消息的进程并不存在;仅当发送者发出这个消息时才立刻创建一个进程来响应这个消息,完成它所要求的服务;B、处理这个消息的进程已经存在,并且与发送者同步地接收消息。接到消息立即处理;C、接收者异步地接收和处理消息,即在消息发出后的某个时刻才接收和处理该消息;D、接收者不关心这个消息,不作任何响应。5、发送者对消息处理结果的期待方式A、等待,直至得到处理结果才继续原来的工作;B、发送者不等待处理结果,发出消息后继续执行,以后再查看消息的处理结果;C、既不等待,也不关心处理结果;6、消息接收者是否唯一
25、A、定向消息:消息定向地发送给唯一的接收者;B、广播消息:消息发送给某个范围内所有可能的接收者;三、应该识别和表示的主要问题1、对象之间是否存在着某种消息?2、该消息是控制线程内部的还是不同控制线程之间的?3、消息是从发送者的哪个服务发出的?是由接收者的哪个服务响应和处理的?4、消息是同步的还是异步的?5、发送者对消息处理结果的期待方式是哪种?四、消息连接的表示1、表示法发送者接收者控制线程之间的消息连接发送者接收者控制线程内部的消息连接2、为什么没有表示3、4、5A、保持模型的简明性;B、抽象是逐步深入的;C、3、4、5可在详细说明中表述;五、发现并建立消息连接A、从每个主动对象的主动服务开
26、始,进行服务模拟、执行路线追踪每发现一个新的请求,就发现一个新的消息;B、分析该消息的发送者与接收者是否属于同一个控制线程;顺序还是并发?是否引起控制线程的切换?接收者是否只有通过当前这种消息的触发才能执行?C、建立消息连接六、消息的详细说明消息的详细说明包括发送者和接收者两方面的说明:1、发送者A、指出这个服务在执行时可能发出的每一个消息,给出接收者的类名和处理该消息的服务名;B、说明接收者与本服务是顺序执行还是并发执行的;C、必要时说明同步、异步以及发送者对消息处理结果的期待方式2、接收者A、说明由这个服务接收和处理的每一种消息,规定消息的格式和内容,包括消息名称、输入输出参数、参数类型等、B、说明发送者与本服务是顺序执行还是并发执行的;C、必要时说明同步、异步七、SRS中各个对象的服务及消息连接对象行为:1、系统行为:如创建对象等 2、对象自身的简单行为:如读取、设置一个属性值 3、对象自身映射的客观事物固有行为:如复杂的算法下面只给出第3类行为的服务原因:1、系统行为是系统施加于对象的行为,不是对象本身的行为,分析时可暂不考虑,但设计与实现要考虑,通常由构造函数完成; 2、对象自身的简单行为是由于严格封装引起的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 猪苗运输前后护理准备手册
- 2026河北武汉市第二十六中学招聘高中教师6人备考题库及答案详解(名校卷)
- 2026安徽合肥市骨科医院招聘工作人员46人备考题库含答案详解(黄金题型)
- 2026江苏苏州电瓷厂股份有限公司招聘12人备考题库含答案详解(完整版)
- 2026云南迪庆州德钦县雨崩村运营管理有限公司总经理市场化招聘1人备考题库含答案详解(a卷)
- 2026江苏扬州对外人才开发服务有限公司招工2人备考题库含答案详解(达标题)
- 2026四川省成都广定发展集团有限公司招聘3人备考题库含答案详解(综合卷)
- 2026海康威视数字技术股份有限公司招聘备考题库及答案详解(夺冠系列)
- 2026年河南省郑州市二七区事业单位联考招聘备考题库含答案详解(典型题)
- 2026福建漳州诏安县四都中心卫生院公办村卫生所招聘乡村医生2人备考题库含答案详解(完整版)
- 2026年《公共基础知识》试题题库(附答案)
- 中信兴业投资集团2026届校园招聘笔试历年典型考点题库附带答案详解
- DB32-T 5389-2026 太阳能光伏与建筑一体化应用技术规程
- 26年ap化学2025真题及答案
- 2026陕西省为县以下医疗卫生机构定向招聘医学类毕业生招聘607人农业笔试参考题库及答案解析
- 2026年中考时政热点综合分析学案(含答案)
- AQ 3026-2026《化工企业设备检修作业安全规范》全面解读
- 2026中级社工《综合能力》高分通关卷5
- 水利工程安全文明措施费用分解
- 重庆水务集团招聘真题
- 2026民用航空器维修执照考试题库
评论
0/150
提交评论