目录
编程语言及拓扑结构
拓扑结构:语言的物理建筑模块及如何连接在一起
Fortran和COBOL语言的基本建筑是子程序
Subroutine,subprogram:子程序,类似c的函数
面向对象语言的拓扑结构:
过程抽象
数据抽象:强调数据类型,整理、组织数据
过程抽象 + 数据抽象 面向对象
类就是将 数据抽象和 过程抽象 捆绑在一起
对象模型
面向对象技术的元素的全体:对象模型 没有全局变量
设计原则:
- 抽象:抽象出对象的外部行为
原则:最低承诺(对象的接口仅仅提供基本行为,而不是更多)、最不惊讶(抽象捕捉了某对象的全部行为,不多不少。没有超越边界的“惊喜”和副作)
- 封装:具体信息 隐藏信息 行为的具体实现
- 模块化 :将类分组到一些包中
- 层次 :继承、聚合
- 类型 :并发 持久
结构化:算法《——》类与对象
对象将算法抽象和数据抽象统一起来
使用对象而不是算法编程
每个对象都是某个类的实例
通过继承得到类之间的关系
- 编程方法:合适、有效的使用某种语言机制(继承、多线程、指针)
- 设计方法:有效的给复杂问题建立结构(通过继承、聚合等确定类之间的关系)
面向对象设计:
- 面向对象分解过程:产生类 对象抽象
- 与各种模型的描述记号(如UML) 类名是名词
继承的缺点:子类访问超类的变量、调用超类的私有方法、引用超类的超类
面向对象概念框架:抽象、封装、模块化、层次化
对象的定义
对象: 是一个具有状态(数据变量)、行为、标识(变量名)的实体;
相似对象的结构和行为由共同的类定义。
对象状态包括对象的性质,以及这些性质的当前的值
对象具有状态说明每个对象都占用一定的空间;或者在现实世界,或者计算机内存(系统中的所有对象都封装一些状态;系统的所有状态(数据)都被对象封装)
同一个类生成的对象之间,不会共享内存空间
对象行为是其 状态 与施加于状态上的操作的函数;
一些操作改变了对象的状态 对象的状态代表其行为的积累结果
角色与责任:
一个对象的所有方法构成了其协议;
协议定义了对象允许的行为信封;构成了该对象的全部的静态、动态视图
主动对象与被动对象
- 主动对象包含了自己的控制线程,是自治的。
- 被动对象没有,仅仅当被调用的时候,才能经历状态改变