面向对象分析与设计第三章ppt课件.ppt

面向对象分析与设计第三章ppt课件.ppt

ID:58988583

大小:730.00 KB

页数:42页

时间:2020-09-27

面向对象分析与设计第三章ppt课件.ppt_第1页
面向对象分析与设计第三章ppt课件.ppt_第2页
面向对象分析与设计第三章ppt课件.ppt_第3页
面向对象分析与设计第三章ppt课件.ppt_第4页
面向对象分析与设计第三章ppt课件.ppt_第5页
资源描述:

《面向对象分析与设计第三章ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、面向对象分析与设计易国洪1第3章继承学习目的理解继承的含义理解抽象类与具体类的区别了解使用继承的场合23.1引言继承可以指定类从父类中获取一些特性,再添加它自己的独特特性从编程的观点来看,需要继承是因为:它支持更丰富、更强大的建模它可以在一个类中定义信息和行为,在相关的子类中共享这些定义。这样需要编写的代码就减少了。继承是很自然的。它是面向对象的主要动机之一。33.1引言43.1引言53.1引言63.2设计类层次结构例子:要给集合(Collection)建模,集合是可以包含其它对象的对象。需求中需要四类集合List:该集合把所

2、有的对象按照插入的顺序放置Bag:该集合中的对象没有排序LinkedList:该集合中的对象使用序列对象来排序,每个对象指向序列中的下一个对象ArrayList:该集合中的对象使用数组来排序,数组是相邻内存位置的序列73.2设计类层次结构83.2设计类层次结构从一般类到特殊类(普通类到抽象类)首先确定层次结构的底部有哪些类(Bag,LinkedList,ArrayList)接着找出比较一般的概念,以丰富模型,共享元素定义。因此把LinkedList,ArrayList组合到List中,把List和Bag组合到Collectio

3、n中。在开发层次结构时,要查找消息——可以放置消息的层次结构越高越好。在查找其它类元素前,应先查找消息,因为消息表示对象给外界显示的接口,这是它们最重要的特性。93.2设计类层次结构考虑下面三个消息,将消息放在已有类层次结构中的哪个类中呢?contains(:Object):boolean//在集合中搜索对象elementAt(:int):Object//参数指定的位置检索对象numberOfElement():int//返回集合中的对象数。103.3添加实现代码已经有了类层次结构,还确定了消息的位置,下面必须添加实现元素(字

4、段、构造函数和方法)方法放在哪里,这会引出两个重要的概念:抽象和重定义(与重载区别?)不可能在Collection类中编写contains实现方法,因为有序集合和无序集合的搜索算法是不同的。所以,必须先在Bag上实现contains方法。但List类怎么办呢?113.3添加实现代码123.3添加实现代码133.3添加实现代码143.3添加实现代码现在就能获得继承的好处:只编写一个方法,它可用于List的任何直接或间接子类。对于LinkedList,ArrayList来说,elementAt消息的实现代码是不同的。给number

5、OfElements编写实现代码:把元素数存储为字段需要时,再计算元素数15163.4抽象类抽象类是至少有一个抽象方法的类——抽象方法可以是该类本身的方法,也可以是从超类继承来的。若类中包含了抽象方法,那么该类只能声名为抽象类(或接口),抽象类中可以有抽象方法或具体方法,也可以没有抽象方法,甚至可以什么都没有。在抽象类中可以为部分方法提供默认的实现,从而避免在子类中重复实现它们,提高代码的可重用性,这是抽象类的优势所在而接口中只能包含抽象方法,扩展功能时,在抽象父类中加入具体方法不会影响子类;但在接口中加入抽象方法会影响到所有

6、实现类。一个类只能继承一个直接的父类,这个父类有可能是抽象类;但一个类可以实现多个接口,这是接口的优势所在。173.4抽象类183.4抽象类抽象类用来定义类需要执行哪些行为而不必提供每一个行为的明确实现抽象类不能直接被实例化。抽象类的子类也可能仍然是一个抽象类。关键在于子类中是否提供了所有抽象方法的实现代码。抽象类是相对于接口而言是一个更加优秀的类的抽象模型。它除了具有接口一样的功能之外,还能将具体类中公共的方法实现集中到抽象类中,而不用在每一个具体类中重复。193.4抽象类抽象类有如下优点它们允许更丰富、更灵活地建模它们可以

7、共享更多的代码,因为可以编写具体的方法来使用抽象的方法更便于封装变化点203.4抽象类在设计类层次结构是,应记住,大多数超类都是抽象的。下面说明了继承层次结构是从底向上派生的:1、在问题域中查找具体的概念,推导出它们的知识和行为2、在具体的类中找出共同点,以便引入更一般的超类3、把超类组合到更一般的超类中,直到找出根类在表示泛化(超类)时,我们希望它是抽象的,否则就可能表示为第1步中的具体概念。21抽象方法和虚方法抽象方法和虚方法的区别(abstract)抽象方法和(virtual)虚方法的区别在于:虚方法有一个实现部分可以为

8、子类实现有共同的方法,并为派生提供了覆盖该方法的选项,相反,抽象方法没有提供实现部分,强制派生覆盖方法(否则派生类不能成具体类)(abstract)抽象方法只能在抽象类中声明,(virtual)虚方法不是。(abstract)抽象方法不能声明方法实体,虚方法可以。包含抽象方法

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

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

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