c面向过程的程序的开发思路:不分析参与对象,分析思想功能的步骤
C++,Java,C#面向对象的程序的开发思路:
人乘交通工具回家:
第一步分析参与该程序的对象有,对象人,对象交通工具
第二步分析人对象的属性和方法 人有名字属性 人有回家的方法(首先将人的java类分析出来)
第三步分析交通工具对象的属性和方法 交通工具有运行的方法(其次将 交通工具的java类分析出来)
第四步分析交通工具是一个大类别(父类),应该有很多的子类别(子类),第四步就是在分析类与类的关系,分析出继承关系,该处设计java的继承的实现
第五步分析人和交通工具的关系,人和交通工具为依赖关系,人的回家的方法的参数使用交通工具作为参数
第六步分析程序如何提高扩展性(优化程序),可以使用多态(里氏替换原则)提高程序的扩展性和通用性,人的回家的方法的参数使用交通工具父类作为参数
开发打印机打印文件程序:
第一步分析参与该程序的对象有,对象打印机,对象墨盒,对象纸张
第二步分析打印机对象的属性和方法 打印机有品牌属性 打印机有打印的方法(首先将人的java类分析出来)
第三步分析墨盒对象的属性和方法
第四步分析纸张对象的属性和方法
第五步分析接口关系 墨盒设计为接口 彩色和黑白墨盒为实现类 纸张也设计为接口 A3和A4纸为实现类 分析出实现关系
第六步分析打印机和墨盒以及纸张之间的关系,依赖关系,打印机的打印方法使用墨盒和纸张作为参数
第七步分析程序如何提高扩展性(优化程序),可以使用多态(里氏替换原则)提高程序的扩展性和通用性,将打印机的打印方法的参数使用墨盒和纸张接口作为参数
台灯安装灯泡点亮:
第一步分析参与该程序的对象有,对象台灯(Lamp),对象灯泡
第二步分析台灯对象的属性和方法 点亮方法 on
第三步分析灯泡对象的属性和方法 发光方法 light
第四步分析灯泡是一个大类别(接口Bubble),应该有很多的子类别(实现类 RedBuble GreenBuble),第四步就是在分析类与类的关系,分析出实现关系,该处设计java的实现的实现
第五步分析台灯和灯泡之间的关系,可以使用依赖关系,台灯的点亮方法使用灯泡作为参数
第六步分析程序如何提高扩展性(优化程序),可以使用多态(里氏替换原则)提高程序的扩展性和通用性,将台灯的on方法的参数使用Buble作为参数
Public class Lamp{
public void on(Buble buble){//参数的传递使用使用RedBuble或GreenBuble
buble.light()
}
}
第五步分析台灯和灯泡之间的关系补充,可以使用关联关系,使用接口Bubble作为Lamp的属性
Public class Lamp{
private Buble buble;
//setter和getter省略
使用setter给buble赋值使用RedBuble或GreenBuble
public void on(){
buble.light()
}
}
数码相机和手机:
类之间的关系共为6种关系(关系使用面向对象开发程序的方法)
专业软件设计图: viso, 在线画图 https://www.processon.com/
1、继承关系(泛化关系),比如动物类父类Animal,子类Dog和Cat,类图为:
实线和空心的箭头:关系为继承关系 加号public 减号为private
2、实现关系,比如接口拍照接口ITakePhone,实现类Camera和CellPhone,类图为:
虚线和空心的箭头:实现关系
3、依赖关系,一个类或接口作为另一个类的方法的参数或局部变量,比如交通工具类Trasfer作为人类Person的回家方法的参数gonHome(Transfer trans) ,类图为:
4、关联关系,一个类或接口作为成员变量存在于另一个类中,比如一对一关联(公民和护照)、一对多关联(班级和学生)、多对多关联关联(学生和教师),类图为:
5、聚合关系,关联关系的一种特例,整体和部分的关系,整体和部分可分离,它们可以具有各自的生命周期,一个类或接口作为成员变量存在于另一个类中,比如家庭与孩子的关系,球队和球员,类图为:
6、组合关系,关联关系的一种特例,整体和部分的关系,整体和部分不可分离,整体的生命周期结束也就意味着部分的生命周期结束,一个类或接口作为成员变量存在于另一个类中,比如球员和球员的手脚,人和大脑,类图为: