问题1:什么是传统的软件开发方法?

传统的软件开发方法是面向过程的,采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,强调的是将一个较为复杂的任务分解成许多易于控制和处理的子任务,自顶向下顺序地完成软件开发各阶段的任务。
例如学生信息管理系统,可以分解为输入学生信息,输出学生信息、插入(学生)、删除(学生)、查找(学生)等操作,分别编写程序实现各个功能。

问题2:面向过程编程的缺点是什么?

可重用性差,维护成本高。
原学生信息管理系统如果增加一类新的学生类型:在职研究生。由于不同的学生需要不同的处理过程,则需要重新编写程序。

问题3:面向过程的程序是如何设计的?

利用类及其对象!
在学生信息管理系统中建立学生类。

问题4:如果增加新的学生类型——在职研究生,怎么办?

基于学生类派生出在职研究生类。

面向对象软件设计的基本准则

  • 模块化。面向对象设计中,对象就是模块,它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。
  • 抽象。抽象是指将现实世界中的事物、状态或过程所存在的相似方面集中和概括起来,暂时忽略它们之间的差异。
  • 信息隐藏。信息隐藏是程序把函数过程或对象看成“黑箱”的能力,使用它实现指定的操作,而不需要知道内部的运转。
  • 高内聚与低耦合。内聚是衡量一个模块内各个元素彼此结合的紧密程度。耦合是指一个软件结构内不同模块之间关联的紧密程度。
  • 可重用性。软件重用是提高软件开发质量的重要途径。

    面向对象程序设计方法的基本特征有什么?

    抽象性、封装性、继承性、多态性
  1. 抽象性
  • 抽象就是从众多的事物中抽取出共同的、本质性的特征,舍弃其非本质的特征。例如,苹果、香蕉、酥梨、葡萄、桃子等,它们共同的特征就是水果。
  • 抽象包含两个方面:一方面是过程抽象;另一方面是数据抽象。
    1. - 过程抽象就是针对对象的行为特征,如鸟会飞、会跳等,这些方面可以抽象为方法,即过程,写成类时都是鸟的方法。
    2. - 数据抽象就是针对对象的属性,如建立一个鸟这样的类,鸟会有以下特征:两个翅膀,两只脚,有羽毛等,写成类时都应是鸟的属性。
  1. 封装性

封装是面向对象方法的一个重要特点,即将对象的属性和行为封装在对象的内部,形成一个独立的单位,并尽可能隐蔽对象的内部细节。

  1. 继承性
    1. 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
    2. 图1-2说明了人、学生、大学生之间的继承关系,箭头的方向指向其父类。
    3. 在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承或单继承,如图1-3所示。
    4. 子类继承了多个父类的数据结构和方法,则称为多重继承或多继承。

image.pngimage.pngimage.png

  1. 多态性

多态性是面向对象方法的重要特征。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
例如,一个学生拿着象棋:“咱们玩棋吧。”
一个学生拿着跳棋说:“咱们玩棋吧。”
C++支持两种多态性,即编译时的多态性和运行时的多态性。编译时的多态性是通过重载来实现的,运行时的多态性是通过虚函数来实现的。

面向对象的术语


“类”是对一组具有共同属性特征和行为特征的对象的抽象。例如,学生张三、学生王明。
对象
对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体。
对象是我们认识世界的基本单元,可以是人,也可以是物,还可以是一件事。
术语“对象”既可以是指一个具体的对象,也可以泛指一般的对象。
实例
实例是一个类所描述的一个具体的对象。
例如,通过“大学生”类定义一个具体的对象学生王明就是大学生类的一个实例,就是一个对象。
类和对象之间的关系是抽象和具体的关系。
属性
属性,就是在类中所定义的数据。它是对客观世界实体所具有的性质的抽象
例如,Student类中所定义的表示学生的姓名、年龄和成绩的数据成员就是Student类的属性。
消息
消息就是要求某个对象执行定义该对象的类中的某个操作的规格说明。消息具有三个性质: 同一个对象可以接收不同形式的多个消息,做出不同的响应;相同形式的消息可以传递给不同的对象,所做出的响应可以是不同的;接收对象对消息的响应并不是必须的,对象可以响应消息,也可以不响应。
方法
方法是对象所执行的操作,也是类中所定义的服务。
重载
C++提供了重载机制,即允许具有相同或相似功能的函数使用同一函数名,从而减少了程序员记忆多个函数名字的负担。

1. 面向对象程序设计方法的基本特征主要有抽象性、( )、继承性和多态性。 封装性
2. ( )是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。 继承
3. 不同的对象,收到同一消息可以产生不同的结果,这种现象称为( )。 多态
4. 编译时的多态性是通过( )来实现的。 重载
5. 运行时的多态性是通过( )来实现的。 虚函数
6. ( )是对一组具有共同属性特征和行为特征的对象的抽象。
7. ( )是一个类所描述的一个具体的对象。 实例
8. 类和对象之间的关系是( )的关系。 抽象和具体
9. ( )就是从众多的事物中抽取出共同的、本质性的特征,舍弃其非本质的特征。 抽象
10. 子类继承了多个父类的数据结构和方法,则称为( )。 多重继承
11. 面向对象程序设计方法的基本特征主要有( )、封装性、继承性和多态性 抽象性
12. 面向对象程序设计方法的基本特征主要有抽象性、封装性、( )和多态性 继承性
13. 面向对象程序设计方法的基本特征主要有抽象性、封装性、继承性和( ) 多态性
14. 把面向对象思想应用于软件开发过程中,指导开发活动的系统方法,简称( )方法 OO
15. 20世纪90年代中期由Booch,Rumbaugh和Jacoson共同提出了( ),把众多面向对象分析和设计方法综合成一种标准,使面向对象的方法成为主流的软件开发方法。 统一建模语言UML