




已阅读5页,还剩107页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象分析设计Object OrientedAnalysis Design 谭火彬 第01章上升到面向对象 AnApproachtotheObjectOrientation 3 内容安排 第一个案例课程介绍对象技术对象和类对象技术相关原则上升到面向对象 4 内容安排 第一个案例课程介绍对象技术对象和类对象技术相关原则上升到面向对象 5 素数问题 素数的定义 除了1与本身之外 不能被其他正整数整除的数 叫作素数 也叫质数 按照习惯规定 1不算素数 最小的素数是2 其余的是3 5 7 11 13 17 19 等等 由定义判断素数对于数n 从i 2 3 4 5 到n 1判断n能否被i整除 如果全部不能整除 则n是素数 只要有一个能除尽 则n不是素数 为了压缩循环次数 可将判断范围从2 n 1改为2 sqrt n 6 筛选法求素数序列 筛选法 生成2 i n的素数序列 设n 50 筛掉2的倍数 234567891011121314151617 筛掉3的倍数 2357911131517192123252729 筛掉5的倍数 23571113171923252931353741 筛掉7的倍数 2357111317192329313741434749 留下素数序列 23571113171923293137414347 7 思考 用结构化思维解决上述问题用对象思维解决上述问题将解决思路用合适的方式记录下来思考 结构化思维与对象化思维有什么本质的不同 体现了怎样的思维差异 对象思想有何优势 如何表达设计思想 代码 图形 8 结构化实现 PrimerNumber cmain int sieve n intiCounter 2 iMax i printf Pleaseinputmaxnumber scanf d 9 结构化设计 10 结构化小结 通过流程图 结构化建模 可以更清楚表达设计思想针对过程的抽象过程 函数 是系统的核心 通过过程实现系统功能数据是静态的 由过程来控制对数据的访问面向对象的方法如何解决呢 11 Java实现 是对象思维吗 importjava lang Math publicclassPrimerNumber publicstaticvoidmain Stringargs intn 50 intsieve newint n 1 intiCounter 2 iMax i for i 0 i n 1 i sieve i i 2 iMax int Math sqrt n while iCounter iMax for i 2 iCounter 2 i n 1 i iCounter sieve i 0 iCounter for i 0 i n 1 i if sieve i 0 System out println sieve i 12 用对象思维解决问题 筛选法 生成2 i n的整数序列 设n 50 筛掉2的倍数 234567891011121314151617 筛掉3的倍数 2357911131517192123252729 筛掉5的倍数 23571113171923252931353741 筛掉7的倍数 2357111317192329313741434749 留下素数序列 23571113171923293137414347 筛子 存储源数据 过滤器 表明当前过滤因子 计数器 记录当前正在筛选的数据 什么是对象 对象在哪 13 这才是对象思维 抽象基类 为程序提供多态 14 面向对象的编程 C 语法 classItem public Item source Item Item src source src virtualintout return0 classCounter publicItem intvalue public intout returnvalue Counter intv Item 0 value v 15 面向对象的编程 过滤器 classFilter publicItem intfactor public intout while 1 intn source out if n factor returnn Filter Item src intf Item src factor f 16 面向对象的编程 筛子 classSieve publicItem public intout intn source out source newFilter source n returnn Sieve Item src Item src 17 验证设计方案 voidmain Counterc 2 Sieves 关键代码只有一行 筛子自己知道如何找出素数 18 对象方法小结 通过UML类图 面向对象建模 可以更清楚表达设计思想 并为代码实现提供框架针对数据的抽象 类类拥有自己的数据和行为 能够完成自身的工作职责过程是类的组成部分 为类提供行为通过类的对象之间的协作完成系统功能 19 对象技术的思考 对象思维具有更大的灵活性 更好的模块化 可以进行更大规模的设计面向对象设计和开发的难度更大 面临着对象识别 职责分配 多态抽象等一系列问题学习更多知识和技术 并掌握一系列面向对象的设计原则和模式图形化工具 UML 有助于表达和交流设计思想 并简化实现的过程 20 总结 结构化VS面向对象 结构化思维用过程刻画数据间关系对象思维直接用类表达数据间关系结构化中 数据是死的 全部依赖算法操作对象思维中 数据是活的 她 知道自己的信息 属性 并能完成自己的工作 操作 结构化思维更像是一个人在解决所有问题对象思维更像是一个团队的分工协作 21 面向对象VS结构化 1 扬弃 不是否定 22 面向对象VS结构化 2 程序 实现角度 23 面向对象VS结构化 3 24 内容安排 第一个案例课程介绍对象技术对象和类对象技术相关原则上升到面向对象 25 课程介绍 课时上课 30学时 10次课程 作业 3次考试 2小时上课时间第3 6 14周六晚上6 00 9 00地点3 313 26 课程目标 三大目标 OO 建立对象的思维方式 对面向对象思想和理论有进一步的理解UML 能够熟练地使用UML表达面向对象的设计思想Model 运用对象技术的一般原则和模式进行应用系统的分析和设计建模 27 课程目标 续 三大目标之间的关系Model 建模是最终目的OO 面向对象技术是一种建模理论UML 统一建模语言是一种体现OO的建模语言 是将OO理论转化为实践的工具 28 关于本课程 本课程是软件工程类专业课程 侧重于工程实践能力的培养 强调分析和设计技能 不关注文档 过程 规范等 重点在建模方法的应用过程驱动 围绕分析和设计过程 关注各阶段建模技术的应用案例驱动 围绕具体案例 讲解面向对象分析和设计的思维方式和解决问题的方法课程重点不是理论或知识 而是通过实践建立对象思维方式 并培养运用UML来表达这种思维方式的技能 从而完成面向对象分析和设计通过课外阅读 作业和实践来弥补课堂不足不考概念 不需死记硬背 在实践中掌握相关理论和方法 29 关于本课程 本课程部分内容来自IBM大学合作部RationalUniversityProgram培训课程DEV475 MasteringObjectOrientedAnalysisandDesignWithUML2DEV275 EssentialsofVisualModelingwithUML2DEV396 EssentialsofRationalSoftwareArchitectRD211 FundamentalsofRationalRose 30 RationalUniversityCurriculum 31 RationalUniversityCurriculum 32 RationalUniversityCurriculum 33 为什么选择本课程 需要理由吗 我们从事软件行业面向对象是最主流的软件开发思想UML是最主流的建模方法 UML OOAD 软件工程师的 饭碗 对于今天的软件开发者来说 UML是他们的面包和黄油 34 本课程适合我 基础知识储备 软件工程 面向对象程序设计实践储备 了解工程项目的特点 最好有实际工程项目开发背景定位从事软件相关行业工作 分析 设计 编码 测试或管理 维护工作 35 课程安排 1基础 3 上升到面向对象2基础 3 可视化建模技术3起源 2 业务建模4需求 4 用例建模5分析 3 用例分析 6设计基础 3 面向对象设计原则7设计基础 3 面向对象设计模式8设计 3 构架设计9设计 3 构件设计10实现 展望 3 从模型到代码模型技术的发展 36 学习路线图 37 考核方式 作业 50 结合课程进度 围绕一个案例 安排三次实践作业根据情况对作业进行详细讲解考试 50 课程结束后安排考试开卷 38 作业提交 作业提交方式Web 文档中心 面向对象分析设计 中提供课件下载和作业上传Emailthbin 参考资料 以课程讲义为主线理解 辅助参考书籍Object OrientedAnalysisandDesignwithApplications 3rd 面向对象分析与设计 第3版 UML创始人GradyBooch的代表作ApplyingUMLandPatterns AnIntroductiontoObject OrientedAnalysisandDesignUML和模式应用 面向对象分析与设计导论TheUnifiedModelingLanguageUserGuide UML用户指南 第二版 GradyBooch JamesRumbaugh IvarJacobson 39 40 内容安排 从结构化到面向对象课程介绍对象技术对象和类对象技术相关原则上升到面向对象 41 对象技术 是一种看待计算机软件系统的观点是一种系统分析和设计的思想是一种编程方法是一组设计原则和模式是实践者的日常工作是吹鼓手 骗子和市场人员口中的 万灵丹 42 对象技术ObjectTechnology Asetofprinciples abstraction encapsulation polymorphism guidingsoftwareconstruction togetherwithlanguages databases andothertoolsthatsupportthoseprinciples ObjectTechnology AManager sGuide Taylor 1997 43 对象技术利益 1 沟通顺应人类思维习惯 让软件开发人员在解空间中直接模拟问题空间中的对象及其行为 PUSHEBXMOVEBX EDXMOVEDX EAXSHREDX 16DIVBX AHare Run ALion Catch AHare ALion Kill AHare AHare Dead ALion Eat ALion Happy 在计算机中模拟现实世界的事和物 44 实例 东北一家人 东北人都是活雷锋人 东北人 雷锋老张开车去东北 撞啦 老张 汽车 开车撞啦 45 class人 Region籍贯 classRegion interface雷锋 helpPeople class东北人extends人implements雷锋 籍贯 东北 helpPeople classCar DriveTo Region throwsException 撞车 人Driver MainProgram 人老张 Car夏利 夏利 Driver 老张 try 夏利 DriveTo 东北 catch Exception 面向对象的表示 46 对象技术利益 2 稳定较小的需求变化不会导致系统结构大的改变当需求变化时 功能 最易变数据 较易变对象 较稳定 稳定性增加 用较稳定把不稳定的包起来 47 对象技术利益 3 复用代码重用 类库 框架等重用机制能提高质量 减少由于编制新的系统代码而产生的成本通过继承 关联 封装等手段 软件开发组越大 组中每个成员的生产率就越低 PhilippeKahn Borland公司创始人 构造大型软件不能靠堆人 48 对象技术的发展历史 Simula基本思想 1967 1972 Smalltalk实用化 C 商业化 1980s 1995 Java编程方法的成熟 UML统一方法学 1997 2008 构件 服务 云计算 49 内容安排 从结构化到面向对象课程介绍对象技术对象和类对象技术相关原则上升到面向对象 50 Object Informally anobjectrepresentsanentity eitherphysical conceptual orsoftwarePhysicalentityConceptualentitySoftwareentity 化学过程 51 Object FormalDefinition Anobjectisanentitywithawell definedboundaryandidentitythatencapsulatesstateandbehavior Stateisrepresentedbyattributesandrelationships Behaviorisrepresentedbyoperations methods andstatemachines 52 对象的标识 每一个对象都有一个唯一的标识 即使其状态有可能与其它对象一样 班机747on11 10 班机747on11 11 班机747on11 12 53 对象的状态 一个对象的状态是它反映于现实世界的一系列属性 属性的数值 即与对象有关系的数据 它与其它对象的关系任一时刻的历史状态 可能的状态 停泊运营着陆终止 班机747 54 对象的行为 定义当其它对象发出请求时 该对象如何反应由为对象定义的一系列操作决定 55 RepresentingObjectsintheUML Anobjectisrepresentedasarectanglewithanunderlinedname NamedObject AnonymousObject 56 Class Aclassisadescriptionofasetofobjectsthatsharethesameattributes operations relationships andsemanticsAnobjectisaninstanceofaclassAclassisanabstractioninthatitEmphasizesrelevantcharacteristicsSuppressesothercharacteristics 57 Sample AClass ClassEmployee PropertiesNameAddressPositionSalaryStartDateEndDate BehaviorHireFirePromoteIncreaseSalaryRetire 58 RepresentingClassesintheUML Aclassisrepresentedusingarectanglewithcompartments 属性 操作 59 属性 属性 attribute 是类的特征或特性属性的值是某一特定对象的属性值在类中属性名必须是唯一的每一个类的实例都有为这个类定义的所有属性的值 银行帐户类属性帐号银行名称拥有者金额 Mary的银行帐户属性值12345678FirstNationalBankMarySmith 1024 48 60 属性取决于视点 从销售人员的角度型号价格颜色里程数 一辆汽车具有的属性 从维修人员的角度马达类型传动类型维修记录 61 操作 操作 operation 访问或修改对象的属性值对象的行为是由为此对象定义的一系列操作决定的一个类可能同时存在多个实例 也可能在某一时刻没有实例一个类的所有实例都可以使用在这个类中定义的操作 从销售人员的角度处理客户定单准备销售合同加入清单从清单中删除 一辆汽车具有的操作 从维修人员的角度测试刹车修理刹车转动轮胎检查马达速度 操作取决于视点 63 类和对象 对象 实体 类 抽象数据类型 计算机世界 实例化 抽象 映射 映射 现实世界 64 类是生成对象的模板 类是生成对象的模板类的定义中包含有产生和删除对象的操作一个类定义了使用哪种数据表示法来描述属性每一个实例都采用有属性值的数据表示法一个类通过一系列操作来定义行为这种操作能在每个实例中激活 班机 65 类和对象的关系 每一个对象都是某一个类的实例每一个类在某一时刻都有零个或更多的实体类是静态的 它们的存在 语义和关系在执行前就已经定义好了对象是动态的 它们在程序执行时可以被创建和删除 66 内容安排 从结构化到面向对象课程介绍对象技术对象和类对象技术相关原则上升到面向对象 67 对象技术相关原则 对象技术基本原则 来自Rational 抽象 Abstraction 封装 Encapsulation 模块 Modularity 层次 Hierarchy 对象技术相关机制泛化 Generalization 多态 Polymorphism 68 抽象性 Abstraction Theessentialcharacteristicsofanentitythatdistinguishesitfromallotherkindsofentities Definesaboundaryrelativetotheperspectiveoftheviewer Isnotaconcretemanifestation denotestheidealessenceofsomething 69 Example Abstraction 一个项目的抽象依赖于定义抽象的上下文 70 封装 Encapsulation Hidesimplementationfromclients Clientsdependoninterface 71 为什么要封装 结构化程序设计 程序 算法 数据结构 全局数据 算法 算法 算法 算法 如何保证数据的一致性 72 范例 数据一致性 structShippingAddress longcityCode Stringaddress 城市代码例如 北京为01上海为02 邮政地址 北京朝阳区静安里6号 操作这个数据结构的程序员 必须严格遵守一系列业务逻辑规则 否则很容易破坏数据的一致性结构化程序设计处理大项目时 多人协同开发时 本质上无法保证数据的一致性 classShippingAddress privatelongcityCode privatestringaddress publiclongModifyAddress Stringaddress 73 封装 可见性问题 Visibility 可见性层次public protected private 作用域 类 方法 默认作用域friend友元 74 模块 Modularity BreaksupsomethingcomplexintomanageablepiecesHelpspeopleunderstandcomplexsystemsCohesion CouplingClass Component Package 75 Package AgeneralpurposemechanismfororganizingelementsintogroupsAmodelelementthatcancontainothermodelelements Apackagecanbeused Toorganizethemodelunderdevelopment Asaunitofconfigurationmanagement 76 APackageCanContainClasses ThePackage UniversityArtifacts containsonepackageandfiveclasses 77 层次 Hierarchy Anyrankingororderingofabstractionsintoatree likestructureTypesofHierarchy Inheritance Aggregation Increasingabstraction Decreasingabstraction Elementsatthesamelevelofthehierarchyshouldbeatthesamelevelofabstraction 78 Generalization Arelationshipamongclasseswhereoneclasssharesthestructureand orbehaviorofoneormoreclassesDefinesahierarchyofabstractionsinwhichasubclassinheritsfromoneormoresuperclassesSingleinheritanceMultipleinheritanceIsan isakindof relationship 79 单一继承 Oneclassinheritsfromanother 80 多重继承 Aclasscaninheritfromseveralotherclasses Usemultipleinheritanceonlywhenneededandalwayswithcaution 81 WhatIsInherited Asubclassinheritsitsparent sattributes operations andrelationshipsAsubclassmay Addadditionalattributes operations relationshipsRedefineinheritedoperations Usecaution Commonattributes operations and orrelationshipsareshownatthehighestapplicablelevelinthehierarchy 82 范例 继承什么 classStudent protectedstringname publicstringgetName publicAccounttheAccount classGraduateStudentextendsStudent 派生类 子类 从基类 超类 父类 中派生 继承了基类中全部的public和protected数据成员和方法 所以即使GraduateStudent中没有定义getName 也会从Student中得到getName 方法的全部实现派生类也会继承基类中的关系 因此GraduateStudent与Account也有聚合关系 83 WhatIsPolymorphism Theabilitytohidemanydifferentimplementationsbehindasingleinterface 84 范例 多态 classabstractShape publicabstractvoiddraw classRectangleextendsShape 覆盖 override 基类方法publicvoiddraw 绘制矩形 classCircleextendsShape 覆盖 override 基类方法publicvoiddraw 绘制圆形 85 应用多态性 假设我们有一个数组sharr 里面放着一排Shape 但是不知道哪些是Rectangle 哪些是Circle 利用多态性 我们可以 for inti 0 i sharr length i Shapeshape Shape sharr i shape draw 遍历整个数组的过程中 各个Shape自己知道应当如何在画布上绘制自己 shape draw 这同一行代码在shape指向不同的对象时表现出不同的行为 这就是所谓多态性 86 内容安排 从结构化到面向对象课程介绍对象技术对象和类对象技术相关原则上升到面向对象 87 本节目标 通过简单通俗的事例来演绎对象建模的基本概念 初步认识UML模型开阔视野 轻松树立面向对象的观点掌握用面向对象方法分析问题的要领为学习对象建模方法热身 88 实例1 OO观点的个人简介 tanHuobin是Teacher类的一个实例 该实例是基于beiHangUniversity对象的softwareSchool成员对象工作类GraduateStudent的所有实例都可以通过Course类的对象ooTechnology建立关联 并可发送phone消息 消息内容 82338518 862 或email消息 消息内容 thbin 89 OO个人简介的UML表示 90 实例2 对象思维分析问题 昨天我的一个朋友结婚了 91 问题分析 1 A 这里面有什么东东 月老 小伙 姑娘 恋人 玫瑰花B 每个东东看上去是什么样的 月老 看上去有些年纪了 挺热心的小伙 看上去很强壮 很诚实的姑娘 看上去好漂亮 还很温柔恋人 看上去很黏糊 当然就结婚了玫瑰花 火红火红的 难怪姑娘动情了 92 问题分析 2 C 每个东东能做点什么用 月老 牵线搭桥 介绍认识小伙 追求献花 表达爱意姑娘 仰慕倾情 以身相许恋人 拍拖 结婚玫瑰花 令姑娘头晕 传情示爱 93 问题分析 3 D 这些东东都呆在什么地方 月老 婚介所 交友网站小伙 软件园 住回龙观姑娘 人民医院 住望京恋人 情侣路 电影院 玫瑰花 花店里 小伙手中 姑娘手中 94 问题分析 4 E 这些东东之间有什么关系 9
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 封顶仪式布置工程方案(3篇)
- 电气工拆除工程方案(3篇)
- 球儿真好玩课件
- 安全教育预期培训收益课件
- 猫狗咬伤护理课件
- 猫咪课件课程总结
- 文化自信在中职语文教学中的表征与落实途径初探
- 农业无人机租赁市场2025年技术创新与产业升级趋势分析
- 工程安全防台方案(3篇)
- 电梯工程分包方案范本(3篇)
- 携程旅行合同电子版
- 河北省邯郸市2025届高三年级第一次调研监测 英语
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- 四川省成都市2025届高中毕业班摸底测试英语试题(含答案)
- 简易呼吸器使用的评分标准
- 电脑耗材实施方案、供货方案、售后服务方案
- 水利工程专家协议书
- 肝硬化伴胃底静脉曲张的护理查房
- 2024年低压电工考试题库低压电工证考试内容
- 5 国行公祭为佑世界和平
- 食堂员工防鼠知识培训
评论
0/150
提交评论