面相对象开发方法的概述
软件开发经历的生命周期:
软件分析—>设计—>编码->测试->维护
优良软件的特征:
可重用性:减少重复代码,避免重复编程。
可扩展性:在现有系统的基础上新加功能时,不影响现有系统的建构。
可维护性:当用户需求变更时,只需要修改局部子系统的少量代码
子系统的特点:
结构稳定性:比较健壮,能够适应用户的变化需求
可扩展性:现有子系统的基础上创建新的子系统,该子系统继承了原有子系统的特性,并且有一些新的特性
内聚性:每个子系统只完成特定的功能,每个子系统的粒度在保持功能完整 性的前提下尽可能的小
可组合性:若干精粒度的子系统组合,成为大系统
松耦合:子系统之间尽量保持独立
主流的开发方法:
结构化开发
面相对象开发
1.1结构化软件开发:
结构化开发主要是以软件功能来划分软件结构的。把整个软件系统划分成多个模块每个模块实现特定的子功能。为提高软件的内聚性,在模块中还会把功能分解到更小的子模块中。在完成模块设计后,把所有的子模块拼装起来,就构成了整个软件系统。
是自顶向下的设计,在设计阶段就不得不考虑如何实现系统的功能,当客户需求变化时,就要自顶向下修改模块结构,不能灵活适应客户多变的需求
自顶向下的设计,制约类程序的可扩展性,可维护性,松耦合性高;
1.2面向对象的软件开发
面向对象的开发方法把软件系统看成是各个对象的集合,对象就是最小的子系统,一组相关的对象,能够组合能更加复杂的子系统。
优点:
把软件看成是对象的组合。
软件需求的变动是功能的变动,功能的执行者对象一般变动不大,保持了系统的稳定性。
对象封装了属性(数据),行为(方法)提高了系统的独立性,支持封装、继承、多态抽象的特征,提高了软件的扩维护性,可扩展性、可重用性。
1.2.1对象模型
面相对象的分析设计阶段,致力于建立模拟问题领域的对象模型。建立对象模型,包括自底向上的抽象,和自上向下的分解
把问题领域中的事物抽象为具有特定属性和行为的对象
把具有相同属性和行为的对象抽象为类
当多个类之间具有共性,将共性抽象为父类
1.3面向对象开发中的核心思想和概念
面向对象开发当中,开发者先建立模拟问题领域的对象模型。然后通过代码来实现对模型。
消息、服务:
每个对象有特定的功能,相对其他对象而言,是服务的提供者
对象的服务是通过方法来实现,发送消息,实际上就是,访问方法
接口:对象通过接口对外提供服务
接口是提高系统之间松耦合的有利手段
接口提高系统的可扩展性
java中接口的定义
interface
public修饰的方法
封装、透明 隐藏对象的属性和方法,仅仅对外提供访问的接口。透明就是看不见
1.4类之间的关系
关联:类A与类B的实例之间存在特定的对应关系(一对一,一对多,多对多)
依赖:类A访问类B提供的服务(类A访问类B的属性,类A中实例化类B)
聚集:类A为整体类,类B为局部类,类A的对象由类B的对象组合而成
泛化:类A继承类B
实现:类A实现B接口
转发自https://www.cnblogs.com/jdy1022/p/10413576.html