面向过程的程序的开发思路

简介: 面向过程的程序的开发思路

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、组合关系,关联关系的一种特例,整体和部分的关系,整体和部分不可分离,整体的生命周期结束也就意味着部分的生命周期结束,一个类或接口作为成员变量存在于另一个类中,比如球员和球员的手脚,人和大脑,类图为:

相关文章
成功解决org.yaml.snakeyaml.scanner.ScannerException: mapping values are not allowed
成功解决org.yaml.snakeyaml.scanner.ScannerException: mapping values are not allowed
成功解决org.yaml.snakeyaml.scanner.ScannerException: mapping values are not allowed
|
安全 API 索引
PE结构讲解2--导入和导出表
本文为转载文章,整理自小甲鱼老师讲的PE结构课程; 一、导入表的结构 在 PE文件头的 IMAGE_OPTIONAL_HEADER32 结构中的 DataDirectory(数据目录表) 的第二个成员就是指向输入表(导入表)的。
3223 152
|
运维 算法 数据可视化
知位案例|打造无人值守停车场,重庆江南体育中心智慧升级!
重庆江南体育中心智慧升级,体育场馆标杆案例!
1090 0
知位案例|打造无人值守停车场,重庆江南体育中心智慧升级!
|
负载均衡 安全 Linux
openstack 网络Neutron知识点《openstack》
本人cdsn账号 https://liuyunshengsir.blog.csdn.net/article/details/124927149
1648 1
openstack 网络Neutron知识点《openstack》
|
存储 SQL 分布式计算
百草味基于“ EMR+Databricks+DLF ”构建云上数据湖的最佳实践
本文介绍了百草味大数据平台从 IDC 自建 Hadoop 到阿里云数据湖架构的迁移方案和落地过程。重点从 IDC 自建集群的痛点分析,云上大数据方案的选型以及核心模块的建设过程几个方面做了详细的介绍,希望给想了解和实践数据湖架构的企业和朋友一个参考。
百草味基于“ EMR+Databricks+DLF ”构建云上数据湖的最佳实践
|
5G 调度 UED
带你读《5G 无线增强设计与国际标准》第三章增强多天线技术3.3多点传输协作(一)
带你读《5G 无线增强设计与国际标准》第三章增强多天线技术3.3多点传输协作
带你读《5G 无线增强设计与国际标准》第三章增强多天线技术3.3多点传输协作(一)
|
NoSQL IDE 编译器
|
存储 Kubernetes Cloud Native
[云原生] [kubernetes] 基于K8S安装kubesphere
[云原生] [kubernetes] 基于K8S安装kubesphere
633 0
[云原生] [kubernetes] 基于K8S安装kubesphere
|
XML 编解码 安全
Android Studio 项目目录结构
Android 平台的主要组件 R.java 资源目录(res) drawable和mipmap的区别: 清单文件AndroidMainfest.xml Android Units 单位 Android 中支持 5 种单位类型
1103 0
Android Studio 项目目录结构
|
存储 安全 Java
难搞的偏向锁终于被 Java 移除了(下)
难搞的偏向锁终于被 Java 移除了(下)
难搞的偏向锁终于被 Java 移除了(下)