网站首页 > java教程 正文
面向对象设计
以面向对象分析阶段产生的分析模型作为输入,通过对分析模型中所有对象和类的分析,明确对象的属性和操作,指定属性的类型特征,补全对象之间的关系,并在不断细化的基础上,把分析模型转化成详细描述如何解决问题、如何实现软件系统的对象模型。
面向对象设计的工作步骤
细化和重组类;
细化和实现类间关系,明确其可见性;
增加遗漏的属性,指定属性的类型和可见性;
分配职责,定义执行每个职责的方法;
对消息驱动的系统,明确消息传递方式;
利用设计模式进行局部设计;
画出详细的顺序图或协作图。
面向对象设计的工作步骤——细化和重组类
以面向对象分析过程中得到的分析类为基础,以与对象继承和聚合力度相关的原则为依据,正确地确定继承树的层次和聚合关系的细化程度。
对于架构分析中确定的各个子系统,也必须进一步细化其内部设计。
子系统封装了一组相对独立但比较复杂、无法用一个类来概括的分析类。
把分析类转化成具体的设计类,赋予合适的名字;再分析继承层次和聚合关系,已达到设计类是否能保证代码复用目标的实现。
面向对象设计的工作步骤——细化和实现类间关系,明确其可见性——关系可见性
一个对象能够“看见”并且引用另一个对象的能力。
对象A到对象B的可见性:
1.属性可见性:对象A的一个属性指向或引用了对象B,这是一种相对持久的关系,只要对象A存在,它就能引用对象B。
2.参数可见性:对象B是对象A中一个方法的参数,对象A只有在该方法内才能发送消息给对象B。
3.局部声明可见性:对象B是对象A中一个方法内部定义的局部变量,对象A只有在该方法中才会发送消息给对象B。
4.全局可见性:对象B是全局对象,对象A任何时刻都可以发送消息给对象B。
全局可见性不会在类图中表现出来,参数可见性和局部声明可见性是一种比较短暂的关系,只在某个函数中存在,也不需要在类图中出现(特别必要时用依赖关系来表述)。
在类图出现的基本上是具备属性可见性的关系,即通过类属性来实现的类间关系。
面向对象设计的工作步骤——细化和实现类间关系,明确其可见性——关系分类
根据相关对象的数量来确定类间关系的类型:一对一、一对多、多对多、归纳关系。
面向对象设计的工作步骤——细化和实现类间关系,明确其可见性——关系分类——依赖关系
依赖是一种比较弱的关系,以参数可见性或局部声明可见性的方式使用。
代码:
面向对象设计的工作步骤——细化和实现类间关系,明确其可见性——关系分类——关联关系
属性可见性。
代码:
java代码:
面向对象设计的工作步骤——细化和实现类间关系,明确其可见性——关系分类——聚合关系
聚合关系是一种特殊的关联关系,表达的是整体和部分之间的关联。
Class7和Class8是聚合关系,Class9和Class10是组合关系。
Class9对象除了包含Class10的对象之外,还需要负责管理Class10对象的创建、维护、释放等工作。
由一个类包含另一个类的对象实例,并全面管理后者的生命周期的聚合关系:组合关系。
面向对象设计的工作步骤——细化和实现类间关系,明确其可见性——关系分类——双向关系
猜你喜欢
- 2024-12-15 java面向对象中多态容易走人的误区
- 2024-12-15 面向对象编程的基本概念(二)【Java编程基础第2篇】
- 2024-12-15 面向对象和面向过程的区别 面向对象和面向过程的区别在于
- 2024-12-15 java面向对象程序设计:把大象装进冰箱
- 2024-12-15 Android应用编程基础第18篇:Java面向对象技术点补
- 2024-12-15 Java 面向对象——测试题,笔试,快进来考考你自己
- 2024-12-15 Java面向对象之接口——interface
- 2024-12-15 从零开始学JAVA-04.JAVA面向对象入门第一季
- 2024-12-15 Java 学习之面向对象思想、类、对象
- 2024-12-15 Java学习之面向对象——Java基础篇
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)