面向结构 C PASCAL BASIC
SA
SD
SP
函数
自顶向下
模块化\功能化
输入
输出
三种基本结构:顺序,选择,循环
缺点:
设计不直观,与人思维不太一致
重用性,扩展性差,维护成本高,需求改变时可能要自顶向下修改结构
面向对象 JAVA C++ RUBY
OOA
OOD
OOP
类:属性成员,方法成员
语句接近自然语言语法:主谓宾
封装:将对象的实现细节隐藏起来,通过一些公用方法来暴露该对象的功能(减少耦合,内部任意修改,暴露接口清晰)
继承:为了实现软件复用,子类继承父类后,子类获得父类的相关属性和方法(is-a关系,拥有非private属性和方法除了构造和析构,可以扩展个性,可以重写,代码得到共享易扩展,缺点:增加了耦合,修改父类,子类可能也要修改)
多态:子类对象可以赋值给父类变量,但运行时依然表现出子类的行为特征,意味着同一类型的对象在执行同一个方法,可能产生多种形态特征(运行时动态绑定,实现面向对象的灵活,多数设计模式的基础,缺点:增加了复杂度,增加了编程难度)
抽象:将对象中与问题相关的属性和特征提取出来,作为软件实现的基础,只考虑部分问题,忽略与需求无关的内容
抽象类:不能实例化,有抽象方法(也可以有实现方法),抽象方法必须被子类实现;抽象类拥有尽可能多共同代码,尽量少的数据
接口:不能实例化,全部是抽象方法,子类需要完全实现,接口都是public,有属性只能是static final常量(为了多继承,like-a关系)
类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象
抽象类通常是分析共同点,自底向上重构,接口是分析行为特征,自顶向下设计;
派生:利用继承机制,新的类可以从已有的类中派生
类:具有相同或相似性质的一组对象的抽象,是对一类事物的描述,包括属性数据和行为特征,可以理解为概念上的定义
is a:
has a:
对象:是类的具体化实例化,是实际存在的类事物的个体
内聚
耦合
消息
UML:类图,用例图,组件图,顺序图,部署图,活动图,状态图
聚合关系:类似集体和个体
组合关系:整体和部分
依赖关系:互相有交叉
继承关系:子与父
基于对象 JAVASCRIPT
有封装,但没有继承,从而没有多态(多态是在继承的基础上实现的)