第七章-面对对象的软件分析

第七章-面对对象的软件分析

  • 面对对象方法概述
  • 面对对象的基本概念
      • 对象
      • 实例Instance
          • ==类是建立对象的“样板”, 按照这个样板所建立的一个具体的对象,就是类的实际例子,通常称为实例。==
      • 消息
      • 方法
      • 属性Attribute
  • 高阶概念
      • 封装 Encapsulation
      • 继承 Inheritance
      • 多态 Polymorphism
          • 多态机制不仅增加了面对对象软件系统的灵活性,进一步减少了数据冗余,还显著提高了软件的可重用性和可扩充性。
          • ==父类不能调用子类对象独有的方法。==
      • 重载 OverLoading
  • 面对对象的方法
      • Booch方法
      • OMT对象建模技术
      • Jacobson方法
      • UML
          • 优点

面对对象方法概述

基本原则:
  尽可能模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识世界解决问题的方法和过程。即 使描述问题的问题空间(问题域)与实现解法的解空间(求解域)在结构上尽可能一致。
第七章-面对对象的软件分析_第1张图片

面对对象方法的4个要点:

  1.   认为客观世界是由各种对象组成的;
  2.   把所有的对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法;
  3.   按照子类和父类(派生类和基类)的继承关系,把若干个对象类组成一个层次结构的系统;
  4.   对象之间仅能通过传递信息相互联系。

面对对象=对象+类+继承+传递消息

第七章-面对对象的软件分析_第2张图片

面对对象的基本概念

  1. 对象

  面向对象软件技术的基本原理强调模拟显示世界中的概念而不强调算法
  在应用领域中有意义的、与索要解决的问题有关系的任何事物都可作为对象,可以是具体的物理实体的抽象,也可以是人为的概念,或者任何有明确边界和意义的东西。如:贷款和借款,一个窗口等。
第七章-面对对象的软件分析_第3张图片

  对象是由描述该对象属性的数据,以及可以对这些数据施加的所有操作封装在一起构成的统一体
第七章-面对对象的软件分析_第4张图片
  对象的定义: 1)对象是具有相同状态的一组操作的集合,2)对象是对问题域中某个东西的抽象,是对属性值和操作的封装,3)形式化定义,对象::=,依次是对象的标识、操作集合、数据结构、对外接口。

  对象的特点: 1)以数据为中心,2)对象是主动的,3)实现了数据封装,4)本质上具有并行性,5)模块对立性好。

  是对具有相同数据和想同操作的一组相似对象的定义,类是对具有相同属性和行为的一个或多个对象的描述(抽象)。

  1. 实例Instance

  实例是由某个特定的类做描述的一个具体的对象

类是建立对象的“样板”, 按照这个样板所建立的一个具体的对象,就是类的实际例子,通常称为实例。
  1. 消息

  消息就是某个操作的规格说明。由1)接受消息的对象 2)消息选择符(消息名) 3)零个或多个变元组成。

第七章-面对对象的软件分析_第5张图片

  1. 方法

   方法就是对象所能执行的操作,也是类中定义的服务。

  1. 属性Attribute

   属性,类中定义的数据,客观世界中实体所具有的性质的抽象。

高阶概念

  1. 封装 Encapsulation

  条件:1)清晰的边界 2)明确的接口 3)受保护的内部实现

  1. 继承 Inheritance

  继承是指能够直接获得(父类中的)已有的性质和特征,而不用重复定义。

    是子类自动的共享其父类中定义的属性和操作的机制,该机制构成了类的层次结构。较高层的父类称为基类、超类、一般类。子类称为派生类、特殊类。子类除了继承父类的特征,还可有自己的特征。继承具有传递性,子类能够继承上层的全部特征。
    继承性使得相似的对象可以共享程序代码和数据结构,从而简化了创建类及对象的工作量,基类解决一般性问题,派生类解决特殊性问题,提高了软件的可重用性。继承性还使得软件便于维护,当需要扩充软件愿用功能时,从要修改的类中派生出一个子类,在该子类中添加新的代码。

  1. 多态 Polymorphism

   相同操作的信息发送给不同的对象时,每个对象根据自己所属类中定义的这个操作去执行,从而产生不同的结果。
  父类包含一个被子类覆盖的方法,接下来通过一个父类的引用值来引用其不同的子类对象,父类引用调用被覆盖的方法时,不用版本的被覆盖的方法将会执行。

多态机制不仅增加了面对对象软件系统的灵活性,进一步减少了数据冗余,还显著提高了软件的可重用性和可扩充性。

第七章-面对对象的软件分析_第6张图片
引用所能调用用的方法取决于引用的类型,而如何具体的实现该方法取决于对象的类型

父类不能调用子类对象独有的方法。
  1. 重载 OverLoading

  **函数重载:**是指同一作用域内(类等)若干个参数特征不同的函数可以使用相同的函数名称。
  **运算符重载:**同一个运算符可以施加于不同类型的操作数上面。

面对对象的方法

Booch方法

  1. 在给定的抽象层次上识别类和对象;
  2. 识别这些对象和类的语义;
  3. 识别这些类和对象之间的关系;
  4. 实现类和对象。

类图(类结构-静态视图)、对象图(对象结构-静态视图)、状态转移图(类结构-动态试图)、时态图(对象结构-动态视图)、模块图(模块体系结构)、进程图(进程体系结构)。

OMT对象建模技术

   Rumbaugh等人提出,他们认为:OO方法不是基于功能分解的方法,二十利用OO技术描述了真实世界中真实对象扮演的角色。
  四个步骤:分析、系统分析、对象设计和实现。
  OMT方法从三个角度对一个系统进行建模,得到三种模型: ==对象模型、动态模型和功能模型,==分别代表了系统静态结构,系统随时间变化的、行为的、控制的方面,系统的功能方面。

Jacobson方法

   从目标系统的输入和输出数据结构入手,导出程序框架结构,再补充其他细节,从而得到完整的程序结构图

UML

第七章-面对对象的软件分析_第7张图片

优点
  1. 符合人类的思维习惯
  2. 稳定性好
  3. 可重用性好
  4. 可维护性好

你可能感兴趣的:(软件工程)