java基础知识之软件设计
2016-08-13 16:37
169 查看
开发软件的关键在于应用抽象概念
方法抽象(method abstraction)是通过将方法的使用和它的实现分离来实现的。方法的实现细节封装在方法内,对该用户来说是隐藏的,叫信息隐藏(information hiding)或封装(encapsulation)。如果决定改变方法的实现,只要不改变方法的签名,该用户程序就不受影响。
通过分治(divide-and-conquer)策略或逐步求精(stepwise refinement),将大问题分解成小问题。
分治:
自顶向下的设计
自底向上的实现
类的抽象
类的抽象是指将类的实现和类的使用分离开,实现细节被封装,并且对用户隐藏,这被称为类的封装。
类的关系
为了设计类,需要探究类之间的关系。类中的关系通常是关联,聚合,组合以及继承
关联:关联是一种二元关系,描述两个类之间的活动。例如学生选课(Student)和课(Course)是一种类和类之间的关联。
聚集:聚集是关联的一种特殊形式,代表了两个对象之间的归属关系。聚集建模has-a关系。所有者对象称为聚集对象,它的类称为聚集类。
组合:一个对象可以被多个其它的对象所拥有,如果一个对象只属于一个聚集对象,那么它和聚集对象之间的关系称为组合(composition)
继承:建模”is-a"的关系。
类的设计原则
1 内聚性
类应该描述一个单一的实体,所有的类操作应该在逻辑上相互配合,支持一个一致的目的
例如,设计一个类用于学生,不应该将学生和教职工混合在一起
如果一个类负担太多的职责,就应该按照各自的职责分成几个类。
2一致性
为类,数据和方法选有具有信息的名字,通常的风格是将数据声明置于构造方法之前。并将构造方法置于方法之前。
如果不想让用户创建类的对象,可以在类中声明一个私有的构造方法。Math类就是如此
3封装性
一个类应该使用private修饰隐藏的数据,以免用户直接访问它。
4清晰性
不应该声明来自自其他数据域的数据域。例如,age可以从birthdate导出,所以age不应该声明为数据域。
5完整性
类是为许多不同的用户设计的,为了能在一个广泛的应用中使用,一个类应该通过属性和方法提供多种方案以适应用户不同的需求。
6实例和静态
依赖于类的具体实例或方法必须是一个实例变量或方法,如果一个变量被所有的实例共享,那就已更改将它声明为静态的。
不要从构造方法中传入参数初始化静态数据域,最好使用set方法改变静态数据域;
7继承和聚合
继承和聚合之间的关系就是(is-a)和(has-a)之间的关系
8接口和抽象类
接口和抽象类都可用于对象的共同行为,比较强的(is-a)关系用抽象类建模,弱的(is-a)关系,也叫kind-of(是一类)关系,表明一个对象拥有的某种属性,用接口建模。
方法抽象(method abstraction)是通过将方法的使用和它的实现分离来实现的。方法的实现细节封装在方法内,对该用户来说是隐藏的,叫信息隐藏(information hiding)或封装(encapsulation)。如果决定改变方法的实现,只要不改变方法的签名,该用户程序就不受影响。
通过分治(divide-and-conquer)策略或逐步求精(stepwise refinement),将大问题分解成小问题。
分治:
自顶向下的设计
自底向上的实现
类的抽象
类的抽象是指将类的实现和类的使用分离开,实现细节被封装,并且对用户隐藏,这被称为类的封装。
类的关系
为了设计类,需要探究类之间的关系。类中的关系通常是关联,聚合,组合以及继承
关联:关联是一种二元关系,描述两个类之间的活动。例如学生选课(Student)和课(Course)是一种类和类之间的关联。
聚集:聚集是关联的一种特殊形式,代表了两个对象之间的归属关系。聚集建模has-a关系。所有者对象称为聚集对象,它的类称为聚集类。
组合:一个对象可以被多个其它的对象所拥有,如果一个对象只属于一个聚集对象,那么它和聚集对象之间的关系称为组合(composition)
继承:建模”is-a"的关系。
类的设计原则
1 内聚性
类应该描述一个单一的实体,所有的类操作应该在逻辑上相互配合,支持一个一致的目的
例如,设计一个类用于学生,不应该将学生和教职工混合在一起
如果一个类负担太多的职责,就应该按照各自的职责分成几个类。
2一致性
为类,数据和方法选有具有信息的名字,通常的风格是将数据声明置于构造方法之前。并将构造方法置于方法之前。
如果不想让用户创建类的对象,可以在类中声明一个私有的构造方法。Math类就是如此
3封装性
一个类应该使用private修饰隐藏的数据,以免用户直接访问它。
4清晰性
不应该声明来自自其他数据域的数据域。例如,age可以从birthdate导出,所以age不应该声明为数据域。
5完整性
类是为许多不同的用户设计的,为了能在一个广泛的应用中使用,一个类应该通过属性和方法提供多种方案以适应用户不同的需求。
6实例和静态
依赖于类的具体实例或方法必须是一个实例变量或方法,如果一个变量被所有的实例共享,那就已更改将它声明为静态的。
不要从构造方法中传入参数初始化静态数据域,最好使用set方法改变静态数据域;
7继承和聚合
继承和聚合之间的关系就是(is-a)和(has-a)之间的关系
8接口和抽象类
接口和抽象类都可用于对象的共同行为,比较强的(is-a)关系用抽象类建模,弱的(is-a)关系,也叫kind-of(是一类)关系,表明一个对象拥有的某种属性,用接口建模。
相关文章推荐
- 用Java设计下载软件-Java基础-Java-编程开发
- GoF的设计模式是Java基础知识和J2EE框架知识之间一座隐性的"桥"
- java基础知识精华总结 java面试题 深圳酷琪 kuuqii.com 电脑配件软件 硬件一体化采购平台
- 软件架构设计之二:信息系统基础知识
- java基础知识记录--软件工程与设计模式(摘自张孝祥整理java面试题)
- Java基础知识之设计模式中的Template模板方式
- Java软件开发基础知识梳理之(1)------Oracle索引
- Java软件开发基础知识梳理之(2)------动态创建PreparedStatement解决SQL中带的in条件
- Java软件开发基础知识梳理之(3)------JDCB操作数据库性能优化策略
- Java软件开发基础知识梳理之(4)------HashTable与HashMap区别
- Java软件开发基础知识梳理之(5)------Hibernate N + 1产生原因及解决办法
- Java软件开发基础知识梳理之(6)------事务相关知识点
- Java软件开发基础知识梳理之(7)------Hibernate查询数据
- Java软件开发基础知识梳理之(8)------Hibernate并发控制
- Java软件开发基础知识梳理之(9)------Hibernate抓取策略
- Java软件开发基础知识梳理之(10)------Hibernate二级缓存
- Java软件开发基础知识梳理之(11)------Java中的GC操作及相关概念
- 黑马程序员,Java基础知识十:设计模式
- java零基础知识回顾(单例设计模式)
- 黑马程序员---java基础知识(一):软件开发与helloword