面向对象技术讲稿Word下载.docx
- 文档编号:18374593
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:21
- 大小:275.81KB
面向对象技术讲稿Word下载.docx
《面向对象技术讲稿Word下载.docx》由会员分享,可在线阅读,更多相关《面向对象技术讲稿Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
例:
班主任班
7、对象的简单定义:
学生:
当前已经被大学录取,有资格进行注册的人。
8、发现SRS对象
学生注册系统需求分析
我们被要求为大学开发一个自动化学生注册系统(SRS),这个系统将使学生可以在线注册每个学期的课程,也可以用于跟踪学生的学习进展,直至其获得学位。
当学生被大学录取后,学生使用SRS建立学习计划,即确定满足特定学位所需要的课程,并选择一名导师。
SRS要检验所提出的学习计划是否满足该学生所希望获得的学位的要求。
一旦建立了学习计划,则在以后每个学期的注册期间学生都可以在线查看课程计划,选择要选修的课程,如果课程由多名教授讲授,则还可以指定听课时间(星期几、几点)。
SRS要参考学生所完成课程的成绩单(学生可以随时查看自己的成绩单),检验学生是否满足所申请课程的必要的预修条件。
若1、所要求的预修课程都已修完;
2、课程在该学生的学习计划之内;
3、课程尚有空位;
则学生可以参加听课。
如果1、2条件满足,但3不满足,则该学生要放到一个先入先出的等待队列中。
如果学生以前所等待的课程可以提供(或者由于某学生取消了听课计划,或者由于该课程的听课位置增加了),则该学生会被自动录取到所等待的课程中。
只要允许学生听课,则SRS向该学生发送E_mail通知。
如果该学生不再对该课程感兴趣,可以最迟在学期的第一个星期末决定退出所选的课程,否则,若学生被允许听课,则学生要为该课程付费。
隐含:
班、教室
类清单:
课程、课程计划、学习计划、教授、学生、班、成绩单
第三节定义属性
一、策略
1、按一般常识这个对象应该有哪些属性;
2、在当前的问题域中这个对象应该有哪些属性;
3、按系统的责任要求这个对象应该有哪些属性;
4、建立该对象是为了保存和管理哪些信息;
5、为实现其功能应增加哪些属性;
6、对象有哪些需要区别的状态,是否需要增加一个属性来区别这些状态。
二、审查与筛选
1、该属性是否体现了以系统责任为目标的抽象;
2、该属性是否描述了对象本身的特征;
3、该属性是否破坏了对象特征的原子性;
4、该属性是否可以从其他属性中导出;
三、属性的详细说明
1、属性的命名;
2、属性的解释;
3、属性的数据类型;
4、实现要求及其他;
四、定义SRS各对象属性
SectionNo
Dayofweek
Timeofday
Semester
Room
Seatingcapacity
Section
详细说明:
Section.Timeofday:
授课时间(范围),例如下午2——4时;
Section.Seatingcapacity:
注册某个班所允许的最大学生数量;
Professor.SSN:
唯一的社会安全号码;
Student.Major:
学生的主修专业,例如“计算机科学与技术”(假设一名学生只有一个专业)
第四节定义服务
1、考虑系统责任和问题域:
设置这个对象的目的是什么?
若是完成某些功能,则由哪些服务来完成这些功能;
若是保存某些信息,那么系统怎样运用这些信息,是否需要对这些信息进行某种计算或加工,然后向对象外部提供,怎样提供?
对象在问题域中有哪些行为,应该设置何种服务来模拟这些行为?
2、分析对象状态:
分析对象所能呈现的每一种状态,考虑在每一种状态下对象可以发生什么行为?
应该由什么服务来描述?
对象由一种状态转换到另外一种状态是由什么操作引起的?
是否设置了相应的服务?
3、追踪服务的执行路线:
分析员把自己设想成当前服务的执行者,模拟每个服务的执行,并追踪服务的执行路线,直至全部服务都被模拟过。
用于发现遗漏的服务。
二、审查与调整
1、按照系统责任要求检查每个服务是否有用;
2、检查每个服务是否是高内聚的:
三、服务的详细说明
1、服务解释:
该服务的作用与功能
2、消息协议:
给出服务的入口消息格式,服务名称、输入输出参数、参数类型
3、消息发送:
指出在这个服务执行时,需要请求哪些别的对象服务
4、约束条件:
四、SRS的部分服务
1、Student的部分服务
添加班:
addSection
注销班:
dropSection
是否被批准:
isEnrolledIn
打印成绩单:
printTranscript
2、Section的部分服务
招收学员:
enroll(Students)
显示学员列表:
displayStudentRoster()
确认空座:
confirmSeatAvailability()
注销学生:
drop(Students)
给定成绩:
getGrade(Students)
第五节一般——特殊结构
一、对象与外部的关系
1、对象之间的分类关系,即对象之间的一般特殊关系,用一般特殊结构表示(分类结构)
2、对象之间的组成关系,即整体部分关系,用整体部分结构表示(装配结构)
3、对象之间的静态联系,即通过对象属性反映的联系,用实例连接表示
4、对象之间的动态联系,即对象行为之间的依赖关系,用消息连接表示
二、一般特殊结构表示法
三、发现一般特殊结构
1、学习当前领域的分类学知识:
植物分类法、图书分类法等
2、按常识考虑事物分类:
例如人,可按人种分,按年龄段分,按性别分等;
3、回顾一般特殊类的定义
4、考察属性和服务:
例,公司人员具有属性姓名、身份证、股份、工资等,但股份仅适用于股东,而工资适用于职工,则建立如下结构:
5、考虑领域范围内的复用:
(类构件)
例:
某超市使用的现钞收款机具有属性A、B、C、D、E、F,服务X、Y、Z。
其中属性A、B、C,服务X、Y是任何收款机所共有的属性和服务,而属性D、E、F和服务Z是现钞收款机所特有的属性和服务。
则可定义收款机类和现钞收款机类,构成一般特殊结构,这样收款机类成为可供本领域其他系统复用的领域构件。
四、审查与调整
1、问题域是否需要这样的分类:
书——善本书
2、系统责任是否需要这样的分类:
职员——生产人员、营销人员
3、是否符合分类学常识:
A是一种B
4、是否构成了继承关系:
船——航标船
五、简化
1、特殊类没有自己特殊的属性和服务(学生——大学生、研究生)
2、某些特殊类之间的差别可以通过一般类的某个属性值体现(人,性别、国籍)
3、一般类下只有一个特殊类(收款机——现钞收款机)
通常一般类应符合:
它有两个或以上的特殊类或需要用它创建对象实例或者有助于软件复用,才有存在价值。
六、多继承
多继承存在命名冲突,所以标准JAVA不支持多继承,通过接口完成相应功能。
第六节整体部分结构
一、表示法
连接符两端的字母或数字表示结构中对象实例的多重性,即位于连接符一端的对象实例要求另一端多少个对象实例与自己进行整体部分组合。
固定数量:
固定数字;
不定数量:
M,N;
固定范围:
下界,上界;
例4,6;
不定范围:
1,M;
0,N;
二、实现方式
1、嵌套对象:
用部分对象类作为数据类型;
2、对象指针:
指向部分对象的指针;
整体对象部分对象
整体对象
部分对象部分对象部分对象
三、发现整体部分结构
1、物理上的整体事物和它的组成部分:
汽车——发动机、轮胎、车身
2、组织机构和它的下级组织及部分:
学院——系
3、团体与成员:
班——学生
4、一种事物空间上包容其它事物:
车间——厂房、机器、人
5、抽象事物的整体与部分:
书——章
6、具体事物和它的抽象方面:
人员——身份、职责、奖罚
四、审查和筛选
1、是否属于问题域:
如公司业务管理系统中,家庭——职员;
2、是否是系统责任的需要:
如工会——员工;
3、部分对象是否具有一个以上的属性:
轮胎——规格
4、是否有明显的整体部分关系:
学生——课程
五、用途
1、基本用途:
表达问题域中事物之间的组成关系
2、简化对象定义:
飞机有50个属性,20个服务,其中与发动机和导航仪有关的属性各有10个,服务各有5个,则可建立发动机类和导航仪类,然后使用整体部分结构与飞机组合,简化了飞机的定义。
3、支持软件复用:
图
4、表示数量不定的组成部分;
5、表示动态变化的对象特征:
人员由营业员变为会计师、经理;
六、两种结构的关系
一般特殊结构是特殊类经过继承而拥有一般类的特征;
整体部分结构是整体对象通过组装而拥有部分对象的特征;
表达自然是选用结构的标准;
七、SRS中的整体部分结构
1、成绩单与成绩单记录
2、课程计划与班
3、学习计划与课程
第七节实例连接
一、简单的实例连接
1、实例连接:
用于表达对象之间的静态联系,静态联系是指最终可通过对象属性来表示的一个对象对另一个对象的依赖关系。
教师指导学生毕业设计、某课程是另外课程的预修课、两个城市间有航班等。
2、表示法
在具有实例连接的类之间画一条连接线把它们连接起来;
连接线的旁边给出表明其意义的连接名;
在连接线的两端用数字标明其多重性。
一对一连接:
一对多连接:
多对多连接:
3、实现方式
实例连接一般可用对象指针实现,即在被连接的两个类中选择一个,在它的对象中设立一个指针类型的属性,用于指向另一个类中与它有连接关系的对象实例。
一般可在多重性1端的对象中建立指针。
若系统要求从两个方向都能快速地相互查找和引用,则两个对象都要建立指针。
4、与整体部分结构的异同
二、复杂的实例连接
1、表示法
2、用对象表示实例连接的复杂性
2
0,m
三、多元关联
某人使用某语言从事某项目;
某公司委托某代理商在某公证机构的监督下为某个项目招标;
方法:
在多元关联的汇集点增加一个对象,使之转化为二元的实例连接,新增这个对象的属性是分别指向每个元的对象指针。
四、多对多实例连接
五、对象、属性的增补
1、对象增补:
复杂实例连接、多元关联、多对多实例连接要求增加一些新的类
2、属性增补:
每一个实例连接,应该在它的某一端(若要求相互引用则是两端)所连接的对象类中增加相应的属性,其类型应被说明为指向另一端的对象指针。
六、实例连接说明
详细说明实例连接的实际意义。
七、SRS的实例连接
1、教授教班,一个教授可教多个班,每个班一个教授教,是一对多实例连接,由于系统责任要求能够从两个方向都能快速地相互查找和引用,则两个对象都要建立指针,故教授设立teaches属性,班设立instructor属性。
2、每个学生有一份成绩单,两者有一对一实例连接,故学生设立Transcript属性,成绩单设立studentOwner属性。
3、每个学生可参加多个班,每个班可有多个学生参加,两者存在多对多实例连接,故学生设立attends属性,班设立enrolledStudents属性。
4、每个学生有一份学习计划,两者有一对一实例连接,通过在学习计划中设立Student属性建立两者的联系。
5、每份学习计划要求一名教授审核,每名教授可审核多份学习计划,两者有一对多实例连接,在学习计划中设立Professor属性,建立两者的联系。
6、每门课程可以有多门预修课,该门课程又可能是多门课程的预修课,存在一元自反关联,故设立prerequisites属性。
7、每门课程可以有多个班,每个班只能上一门课程,两者有一对多实例连接,在课程中设立OfferedAsSection属性,班设立RepresentedCourse属性,建立两者的联系。
8、每条成绩单记录须明确是哪个学生获得的成绩,两者存在实例连接,故在成绩单记录设立student属性用于建立两者之间的联系。
9、每个班结业时会有一份该班的成绩,该成绩要写入每个学生的成绩单记录,每条成绩单记录要求一个班的成绩,每个班的成绩由于包含多个学生该门课程的成绩,故会产生多条成绩单记录,两者有一对多实例连接,在班中设立assignedGrades属性,用于存储该班的成绩,在成绩单记录中设立section属性,建立两者之间的联系。
第八节消息连接
一、顺序系统中的消息
1、顺序系统中消息的特点
A、每个消息都是向对象发出的一个服务请求,它必定引起接收者一个服务的执行;
B、除了主动对象唯一的主动服务外,其它对象服务只有在接收到消息时才开始执行;
C、每个消息的发送和接收都是同时进行的,即消息是同步的;
D、消息是从正在执行的服务中发出的。
消息发出后,发送者暂停执行位于消息发送点之后的其它操作,将控制权转移到接收者,直到接收者执行完相应的服务后才返回到发送消息的服务,继续执行其它操作。
即所有操作都是串行的。
2、消息的语法特征
A、消息名:
即接收消息的服务名;
B、入口参数:
即接收消息的服务要求的输入参数(0个或多个);
C、返回参数:
即接收消息的服务提供的输出参数(0个或多个);
3、消息的语义特征
A、发送者:
通过消息发送点的位置隐含表明,不需要显式的表示;
B、接收者:
由消息名表达;
C、其它需传送的信息:
通过入口参数和返回参数表示;
二、并发系统中的消息
1、并发系统:
有多个控制线程(threadofcontrol)并发执行的系统;
每个控制线程是由一系列顺序执行的操作所构成的活动序列。
2、并发系统中的消息
A、发生在控制线程内部的消息;
B、发生在控制线程之间的消息;
3、消息的同步与异步
不同控制线程之间的消息可分为同步消息(synchronousmessage)和异步消息(asynchronousmessage)
A、同步消息:
仅当发送者要发送一个消息而且接收者已经做好接收这个消息的准备时才能传送的消息;
B、异步消息:
发送者不管接收者是否做好接收准备都可以发送的消息;
4、接收者对消息的响应方式
A、在消息产生之前,处理这个消息的进程并不存在;
仅当发送者发出这个消息时才立刻创建一个进程来响应这个消息,完成它所要求的服务;
B、处理这个消息的进程已经存在,并且与发送者同步地接收消息。
接到消息立即处理;
C、接收者异步地接收和处理消息,即在消息发出后的某个时刻才接收和处理该消息;
D、接收者不关心这个消息,不作任何响应。
5、发送者对消息处理结果的期待方式
A、等待,直至得到处理结果才继续原来的工作;
B、发送者不等待处理结果,发出消息后继续执行,以后再查看消息的处理结果;
C、既不等待,也不关心处理结果;
6、消息接收者是否唯一
A、定向消息:
消息定向地发送给唯一的接收者;
B、广播消息:
消息发送给某个范围内所有可能的接收者;
三、应该识别和表示的主要问题
1、对象之间是否存在着某种消息?
2、该消息是控制线程内部的还是不同控制线程之间的?
3、消息是从发送者的哪个服务发出的?
是由接收者的哪个服务响应和处理的?
4、消息是同步的还是异步的?
5、发送者对消息处理结果的期待方式是哪种?
四、消息连接的表示
2、为什么没有表示3、4、5
A、保持模型的简明性;
B、抽象是逐步深入的;
C、3、4、5可在详细说明中表述;
五、发现并建立消息连接
A、从每个主动对象的主动服务开始,进行服务模拟、执行路线追踪每发现一个新的请求,就发现一个新的消息;
B、分析该消息的发送者与接收者是否属于同一个控制线程;
顺序还是并发?
是否引起控制线程的切换?
接收者是否只有通过当前这种消息的触发才能执行?
C、建立消息连接
六、消息的详细说明
消息的详细说明包括发送者和接收者两方面的说明:
1、发送者
A、指出这个服务在执行时可能发出的每一个消息,给出接收者的类名和处理该消息的服务名;
B、说明接收者与本服务是顺序执行还是并发执行的;
C、必要时说明同步、异步以及发送者对消息处理结果的期待方式
2、接收者
A、说明由这个服务接收和处理的每一种消息,规定消息的格式和内容,包括消息名称、输入输出参数、参数类型等、
B、说明发送者与本服务是顺序执行还是并发执行的;
C、必要时说明同步、异步
七、SRS中各个对象的服务及消息连接
对象行为:
1、系统行为:
如创建对象等
2、对象自身的简单行为:
如读取、设置一个属性值
3、对象自身映射的客观事物固有行为:
如复杂的算法
下面只给出第3类行为的服务
原因:
1、系统行为是系统施加于对象的行为,不是对象本身的行为,分析时可暂不考虑,但设计与实现要考虑,通常由构造函数完成;
2、对象自身的简单行为是由于严格封装引起的,
1、Person
★display():
显示Person的相关信息;
2、Professor
显示Professor的基本信息;
★displayTeachingAssignments():
显示Professor所教的班信息;
★agreeToTeach():
添加Professor同意教的班;
3、Student
显示Student的基本信息;
★displayCourseSchedule():
显示Student的课程信息;
★addSection():
申请班;
★dropSection():
撤消班;
★isEnrolledIn():
是否被录取;
★printTranscript():
打印成绩单
★isCurrentlyEnrolledInSimilar():
是否已参加同一门课程的其它班;
★getEnrolledSections():
若被录取则添加到attends;
4、Course
显示Course的基本信息;
★addPrerequisite():
添加预修课程;
★hasPrerequisites():
是否有预修课程;
★getPrerequisites():
获取预修课;
★scheduleSection():
添加该门课程所拥有的班;
5、Section
★enroll():
招收学员;
★drop():
撤消学员;
显示Section的基本信息;
★displayStudentRoster():
显示学员花名册;
★postGrade():
公布成绩;
6、ScheduleOfClasses
显示本学期课程计划;
向课程计划中添加班;
7、TranscriptEntry
★validateGrade():
验证成绩是否有效;
★passingGrade():
验证成绩是否通过;
8、Transcript
★verifyCompletion():
验证成绩是否通过,不通过不予登录;
★addTranscriptEntry():
将成绩记录登录到成绩单;
显示特定学生的成绩单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 技术 讲稿