面向对象的程序设计ppt培训课件

上传人:aa****6 文档编号:54400716 上传时间:2018-09-12 格式:PPT 页数:38 大小:367.50KB
返回 下载 相关 举报
面向对象的程序设计ppt培训课件_第1页
第1页 / 共38页
面向对象的程序设计ppt培训课件_第2页
第2页 / 共38页
面向对象的程序设计ppt培训课件_第3页
第3页 / 共38页
面向对象的程序设计ppt培训课件_第4页
第4页 / 共38页
面向对象的程序设计ppt培训课件_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《面向对象的程序设计ppt培训课件》由会员分享,可在线阅读,更多相关《面向对象的程序设计ppt培训课件(38页珍藏版)》请在金锄头文库上搜索。

1、面向对象的程序设计,Object-Oriented Programming,C+中的OOP,Computer,现实世界中需要解决的问题,包括: 电信,电力,金融,政府,制造业,商贸物流,医疗卫生,教育,交通,C+,现实世界,1. Adobe系统:Photoshop/Illustrator/Acrobat Reader.2. 中移动/中电信/中联通/美国电话电报公司(AT&T)/Vodaphone/T-Mobile/Orange: 移动电话基础设施,计费系统,800 service,及其他大量支撑平台和服务3. Nokia Symbian OS系统(从内核到外,用C+编写了所有代码),4. Li

2、nux操作系统5. Java VM core 6. MySQL数据库,C+部分应用列表一,7. 微软:几乎所有操作系统和开发工具,xp, vista, office, IE浏览器,visual studio, SQL Server.8. Google: 网络搜索引擎9. Apple:OS X部分内核 / iPod内核10.IM即时通讯软件:MSN , QQ大部分内核 , 飞鸽11.JPL (Jet Propulsion Lab, NASA): 火星探测器自动驱动系统 (包括场景分析和路线预测)以及很多地面支持软件。12. 弹道导弹防御系统:TMD与NMD,C+部分应用列表二,13.游戏: .B

3、lizzard: 星际争霸I - II,暗黑I,暗黑破坏神II :毁灭之王,魔兽争霸III ,魔兽世界。微软:所有游戏。EA:视频游戏引擎。末日三引擎,塞拉利昂,SWAT.Q:What do I need to know to become a programmer for Blizzard? A:Blizzard has several different programming positions available. Programmers are needed to work on B, individual games, 3D and graphics, tools, and oth

4、er areas. All of these positions require an extensive understanding of C and C+. Once you .,C+部分应用列表三,克莱斯勒,法国电力,CENA,北电网络,SAP,阿尔卡特公司,雷诺,Manugistics,Communaut urbaine(里昂交通管制),Parc科技有限公司,巴克莱全球投资(BGI),TLC(运输,Informatik,物流,GmbH咨询)Deutsche Bahn子公司,国防部的联合作战支援空运中心 (JOSAC),Telefonica,思科,尼桑,浦项制铁,索尼银行, isMobi

5、le ,美国西南航空公司, Novient ,沃达丰 TeleCommerce ,Sabre Holdings公司,法国电信,爱立信公司,德国电信,朗讯科技,MCI WorldCom,西门子,First Union Home Equity Bank,巴恩,惠普, Adonix ,Peugeot, ARINC公司,McHugh 爱立信(Ericsson) .,C+ Primer Plus The C+ Programming Language C+ Primer(潘爱民 译)Effective C+ (侯捷 译) More Effective C+(侯捷 译)C+标准程序库自修教程与参考手册(侯

6、捷 译)深度探索 C+ 对象模型(侯捷 译),C+ 参考书,三选一,阅读顺序,C语言回顾,变量,常量 Page.21 分支判断if- else , switch 循环for , while, do-while Page.133 数组 Page.68 函数 Page.29 指针,C+ 程序中的头文件,C+头文件没有扩展名.hinclude 原C头文件被重新包裹成为没有扩展名的头文件stdio.h - cstdio #include math.h - cmath #include #include 正确,但不推荐#include 错误,namespace 名称空间,解决的问题:名称冲突问题 不同组

7、件库中可能存在同名的变量或函数。当在某个软件开发过程中,同时使用这些组件库,将导致名称冲突问题。 解决方案:用不同的名称空间来区分不同的开发库。 防止名称空间冲突的办法,主要内容,设计并实现一个“宠物诊所管理系统” 使用C+的类机制定义自己的数据类型 宠物诊所类 PetClinic Class 狗类 Dog Class 猫类 Cat Class 理解面向对象中实现信息隐藏(information hiding)的封装(encapsulate)机制,面向对象方法学,机器 语言,汇编语言,面向过程 方法C, Basic,面向对象方法 C+, Java,8条指令1KB内存,64KB内存,面向对象OO

8、方法学的出现是软件开发历史中顺其自然的一步,硬件的处理能力不断提升,C+的类机制,C+类机制允许在代码中,由程序员增加自己定义的数据类型。其作用是: 我们在程序中无法将C+内置的int, short, char这些内置数据类型与现实世界中的物体(比如:猫,狗,闹钟,汽车)建立起直接,自然,简单的映射,闹钟类,狗类,具有共通特征,具有共通特征,/创建一只狗 string name1=“旺财“; int age1=5; string color1=“黑“; double weight1=10; bool guided=false; /创建一只猫 string name2=“汤姆“; int age

9、2=2; string color2=“灰“; double weight2=5; bool isMouseKiller=true;,Dog wc; /创建一只狗 wc.name=“旺财“; wc.age=5; wc.color=“黑“; wc.weight=10; wc.guided=false; Cat tom; /创建一只猫 tom.name=“汤姆“; tom.age=2; tom.color=“灰“; tom.weight=5; tom.isMouseKiller=true;,C语言版,C+语言版,类定义(一),类定义由两部分组成 类头(class head): C+关键字class

10、及其后面的类型名称构成 类体(class body): 由一对花括号包围起来 类定义最后必须接一个分号表示定义结束class alarm.;,类定义(二),现实世界的物体有两种特征: 属性(形状,大小,颜色,重量,名称等) 动作(响铃,刹车,咬人等) 在C+中用类来映射现实世界的同种物体,类中相应地用两种元素来表示现实世界物体的两种特征: 数据成员:比如表示大小,重量的变量 成员函数:设计者希望在该类对象上执行的各种操作,类定义示例,class Dog string name; ; class Cat string name; ;,Dog obj1;Cat obj2;/错误 /obj1和obj

11、2是不同类型 /的两种对象 obj1 = obj2;,在C+中引入新的自定义类:狗类,/ Dog.h: 狗类型 class Dog public:Dog();virtual Dog();/以下是数据成员的声明string name; /名字string variety; /品种int age; /年龄string color; /颜色double weight; /重量bool isMouseKiller; /是否爱管闲事 ;,使用Dog类,#include using namespace std; #include “Dog.h“ void main() Dog wc; /创建一只狗 wc.

12、name=“旺财“; wc.age=5; wc.color=“黑“; wc.weight=10; wc.isMouseKiller=false; coutwc.name“是一只“wc.color“色的狗。“; ,宠物诊所管理系统1.0的缺陷,缺陷 代码中的magic number(幻数)问题:i5 直接使用数字5,导致代码难以维护,难以理解 解决 在诊所PetClinic类中增加一个数据成员(属性变量)maxKeepingDogs,用于存放诊所能够同时治疗的狗的数量(这种解决方案也存在缺陷,在后面的缺陷列表中将继续讨论) 系统升级至2.0版,数据成员初始化的错误形式!,数据成员可以是任意类型(

13、基本类型int,short等,或者是类类型string, Dog等) 除静态数据成员外,数据成员不能在类体中被显示初始化 class car string model=“BMW“; /错误!double length=6.0; /错误! ;,宠物诊所管理系统2.0的缺陷,缺陷 目前诊所中只收治了一只狗进行治疗,该狗被放入dogSet0。main程序将未初始化的dogSet1- dogSet4全部显示,在屏幕上输出随机没有意义的数据。 解决方案 为诊所增加一个收容狗的计数器inKeepingDogs,用于记录当前收治的狗的数量。 操作:为PetClinic类增加新的数据成员 inKeepingD

14、ogs 系统升级至3.0版,宠物诊所管理系统3.0的缺陷,缺陷 诊所新接收了一条叫小明的狗,但是忘记同步增加诊所当前收治计数器inKeepingDogs 的值。1)增加狗到dogSet,2)增加inKeepingDogs 表面上看是两个分离的操作,但在逻辑上又应该属于必须同时发生的一个整体操作。 解决方案 将两个操作视作一个整体,放入同一个函数中。把这个函数作为成员函数添加至PetClinic类。 PetClinic类的一个动作:收治新的狗 addNewDog() 系统升级至4.0版,public class PetClinic Dog dogSet; int maxKeepingDogs;

15、int inKeepingDogs; /接收治疗一只新的狗void addDog(Dog d1)dogSet0=d1;inKeepingDogs+; ,class PetClinic public:PetClinic();virtual PetClinic();Dog dogSet5; int maxKeepingDogs; int inKeepingDogs; /接收治疗一只新的狗void addDog(Dog d1); ;,Java版:PetClinic.java,C+版 PetClinic.h,类成员函数的声明和定义代码在同一个文件中完成,类成员函数的声明在头文件.h中完成,定义在同名的

16、.cpp文件中完成,信息隐藏 information hiding,OO的重要原则之一:所有数据都应该尽量隐藏在它所在的类的内部 信息隐藏是现代软件开发过程中,保证软件可维护性的重要方法 当类的使用者直接使用类中的数据时,请仔细检查你的类设计:到底使用者会用这个数据做什么?为什么不是类的方法来提供这个操作?,getters and setters,基于信息隐藏原则,类的数据成员不应直接被外界读写 在OO类设计时,时常应为类中的一个数据成员xxx提供两个方法getXxx()和setXXX(),供类的使用者对xxx进行读写 为诊所类PetClinic和狗类Dog的每一个数据成员增加两个方法,系统升级至5.0,宠物诊所管理系统5.0的缺陷,缺陷 创建诊所,初始化诊所数据成员MaxKeepingDogs和InKeepingDogs是分离的步骤,可能导致PetClinic类使用者在生成诊所时忘记其中的一步 解决方案 创建一个类的对象时,可能进行一系列初始化操作,将这些操作放入类的构造函数constructor,在构造函数中进行所有初始化。 系统升级至6.0,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号