面向对象的分析与设计课件_第1页
面向对象的分析与设计课件_第2页
面向对象的分析与设计课件_第3页
面向对象的分析与设计课件_第4页
面向对象的分析与设计课件_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

面向对象的分析与设计

对象(object)我们可以把生活所在的真实世界(RealWorld)当作是由许多大小不同的对象所组成的。对象可以是有生命的个体,比如一个人或一只鸟。对象

对象也可以是无生命的个体,比如一辆汽车或一台计算机。对象也可以是一件抽象的概念,如天气的变化或鼠标所产生的事件。对象的特征

对象有两个特征:属性和行为例如: 人有他的身高或体重作属性,有他的行为——如唱歌、打球、骑摩托车、开汽车。 狗有它的颜色作属性,有它的行为,如吠叫或跳跃。

电视机有它的外形、尺寸和颜色,有它的行为,如开、关,接收信号,转换频道,调节音量。换档开大灯煞车开冷气颜色排档数排气量轮胎型号汽车对象

以汽车为例,我们可定义其属性与方法如:

本教程

中使用下面的示例来应用面向对象的分析与设计原理。公司名称:DirectClothing公司按月生成目录客户可以打电话、使用邮寄和传真必须每个检查订购项的存货水平DirectClothing接受支票和信用卡案例研究

系统建模技术尝试描述一个系统在现实生活中的情形定义系统的:对象——让对象工作的问题对象属性——对象的特征对象操作——所能执行的任务面向对象概述

对象:

找出问题描述领域中的主要名词对象可能是:简单的或复杂的(衬衣,银行)真实的或概念的(银行出纳员,帐户)对象有:属性(颜色,尺寸)操作(下订单,取消订单)确定对象

属性:是对象的特征可以是数据或对象对Order对象来说,可能包括orderID和items操作:是对象执行的动作可以是对象做出的或施加给对象的动作对Order对象来说,可能是place和cancel确定对象属性和操作

建模对象

属性类型

与问题域的相关性对象是否在问题陈述的界限之内?系统是否必须有此对象才能完成任务?在用户与系统的交互中是否必须有此对象?独立存在性属性和操作测试对象

分析问题域实验目标:找出问题域中的对象,及其属性和操作步骤:1、列出有关的对象(名词)

2、列出这些对象的属性和操作

3、为对象设置合理的属性和操作

4、应用上述的3条评判规则检验对 象的有效性练习 Anobject-orienteddesignforaJavaapplicationthattrackssoccerscores.Theprogramshouldtrack:ThenumberofgoalseachplayerscoresineachgameWhatteamstheplayersplayforandwhatseasonthegameswereplayin

类(class)在真实世界里,有许多同“种类”的对象。而这些同“种类”的对象可被归类为一个“类”。例如我们可将世界上所有的汽车归类为汽车类,所有的动物归为动物类。动物类汽车类什么是类?是同种对象的集合与抽象

类与对象的关系 类

对象抽象定义实例

电视机

一台长虹电视机学生

学生王强

类与对象如果将对象比作汽车,那么类就是汽车的设计图纸。所以面向对象程序设计的重点是类的设计,而不是对象的设计。

实例(instance)汽车类有些共同的状态(汽缸排气量,排档数,颜色,轮胎数……)和行为(换档,开灯,开冷气……),但每一台汽车个别的状态及方法可不同于且独立于其他汽车。你的汽车只是这世界中许多汽车中的一个。我们就称你的汽车对象是汽车类中的一个实例(instance)。汽车类(class)实例(instance)NEW你的车OO的真正意义

OO的真正意义是使得软件开发接近人类的正常思维,将许多原来由人完成的工作交给机器去完成:

-机器语言 汇编语言 高级语言

-面向过程 面向模块 面向对象

OO包括一套比较完整的方法,程序设计只是其中一个环节。

-面向对象的分析

-面向对象的设计

-面向对象的程序设计

-代码重用面向对象与面向过程公共数据函数函数函数函数算法+数据结构属性数据方法方法属性数据方法方法过程式程序设计OOP程序设计对象+消息消息面向过程面向对象OOP三大特性:封装、继承与多态

封装(encapsulation)

封装是一种信息隐藏技术。是指利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其他部分只有通过在数据外面的被授权的操作才能够与这个抽象数据类型进行交互。在面向对象的编程中,用类来封装相关的数据和方法,保证了数据的安全和系统的严密性。

仓库属性操作价格表,物品,账单,电话,等等提供物品,账单等等考虑一个仓库,外部只能通过管理员获取物品。抽象封装的优点隐藏类的实现细节,实现了信息的隐藏及安全性;提高了程序的模块化,且易于维护;具体实现是编写该类的人控制的,让使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作继承(inheritance)

OOP是以类来定义一个对象的。当一个类拥有另一个类的所有数据和方法时,就称这两个类之间具有继承关系。现以下图来说明:汽车类轿车巴士计程车轿车、出租车、巴士都是汽车,故属汽车类,我们称其继承(inherit)汽车类,而轿车、出租车、巴士也都可自成一种类。这样汽车类就称为超类(superclass)或父类,而轿车、出租车、巴士就称作子类。继承交通工具车船飞机汽车火车父类/超类(superclass)子类(subclass)Java仅支持单继承优点: 使程序结构清晰,减少了编码和维护的工作量,子类可以使用父类所提供的方法,实现了代码的复用。多态用同一个名字调用实现不同操作的方法方式1:父类和子类之间的同名方法(覆盖:子类方法的名称和参数与父类方法的名称和参数相同,在执行过程中,子类的方法将覆盖父类的方法)方式2:同一类中参数不同的同名方法(重载:不是子类对父类同名方法的重新定义,而是类对自身已有的同名方法的重新定义。重载方法的参数必须不同,或者是参数个数不同,或者是参数类型不同)使用方便,且降低了维护和编程量

覆盖

classA { publicintx,y; A(inta,intb) { x=a; y=b; } publicvoiddisplay() { intz; z=x+y; System.out.println(“add=”+z); } } classBextendsA { B(inta,intb) { super(a,b); } publicvoiddisplay() { intz; z=x*y; System.out.println(“product=”+z); } }classABextendsB { AB(intx,inty) { super(x,y); } publicstaticvoidmain(String[]args) { Anum1=newA(4,10); Bnum2=newB(4,10); ABnum3=newAB(4,10); num1.display(); num2.display(); num3.display();

} }重载classMethodOverloading { voidreceive(inti) { System.out.println(“一个整数”); System.out.println(“i=”+i); } voidreceive(intx,inty) { System.out.println(“两个整数”); System.out.println(“x=”+x+”y=”+y); } voidreceive(doubled) { System.out.println(“一个浮点数”); System.out.println(“d=”+d); } voidreceive(Strings) { System.out.println(“一个字符串”); System.out.println(“s=”+s); } }

publicclassMethodOverloadingTest { publicstaticvoidmain(String[]args) { MethodOverloadingMO=newMethodOverloading(); mo.receive(1); mo.receive(2,3); mo.receive(12.56); mo.receive(“Hello”);

} }面向对象的三大特征1.封装:将数据成员(DataMember)和属于此数据的操作方法(OperatingMethod),放在同一个实体(Entity)或对象中。2.继承:父类定义(Define)一些通用的属性与行为,其孩子继续使用。3.多态:在同一个类中可有许多同名的方法,但其参数数量与数据类型不同,而且操作过程与返回值也可能会不同。(1)模块化

(2)信息隐藏

(1)实现代码复用

(2)简化设计过程解决其他语言中不能重名的问题

接口Interface这个英文字的意思是一种装置或系统,使得不同性质的实体(entities)能够交互地运作。比如,计算机的操作系统(operatingsystem),可把它称作是一种“人机接口”。可使得使用者(人)与计算机(机),通过鼠标或键盘等装置,而作为一种沟通接口,来与计算机做沟通,以指挥计算机做事。另外像RS232串行端口,常作为输入/输出设备传输接口,是计算机与输入/输出设备间的接口。而在Java里,设计接口的用意,是可使得类不必受限于单一继承的关系,而可灵活地同时继承一些共有的特性,达到多重继承的目的,而免去C++中多重继承的复杂关系所产生的bug。像下图中的出租车,可继承“营业车”、“小车”、“汽油车”等类,却不一定非要与同样继承“自用车”、“小车”,“汽油车”的轿车有上下继承的关系。汽车类自用车营业车小车大车汽油车柴油车轿车出租车巴士上类接口次类改变程序的一部分不影响其他部分。程序的其他部分与类的接口(“外部”)进行交互更改类的实现(“内部”)而不更改接口封装的汽车:实现细节隐藏在车盖下;驾驶员不必知道汽车是怎样工作的汽车的部分零件改变或更换,驾驶员不必改变对汽车的驾驶接口和实现

接口的定义

接口可以理解为

温馨提示

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

评论

0/150

提交评论