本系列文章为笔记,内容根据北京大学《软件工程》MOOC
程序设计范型和面向对象编程语言的特点发展
程序设计范型
关于计算机系统的思考方式。它体现了一类语言的主要特点
——蔡希尧
程序设计范型(编程规范或编程范式),是一类典型的编程风格,如过程化编程、面向对象编程、指令式编程等等,是不同的编程范型。编程范型提供并决定了程序员对程序执行的看法。
例如:在面向对象编程中,程序员认为程序是一系列相互作用的对象,而在函数式编程中一个程序会被看作是一个无状态的函数计算的序列 面向过程的程序设计范型
中心思想——程序设计主要是过程设计
决定所需的过程,设计过程的算法,关键是过程调用,语言提供向过程传送变元和返回值的设施 模块化程序设计范型
基本思想——信息隐蔽,需求与求解方法分离,相关的数据结构与算法结合在一个模块中,与其它模块隔离,使其它模块不能随便访问——有了封装的思想 其他程序设计范型
结构化程序设计,函数式程序设计,逻辑程序设计等 面向对象是一种新的程序设计范型
是在上述范型基础上发展起来的,增加了类和继承,用类创建对象实例
思想方法:从客观存在的事物出发构造软件系统,运用人类日常思维方式
主要特点:使用对象、类、继承、封装、聚合、关联、消息、多态性等基本概念来进行程序设计
面向对象的编程语言(OOPL)
1.基本特性
语言元素能够支持:
类的定义
对象的静态声明或动态创建
属性和操作的定义
继承、聚合、关联和消息的表示
语言机制:
类机制
封装机制
继承机制
高级特性:
多态、多继承的表示和支持机制 2.发展历史
3.类别
纯面向对象语言(Smalltalk、Eiffel)
较全面地支持OO概念
强调严格的封装
混合型面向对象语言(C++,Object-C)
在一种非OO语言的基础上扩充OO成分
对封装采取灵活策略
结合人工智能的面向对象语言(Flavors、LOOPS、CLOS) 4.语言+类库+编程环境
为实现OOD模型选择编程语言
- 一般原则
- 基本原则:从实际出发,考虑成本、进度、效率等因素
- OOPL是实现OOD的理想语言:可以很好的对应OOD模型
- 带有类库、编程环境、权限管理的OOPL更好
- 用非OO语言也能实现OOD模型
- 缺乏OO机制的保证和支持
- 但若自觉遵守一定的原则,可以保存某些OO风格
- 编程语言的评价标准
- 能否描述类和对象
封装机制、封装的可见性控制
- 能否实现一般-特殊结构
继承机制、是否支持多继承,能否解决命名冲突
是否支持多态
- 如何实现整体-部分结构
用什么实现?如何表示多重性?
- 如何实现属性和操作
如何表示属性,如何表示操作
可见性控制?约束?
能否支持动态绑定(dynamic binding)
Ps.绑定:一个对象(或事物)与其某种属性建立某种联系的过程。分为“静态绑定”和“动态绑定”
- 如何实现关联和消息通讯
如何实现关联,如何表示多重性
如何实现消息通讯
- 其它可考虑的因素(考虑版本)
可视化编程、类库、永久储存
几种典型的面向对象编程语言
- C++
- Delphi
- Smalltalk
- Object-C
- Eiffel
- Java
具体内容略