资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Lecturer:Zhang Jingyu,Computer School,SCU,*,单击此处编辑母版标题样式,面向对象的程序设计(一),O,bject-,O,riented,P,rogramming,1,Lecturer:Zhang Jingyu,Computer School,SCU,面向对象的程序设计(一)Object-Oriented Pr,C+中的OOP,OOP,C,硬件(CPU,RAM,IO),Computer,现实世界中需要解决的问题,包括:,电信,电力,金融,政府,制造业,商贸物流,医疗卫生,教育,交通,C+,现实世界,2,Lecturer:Zhang Jingyu,Computer School,SCU,C+中的OOPOOPC硬件(CPU,RAM,IO),1.Adobe系统:Photoshop/Illustrator/Acrobat Reader.,2.中移动/中电信/中联通/美国电话电报公司(AT&T)/Vodaphone/T-Mobile/Orange:移动电话基础设施,计费系统,800 service,及其他大量支撑平台和服务,3.Nokia Symbian OS系统(从内核到外,用C+编写了所有代码),,4.Linux操作系统,5.Java VM core,6.MySQL数据库,C+部分应用列表一,3,Lecturer:Zhang Jingyu,Computer School,SCU,1.Adobe系统:Photoshop/Illustrat,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+部分应用列表二,4,Lecturer:Zhang Jingyu,Computer School,SCU,C+部分应用列表二4Lecturer:Zhang Ji,13.游戏:.,Blizzard,:星际争霸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 other areas.,All of these positions require an extensive understanding of C and C+.,Once you.,C+部分应用列表三,5,Lecturer:Zhang Jingyu,Computer School,SCU,C+部分应用列表三5Lecturer:Zhang Ji,克莱斯勒,法国电力,CENA,北电网络,SAP,阿尔卡特公司,雷诺,Manugistics,Communaut urbaine(里昂交通管制),Parc科技有限公司,巴克莱全球投资(BGI),TLC(运输,Informatik,物流,GmbH咨询)Deutsche Bahn子公司,国防部的联合作战支援空运中心(JOSAC),Telefonica,思科,尼桑,浦项制铁,索尼银行,isMobile,美国西南航空公司,Novient,沃达丰 TeleCommerce,Sabre Holdings公司,法国电信,爱立信公司,德国电信,朗讯科技,MCI WorldCom,西门子,First Union Home Equity Bank,巴恩,惠普,Adonix,Peugeot,ARINC公司,McHugh 爱立信(Ericsson).,6,Lecturer:Zhang Jingyu,Computer School,SCU,6Lecturer:Zhang Jingyu,Comp,C+Primer Plus,The C+Programming Language,C+Primer(潘爱民 译),Effective C+(侯捷 译),More Effective C+(侯捷 译),C+标准程序库自修教程与参考手册(侯捷 译),深度探索 C+对象模型(侯捷 译),C+参考书,三选一,阅读顺序,7,Lecturer:Zhang Jingyu,Computer School,SCU,C+Primer PlusC+参考书三选一阅读顺序7,C语言回顾,变量,常量 Page.21,分支判断if-else,switch,循环for,while,do-while Page.133,数组 Page.68,函数 Page.29,指针,8,Lecturer:Zhang Jingyu,Computer School,SCU,C语言回顾变量,常量 Page.218Lecturer:,C+程序中的头文件,C+头文件没有扩展名.h,include,原C头文件被重新包裹成为没有扩展名的头文件,stdio.h-cstdio#include,math.h-cmath#include,#include 正确,但不推荐,#include 错误,9,Lecturer:Zhang Jingyu,Computer School,SCU,C+程序中的头文件C+头文件没有扩展名.h9Lectu,namespace 名称空间,解决的问题:名称冲突问题,不同组件库中可能存在同名的变量或函数。当在某个软件开发过程中,同时使用这些组件库,将导致名称冲突问题。,解决方案:用不同的名称空间来区分不同的开发库。,防止名称空间冲突的办法,10,Lecturer:Zhang Jingyu,Computer School,SCU,namespace 名称空间解决的问题:名称冲突问题10Le,主要内容,设计并实现一个“宠物诊所管理系统”,使用C+的类机制定义自己的数据类型,宠物诊所类 PetClinic Class,狗类 Dog Class,猫类 Cat Class,理解面向对象中实现信息隐藏(information hiding)的封装(encapsulate)机制,11,Lecturer:Zhang Jingyu,Computer School,SCU,主要内容设计并实现一个“宠物诊所管理系统”11Lecture,面向对象方法学,机器,语言,汇编语言,面向过程,方法C,Basic,面向对象方法,C+,Java,8条指令1KB内存,64KB内存,面向对象OO方法学的出现是软件开发历史中顺其自然的一步,硬件的处理能力不断提升,12,Lecturer:Zhang Jingyu,Computer School,SCU,面向对象方法学机器汇编语言面向过程面向对象方法8条指令1KB,C+的类机制,C+类机制允许在代码中,由程序员增加自己定义的数据类型。其作用是:,我们在程序中无法将C+内置的int,short,char这些内置数据类型与现实世界中的物体(比如:猫,狗,闹钟,汽车)建立起直接,自然,简单的映射,闹钟类,狗类,具有共通特征,具有共通特征,13,Lecturer:Zhang Jingyu,Computer School,SCU,C+的类机制C+类机制允许在代码中,由程序员增加自己定义,/创建一只狗,string name1=旺财;,int age1=5;,string color1=黑;,double weight1=10;,bool guided=false;,/创建一只猫,string name2=汤姆;,int age2=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+语言版,14,Lecturer:Zhang Jingyu,Computer School,SCU,/创建一只狗Dog wc;/创建一只狗C语言版C+,类定义(一),类定义由,两部分,组成,类头,(class head):C+关键字class及其后面的类型名称构成,类体,(class body):由一对花括号包围起来,类定义最后必须接一个分号表示定义结束,class alarm,.,;,15,Lecturer:Zhang Jingyu,Computer School,SCU,类定义(一)类定义由两部分组成15Lecturer:Z,类定义(二),现实世界的物体有两种特征:,属性(形状,大小,颜色,重量,名称等),动作(响铃,刹车,咬人等),在C+中用类来映射现实世界的同种物体,类中相应地用两种元素来表示现实世界物体的两种特征:,数据成员:比如表示大小,重量的变量,成员函数:设计者希望在该类对象上执行的各种操作,16,Lecturer:Zhang Jingyu,Computer School,SCU,类定义(二)现实世界的物体有两种特征:16Lecturer,类定义示例,class Dog,string name;,;,class Cat,string name;,;,Dog obj1;,Cat obj2;,/错误,/obj1和obj2是不同类型,/的两种对象,obj1=obj2;,17,Lecturer:Zhang Jingyu,Computer School,SCU,类定义示例class DogDog obj1;17Lectu,在C+中引入新的自定义类:狗类,/Dog.h:狗类型,class Dog,public:,Dog();,virtual Dog();,/以下是数据成员的声明,stringname;/名字,stringvariety;/品种,intage;/年龄,stringcolor;/颜色,doubleweight;/重量,boolisMouseKiller;/是否爱管闲事,;,18,Lecturer:Zhang Jingyu,Computer School,SCU,在C+中引入新的自定义类:狗类/Dog.h:狗类型1,使用Dog类,#include,using namespace std;,#include Dog.h,void main(),Dog wc;/创建一只狗,wc.name=旺财;,wc.age=5;,wc.color=黑;,wc.weight=10;,wc.isMouseKiller=false;,coutwc.name是一只,wc.color色的狗。;,19,Lecturer:Zhang Jingyu,Computer School,SCU,使用Dog类#include 19Lec,宠物诊所管理系统1.0的缺陷,缺陷,代码中的magic number(幻数)问题:i5 直接使用数字5,导致代码难以维护,难以理解,解决,在诊所PetClinic类中,增加一个数据成员(属性变量),maxKeepingDogs,,用于存放诊所能够同时治疗的狗的数量(这种解决方案也存在缺陷,在后面的缺陷列表中将继续讨论),系统升级至2.0
展开阅读全文