SE0801-lecture10 面向对象技术.ppt_第1页
SE0801-lecture10 面向对象技术.ppt_第2页
SE0801-lecture10 面向对象技术.ppt_第3页
SE0801-lecture10 面向对象技术.ppt_第4页
SE0801-lecture10 面向对象技术.ppt_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象技术,刘竹松 广东工业计算机学院 (PPT根据网络资源修改,在此表示感谢),-2-,课程目标,能够熟练地使用UML表达设计思想 运用面向对象设计的一般原则进行应用系统的分析和设计 对面向对象思想和理论有进一步的理解,-3-,Why?,需要理由吗? 我们从事软件行业 面向对象是最主流的软件开发思想 UML是最主流的建模方法,UML+面向对象,OOAD,系统定义、分析、设计、实现,对于今天的软件开发者来说,UML是他们的面包和黄油,-4-,What?,1- 感受面向对象的思想 2- 学习基本的面向对象理论 3- 学习基本的UML语言 4- 利用UML语言进行面向对象的系统建模,-5-,Ag

2、enda,-6-,References-1,UML Distilled Martin Flower UML最佳入门书籍,-7-,Martin Flower,Martin Fowler:英国口音的软件工程师 “统一建模语言(UML)的发明者Grady Booch本人,都不一定比Martin Fowler更会用UML” 官方文献和经典著作: 一方面是严谨、准确,但又高度抽象化甚至形式化; 一方面则是生动、直观,不求面面俱到,但能让人很快就对概念大厦的全貌一目了然 从1986年在故乡英国拿到电子工程学位,到参与开发建模软件Ptech,再到成为独立开发顾问,参与国家保健服务系统的开发,再到移居美国,加

3、入著名的克莱斯勒C3项目,到成为软件顾问公司ThoughtWorks的首席科学家 Im the only person here, Ive never heard of,-8-,References2-1,Applying UML and Patterns - An Introduction to Object-Oriented Analysis and Design UML和模式应用-面向对象分析与设计导论 THE BEST Object Orientated Analysis and Design tutorial book (A) 在 OOA/D、迭代式开发和 UML 方面是全球最畅销的

4、书籍之一,已被翻译成多种语言并在业界和院校中被广泛使用,-9-,References2-2,Craig Larman,“People often ask me which is the best book to introduce them to the world of OO design. Ever since I came across it, Applying UML and Patterns has been my unreserved choice.” -Martin Flower, author, UML Distilled and Refactoring,-10-,Refere

5、nces2-3,-11-,References-3,The Unified Modeling Language User Guide(UML用户指南) The Unified Modeling Language Reference Manual(UML参考手册) Grady Booch James Rumbaugh Ivar Jacobson,-12-,References-4,Design Patterns: Elements of Reuseable Object-Oriented Software GoF (Gang of Four): Erich Gamma, Richard Helm

6、, Ralph Johnson, John Vlissides 长盛不衰的经典 23种设计模式 李维:不会用设计模式的程序员是低层次的软件人才,他们只会写code罢了 Agile Software Development - Principles, Patterns, and Practices Robert C. Martin 2003年的Jolt图书震撼大奖,将面向对象与敏捷软件开发方法结合,-13-,References-5,Enterprise Java with UML 介绍各种UML软件模型,加深对面向对象分析与设计的理解 结合Java语言,灵活使用UML 通过一个案例(考勤卡系统

7、),贯穿全书: 从用户需求到最终实现 从各种UML图表到完成最后Java代码,-14-,References-6,Web Resources /uml/ / ,上升到面向对象An Approach to the Object-Oriented,-16-,学习线路图,OO,UML,OOA,OOD,DP, Case-Study ,学 习 线 路 图,-17-,内容安排,面向对象技术概述 面向对象技术发展 面向对象与结构化 上升到面向对象,-18-,内容安排,面向对象技术概述 面向对象技术发展 面向对象与结构化 上升到面向对

8、象,-19-,面向对象技术,是一种看待计算机软件系统的观点 是一种系统分析和设计的思想 是一种编程方法 是一组设计模式 是一种编程语言设计思路 是实践者的日常工作 是吹鼓手、骗子和市场人员口中的“万灵丹”,-20-,面向对象技术定义,面向对象方法是一种把面向对象的思想运用于软件开发过程,指导开发活动的系统方法,包括分析、设计和实现等活动,面向对象技术基于对象概念,以对象为中心,以类和继承为构造机制,充分利用接口和多态提供灵活性,来认识、理解、刻划客观世界和设计、构建相应的软件系统,面向对象=对象 + 类 + 消息 + 继承 + 多态,-21-,面向对象方法学,面向机器 面向代数 面向过程 面向

9、数据 面向文件 面向信息 面向应用 面向功能 面向数据流 ,面向对象是软件方法学的返璞归真:面向用户,软件科学的发展历程中出现过许多“面向”,软件开发从过分专业化的方法、规则和技巧中回到了客观世界,回到了人们的日常思维,是软件理论的返朴归真,面向对象,-22-,面向对象技术利益-1,沟通 顺应人类思维习惯,让软件开发人员在解空间中直接模拟问题空间中的对象及其行为,PUSH EBX MOV EBX,EDX MOV EDX,EAX SHR EDX,16 DIV BX,AHare.Run; ALion.Catch(AHare); ALion.Kill(AHare); AHare.Dead; ALio

10、n.Eat; ALion.Happy;,在计算机中模拟现实世界的事和物,-23-,实例01-01:“东北一家人?”,东北人都是活雷锋 人、东北人、雷锋 老张开车去东北 撞啦! 老张、汽车、开车 撞啦,-24-,class 人 Region 籍贯; class Region interface 雷锋 helpPeople() class 东北人 extends 人 implements 雷锋 籍贯 = 东北; helpPeople() ,class Car DriveTo(Region) throws Exception (撞车) 人 Driver; Main Program 人 老张; Car

11、 夏利; 夏利.Driver = 老张; try 夏利.DriveTo(东北); catch (Exception) ,面向对象的表示,-25-,面向对象技术利益-2,稳定 较小的需求变化不会导致系统结构大的改变 当需求变化时,功能:最易变 数据:较易变 对象:较稳定,稳定性增加,用较稳定把不稳定的包起来,-26-,面向对象技术利益-3,复用 代码重用:类库、框架等重用机制 能提高质量,减少由于编制新的系统代码而产生的成本 通过继承、关联、封装等手段,软件开发组越大,组中每个成员的生产率就越低 -Philippe Kahn, Borland公司创始人,构造大型软件不能靠堆人,-27-,面向对象

12、技术利益-4,改善软件结构(模块化与封装),提高软件灵活性 增加可扩展性 支持增量式开发,支持大型软件开发 ,-28-,面向对象技术研究内容,面向对象的编程(OOP: Object-Oriented Programming) 当今最流行的编程语言:Java、C# 面向对象的分析与设计(OOAD: Object-Oriented Analysis and Design) 当今最流行的建模语言:UML(Unified Modeling Language),L. M. Northrop: 尽管面向对象语言正取得令人振奋的发展,但编程并不是软件开发问题的主要根源。需求分析与设计问题更为普遍并且更值得解

13、决。因此面向对象开发技术的焦点不应该只对准编程阶段,而应更全面地对准软件工程的其他阶段。面向对象方法真正意义深远的目标是它适合于解决分析与设计期间的复杂性并实现分析与设计的复用。面向对象的开发不仅仅是编程,必须在整个软件生命周期采用一种全新的方法,这一观点已被人们所接受。 软件工程百科全书纽约, 1994,-29-,内容安排,面向对象技术概述 面向对象技术发展 面向对象与结构化 上升到面向对象,-30-,面向对象技术发展-1,里程碑1:Simula 67 (1962-1967,挪威) Ole-Johan Dahl和Kristen Nygaard 在挪威奥斯陆国家计算中心(NCC) 设计实现.

14、公认的世界上第一种面向对象语言 基本思想,-31-,面向对象技术发展-2,里程碑2:Smalltalk(1970,施乐保罗阿托) Alan Kay设计实现 第一个成熟的面向对象语言,为开发GUI而设计 实用化,预言历史的最佳方式是创造历史 - Alan Kay,-32-,Smalltalk范例,“无消息模式方法,宜写算法” | s c f k | “定义了四个临时变量” fArray new:26. “f是Array实例长度26” sPrompter prompt:enter line default: “s是Prompter的实例,装输入字串” 1 to:26 do:i|f at:i put

15、:0. 1 to:size do:i| c(s at:i) asLowerCase. C isLetter ifTrue: kc asciiValue-a asciiValue + 1. F at:k put:(f at:k) + 1 . f,-33-,面向对象技术发展-3,里程碑3:ADT, Ada 83, 基于对象(1977-1983) 编程理论界在结构化运动中提出ADT思想,以N. Wirth和Liskov为代表 美国防部军用开发语言评选,Ada被指定为强制性军用编程语言,实际上已经进入“基于对象”阶段,Ada Lovelace是英国著名诗人拜伦的女儿,世界上第一个程序员。Ada语言以她

16、的名字命名,-34-,面向对象技术发展-4,里程碑4:C+ (1982,贝尔实验室) 第一个被工业界广泛接受的支持面向对象能力的语言,创造者Bjarne Stroustrup 动机是给C添加一些Simula特性,以完成当时刚刚出现的大规模复杂任务 商业化,Bjarne Stroustrup,-35-,面向对象技术发展-5,里程碑5:MS-Windows(1985,微软) 第一个被广泛使用的GUI系统软件,它使面向对象技术的使用不可阻遏,1985年出品的Windows 1.0产品,1987年出品的Windows 2.0界面,-36-,面向对象技术发展-6,里程碑6:Booch Method(19

17、91,G. Booch) 第一个被广泛接受使用的面向对象建模方法,Booch代表作的第三版,-37-,面向对象技术发展-7,里程碑7:设计模式出版(1995,GoF) 掀起模式运动,-38-,面向对象技术发展-8,里程碑8:Java语言推出(1995,Sun) 第一个被广泛使用的面向对象语言,J2EE是目前最成功的面向对象框架。,-39-,面向对象技术发展-9,里程碑9:UML被OMG接纳为标准(1997) 面向对象方法学之战结束,-40-,面向对象技术发展-10,里程碑10:微软.NET计划(2000) 意义还难以评估,-41-,面向对象技术发展-总结,60年代后期:Simul67,基本思想

18、 70年代后期:Smalltalk80,实用化 80年代:理论基础,C+等,商业化 90年代:面向对象与设计方法学 B.H. Sellers等提出喷泉模型 G. Booch提出面向对象开发方法等 P. Coad和E.Yourdon提出OOA和OOD Jacobson提出OOSE 1997年:UML,面向对象程序设计语言,“方法大战”,-42-,面向对象技术发展-现状,现状 OO成为最重要的软件开发方法 OO在GUI、模拟系统、游戏开发、应用框架、软件构件化领域大显身手 Java、UML 与 RUP 构件技术 (CORBA、COM、EJB、.Net) 类库与设计模式,-43-,面向对象技术发展-

19、未来,未来 OO的形式化与自动化 OO构件、设计模式的丰富将进一步提高软件开发的效率和质量 软件开发人员必须从 Think Procedurely转变为 Think Object-Orientedly,-44-,内容安排,面向对象技术概述 面向对象技术发展 面向对象与结构化 上升到面向对象,-45-,面向对象 VS 结构化-1,扬弃,不是否定,-46-,面向对象 VS 结构化-2,Programming,-47-,面向对象 VS 结构化-3,结构化方法(SA+SD+SP),面向对象的方法,问 题 域,问 题 域,结构化分析,分析与设计的鸿沟,结构化设计,结构化编程,如C语言,需求工程,OOA&

20、D,OOP,如Java语言,测 试,计 算 机 系 统,测 试,计 算 机 系 统,自然语言,编程语言,自然语言,OO编程语言,数据流图数据字典,模块和过程,需求模型,对象模型,OO方法,OO建模语言,-48-,面向对象 VS 结构化-4,-49-,面向对象设计,关键:通过对象间的关系描述递归关系,-50-,归纳总结,结构化设计用算法刻画数据的递归关系,而面向对象思想直接用对象表达递归关系“模拟现实世界” 结构化设计中,数据是死的,全部依赖算法操作,而面向对象中,数据是活的,所谓的smart data 结构化设计更像是一个人在解决所有的问题,而面向对象设计更像是一个团队的分工协作,-51-,体

21、会,使用得当,面向对象设计具有更大的灵活性,更好的模块化,可以进行更大规模的设计 但同时,面向对象设计和开发的难度更大,因为除了要考虑算法之外,还要考虑对现实世界的模拟、对象的识别和职责分配等等一系列问题 优秀的面向对象设计需要学习更多知识和技术,掌握一系列设计原则和模式 UML图形化工具有助于表达和交流设计思想。但是否可以做到“无代码编程”,还在争论中,-52-,题外话,既然OO更难,为什么要用它? 大规模程序设计 灵活多变的系统需求 技术进步的必经之路 保持冷静:确实有很多项目不适合用OO,传统的结构化设计仍然很有意义。 本课程的重点是UML、面向对象分析和设计过程以及相关的设计原则和设计

22、模式基础,-53-,内容安排,面向对象技术概述 面向对象技术发展 面向对象与结构化 上升到面向对象,-54-,本节目标,通过简单通俗的事例来演绎对象建模的基本概念 开阔视野,轻松树立面向对象的观点 掌握用面向对象方法分析问题的要领 为学习对象建模方法热身,-55-,什么是建模?,建模就是认识现实世界,客观世界,主观世界,认识世界,改造世界,世界是什么样的呢?,-56-,模型因人而异,不同类型的人有不同的世界观,持不同的世界观就会得到对现实世界的不同认识 建立不同的模型,模块,函数,功能,类,关联,对象,-57-,模型体现现实世界,只存在同一个现实世界,模型没有对错、只有符合建模人目的多少之分,

23、-58-,OO、UML与建模,建模是最终目的 OO是一种建模理论 UML是一种体现OO的建模语言,是将OO理论转化为实践的工具,-59-,实例01-03,昨天我的一个朋友结婚了,-60-,问题分析-1,A. 这里面有什么东东? 月老,小伙,姑娘,恋人,玫瑰花 B. 每个东东看上去是什么样的? 月老,看上去有些年纪了,挺热心的 小伙,看上去很强壮,很诚实的 姑娘,看上去好漂亮,还很温柔 恋人,看上去很黏糊,当然就结婚了 玫瑰花,火红火红的,难怪姑娘动情了,-61-,问题分析-2,C. 每个东东能做点什么用? 月老:牵线搭桥,介绍认识 小伙:追求献花,表达爱意 姑娘:仰慕倾情,以身相许 恋人:拍拖

24、,结婚 玫瑰花:令姑娘头晕,传情示爱,-62-,问题分析-3,D. 这些东东都呆在什么地方? 月老:婚介所,交友网站 小伙:软件园,住唐家 姑娘:人民医院,住新香洲 恋人:情侣路,电影院, 玫瑰花:花店里,小伙手中,姑娘手中,-63-,问题分析-4,E. 这些东东之间有什么关系?,-64-,问题分析-5,F. 这些东东是怎么成事的? 月老牵线搭桥,介绍小伙和姑娘认识 姑娘和小伙一见钟情,成为一对恋人 一对恋人开始拍拖 小伙追求献花,表达对姑娘的爱意 姑娘收到999火红玫瑰,激动得头晕目眩 小伙真心求婚,姑娘以身相许 一对恋人终于走入婚姻殿堂,-65-,上升到面向对象用面向对象观点观看事物,-66-,用对象观点认识事物,A.这里面有什么东东?类与对象 B.每个东东看上去是什么样的?类的属性 C.每个东东能做点什么用?类的方法 D.这些东东都呆在什么地方?类的行为、状态、部署 E.这些东东之间有什么关系?类间的关联 F.这些东东是怎么成事的?类间的交互,-67-,我的一个朋友结婚了-A,A.这里面有什么东东? Object Class 我 本剧与我无关 我的朋友小伙 我朋友的妻子姑娘 月老 恋人 玫瑰 ,A,-68-,我的一个朋友结婚了-B,B.每个东东看上去是什么样的? 每个事物

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论