面向对象

世界观

数据职责(对象的本质特征)与行为职责(拥有数据后体现的行为)绑定

class Person {  Date birthday;  getAge();}

通过封装暴露接口 只要接口文档 内部实现随便改 达到了模块化与解耦的需求 隔离了变化的范围

三大特性

封装

利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,将需求的变更封装在类里

继承

继承实现了 IS-A 关系,子类可以继承父类,获得父类的非private属性与方法

继承的表现在于提供一种归一化的视角,就像unix的一切皆文件 通过这种归一化视角来简化代码的使用 降低软件的复杂度

父类引用指向子类对象称为 向上转型

Aniaml dog = new Dog()

组合与继承

在继承中,如果父类是脆弱的,那么父类接口发生一点改变就会影响到子类的行为

使用时,保证使用继承是一种is a的关系,为了解决代码复用性的问题,不仅可以使用继承,也可以使用组合

多态

多态的存在,使得高层次的接口可以抽象低层次的实现,增加了代码的可扩展性与可复用性

协作

确定类

类图

泛化关系

继承关系

classDiagram    Vihical <|-- Car    Vihical <|-- Trunck

实现关系

classDiagram    MoveBehavior <|.. Fly    MoveBehavior <|.. Run

聚合关系

整体和部分不是强依赖的,整体不存在了部分还是会存在

classDiagram    Computer o-- Keyboard    Computer o-- Mouse    Computer o-- Screen

组合关系

组合中整体和部分是强依赖的,整体不存在了部分也不存在了

classDiagram    Company *-- DepartmentA    Company *-- DepartmentB

关联关系

这是一种静态关系,与运行过程的状态无关

可以用 1 对 1、多对 1、多对多这种关联关系来表示

classDiagram    School "1" -- "n" Student

依赖关系

依赖关系是在运行过程中起作用的

两个类是依赖关系有三种形式:

classDiagram    Vehicle ..|> MoveBehavior    Vehicle : move(MoveBehavior)    MoveBehavior : MoveBehavior.move()

其他一些原则

又叫作最少知识原则(Least Knowledge Principle,简写 LKP),就是说一个对象应当对其他对象有尽可能少的了解

多使用组合,少使用继承

一起修改的类,应该组合在一起

最稳定的包应该是最抽象的包,不稳定的包应该是具体的包

包要依赖的包要比自己更具有稳定性

面向对象分析

OOA

概述

批注 2019-07-23 145316

识别类

识别属性和操作

识别对象之间的关系

面向对象设计

问题域

设计

人机交互部分

控制驱动部分

数据管理部分

面向对象编程

程序设计范型

OOP语言

选择

评价标准

用非OO编程语言实现OOD模型

DCI

强调对象的职责和行为之间的区分