面向对象分析与设计概述

上传人:lx****y 文档编号:243449435 上传时间:2024-09-23 格式:PPT 页数:92 大小:1.54MB
返回 下载 相关 举报
面向对象分析与设计概述_第1页
第1页 / 共92页
面向对象分析与设计概述_第2页
第2页 / 共92页
面向对象分析与设计概述_第3页
第3页 / 共92页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,2013,春季学期,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,信息学院 教育技术 曾玲,ling-,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象分析与设计,第一章 面向对象方法概论,1,软件系统开发方法,传统开发方法,面向对象方法,直接写程序,结构化分析法,信息建模法,功能能分解法,数据流法,有限状态机法,基于规则系统,E-R,图,人工智能,专家系统,抽象,客户,委托,信息隐藏,封装,数据抽象,过程抽象,消息通信,泛化继承,分类,代理,动态行为,静态行为,行为分析,复杂性控制,包括,包括,包括,包括,包括,包括,包括,包括,包括,使用,使用,用于,原则,原则,原则,原则,原则,原则,原则,原则,包括,包括,包括,包括,包括,包括,包括,2,Contents,内容,1.,问题提出,2.OO,思想与,OO,程序,3.OO,概念与原则,4. OO,优点,面向对象方法概论,Object Oriented Method,3,Problem of Software Dvpt,4,1,1,传统开发方法中存在的问题,二十世纪六十年代以前,软件系统:较小 ,相对简单,编程语言:十分简单(,Fortran, Cobol,等 ),崇尚程序员的个人技能,代码:含,GOTO,语句,随意跳转,随着软件复杂性的增长,代码维护,无开发方法,可言,5,1、功能分解法(,起于二十世纪七十年代,),功能分解法(,function decomposition,),功能分解 功能,+,子功能,+,功能接口,以系统需要提供的功能为中心来组织系统。,定义各种功能,把功能分解为子功能,同时定义功能之间的接口,对较大的子功能进一步分解,直到可给出明确的定义。,设计数据结构和算法。,功能,功能,功能,系统,子功能,子功能,子功能,子功能,分解,分解,分解,6,C,语言案例,“,程序设计,的实质是对确定的问题选择一种好的,结构,,加上设计一种好的,算法,。”,严蔚敏,. ,数据结构,案例:,1.0,学生成绩信息管理,.C,1.1.1 prog1.c,与,1.1.2 prog2.c,7,功能,模块,功能,模块,功能,模块,功能,模块,功能,模块,功能,模块,功能,模块,功能,模块,功能,模块,功能,模块,得到的系统模型:,由模块及其接口构成,8,优点,计算机应用普及,特定的用户按自己的需要,对软件系统做出了功能性的要求,有据可寻。,在相当大的程度上,解决了以前存在的问题,特别是与模块化编程结合使用,效率更高,删除,GOTO,语句,与模块化编程相结合,使得软件能得到有效的维护,适用于功能稳定的应用领域,如某些科学计算,直接地反映用户的需求,工作很容易开始,9,缺点,结构化分析和设计注重处理功能,对所处理的数据放于次要的位置,对于众多的领域而言,其功能是易变的,如企业管理和商业管理。,对需求变化的适应能力很差。,局部的错误和局部的修改很容易产生全局性的影响。,开头容易,结束难。,不能直接地映射问题域,很难检验分析结果的正确性。,10,2,、数据流法(,结构化分析法,二十世纪七十年代,),数据流法 数据流数据处理(加工)数据存储端点处理说明数据字典,基本策略,跟踪数据流,问题域被映射为数据流图(,DFD,),用处理说明和数据字典进行详细说明。,数据流,加工,数据存储,端点,处理说明,数据词典,11,经过初步的需求分析,得到系统功能要求:,1,、监视病员的病症(血压、体温、脉搏等)。,2,、定时更新病历。,3,、病员出现异常情况时报警。,4,、随机地产生某一病员的病情报告。,数据流图案例,:医院病房监护系统,产生,病情报告,监视病情,更新病历,12,数据存储,数据源点,或终点,加 工,加工名,数据流,数据流名,文件名,实体名,箭 头,圆或椭圆,单或双杠,矩形框,T,A,B,*,C,T,A,B,*,C,T,A,B,+,C,T,A,B,+,C,T,A,B,C,+,T,A,B,C,+,*,与,+,或,互斥,+,辅助图例,:,四种基本图形符号:,数据流图的图符,13,系统功能要求:,1,、监视病员的病症(血压、体温、脉搏等),2,、定时更新病历,3,、病员出现异常情况时报警。,4,、随机地产生某一病员的病情报告。,顶层:,顶层设计,:,案例:医院病房监护系统,14,计算超过,极限值否,病员,数据,超过,极限值,报警,开解信号,产生,报警信息,病员极限,格式化,病员数据,体温,血压、体温、,脉搏,生理信号,极限值,时间,脉搏,血压,日期,时钟,格式化,病员数据,3.1,3.2,3.3,3.4,第二层:加工“,中央监视”分解,图,2.15,第一层,格式化,病员数据,生理信号,极限值,病员,护士,护士,中央监视,病员,日志,病症信号,要求报告,病症,报告,报警,局部监视,生成报告,病员极限,更新日志,病员数据,1,3,2,4,日志数据,图,2.16,医院病房监护系统分层,DFD,图,15,数据流法业务模型优缺点,优点:,有严格的法则,逐步求精,较强调研究问题域。,缺点:,在概念上,不能直接地映射到问题域中的事物,对需求变化的适应能力较弱。,大系统数据流和加工的数量太多,引起分析文档的膨胀。,系统复杂时,难以检验分析的正确性。,分析与设计的概念和表示法不一致,其转换规则也不严格。,16,小结,功能分解法和数据流法,适用于功能稳定的应用领域,如某些科学计算,已经开发了很多软件系统。,对于功能易变的众多领域,如企业管理和商业管理领域,容易导致模块的低内聚和模块间的高耦合,使得统缺乏灵活性和可维护性。,由于当时团队的开发与管理方法不足,20,世纪,70,年代,软件危机情况更加严重。,解决软件危机方法,对开发技术进行了一定的改进,对编程语言进行了革新,如产生了用于软件开发的,4GL,、,CASE,工具、原型技术和代码生成器,这些努力取得了一定的成就,但没有从根本上解决问题。,17,3,、基于数据的方法(,二十世纪八十年代,),实体,-,联系图,用实体的数据集合作为构造块,以数据结构为中心。,信念,数据是“企业应用”中最稳定的部分,背景,关系数据库有一个极好的数学基础,大多数公司使用数据建模方法开发软件。,结构化的方法实际上能够帮助开发者处理数据,但数据建模方法却不能帮助开发者管理功能。,18,信息建模法(,information modeling,),信息建模 实体(对象)属性关系父类型子类型关联对象,由实体,-,联系法(,E-R,方法)发展而来。,与数据库设计有很深的渊源。,核心概念是实体和联系:,实体描述问题域的事物,含有属性;,联系描述事物之间在数据方面的关系,也可以带有属性。,实体称作对象,使用类型和子类型的概念,作为实体(对象)的抽象描述。,19,业务模型,实体(对象),属性,联系,父类型,/,子类型,关联对象,跟踪数据流,从而发现数据流和加工。,强调对信息实体建模,而不是对象建模。,对象只有属性,而无操作。,父类与子类之间也只有属性继承。,没采用消息通讯。,1,20,4,、有限状态机方法,基于现实的行为视图,状态系统的构造块,所操作的数据独立于状态,基于系统状态的处理,这一方法没有说到数据管理。,预订,归档,使用,确认,等待,机票初始状态,21,5,、基于规则的系统,计算机是执行一套规则的推理机(,ifthen,语句)。,基于人工智能系统,没有帮助我们处理数据,不支持过程概念,如,prolog, list,语言, ,22,传统开发方法总结,上述方法都仅基于一个角度看待系统,对系统的其它视图建模方面的能力很弱。,对,OO,产生都做出了一定的贡献,.,23,Contents,内容,1.,问题提出,2.OO,思想与,OO,程序,3.OO,概念与原则,4. OOD,优点,面向对象方法概论,Object Oriented Method,24,Basic Idea of OO,25,1,2,面向对象的基本思想,功能分解法,集中于将功能作为系统的构造块,数据分析方法(实体联系模型),构造块是实体,忽略了满足系统需求的功能,功能分解法与数据分析方法存在问题:,没有处理对动态行为的捕获,忽略了声明性语义(规则)以及例外处理机制,八十年代中后期,:出现较为完善的面向对象分析和设计方法,从多个视角同时捕获系统功能、行为、实体,26,一切都是对象,例题:编写一个开发票程序,需要对发票的名细栏进行计算。,编号,名称,规格,单位,数量,单价,金额,合计,非面向对象思路:,定义数据结构,定义函数,面向对象思路:,对象,一组属性,操作:发票总计,27,什么是面向对象,从程序设计方法的角度看,面向对象是一种新的,程序设计范型,(paradigm),,其基本思想是使用对象、类、继承、封装、,聚合、关联、,消息、,多态性,等基本概念来进行,程序设计,。,从方法学的角度看,面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来,构造系统,的,软件开发方法,。,28,面向对象的基本思想,直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。,使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌,(,对象,),用对象的属性表示事物的性质;,(属性),用对象的操作表示事物的行为。,(操作),对象的属性与操作结合为一体,对外屏蔽其内部细节。,(对象的封装),29,面向对象的基本思想(,Cont.),对事物进行分类。,把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。,(分类),复杂的对象可以用简单的对象作为其构成部分。,(聚合),通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。,特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档。,(继承),类具有封闭性,把内部的属性和操作隐藏起来,只有公共的操作对外是可见的,。,(,类的封闭性,),对象之间通过消息进行通讯,实现对象之间的动态联系。,(消息),通过关联表达类,(,一组对象,),之间的静态关系。,(关联),30,客观世界,对象,对象,对象,对象,对象,对象,对象,对象,对象,对象,对象名,属性,操作,类,类,类,类,分类,类,继承,类,类,对象,聚合,抽象,客观事物及其间的联系,关联,用况图,类图,顺序图,状态图,活动图,构件图,OO,模型,编程,构成,封装,运行,分析,设计,面向对象的基本思想,示意图,对象,对象,对象,对象,对象,对象,对象,对象,计算机内的对象,31,OO Programming,32,Procedural Programming - Example,A procedural programming language usually consists of :,A collection of,variable,s, each of which at any stage contains a certain value (a number, a character, a string of characters, etc),A collection of,statements,that change the values of these variables.,The building-block of this type program is the,procedure,or,function,.,Programs = Algorithm,+,Data Structure,Struct account ,char name;,int accountId;,float balance;,float interestYTD;,char accountType;,;,Data Structure:,Bank Account,Procedure 1: Deposit() .,Procedure 1: Withdraw() .,Procedure 1: Transfer() .,33,Object-Oriented Programming - Example,Object-Oriented approach,combine the accounts (data) with the operations on the accounts to objects.,A new kind of data type: BankAccount class,C+ code:,Class BankAccount ,private:,float balance;,float interestYTD;char * owner;,int account_number;,public:,void Deposit (float amount) .,float WithDraw (float amount) ,bool Transfer (BankAccount & to, float amount) ,;,34,Object-Oriented Programming - Example,The building-block of this type program is,class,or,objects,.,35,C+,案例(计算机内的对象),1.2 student_class.cpp,1.3 construct_class.cpp,1.4 construct_class_1.cpp,1.5 overload.cpp,1.6 overload.cpp,1.7 hierarchy.cpp,1.8 hierarchy.cpp,36,Java,案例(计算机内的对象),引用:,PassTest.java,重载:,methodoverloadingtest,多态:,geometrydemo,永久对象:,JDBC,37,Contents,内容,1.,问题提出,2.OO,思想与,OO,程序,3.OO,概念与原则,4. OO,优点,面向对象方法概论,Object Oriented Method,38,Basic concepts of OO,39,Basic Concepts of Object Orientation,Object,对象,Class,类,Message,消息,association,关联,aggregation,聚合,Basic Principles of Object Orientation,面向对象的基本原则,Abstraction,抽象,Encapsulation,封装,Inheritance,继承,Polymorphism,多态,Interface and Abstract Class,接口与抽象类,行为分析,复杂性控制,40,What Is an Object?,Informally, an object represents,代表,an entity,实体, either physical, conceptual, or software.,Physical,物理,entity,Conceptual,概念,entity,Software,软件,entity,Truck,Chemical Process,Linked List,41,A More Formal Definition,正式的定义,An object is an entity with a well-defined,明确定义,的,boundary,边界,and identity,标识,that encapsulates,state,状态,and,behavior,行为,.,State is represented by attributes,属性,and relationships,关系,.,Behavior is represented by operations,操作, methods,方法, and state machines,状态机,.,Object,Operations,Attributes,42,An Object Has State,状态,The state of an object is one of the possible conditions,可能的状况,in which an object may exist.,The state of an object normally changes over time,随着时间而变化,.,Name: J Clark,Employee ID: 567138,HireDate: 07/25/1991,Status: Tenured,Discipline: Finance,MaxLoad: 3,Name: J Clark,Employee ID: 567138,Date Hired: July 25, 1991,Status: Tenured,终身的,Discipline: Finance,Maximum Course Load: 3 classes,Professor Clark,Professor Clark,43,An Object Has Behavior,行为,Behavior determines,决定,how an object acts and reacts,行为与反应,.,The visible,可见的,behavior of an object is modeled,建模,by the set of messages it can respond to,可以响应,(operations the object can perform,对象能够执行的操作,).,Professor Clarks behavior,Submit Final Grades,Accept Course Offering,Take Sabbatical,Maximum Course Load: 3 classes,Subm,itFinalGrades,(),AcceptCourseOffering(),TakeSabbatical(),Professor Clark,SetMaxLoad(),Professor Clark,44,An Object Has Identity,标识,Each object has a unique identity,唯一标识, even if the state is identical to that of another object.,Professor “J Clark” teaches Biology,Professor “J Clark” teaches Biology,45,Objects Need to Collaborate,合作,Objects are useless unless they can collaborate together to solve a problem.,Each object is responsible for its own behavior and status.,No one object can carry out,执行,every responsibility,责任,on its own,独自,.,How do objects interact,相互作用,with each other?,They interact through messages.,46,What Is a Class?,A class is a description of a set of,一组,objects that share the same,properties,and,behavior,.,An object is an instance of a class.,Objects,Professor Smith,Professor Jones,Professor Mellon,Class: Professor,Attributes,Operations,47,A Sample Class,Data Items:,manufacturers name,制造商,model name,产品型号,year made,color,number of doors,size of engine,发动机,etc.,Methods:,Define data items (specify,指定,manufacturers name, model, year, etc.),Change a data item (color, engine, etc.),Display data items,Calculate cost,etc.,Class: Automobile,48,The Relationship Between Classes and Objects,A class is an abstract definition of an object.,It defines the structure and behavior of each object in the class.,It serves as a template,模板,for creating objects,Objects are grouped into,分组,classes.,An object is an instance,实例,of a class.,Objects,Professor Smith,Professor Jones,Professor Mellon,From Real World,abstracting,Class: Professor,To computer World,instancing,Objects,49,What Is an Attribute,属性,?,An attribute is a named property of a class that describes a range of values,一套变量,instances of the property may hold.,A class may have any number of attributes or no attributes at all.,Attributes,50,Attributes in Classes and Objects,name: M. Modano,address: 123 Main,studentID: 9,dateofBirth: 03/10/1967,name: D. Hatcher,address: 456 Oak,studentID: 2,dateofBirth: 12/11/1969,Class,Objects,51,What Is an Operation?,An operation is the implementation of a service that can be requested from any object of the class to affect behavior.,A class may have any number of operations or none at all.,Operations,52,class Professor,private String name;,private int age;,private String speciality;,public Professor (String sm, int ia, String ss) ,name = sm;,age = ia;,speciality = sst;,public String getName () return name;,public int getAge () return age;,public String getSpeciality () return speciality;,Example: class,P,rofessor,Professor,-,name : String,-,age : int,-,speciality : String,+,getName() : String,+,getAge() : int,+,getSpeciality() : String,53,wang : Professor,name = “wang”,age = 35,speciality = “computer”,Professor wang = new Professor (“wang”, 35, “computer”);,Example : Instance of Professor,54,What is a message?,A specification,规格,of a communication between objects that conveys,传输,information with the,expectation,期望,that activity,行动,will ensue,跟着发生,One object asks another object to perform an operation.,Professor wang,wang.getName(),What is your name?,55,Example: Object Interaction,The OrderEntryForm wants Order to calculate the total dollar value for the order.,OrderEntryForm,Order,orderID,date,salesTotal,tax,shipDate,CalculateOrderTotal(),calculateOrderTotal(),The class Order has the,responsibility,to calculate the total dollar value.,Message,56,Basic Principles,原则,of Object Orientation,Object Orientation,面向对象,Encapsulation,封装,Abstraction,抽象,Polymorphism,多态,Inheritance,继承,57,What Is Abstraction?,Abstraction can be defined as:,Any model that includes the most important,重要的, essential,基本的, or distinguishing,区分的,aspects of something while suppressing,抑制,or ignoring,忽略,less important, immaterial,不重要的, or diversionary,转移注意力的,details. The result of removing distinctions,区别,so as to emphasize commonalties,共同点,. (,Dictionary of Object Technology, Firesmith, Eykholt, 1995),Abstraction,Emphasizes relevant characteristics.,Suppresses other characteristics.,BriefCase,-,Capacity,-,Weight,+ open(),+ close(),58,Example: Abstraction,Student,Professor,Course Offering (9:00 AM,Monday-Wednesday-Friday,),Course (e.g. Algebra),59,What Is Encapsulation?,Encapsulation,means to design,设计, produce,生产, and describe,描述,software so that it can be easily used,使用,without knowing the details,细节,of how it works.,Also known as,information hiding,信息隐藏,An analogy,类比,:,When you drive a car, you dont have to know the details of how many cylinders,汽缸,the engine has or how the gasoline,汽油,and air,空气,are mixed and ignited,点燃,.,Instead,相反地,you only have to know how to use the controls.,60,What Is Encapsulation?,Improves Resiliency,弹性,Hide implemmentation,实现,from clients,clients depend on interface,61,Encapsulation Illustrated,举例说明,Professor Clark needs to be able to teach four classes in the next semester.,SubmitFinalGrades,(),AcceptCourseOffering,(),TakeSabbatical,(),Professor Clark,SetMaxLoad(),Name: J Clark,Employee ID: 567138,HireDate: 07/25/1991,Status: Tenured,Discipline: Finance,MaxLoad:4,SetMaxLoad(4),62,Encapsulation Information,/,Implementation hiding,Interface,Implementation details which are unvisuable for client.,Information which cant be accessed by client,Client,Deposit(),Withdraw(),Transfer(),Balance,insterestYTD,Owner,Account_number,Deposit() ,Withdraw() ,Transfer() ,63,What Is Inheritance ?,Inheritance,a way of organizing classes,Term,术语,comes from inheritance of traits,特征,like eye color, hair color, and so on.,Classes with properties in common can be grouped so that their common properties are only defined once.,Is an “is a kind of” relationship,64,An Inheritance Hierarchy,层级,Vehicle车辆,Automobile汽车,Motorcycle摩托车,Bus公共汽车,Sedan轿车,Sports Car,School Bus,Luxury Bus豪华客车,What properties does each vehicle inherit from the types of vehicles above it in the diagram?,65,Example: Single Inheritance,单继承,One class inherits from another.,Checking,Savings,Superclass (parent),Subclasses,Inheritance Relationship,Ancestor,Descendents,66,Example: Multiple Inheritance,多重继承,A class can inherit from several other classes.,Use multiple inheritance only when needed and,always with caution!,Multiple Inheritance,67,Polymorphism,多态性,Polymorphism,the same word or phrase can be mean different things in different contexts,不同情境下的不同东西,Analogy: in English, bank can mean side of a river or a place to put money,In Java, two or more classes could each have a method called,output,Each,output,method would do the right thing for the class that it was in.,One,output,might display a number,数字,whereas a different one might display a name,名字,.,68,What Is Polymorphism?,The ability to hide many different implementation behind a single interface.,Manufacturer A,Manufacturer B,Manufacturer C,OO Principle:Encapsulation,69,Example: Polymorphism,Stock股票,Bond债券,Mutual Fund共有基金,Get Current Value,getCurrentValue(),getCurrentValue(),getCurrentValue(),70,Realization relationship,(stay tuned for realization relationships),What is an Interface?,An,interface,is a collection of operations that specify a service of a class or component.,Interfaces formalize polymorphism,Interfaces support “plug-and-play” architectures,Shape,draw(),move(),scale(),rotate(),Tube,Pyramid,Cube,What,How,71,Elided,省略,/Iconic,图标,Representation(“lollipop”,棒棒糖,),Canonical,标准的,(Class/Stereotype) Representation,(stay tuned for realization relationships),How Do You Represent An Interface?,Shape,draw(),move(),scale(),rotate(),Shape,Tube,Pyramid,Cube,Tube,Pyramid,Cube,72,What is an Abstract Class?,An,abstract class,is a class that may not has any direct instances.,In the UML, a class is abstract by writing its name in italics.,An,abstract operation,is an operation that it is incomplete,未完成的,and requires a child,子类,to supply an implementation,实现,of the operation.,In the UML, an abstract operations name is italics.,Abstract class,Abstract operation,S,hape,abstract,draw () abstract,Circle,draw (),R,ectangle,draw (),73,Contents,内容,1.,问题提出,2.OO,思想与,OO,程序,3.OO,概念与原则,4. OO,优点,面向对象方法概论,Object Oriented Method,74,1,4,面向对象方法的主要优点,从认识论的角度看,面向对象方法改变了人们认识世界的方式,从计算机语言发展角度看,缩短了自然语言到计算机语言的鸿沟,从软件工程角度看,缩小了问题域到问题解决域(计算机)的鸿沟,面向对象程序设计有助于软件的维护与复用,面向对象方法有助于提高软件的质量和生产率,75,对问题域的认识(人),客观世界,(问题域),计算机,自然语言,语,言,的,鸿,沟,编程语言,语言的过渡(人),编程(人),程序的理解,和执行(机器),软件开发:从问题域出发,对事物进行认识和描述,问题,语言的鸿沟,认识论角度:改变了人们认识世界的方式,76,1,4,面向对象方法的主要优点,从认识论的角度看,面向对象方法改变了人们认识世界的方式,从计算机语言发展角度看,缩短了自然语言到计算机语言的鸿沟,从软件工程角度看,缩小了问题域到问题解决域(计算机)的鸿沟,面向对象程序设计有助于软件的维护与复用,面向对象方法有助于提高软件的质量和生产率,77,计算机,机器语言,自然语言,客观世界,(问题域),语言的鸿沟,面向对象的语言,非,OO,的高级语言,汇编语言,程序的指令、数据、地址,都是由二进制的,“,0,”,和,“,1,”,构成的。离机器最近,能够直接地执行,然而没有丝毫形象的意义,离人类的思维最远。,以易理解的符号表示指令、数据以及寄存器、地址等物理概念。稍稍适合人类的形象思维,但仍然相差很远。因为抽象层次太低,仍需考虑大量的机器细节。,高级语言,隐蔽了机器细节,使用有形象意义的数据命名和表达式,可以联系到程序所描述的具体事物。特别是,结构化编程语言,更便于体现客观事物的结构和逻辑涵义,与人类的自然语言更接近,但仍有不少差距。,能比较直接地反映客观世界的本来面目,并使软件开发人员能够运用人类认识事物所采用的一般思维方法来进行软件开发。,语言的发展,鸿沟变窄,78,1,4,面向对象方法的主要优点,从认识论的角度看,面向对象方法改变了人们认识世界的方式,从计算机语言发展角度看,缩短了自然语言到计算机语言的鸿沟,从软件工程角度看,缩小了问题域到问题解决域(计算机)的鸿沟,面向对象程序设计有助于软件的维护与复用,面向对象方法有助于提高软件的质量和生产率,79,问题域,测试,编程,计算机,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!