《面向对象程序设计》PPT课件.ppt
面向对象程序设计C+,上海大学 雷电,计算机的发展,计算机发展的速度、性能的极限“摩尔定律”:微处理器的速度会每18个月翻一倍。“吉尔德定律”:主干网的宽带将每6个月增加一倍。“麦特卡尔夫定律”:网络的N个联结能够创造N平方的效益。“比尔盖茨定律”:软件的发展无极限,它只受人的想象力的限制。,上海大学 雷电,软件危机,计算机硬件的性价比不断提高,促使把更多更复杂的问题交给计算机去解决。,上海大学 雷电,编程是重要的,但更具有决定意义的是系统建模(好比建筑设计图等)。软件危机:系统的复杂性超出了所能驾御的程度。85%的错误是在需求分析和设计时犯的。人们一直在寻求更先进的软件方法与技术而奋斗。面向对象的方法是当前软件领域(分析、设计、编程、测试)的主流技术。面向对象的程序设计是使计算机向有表述能力的媒体发展的思想方法,解决方案。,上海大学 雷电,设计过程,例:“我的一个朋友结婚了”-对象模型的通俗理解,第二步:分析建模,第三步:面向对象详细设计,通用算法设计类及对象设计消息、接口设计子系统、组件设计,第四、五步:编程,写代码;测试,第一步:认识现实世界-系统分析,上海大学 雷电,软件开发,软件开发是什么?编程本身是一种个体的、富灵感的、逻辑性强的活动,但现代的软件开发更是一种群体的工程活动。1)教学观2)工程观3)艺术/工艺观。开发人员的主要动作是:理解问题空间,并设想出技术上可行的方案来解决问题;把头脑中的“内部”过程用可执行的计算机语言表达出来;留下必要的工作标记(marker)以支持首要目标(项目组内的交流)和次要目标(传递这次开发的设计思想)。设计方法:面向对象的程序设计。中心任务:设计类。,上海大学 雷电,学习那种计算机语言最好?,PC机上:上百种计算机语言 大浪淘沙 FORTRAN(最古老的高级语言)BASIC-QBASIC-Visual BASIC-Visual BASIC.NETPASICAL-Delphi Java C-C+-Visual C+-C#(最新的计算机语言)Visual C+.NET其他机种各种硬件驱动程序、单片机、数字信号处理器等:汇编语言(与机器有关)、C语言、C+语言自动化专业的学生当然是学习C/C+语言最好!,上海大学 雷电,系统编程,C+是一种倾向系统编程的通用程序设计语言:是更好的C支持数据抽象支持面向对象的编程支持泛型编程系统编程是指,传统上与操作系统和基础工具有关的任务。包括:操作系统内核、设备驱动程序、系统工具、网络、字处理工具、编译器、某些种类的图形学和GUI、数据库系统、游戏引擎、CAD/CAM、电信系统等等。这类工作很好地代表了当前的C+用户。,上海大学 雷电,支持面向对象程序设计的通用语言:C+(Visual C+),Java,Delphi,Visual BASIC.NET C+指的是面向对象C语言。C+被奉为一门激动人心的语言,它利用了对象的最受欢迎的特征并尽可能避免运行时刻的缺点和开销,而且使在C语言中已有的大量投资不会浪费。所以它最适合开发服务器软件。本课程介绍C+面向对象程序设计最重要概念类,及其对象之间的相互作用。,为什么C+会成功,上海大学 雷电,怎样才能学好C+语言?,自然语言:单词、语法、句子、段落、文章C+语言:关键字、语法、语句、函数、类(模块)、文件学外语:听、说、读、写学计算机语言:读、写C+语言 入门容易得道难!最基本的、最死板的是语言本身(语言语法或语言规则)最难的、最灵活的是用语言工具对应用的设计,无止境。最好的学习方法是:阅读(通读教材、多读各类资料、源程序),上机实践编程。,上海大学 雷电,第一章 面向对象编程,1.1.1 面向过程的编程自顶向下,函数层层调用.,Main(),BuildChassis(),BuildEngine(),Assemble(),Inspect,InData(),outData(),StrCpy(),库函数:,上海大学 雷电,面向对象的编程,一种试图摹仿现实世界类型的程序设计方法通过类的设计。类是对象的集合体。类描述了一组有相同特性(数据元素)和相同行为(函数)的对象。,上海大学 雷电,1.2 类与抽象数据类型,在我们日常词汇中的几乎每一个名词都表示一类对象,具有一组属性或行为特征,它是对现实世界的概括、分类和抽象。一个类是一种数据类型,是面向对象语言的基本模块。对象(变量)是类(数据类型)的实例。,上海大学 雷电,1.1.3 对象关系模型has a:组合,包含;is a:实例,继承;like a:接口,抽象1.3对象的行为模型-客户/服务模式服务器:类和对象客户:使用类和对象的模块(函数、类)客户通过请求服务而完成其任务,具体如何实现的底层细节不必关心。运行方式:1)调用式:客户调用服务器函数。2)事件驱动(消息传递):客户订阅/连接服务器定义的事件。,上海大学 雷电,1.5.1 接口客户和服务器间的服务协议-类中的函数原型.1.5.2 组件预先创建好的程序模块,它实现了一些标准的接口.,上海大学 雷电,面向对象程序设计的基本特征,封装:把一个数据结构同操作数据的函数(行为或方法)组合在一起,封装是借助一种新的结构和数据类型机制类来达到的。继承:是建立一个新的派生类。它从一个或多个先前定义的基类中继承函数和数据,而且可能重新定义或加进新的数据和行为,这样就建立了类的等级。多态性:给行为取一个名字或符号,它从上到下共享一个类的等级,在这个等级中的每个类都以适合于自己的方式实现这个行为。,上海大学 雷电,对象设计的五个阶段,对象发现这个阶段出现在程序的最初分析期间。可以通过摹仿现实世界类型而发现对象。如果已经有了一组类库,某些对象是很明显的。类之间的共同性(暗示了基类和继承),可以立刻出现或在设计过程的后期出现。对象装配我们在建立对象时会发现需要一些新成员,这些新成员在对象发现时期未出现过。对象的这种内部需要可能要用新类去支持它。系统构造对对象的更多要求可能出现在以后阶段。随着不断的学习,我们会改进我们的对象,系统中其它对象通讯和互相连接的需要,可能改变已有的类或要求新类。系统扩充当我们向系统增添新的性能时,可能发现我们先前的设计不容易支持系统扩充。这时,我们可以重新构造部分系统,并很可能要增加新类。对象重用这是对类的真正的重点测试。如果某些人试图在全新的情况下重用它,他们会发现一些缺点。当我们修改一个类以适应更新的程序时,类的一般原则将变得更清楚,直到我们有了一个真正可重用的对象。,