程序设计c++ 第1章_第1页
程序设计c++ 第1章_第2页
程序设计c++ 第1章_第3页
程序设计c++ 第1章_第4页
程序设计c++ 第1章_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 本章主要内容 一、面向对象程序设计概念 二、面向对象程序设计方法与传统设计方法对比 三、面向对象程序设计的语言20世纪60年 IBM的OS/360,约100万条指令,5000人年,数亿美元。结果令人沮丧,错误多达2000多个。1967年前苏联“联盟一号”载人飞船,其软件设计时忽略了一个小数点,导致机毁人亡。美国阿波罗登月飞行计划,阿波罗8号,14号都出现大量错误。软件危机(software crisis):软件规模的扩大,复杂度的提高,需求的不断增大,“生产作坊式”的软件开发模式已经不能满足软件开发的需要。软件产品质量低下,甚至开发夭折;生产效率低1968年提出软件工程的概念1990年IEE

2、E定义软件工程为:对软件开发、运作、维护的系统化的、有规范的、可定量的方法之应用。软件工程是一门指导软件开发的工程学科。包含了方法与技术、工具及环境、软件工程管理、标准和规范四个方面内容。面向对象的软件开发方法OOSD(object-oriented software development)是20世纪90年代提出的一种全新的软件设计方法 OOSD由OOA、OOD、OOP组成。OOA面向对象的分析:主要解决“做什么”OOD面向对象的设计:进一步解决“如何做”OOP面向对象的程序设计:使用面向对象的语言进行编程 程序设计的泛型(paradigm): 定义:是设计程序的规范、模型和风格。 是一类程

3、序设计语言的基础,体现了一类语言的特征。 不同的程序设计泛型有不同的设计技术和方法学 例如: 面向过程程序设计和面向对象程序设计 函数式程序设计(描述输入输出之间的关系,LISP)、模块程序设计、逻辑是程序设计等等 主要特征: 程序由过程定义和过程调用组成 过程:执行某项操作的一段代码,函数是最常用的过程。 程序 = 过程 + 调用 基于面向过程程序设计泛型的语言被称为面向过程性语言 C、Pascal、Fortran、Ada等 主要特征: 程序= 对象+消息 对象是面向对象程序的基本要素 主要结构特点: 由类定义和类使用两部分组成 程序中的操作是通过对象发送消息来实现。 注意:某种程序设计语言

4、不一定与一种设计泛型对应 C+是具有面向过程和面向对象泛型的混合型设计语言 主要概念 1、对象 2、类 3、消息与方法现实世界中,任何事物都是对象。具体的:一张桌子、一辆汽车抽象的:一次课、一场球赛简单的:一张桌子、一次课复杂的:一辆汽车、一场球赛对象具有静态的属性(状态)和动态的行为(操作或功能)人的静态属性:身高、体重、肤色、姓名等等动态行为:吃、喝、拉、撒、跑、跳。现实世界的对象的特征:每个对象必须有一个名字以区别其他对象属性描述对象的某些特征有一组操作,每组操作决定对象的一种行为对象的行为可以分为两类:作用于自身的行为、作用于其他对象的行为 对象 = 描述其属性的数据 + 数据的操作(

5、函数)数据操作代码对象学号、姓名成绩、体重、爱好、.输入姓名、输出姓名、输入成绩、计算学分积、某个学生 类:一组具有相同属性和行为的对象的抽象 人、计算机、教室. 类和对象抽象和具体学号:2008姓名:张三成绩:250体重:300KG爱好:睡觉、.上课吃饭踢球逃课学生张三 类: 具有相同的数据、相同操作(函数)的一组对象的的集合 数据成员 、 成员函数n面向对象程序设计中,先声明类,再由类生成对象n类是建立对象的模板类对象对象的实例化 对象之间需要联系,称为对象的交互 对象之间交互的机制称为消息传递 消息:一个对象向另一个对象发送的请求 对象收到请求后,调用相关的方法,执行相应的操作 消息的三

6、个性质 同一个对象可以接受不同形式的多个消息,做出不同的响应 相同的消息传递给不同的对象,做出的反应可以不同 对消息的响应不是必须的 消息:调用对象的函数就是向该对象发送一个消息 方法:接收消息对象的调用成员函数来实现消息的处理。 方法包括 界面:方法名(函数名)、调用协议(参数列表) 方法体:实现操作的一系列步骤的程序,即函数体 1、抽象 2、封装 3、继承 4、多态抽象是将有关事务的共性归纳和集中的过程,是通过特定的实例(对象)抽取共同性质后形成概念的过程。OOP方法中抽象的结果是通过类来描述和实现的。实例:学生成绩管理程序共同属性(数据成员):学号 int num;姓名 string n

7、ame;成绩、float score;共同行为(成员函数):输入数据 input();修改数据 modify();输出数据 print();封装是OOP一个重要特征OOP中封装:把数据和操作代码集中起来,放在对象内部,并尽可能隐蔽对象的内部细节。通过对象与外界的接口来使用对象。C+中的接口就是函数名封装的含义: 将数据和操作封装在一个对象中,对象间相互独立,互不干扰 对象中某些数据和操作对外隐蔽,只留下少量接口与外界联系。对外界隐蔽的做法称为信息隐藏。有利于数据安全数据操作代码1操作代码2操作代码n接口接口接口OOP中,继承表达的是对象之间的相互关系。通过这种关系,使某一类可以继承另一类的特征

8、和能力类之间具有继承关系的特征 类间具有共享特征(共享的数据和操作代码) 类间具有差别或新增部分(非共享数据和操作代码) 类间具有层次结构A类基类或者父类B类派生类或者子类A类B类C类直接基类间接基类 继承的作用: 避免公共代码重复开发,减少代码和冗余 增强一致性来减少模块间的接口和界面。 软件重用: 通过继承可以利用已有类建立一个新类,可重用已有代码。增加了程序的可重用性,减少了代码和数据冗余及编程工作量 继承从继承源上分 单重继承 多重继承窗口编辑窗口对话窗口玩具车玩具车学生大学生小学生 现实世界的多态 C+中的多态,不同的对象接收到相同的消息执行不同的操作 C+支持两种多态性 编译时的多

9、态性:函数重载,运算符重载 运行时的多态性:虚函数 增强了程序的灵活性、可重用性 传统的程序设计方法 生产效率低 面向过程的结构化程序设计,采用功能分解逐步求精。颗粒度小,从语句级开始 数据和操作分离,同一数据的操作分散。软件的编写和修改复杂。 维护周期长。 总之:软件重用性低、复杂性高、可维护性差 传统程序设计难以应付日益庞大的信息量和多样的信息类型 多媒体数据 传统程序设计难以适应各种新环境 并行、分布式、网络OOP方法的主要优点 可提高程序重用性1、对象的封装性提高了颗粒度2、建立类库、通过继承来派生 可控制程序的复杂性封装和信息隐藏使数据和操作作为整体来操作。 可改善程序的可维护性对象的独立性。封装和信息隐藏防止非法操作,减少错误率 能够更好的支持大型程序设计类的独立性、继承等机制 增强了计算机处理信息的范围比较接近自然思维 能很好的适应新的硬件环境。对象、消息传递等思想和机制与分布式、并行、多处理机、网络等硬件环境较为为吻合20世纪50年代LISP语言,提出了动态联编和交互式开发环境的概念20世界60年代,Simula引入了面向对象类、继承等的一些概念和特征20世纪70年代出现了CLU、Modula-2、Ada语言。同时期,美国Xerox公司研制的Smalltalk,公认的第一个真正面向对象的语言。OOP语言发展的里程碑,标志OOP的诞生

温馨提示

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

评论

0/150

提交评论