Objected-Oriented Analysis and Design-1

本文为华东师范大学开设的面向对象分析与设计慕课课程第一周笔记,主要讲了面向对象方法学,面向对象的起源以及面向对象的相关概念与特征。

面向对象分析与设计

面向对象之父——艾伦.C.凯

启发来源:

  • 生物学上,细胞信息的传递方式
  • 传送数据时,将数据以及对数据的处理方法一起打包

类与对象

Class 类

A class is a description (描述符) of a set of objects that share the same attributes, operations, relationships, and semantics 类是共享相同属性、操作、方法、关系或行为的一组对象的描述符

Object 对象

An object is an instance created from a class 一个对象是根据一个类创建的一个实例

An instance’s behaviour and information structure is defined in the class.
Its current state (values of instance variables) is determined by operations performed on it.

Message 消息

对象之间的一种交流手段

All objects of a paricular type can receive the same messages.

面向对象的思考方式

面向对象

适合解决不确定的事件、创新性的事件

面向过程

处理已知的事实、重要的条件都已知的场景

面向对象的核心特征

Encapsulation 封装
  • Encapsulation is the process of hiding the implementation details of an object 隐藏了对象的实现细节
  • The internal state is usually not accessible by other objects 内部的状态不为其他对象所访问
  • The only access to manipulate the object data is through its interface 对象的数据只能通过接口进行访问
  • Encapsulation allows objects to be viewed as ‘black boxes’ 封装使得对象可以被看成一个“黑盒子”
  • It protects an object’s internal state from being corrupted by other objects. 保护数据
  • Also, other objects are protected from changes in the objectimplementation. 一个对象实现方法的改变,不影响其他相关对象
  • Communication is achieved through an ‘interface’ 对象间通过“接口”进行通信

为什么封装?

  • 保护隐私
  • 保护数据安全
  • 隔离复杂度

封装原则

  • An object should only reveal the interfaces needed to interact with it. Details not pertinent to the use of the object should be hidden from other objects. 只公开必须公开的属性
  • 使用 Getters and Setters 来实现信息隐藏
Inheritance 继承
  • A class gets the state and behavior of another class and adds additional state and behavior 一个类从其他的类里面获取它的状态和行为,同时加上自己的一些额外的状态和行为
Ploymorphism 多态
  • When one class inherits from another, then polymorphism allows a subclass to stand in for the superclass. 当一个类从另一个类继承而来,多态使得子类可以代替父类
  • The sender of a stimulus doesn’t need to know the receiver’s class. 消息发送方不需要知道消息接收方属于哪个子类
  • Different receivers can interpret the message in their own way. 同一类族的接收者可以按自己的方式处理消息
  • 使用指向父类的指针或者引用,能够调用子类的对象,这是多态的核心思想,也是设计模式的基础
Aggregation & Composition 聚合&组合
  • Aggregation describes a “has a” relationship. One object is a part of another object. XX有XX这种关系
  • Aggregation relationships are transitive. 聚合有传递性
    • if A contains B an B contains C, then A contains C
  • Aggregation relationships are asymmetric. 聚合是不对称的
    • If A contains B, then B does not contain A
  • A variant of aggregation is composition which adds the property of existence dependency. 组合是聚合的一个变种
    • 组合特别强调整体控制着部分的生命,比如手指和手掌
  • 但有些时候,聚合的组合的关系不是很明确,含糊不清的话一般用聚合
Interface & Implementation 接口&实现
  • Interface describes how users of the class interact with the class 描述一个类的用户如何与这个类交互
    • 使得当对其中某一个类进行局部修改的时候,不影响其他的类
  • 实现即完成接口所定义的功能
Abstraction 抽象
  • A process allowing to focus on most important aspects while ignoring less important details. 简单地说,抽象就是专注于最重要的部分而忽略掉那些不太重要部分的过程
  • 抽象是面向对象领域发现类的主要方法
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×