第1章面向对象基础知识[1]

上传人:陈** 文档编号:253061480 上传时间:2024-11-28 格式:PPT 页数:35 大小:73KB
收藏 版权申诉 举报 下载
第1章面向对象基础知识[1]_第1页
第1页 / 共35页
第1章面向对象基础知识[1]_第2页
第2页 / 共35页
第1章面向对象基础知识[1]_第3页
第3页 / 共35页
资源描述:

《第1章面向对象基础知识[1]》由会员分享,可在线阅读,更多相关《第1章面向对象基础知识[1](35页珍藏版)》请在装配图网上搜索。

1、,单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,*,*,*,C++面向对象程序设计,Object-Oriented Programming in C++,1,课程概述 (Course Outline),第一章 面向对象的基础知识,,第二章 C++编程基础,,第三章 C++的函数,,第四章 对象和类 ( Object & Class ),,第五章 类的应用,,第六章 运算符的重载 (Overloading Operators),2,,第七章 继承 (Inheritance),,第八章 虚函数与多态性 (Virtual function & Pol

2、ymorphism),,第九章 C++的I/O (Input & Output),,第十章 模板和异常 (Template & Exception),,第十一章 标准模板库 (STL Standard Template Library),,第十二章 面向对象程序设计技术,,3,,第一章 面向对象的基本知识,面向对象程序设计诞生的原因,,,1.1,面向过程语言,,,,1.2,面向对象的程序设计,,2.,面向对象语言的特征,,,2.1,封装,,,2.2,继承,,,2.3,多态,,3. C++,和,C,,面向对象的软件开发,,UML,建模语言,4,,概述,本章将介绍面向对象程序设计(Object-O

3、riented Programming, OOP) 诞生的原因,为什么需要OOP,有什么它可以做到,而传统的编程语言如C, Pascal, BASIC 却做不到的? OOP 需要遵循什么原则?C++和C语言之间有什么联系?为什么需要用UML?,,,5,,1. 面向对象程序设计诞生的原因,1.1 面向过程语言 (Procedural Language),,C, Pascal, FORTRAN, 以及其它的语言,都被称为面向过程的语言,也就是说,这些语言中的每一个语句都在告诉计算机该做什么:接受输入,求和,除以3,显示输出等等。,,当程序变大时,一个面向过程的程序被划分成了多个函数,每个函数都有明

4、确的定义及实现。,6,,把大量的函数聚集到一起就形成一个模块(module) ,这样的模块常常是一个文件。,,把程序划分为函数和模块是结构化程序设计(structured programming) 的基石,,7,,1.1.1 面向过程设计的问题,,随着项目复杂度的增加,面向过程设计也显得使项目越来越难以维护,管理。,,原因是什么?有两个相互关联的问题:,,函数能够不受限制地访问全局变量,,函数和数据之间缺乏联系。,8,,1.1.2 面向过程范例,在大型程序中,有非常多的函数和全局数据,它们之间有巨大的潜在连接。大量的连接会导致程序结构很难概念化,而且使得程序很难修改。,全局变量,,全局变量,,

5、全局变量,,函数,函数,函数,函数,9,,1.2 面向对象的程序设计,与结构化程序设计方法相比,更符合人类认识现实世界的思维方式,,已成为程序设计的主流方向,,10,,1.2.1,现实世界建模,对象,,现实世界中,,万物皆对象,,都具有各自的,属性,(名词),对外界都呈现各自的,行为,(动词),,属性,: 对于人,眼睛的颜色,职位是属性。,,行为,:行为是现实世界中的对象对于某些刺激的反应。,11,,程序中,,一切都是对象,,都具有标识,(identity),,属性和行为(,behavior),,现实世界中的属性相当于程序中的数据,它们都有一个特定的值。,,行为就如同一个函数,通过函数(fun

6、ction) 实现他的行为, 即为了做某事调用一个函数,然后该函数再执行请求。,12,,例:,,钟表,,数据(属性),,int,Hour,; int,Minute,; int,Second,;,,方法(行为),,SetTime(),;,ShowTime(),;,,,13,,例:,,学生,,数据(属性),,String,name,; int ID; int Eng; int,Math,;,,方法(行为),,统计成绩,,,getEng(), getMath(),,getTotal(),,14,,类,,将属性及行为相同或相似的对象归为一,,类。,,类可以看成是对象的抽象,代表了此类对象所具有的共

7、有属性和行为。,,可以将现实生活中的对象经过抽象,映射为程序中的对象。对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(Class)。,,对象是类的具体实例。,,,15,,2. 面向对象语言的特征(C++),对象(Object),:当采用一门面向对象语言来解决程序设计问题时,不用再问如何将问题划分为函数,而要问如何将它划分为对象。,牢记:用对象而不是函数来思考问题,。,,,类(Class),:类是许多相似对象的共同性描述,它如同一个计划或蓝图,指出这个类的对象包含了哪些数据和函数。但定义类并不会创建任何对象。对象常常也被称为类的实例(Instance)。,,16,,面向对象程

8、序设计涉及的主要概念,,封装,,继承,,多态,,17,,封装(encapsulation):将数据和它的函数装进一个实体,这就是面向对象方法一个重要特征。,,对象通过操作接口(函数)与外部发生联系,而内部的具体细节则被隐藏起来,对外是不可见的。,,,2.1,封装 (encapsulation),18,,对象的函数在C++中叫做成员函数(member function), 它提供了访问该对象内数据的唯一途径。也就是说,如果想读取一个对象内的数据项(data member), 就必须调用该对象的成员函数。这样可以避免数据被意外改变。,19,,面向对象范例,典型的C++程序由许多对象组成,它们通过调

9、用相互的成员函数来进行通信。,,数据,数据,数据,成员函数,成员函数,成员函数,成员函数,成员函数,成员函数,对象1,对象2,对象3,20,,对象的类比 (公司示例),销售数据,人力资源数据,财务数据,销售经理,秘书,人力资源经理,人力资源部职员,首席财务官,财务助理,销售部门,人力资源部,财务部,21,,类的基本思想引出了继承的概念。日常生活中将类分为子类的例子:交通工具类可分为轿车,卡车,公共汽车等等。,,除了与类的其他成员所共有的特征,每个子类还有它自己的特征。,2.2,继承,(Inheritance),22,,基类和派生类:在C++中,原始的类称为基类(Base Class), 由它继

10、承的类定义时共享它的特征,也可加入自己的特征,这些类被称为派生类(Derived Class)。,特征A,特征B,特征A,特征B,特征C,特征A,特征B,特征D,特征E,特征A,特征B,特征F,23,,Type,Brand,Type,Brand,Horn,Type,Brand,Engine,Airbag,Type,Brand,Seats,Vehicle,Bicycle,,MotoVehicle,Airplane,24,,可重用性,(reusability) 继承的概念为可重用性的思想提供了重要的扩展。程序员可以使用已存在的类,生成派生类,自由地增加其他的特征和功能。 可轻松重用已存在的软件是O

11、OP的一个主要优点。,,25,,2.3 多态,多态,(Polymorphism) 指相同的行为被不同的对象来执行时,可以有不同的实现方式,而用哪一种方式取决于它所操作的内容。,,26,,3. C++和C,C++的由来:C是一种面向过程的语言,AT&T Bell Lab的Bjarne Strustrump 在C语言的基础上进行了修改和扩充,开发出支持面向对象的程序设计的C++.,,C++和C的关系:C++是C语言的一个超集,几乎所有C中正确的语句在C++中也同样是正确的,反之却不成立。,27,,4. 面向对象的软件开发,1、面向对象分析(Object oriented analysis, OOA

12、),,系统分析员和用户一起,对用户的需求做出分析和明确的描述。从客观存在的事物和它们之间的关系归纳出有关的对象及其关系,并将具有相同属性和行为的对象用一个类来表示。,,2、面向对象设计,(,Object oriented design,OOD),,根据需求,对每一部分分别进行具体的设计,首先是类的设计,可能包括多个层次(利用继承和派生机制),然后提出程序设计的思路和方法。,,,,28,,3、,面向对象编程(Object oriented programming, OOP),,选用适当的开发工具进行编程,,4、面向对象测试(Object oriented test, OOT),,对程序进行严格的

13、测试。,,5、面向对象维护(Object oriented software maintenance, OOSM),,,29,,UML (Unified Modeling Language) 是为计算机程序建模的一门图形化“语言”。“建模”就是创建某事物的简化表示,如,蓝图就是房子的模型。UML就是在考虑实际的代码细节之前,用图示将程序结构在很高的层次上表示出来。,,,5、UML 建模语言,30,,5.1 UML的起源,UML基于三门独立的建模语言:,,一门由Grady Boosh 在Rational Software 创建。,,一门由James Rumbaugh 在General Elect

14、ric 创建。,,一门由Ivar Jacobson 在Ericson建立。,,最后, James Rumbaugh 和 Ivar Jacobson 加入了Rational Software,他们在20世纪90年代末统一了各自的建模语言,提出了统一建模语言(UML)。接着,OMG(Object Management Group)采用了这个结果。,31,,5.2 为何需要UML?,对于大型的程序,仅仅看源代码很难搞清楚其各部分之间的联系。UML 正是提供了一种方法去知道程序概貌,并能描述程序的主要部分和它们是如何一起工作的。,,除了帮助理解一个程序是如何工作外,它能帮助进行程序的初始设计。实际上,

15、从规范文档,测试到维护,UML在软件开发的所有阶段都是有用的。,32,,5.3 UML的图集,UML 最重要的部分是9种类图。如:,,类图(Class Diagram)表示类之间的关系。,,对象图(Object Diagram)表示特定对象之间的关系。,,时序图(Sequence Diagram)表示对象之间在时间上的通信。,,协作图(Collaboration Diagram)按照时间和空间顺序表示对象之间的交互和它们之间的关系。,33,,状态图(State Diagram)表示对象的状态和响应。,,用例图(User Case Diagram)表示程序用户如何与程序交互。,,活动图(Activity Diagram)表示系统元素的活动。,,组件图(Component Diagram)表示实现系统的元素的组织。,,配置图(Deployment Diagram)表示环境的配置,,34,,UML 的建模机制,,UML有两套建模机制:静态建模机制和动态建模机制。,,静态建模机制包括用例图,类图,对象,包,组件图和配置图。,,动态建模机制包括消息,状态图,时序图,协作图,活动图。,,,,35,,

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

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!