Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第5章 面向对象思想.ppt

Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第5章 面向对象思想.ppt

ID:50325278

大小:297.00 KB

页数:39页

时间:2020-03-08

Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第5章 面向对象思想.ppt_第1页
Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第5章 面向对象思想.ppt_第2页
Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第5章 面向对象思想.ppt_第3页
Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第5章 面向对象思想.ppt_第4页
Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第5章 面向对象思想.ppt_第5页
资源描述:

《Java面向对象程序设计 教学课件 作者 梁燕来 程裕强 第5章 面向对象思想.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第5章面向对象思想(选学)主讲人:程裕强本章学习目标理解UML基本概念掌握结构图和关系图掌握开闭原则掌握多少原则了解高低原则了解设计模式概念掌握单例模式掌握简单工厂模式了解工厂方法模式和抽象工厂模式了解适配器模式5.1UML简介在面向对象分析与设计(Object-OrientedAnalysandDesign)中,统一建模语言(UnifiedModelingLanguage,UML)是核心工具。UML是一种面向对象的建模语言,它是运用统一的、标准化的标记和定义实现对软件系统进行面向对象的描述和建模。为了方便理解面向对象思想,本书将借助UML来描述,但是UML的内容超出了本书的范围,读者可以查阅

2、相关资料。下面简单介绍一下有关类、接口的结构图以及关系图。RationalRose是最为流行的UML建模商业收费软件,也可以使用免费且夸平台的Dia小软件。5.1.1结构图类的UML结构图是一个矩形,垂直地分为三个区。public用“+”、protected用“#”、private用“-”、缺省修饰符用“~”表示,UML图中修饰符是可以省略的。顶层为类名层,具体类的类名使用正常字体,抽象类名使用斜体(在Dia工具中,具体类的类名是粗体,抽象类名是正常字体);中间层为属性层(变量层),格式是“属性名:类型”,该层为可选层,按照需要列出重要的属性即可;底层为方法层(操作层),格式是“方法名(参数列

3、表):类型”,如果是静态方法加上下划线。接口是特殊的抽象类,接口的UML结构图与类的结构图相似,如图5.2所示。不同之处是接口名需要使用<>标识,有些UML工具使用椭圆表示接口。5.1.2关系图泛化关系:UML中的泛化关系(Generalization)即是类的继承关系,使用“实线-空心三角箭头”表示,实线起点是子类,空心箭头指向父类。实现关系:实现关系(Realization)即是接口与他的实现类间的关系,使用“虚线-空心三角箭头”表示,虚线起点为实现类,空心三角箭头指向接口。关联关系:如果类A中的属性是类B(接口B)的实例,那么A和B就是关联关系(Associatio

4、n),称A关联于B,使用“实线-箭头”表示,实线起点是A类,箭头指向B。依赖关系:如果类A的某个方法的参数或返回值的数据类型是类B(或接口B),那么A和B的关系是依赖关系(Dependency),称A依赖于B,使用“虚线-箭头”表示,虚线起点是A,箭头指向B。5.2开闭原则开闭原则是基石,其他的设计原则是开闭原则的扩展。开闭原则就是对扩展开放对修改关闭。在一个软件设计中增加新的模块时不需要修改原有模块。在设计一个类时,尽量不要让该类面向具体的类,而是面向抽象类或接口,重要数据或操作在抽象类或接口中定义。对抽象类或接口的修改应该是关闭的,因为一旦修改这些,可能导致所有的子类需要修改;增加抽象类或

5、接口的子类应该是开放的,增加子类不需要修改其他抽象类或接口的代码。例1:下面通过计算柱体体积问题来说明开闭原则。假设现在需要计算圆柱体的体积,按照面向对象的思想定义圆Circle和圆柱体Cylinder1两个类。Circle具有area方法计算圆面积packageprimer;publicclassCircle{//圆privatedoubleradius;//半径publicCircle(doubleradius){this.radius=radius;}publicdoublearea(){//圆面积returnMath.PI*radius*radius;}}圆柱体Cylinder1具有v

6、olume方法计算圆柱的体积。Cylinder1类中,bottom属性是Circle声明的引用变量,在volume方法中通过bottom.area()*height求的体积。packageprimer;publicclassCylinder1{privateCirclebottom;//底面privatedoubleheight;//高publicCylinder1(Circlebottom,doubleheight){this.bottom=bottom;this.height=height;}publicdoublevolume(){//体积returnbottom.area()*heig

7、ht;}}假设现在客户需求发生变化,要求计算矩形柱体的体积。那么我们需要重新设计,先设计一个矩形类packageprimer;publicclassRectangle{privatedoublelength;//长privatedoublewidth;//宽publicRectangle(doublelength,doublewidth){this.length=length;this.width

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。