1、An Approach to the Object Orientation内容安排内容安排课程介绍课程介绍对象技术对象技术对象和类对象和类对象技术相关原则对象技术相关原则建立面向对象思维建立面向对象思维-4-内容安排内容安排对象技术对象技术对象和类对象和类对象技术相关原则对象技术相关原则建立面向对象思维建立面向对象思维-5-课程目标课程目标三大目标:三大目标:uOO:建立:建立方式,对方式,对有进一步的理解有进一步的理解uUML:能够熟练地:能够熟练地uModel:运用:运用-6-课程目标课程目标(续续)三大目标之间的关系三大目标之间的关系uModel:软件的抽象表示:软件的抽象表示uOO:建
2、立模型的理论支撑:建立模型的理论支撑uUML:模型的表示工具和手段:模型的表示工具和手段-7-关于本课程关于本课程本课程是软件工程类专业课程,侧重于工本课程是软件工程类专业课程,侧重于工程实践能力的培养,强调分析和设计技能,程实践能力的培养,强调分析和设计技能,重点在重点在建模方法建模方法的应用的应用u过程过程驱动:围绕分析和设计驱动:围绕分析和设计过程过程,关注各阶,关注各阶段建模技术的应用段建模技术的应用u案例案例驱动:围绕具体驱动:围绕具体案例案例,讲解面向对象分,讲解面向对象分析和设计的思维方式和解决问题的方法析和设计的思维方式和解决问题的方法课程重点不是理论或知识,而是树立对象课程重
3、点不是理论或知识,而是树立对象思维方式,并思维方式,并培养运用培养运用UML来表达这种来表达这种思维方式的技能思维方式的技能,从而完成面向对象的分,从而完成面向对象的分析和设计析和设计-8-开设本课程的必要性开设本课程的必要性u我们将来从事软件行业我们将来从事软件行业u面向对象是最主流的软件开发思想面向对象是最主流的软件开发思想uUML是最主流的建模方法是最主流的建模方法UMLOOAD软件工程师的软件工程师的“饭碗饭碗”-9-本课程的基础和基本定位本课程的基础和基本定位基础基础u知识储备:软件工程、面向对象程序设知识储备:软件工程、面向对象程序设计计u实践储备:了解工程项目的特点,最好实践储备
4、:了解工程项目的特点,最好有实际软件项目的开发背景有实际软件项目的开发背景基本定位基本定位u在软件相关行业,能够利用在软件相关行业,能够利用UML进行进行面向对象的分析、设计等建模工作面向对象的分析、设计等建模工作u能利用建模工具能利用建模工具Rational等完成软件等完成软件项目的建模。项目的建模。-10-关于教材内容关于教材内容1 基础基础(3):上升到面向对象上升到面向对象2 基础基础(3):可视化建模技术可视化建模技术p3 起源起源(2):业务建模业务建模4 需求需求(4):用例建模用例建模5 分析分析(3):用例分析用例分析6 设计基础设计基础(3):面向对象设计原则面向对象设计原
5、则p7 设计基础设计基础(3):面向对象设计模式面向对象设计模式p8 设计设计(3):架构设计架构设计p9 设计设计(3):构件设计构件设计10 实现实现(3):正向工程正向工程逆向工程逆向工程-11-学习路线图学习路线图OOOOUML:-12-考核方式考核方式考勤、平时表现考勤、平时表现(20%)实验(实验(20)u参照教材内容,围绕一个完整案例,完参照教材内容,围绕一个完整案例,完成四次实验成四次实验u根据实验完成情况和实验报告质量评分根据实验完成情况和实验报告质量评分考试(考试(60)u课程结束后安排考试课程结束后安排考试u开卷开卷-13-内容安排内容安排课程介绍课程介绍对象和类对象和类
6、对象技术相关原则对象技术相关原则建立面向对象思维建立面向对象思维-14-什么是面向对象技术?什么是面向对象技术?是一种看待计算机软件系统的观点是一种看待计算机软件系统的观点是一种系统分析和设计的思想是一种系统分析和设计的思想是一种编程方法是一种编程方法是一组设计原则和模式是一组设计原则和模式-15-面向对象技术面向对象技术面向对象技术面向对象技术u是一系列指导软件构造的原则(如抽象、是一系列指导软件构造的原则(如抽象、封装、多态等)封装、多态等)u通过语言、数据库和其它工具来支持这通过语言、数据库和其它工具来支持这些原则些原则u面向对象技术类面向对象技术类+对象对象+抽象抽象+封装封装+继承继
7、承+多态多态+基于消息的通信基于消息的通信.-16-对象技术的发展历史对象技术的发展历史-17-对象技术优势对象技术优势-1沟通沟通u顺应人类思维习惯,让软件开发人员在顺应人类思维习惯,让软件开发人员在解空间解空间(计算机环境计算机环境)中直接模拟中直接模拟问题空问题空间间(现实世界现实世界)中的对象及其行为中的对象及其行为-18-对象技术利益对象技术利益-2稳定稳定u较小的需求变化不会导致系统结构大的较小的需求变化不会导致系统结构大的改变改变u当需求变化时当需求变化时-19-对象技术利益对象技术利益-3复用复用提高质量,减少成本提高质量,减少成本u代码重用:基于类库、框架等代码重用:基于类库
8、、框架等u设计重用:基于抽象、多态、模式设计重用:基于抽象、多态、模式u能提高质量,减少由于编制新的系统代能提高质量,减少由于编制新的系统代码而产生的成本码而产生的成本软件开发组越大,组中每个成员的生产率就越低软件开发组越大,组中每个成员的生产率就越低-Philippe Kahn,Borland公司创始人公司创始人)/(150003yearLOCnLn-20-内容安排内容安排课程介绍课程介绍对象技术对象技术对象技术相关原则对象技术相关原则建立面向对象思维建立面向对象思维-21-对象(对象(Object)对象(对象(Object)是一个实体、一件事、)是一个实体、一件事、一个名词,可以获得的某种
9、东西,是可一个名词,可以获得的某种东西,是可以进行标识的任何事物以进行标识的任何事物u可以是物理存在的可以是物理存在的u也可能是一个概念也可能是一个概念u或软件中的实体或软件中的实体-22-UML中的对象中的对象命名对象命名对象匿名对象匿名对象仅有对象名的对象仅有对象名的对象类类类是对一系列对象的抽象描述,这些类是对一系列对象的抽象描述,这些对象共享相同的属性、操作、关系和对象共享相同的属性、操作、关系和语义语义u一个具体的对象是该类的一个实例一个具体的对象是该类的一个实例抽象过程强调相关特征而忽略其它的抽象过程强调相关特征而忽略其它的特征特征u类抽象的过程就是将具体对象的特征和类抽象的过程就
10、是将具体对象的特征和行为进行参数化,分别用类的属性(行为进行参数化,分别用类的属性(attribute)和操作()和操作(operation)来)来表示表示-23-24-属性属性属性属性(attribute)是是类的特征类的特征或特性或特性u属性的值是某一特定对象的属性的值是某一特定对象的属性值属性值u在类中属性名必须是在类中属性名必须是唯一的唯一的u每一个类的实例都有为这个类定义的所每一个类的实例都有为这个类定义的所有属性的值有属性的值银行帐户类的属性银行帐户类的属性帐号名帐号名银行名称银行名称拥有者拥有者金额金额Mary的银行帐户属性值的银行帐户属性值12345678First Natio
11、nal BankMary Smith$1024.48-25-属性取决于视点属性取决于视点 从从销售人员销售人员的角度的角度 u 型号型号u 价格价格u 颜色颜色u 里程数里程数一辆汽车具有的一辆汽车具有的属性属性:从维修人员的角度从维修人员的角度 u 马达类型马达类型u 传动类型传动类型u 维修记录维修记录-26-操作操作操作操作(operation)访问或修改对象的访问或修改对象的属性值属性值对象的行为是由为此对象定义的一系对象的行为是由为此对象定义的一系列操作决定的列操作决定的一个类可能同时存在多个实例,也可一个类可能同时存在多个实例,也可能在某一时刻没有实例能在某一时刻没有实例一个类的所
12、有实例都可以使用在这个一个类的所有实例都可以使用在这个类中定义的操作类中定义的操作 从从销售人员销售人员的角度的角度 u处理客户定单处理客户定单u准备销售合同准备销售合同u加入清单加入清单u从清单中删除从清单中删除一辆汽车具有的一辆汽车具有的操作操作:从维修人员的角度从维修人员的角度 u测试刹车测试刹车u修理刹车修理刹车u转动轮胎转动轮胎u检查马达速度检查马达速度操作取决于视点操作取决于视点-28-UML中的类中的类属性属性操作操作-29-类和对象的关系类和对象的关系每一个对象都是某一个类的实例每一个对象都是某一个类的实例每一个类在某一时刻都有零个或更多每一个类在某一时刻都有零个或更多的实例的
13、实例类是静态的;它们的存在、语义和关类是静态的;它们的存在、语义和关系在执行前就已经定义好了系在执行前就已经定义好了对象是动态的;它们在程序执行时可对象是动态的;它们在程序执行时可以被创建和删除以被创建和删除-30-内容安排内容安排课程介绍课程介绍对象技术对象技术对象和类对象和类建立面向对象思维建立面向对象思维-31-面向对象技术的相关原则面向对象技术的相关原则对象技术基本原则对象技术基本原则u抽象(抽象(Abstraction)u封装(封装(Encapsulation)u泛化(泛化(Generalization)u多态(多态(Polymorphism)u-32-抽象和封装抽象和封装抽象是事物
14、区别于其它事物的本质特抽象是事物区别于其它事物的本质特征征u抽象的过程取决于使用者的目的,它应抽象的过程取决于使用者的目的,它应该包括使用者所感兴趣的那些职责,而该包括使用者所感兴趣的那些职责,而忽略掉其它不相关的部分忽略掉其它不相关的部分封装是指对象对其客户隐藏具体的实封装是指对象对其客户隐藏具体的实现,是软件模块化思想的体现现,是软件模块化思想的体现u通过封装实现信息隐藏和数据抽象通过封装实现信息隐藏和数据抽象泛化泛化泛化是类与类之间一种关系泛化是类与类之间一种关系u通过这种关系一个类可以共享另外一个通过这种关系一个类可以共享另外一个或多个类的结构和行为或多个类的结构和行为u为了实现泛化关
15、系,采用继承机制为了实现泛化关系,采用继承机制一个子类(一个子类(subclass)继承一个或多个父)继承一个或多个父类(类(superclass),从而实现了不同的抽),从而实现了不同的抽象层次象层次通过这种关系可以很容易地复用已经存在通过这种关系可以很容易地复用已经存在的数据和代码,并实现多态处理的数据和代码,并实现多态处理u根据父类的个数不同,存在着单一继承根据父类的个数不同,存在着单一继承和多重继承两种情况和多重继承两种情况-33-多态多态多态是在同一外表(接口)下表现出多态是在同一外表(接口)下表现出多种行为的能力多种行为的能力u是对象技术的根本特征是对象技术的根本特征u对象技术正是
16、利用多态提供的动态行为对象技术正是利用多态提供的动态行为特征,来封装变化,适应变更,以达到特征,来封装变化,适应变更,以达到系统的稳定系统的稳定-34-35-应用多态性应用多态性假设我们有一个数组假设我们有一个数组sharr,里面放着一排,里面放着一排Shape,但是不知道哪些是,但是不知道哪些是Rectangle,哪些,哪些是是Circle。利用多态性,我们可以:。利用多态性,我们可以:for(int i=0;i sharr.length;+i)Shape shape=(Shape)sharri;shape.draw();遍历整个数组的过程中,各个遍历整个数组的过程中,各个Shape自己知道
17、自己知道应当如何在画布上绘制自己。应当如何在画布上绘制自己。shape.draw()这同一行代码在这同一行代码在shape指向不同的对象时表现指向不同的对象时表现出不同的行为,这就是所谓多态性出不同的行为,这就是所谓多态性-36-内容安排内容安排课程介绍课程介绍对象技术对象技术对象和类对象和类对象技术相关原则对象技术相关原则-37-实例实例1:OO观点的观点的个人简介个人简介tanHuobin是是Teacher类的一个实例,类的一个实例,该实例是基于该实例是基于beiHangUniversity对象对象的的softwareSchool的成员对象的成员对象tanHuobin教授教授ooTechn
18、ology课程课程类类GraduateStudent的所有实例都可以的所有实例都可以通过通过Course类的对象类的对象ooTechnology建建立关联。立关联。GraduateStudent的所有实例可以向的所有实例可以向tanHuobin发送发送phone消息或消息或email消息消息-38-OO个人简介的个人简介的UML表示表示-39-实例实例2:对象思维分析问题:对象思维分析问题-40-问题分析问题分析-1A.这里面有什么东西?这里面有什么东西?u月老,小伙,姑娘,恋人,玫瑰花月老,小伙,姑娘,恋人,玫瑰花B.每个东西看上去是什么样的?每个东西看上去是什么样的?u月老,看上去有些年纪
19、了,挺热心月老,看上去有些年纪了,挺热心u小伙,看上去很强壮,很诚实小伙,看上去很强壮,很诚实u姑娘,看上去好漂亮,还很温柔姑娘,看上去好漂亮,还很温柔u恋人,看上去很黏糊,最终结婚了恋人,看上去很黏糊,最终结婚了u玫瑰花,火红火红的,难怪姑娘动情了玫瑰花,火红火红的,难怪姑娘动情了-41-问题分析问题分析-2C.每个东西能做什么?每个东西能做什么?u月老:牵线搭桥,介绍两人认识月老:牵线搭桥,介绍两人认识u小伙:追求献花,表达爱意小伙:追求献花,表达爱意u姑娘:仰慕倾情,以身相许姑娘:仰慕倾情,以身相许u恋人:拍拖,恋人:拍拖,结婚,结婚u玫瑰花:令姑娘心动,传情示爱玫瑰花:令姑娘心动,传情
20、示爱-42-问题分析问题分析-3D.这些东西都呆在什么地方?这些东西都呆在什么地方?u月老:婚介所,交友网站月老:婚介所,交友网站u小伙:软件园小伙:软件园u姑娘:人民医院姑娘:人民医院u恋人:情侣路,电影院,恋人:情侣路,电影院,u玫瑰花:花店里,小伙手中,姑娘手中玫瑰花:花店里,小伙手中,姑娘手中-43-问题分析问题分析-4E.这些东西之间有什么关系?这些东西之间有什么关系?关系 月老小伙姑娘恋人玫瑰月老干妈舅妈撮合者 没关系小伙 干儿子男友老公 男主角 买送主姑娘 外甥女 女友太太女主角 受主恋人 被撮合 组成组成使用者玫瑰 没关系 信物接受礼物 信物-44-问题分析问题分析-5F.这些
21、东西是怎么成事的?这些东西是怎么成事的?u月老牵线搭桥,介绍小伙和姑娘认识月老牵线搭桥,介绍小伙和姑娘认识u姑娘和小伙一见钟情,成为一对恋人姑娘和小伙一见钟情,成为一对恋人u一对恋人开始拍拖一对恋人开始拍拖u小伙追求献花,表达对姑娘的爱意小伙追求献花,表达对姑娘的爱意u姑娘收到姑娘收到999火红玫瑰,激动得头晕目火红玫瑰,激动得头晕目眩眩u小伙真心求婚,姑娘以身相许小伙真心求婚,姑娘以身相许u一对恋人终于走入婚姻殿堂一对恋人终于走入婚姻殿堂-45-上升到面向对象上升到面向对象用面向对象观点观看事物用面向对象观点观看事物-46-用对象观点认识事物用对象观点认识事物A.这里面有什么东西?这里面有什
22、么东西?类与对象类与对象B.每个东西看上去是什么样的?每个东西看上去是什么样的?类的属性类的属性C.每个东西能做点什么用?每个东西能做点什么用?类的操作类的操作D.这些东西都呆在什么地方?这些东西都呆在什么地方?类的行为、状态、部署类的行为、状态、部署E.这些东西之间有什么关系?这些东西之间有什么关系?类间的关联类间的关联F.这些东西是怎么成事的?这些东西是怎么成事的?类间的协作类间的协作(用例实现用例实现)DACBEF-47-俗语和术语间的对应俗语和术语间的对应出了什么事?出了什么事?用例用例我的一个朋友结了婚。我的一个朋友结了婚。具体事物具体事物对象对象我的一个朋友我的一个朋友,他未婚妻他
23、未婚妻事物类型事物类型类类小伙小伙,姑娘姑娘,玫瑰玫瑰,月老月老属性属性属性属性年龄年龄,体格体格,性情性情能力能力操作操作牵线牵线,追求追求,结婚结婚位置位置部署部署软件园软件园,情侣路情侣路整整-部关系部关系聚合关系聚合关系恋人恋人-小伙小伙,恋人恋人-姑娘姑娘抽抽-具关系具关系继承关系继承关系人人-小伙小伙,人人-姑娘姑娘协作关系协作关系关联关系关联关系小伙小伙-姑娘姑娘,小伙小伙-玫瑰玫瑰成事过程成事过程用例实现用例实现相识相识,相恋相恋,结婚结婚-48-利用利用UML描述分析过程描述分析过程-49-搞清过程的活动图搞清过程的活动图结婚过程的活动图结婚过程的活动图-50-复述情节的顺序图复述情节的顺序图-51-理清头绪的通信图理清头绪的通信图初次见面的通信图初次见面的通信图-52-定点观察的状态机图定点观察的状态机图恋人关系发展的状态图恋人关系发展的状态图
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。