《面向对象程序设计的基本知识》

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

面向对象的程序设计第1章面向对象程序设计基本知识§1.1面向对象思想的由来§1.2面向对象的基本概念§1.3面向对象程序设计的特性§1.4面向对象的程序设计语言思考与练习§1.1面向对象思想的由来1.1.1结构化程序设计编程引例有如下编程问题:请计算出1999年5月10日到2006年3月8日期间一共有多少天?如何用C语言实现?§1.1面向对象思想的由来1.1.1结构化程序设计编程引例算法描述如下:(1)计算从1999到2006期间所有整年共有多少天;(2)计算从1999年5月10日到年底(即12月31日)共有多少天;(3)计算从2006年元旦到2006年3月8日期间一共有多少天。§1.1面向对象思想的由来1.1.1结构化程序设计编程引例数据结构表示如下://封装日期信息publicstructMyDate{publicintYear;//年publicintMonth;//月publicintDay;//日}§1.1面向对象思想的由来1.1.1结构化程序设计编程引例程序设计如下://计算两个日期之间的所有天数staticintCalculateDaysOfTwoDate(MyDatebeginDate,MyDateendDate){//……}§1.1面向对象思想的由来1.1.1结构化程序设计编程引例程序设计如下://计算两个日期之间的所有整年天数,不足一年的去掉staticintCalculateDaysOfTwoYear(intbeginYear,intendYear){//……}§1.1面向对象思想的由来1.1.1结构化程序设计编程引例程序设计如下://计算两个日期之间不足整年的天数staticintCalculateDaysOfTwoMonth(MyDatebeginDate,MyDateendDate){//……}§1.1面向对象思想的由来1.1.1结构化程序设计编程引例程序设计如下://根据年数判断其是否为闰年staticboolIsLeapYear(intyear){//……}§1.1面向对象思想的由来1.1.1结构化程序设计编程引例程序设计如下:§1.1面向对象思想的由来1.1.1结构化程序设计编程引例程序代码如下:MyDated1,d2;//起始日期和结束日期//1999年5月10日d1.Year=1999;d1.Month=5;d1.Day=10;//2006年3月8日d2.Year=2006;d2.Month=3;d2.Day=8;//计算结果intdays=CalculateDaysOfTwoDate(d1,d2);……§1.1面向对象思想的由来1.1.1结构化程序设计编程引例小结:传统的结构化程序设计思想是以解决问题的过程作为出发点,把程序定义为“数据结构+算法”,采取自顶向下、逐步求精的功能分解法,将整个程序结构划分成若干个功能上相对独立的模块,每个模块都由逻辑上或功能上相关的若干个函数构成,从而把一个大问题分解成若干个子问题,每个子问题又被分解成更小的子问题,直到得到的子问题可以用一个函数来实现为止。编程的基本单位是函数,每个函数都完成整个程序的一个功能。§1.1面向对象思想的由来1.1.2面向对象的思想随着计算机技术的发展,人们越来越希望能有一种通过与计算机进行直接交互而反映人类解决问题的自然方法,传统的程序设计思想需要专门学习和长时间训练才能实现,显然无法满足这一要求。“面向对象”是软件程序设计中的一种新思想,它通过模拟人的思维方式,尽量实现将现实世界中的事物直接映射到软件系统,使软件系统对现实世界的直接模拟,从而使程序设计更加贴近现实并且花费更小的精力。§1.1面向对象思想的由来1.1.2面向对象的思想面向对象技术是计算机应用领域发展起来的新生事物,它吸取了结构化程序设计中最为精华的部分,被认为是程序设计方法学方面的一场革命。返回§1.2面向对象的基本概念1.2.1对象、消息和类1.对象现实世界中的对象是我们认识世界的基本单元,如一个人、一辆车、一次购物、一次演出等。对象可以简单也可以复杂,复杂对象一般由若干个简单对象组成。作为现实世界中的实体,对象具有以下特性:有一个用于与其它对象相区别的名字具有某些属性或状态特征有一组操作,每个操作决定对象的一种行为对象之间以消息传递的方式相互通信§1.2面向对象的基本概念1.2.1对象、消息和类1.对象面向对象中的对象是由描述自身状态特征(属性)的数据及定义在该数据上可对这些状态施加的一组操作组成的实体,是数据单元和过程单元的集合体。§1.2面向对象的基本概念1.2.1对象、消息和类1.对象在计算机中,对象可看成是存储器中一个可标识的区域,是一个数值的集合。在面向对象程序设计中,对象用一个运行中的存储单元来存放,其状态用属性的值来表征,可以是初等数据类型(整型、实型、字符型等),也可以是用户自定义的数据类型(结构、枚举等),还可以是对象(如“人”这个对象,其状态属性“家庭成员”可能是另一个对象)。§1.2面向对象的基本概念1.2.1对象、消息和类1.对象对象作为构成和支撑整个面向对象程序设计最重要的细胞和基石,具有模块独立性(一个对象是一个独立存在的模块)、动态连接性(通过消息激活机制使对象之间动态联系)和易维护性(对象的功能和实现细节局限于模块内部)三个特征。现实世界中一切事物都是对象,在解决实际问题时,首先要分析对象,这直接影响到面向对象程序设计的质量。§1.2面向对象的基本概念1.2.1对象、消息和类2.消息现实世界中的对象存在着各种各样的联系,同样,面向对象程序设计中的对象之间也存在着联系,它们是通过消息传递来进行的,对象只有在收到消息时才被激活,被激活后的对象才能按照要求操作相关数据完成消息的传送。§1.2面向对象的基本概念1.2.1对象、消息和类2.消息例如学生对象请求教师对象辅导,学生对象向教师对象发出消息,教师对象接收到这个消息后才决定做什么辅导并执行辅导。所以说:消息是对象之间相互请求或相互协作的途径,是要求某个对象执行其中某个功能操作的规格说明。§1.2面向对象的基本概念1.2.1对象、消息和类2.消息消息具有如下性质:(1)同一对象可以接受不同形式的多个消息并做出不同的响应;(2)相同形式的消息可以传递给不同的对象,做出的响应可以是不同的;(3)消息的发送可以不考虑具体的接受者,对象可以相应,也可以不响应。§1.2面向对象的基本概念1.2.1对象、消息和类2.消息在面向对象程序设计中,消息分为公有消息和私有消息两类。若有一批消息同属于一个对象,则其中由外界对象直接向其发送的部分称为公有消息,由它自己向本身发送的部分称为私有消息。如在下面的人员对象类中,消息print()为公有消息,而printName()、printage()、printadd()、printsex()为私有消息。§1.2面向对象的基本概念1.2.1对象、消息和类3.类类是一组客观对象的抽象表示,它将该组对象所共同具有的结构特征(即状态属性)和行为特征(即操作)集中起来加以描述和说明,以表明该组对象的性质和能力。类和对象是抽象和具体的关系,组成类的所有对象均为该类的实例,因此,类是多个实例的综合抽象,实例是类的个体实物。§1.2面向对象的基本概念1.2.1对象、消息和类3.类类没有具体的值,也没有具体的操作。当给类中的属性和行为赋予实际的值以后,就得到了类的一个对象。在面向对象程序设计中,类是避免重复编码的有效手段,它只出现在源程序代码中,不会出现在正在内存运行的程序中。换句话说,类只在编译时存在,为对象的创建提供样板,不占据内存空间。在内存中运行的是类的对象,它在内存中分配空间并完成计算任务。§1.2面向对象的基本概念1.2.1对象、消息和类3.类类是面向对象系统中最重要的概念,面向对象程序设计中的所有操作都归结为对类的操作,类形成了一个具有特定功能的模块和一种代码共享的手段以方便地建立和使用所需要的任何类型。返回§1.2面向对象的基本概念1.2.2字段、属性、方法和事件类由字段、属性、方法和事件组成。1.字段和属性字段和属性是指对象所具有的有意义的状态,表示对象包含的信息,用以访问对象中包含的数据。字段类似于变量,主要用于类内直接读取或设置。例如,有一个名为“Car”的对象,则可在“Color”字段中存储其颜色。§1.2面向对象的基本概念1.2.2字段、属性、方法和事件1.字段和属性属性是对字段的简单包装,主要用于类外的访问,其读取和设置是通过使用propertyGet和propertySet过程来实现的。在没有属性语法的语言里,通常是使用对象方法来访问属性。§1.2面向对象的基本概念1.2.2字段、属性、方法和事件2.方法方法表示对象可执行的操作,是对象操作过程的算法,用于访问对象的功能,通过向类中添加函数来定义。例如,“Car”对象可以有“StartEngine”、“Drive”和“Stop”方法。消息传递的实质是方法的调用,对象通过调用某个方法执行对数据的处理来完成消息的传递。§1.2面向对象的基本概念1.2.2字段、属性、方法和事件3.事件事件是对象从其它对象或应用程序接收的通知,或者是对象传输到其它对象或应用程序的通知,它使对象得以在每当特定情况发生时执行操作。例如,“Car”类的“Check_Engine”事件等。对于Windows操作系统来说,事件可来自其它对象、应用程序或用户输入。返回§1.3面向对象程序设计的特性1.封装性所谓封装,就是把一个事物包装起来,使外界不了解它内部的具体情况。在面向对象的程序设计中,封装是指将相关的数据和代码结合成一个有机整体,形成数据和操作代码的集合,对外隐蔽大部分实现细节,以达到对数据访问权的合理控制。封装使程序中各部分之间的相互联系达到最小,提高了程序的安全性,简化了程序代码的编写工作,是面向对象程序设计的重要原则。§1.3面向对象程序设计的特性1.封装性面向对象程序设计的封装机制是通过对象来实现的。对象中的私有成员是隐蔽的,对象以外的访问被拒绝,而公有成员则提供了对象与外界的接口,使外界与对象发生联系。接口是把隐式公共方法和属性结合起来具有特定功能的一个集合。例如,可以将较一般用途的属性Color和方法Drive()、Stop()组合到一个接口IVehicle中,然后可以在Car对象或Bicycle对象上使用该接口。接口不能单独存在,一个类可以支持多个接口,多个类也可以支持相同的接口。§1.3面向对象程序设计的特性1.封装性面向对象程序设计的封装性是一种信息隐蔽技术,它使系统设计员能够清楚地标明他们所提供的服务界面,用户和应用程序员则只看见对象提供的操作功能,看不到其中的数据或操作代码细节,其目的在于将对象的使用者与设计者分开,这反映了抽象数据类型的思想。§1.3面向对象程序设计的特性2.继承性在面向对象的程序设计中,继承表达的是对象类之间的关系,它使得一类对象可以继承另外一类对象的属性(数据)和行为(操作)。若类B继承类A,则类B的对象具有类A的一切特征,包括数据和操作。此时,类A称为基类(也称父类或超类),类B称为类A的派生类(也称子类)。类B由从类A继承来的特征和不同于类A而新添加的特征两部分组成。若类B由类A派生而来,而类C又由类B派生而来,则称类A是类B的直接基类,是类C的间接基类。类C不但继承了其直接基类的所有特征,还继承了其所有间接基类的特征。(a)(b)图(a)中,由A、B、C、D和E组成了一种单继承的派生形式,即每个派生类只直接继承了一个基类的特征(如windows操作系统中窗口之间的继承关系)。图(b)中,由A、B、C、D、E和F形成了一个多继承的类层次,即派生类中直接继承了不止一个基类的属性(如玩具车类就同时继承了玩具类和车类的特征)。§1.3面向对象程序设计的特性2.继承性在引入继承机制的面向对象程序设计中,对象的封装性没有改变,其操作和数据依然是一个整体,对象间的通讯只有发送消息一条途径。但是,同样是作为代码共享的手段,继承是一种静态共享代码的手段,派生类对

1 / 60
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功