- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象技术_3
面向对象技术 第三章 本书的OOA方法概貌 授课宗旨: 吸收各种OOA方法的长处; 注意适当的取舍; 控制复杂性; 3.1 主要概念及表示法 OOA用到的主要概念如下: 对象、类:必要时可区分主动对象和被动对象,并用不同的类符号表示。 属性:必要时可区分类属性和对象属性。 服务:对于主动对象,应该标出它的主动服务。 一般—特殊结构: 实例连接(关联): 消息连接 主题: 3.3 OOA的主要原则 意义: 人类在认识世界的漫长历史中,形成了一些控制复杂性的原则,包括思维方法和组织方法,通过它们可以穿越问题的复杂性而洞察其本质。OOA的强大生命力正是由于它比较全面地运用了这些原则。 1. 抽象 从许多事物中舍弃个别、非本质的特征,抽取共同的、本质性的特征,就叫做抽象。 抽象是OO方法中运用最广泛的原则,如: 系统中的对象是现实世界中事物的抽象; 类是对象的抽象; 一般类是特殊类的进一步抽象; 属性是事物静态特征的抽象; 服务是事物动态特征的抽象; 抽象原则的运用 过程抽象: 任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。 运用过程抽象的原则,可以把一个复杂的功能分解为一些子功能。 过程抽象不是OOA的主要抽象形式,因为OO方法不允许超出对象的界限在全系统的范围内进行功能的描述。但它对于在对象范围内组织对象的服务是有用的。 数据抽象: 数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。 数据抽象是OOA的核心原则。它强调把数据(属性)和操作(服务)结合为一个不可分割的系统单位(即对象),对象的外部只需要知道它做什么,而不知道它如何做。 2. 封装 封装就是把对象的属性和服务结合为一个不可分的系统单位,并尽可能隐蔽对象的内部细节。 封装原则的意义: 对象的属性和服务紧密结合是对象能够集中而 完整地描述一个具体地事物。 封装的信息隐蔽作用反映了事物的相对独立性; 封装实际上是抽象原则的一种具体应用,既体现了过程抽象,也体现了数据抽象。 3. 继承 特殊类的对象拥有其一般类的全部属性和服务,称为特殊为对一般类的继承。 运用继承原则的意义与好处: 避免了对一般类—特殊类(以及所有兄弟类) 之间的共同特征进行重复的描述。 使系统模型比较简练也比较清晰。 注意:继承的本意在于抽象,而非代码重用(虽然继承也有这个作用)。且最早的OO语言只有类,没有接口,所以只能以继承来实现抽象。 抽象基类、抽象方法和接口 有时程序员会希望基类仅仅表示其导出类的接口,此时不希望任何人创建基类的实际对象,而是希望将其派生类对象向上转型到基类,这时可以使用关键字abstract (Java中)将该类标识成抽象类来实现该目的。 也可以使用关键字abstract(或virtual,在C++中)描述尚未被实现的方法,即抽象方法(或虚方法,在C++中)。它就象一个存根,表示“这是继承该类的子类都具有的方法,但此刻还没有为它设计任何具体实现”。当该类被继承时,抽象方法必须被实现。 C++中的纯虚函数和抽象类 class MyClass { … virtual void MyMethod( … ) = 0; }; 上面这段代码中,类vehicle的message成员函数被定义为纯虚函数,而含有纯虚函数的类就是C++中的抽象类。 Java中的抽象类和抽象方法 public abstract class MyClass { … void myMethod1( … ); abstract int myMethod2( … ); }; 在Java中定义抽象类同样简单。使某个类成为抽象类并不需要所有的方法都是抽象的,仅仅将某些方法声明为抽象的即可。 Java中的接口 接口是Java提供的,用来组织和控制系统中对象的一种更加精致的办法。C++中不包含该机制。 Java使用关键字interface来产生一个完全抽象的类,它根本不提供任何具体实现,它们是由该抽象类的继承者创建的。此外,interface还允许人们创建一个能够向上转型为多种基类型的类,从而实现类似C++多重继承的特征。 Java中继承类和接口的代码形式 public class ClassA { … void method1( … ); } interface
原创力文档


文档评论(0)