首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
OOD沉思录 --- 类和对象的关系 --- 包含关系4
】的更多相关文章
OOD沉思录 --- 类和对象的关系 --- 包含关系1
4.5 如果类包含另一个类的对象,那么包含类应当向被包含的对象发送消息(调用方法). 也就是说,所有的包含关系都应当是使用关系. 如果不是这样,那么包含的类有什么用处呢?当然,面向过程的开发人员会想到可能有一个Get方法供其它类使用这个包含的对象,那么按照“数据隐藏原则”,为什么 不让使用包含类的类直接包含被包含的这个对象呢? 包含一个对象一定是需要使用它才包含. 比如说汽车包含了发动机,如果违背这条原则的话则定义如下: class 汽车 { 发动机 m_发动机; 发动机 Get发动机(){r…
OOD沉思录 --- 类和对象的关系 --- 包含关系4
4.9 在实现语义约束时,最好根据类定义来实现.但是这经常会导致泛滥成灾的类,在这种情况下约束应当在类的行为中实现,通常在类的构造函数中实现,但不是必须如此. 还是以汽车为例,我们看汽车的定义,为了集中注意力,先只关心汽车的发动机 class 汽车 { 汽车(发动机 para) { m_发动机=para; } 发动机 m_发动机; } class 发动机{...} 我们可以定义奥迪A6,凯梅瑞等等汽车 class 奥迪A6:汽车{......} class 凯梅瑞:汽车{......} 同样我们…
OOD沉思录 --- 类和对象的关系 --- 包含关系3
4.7 类包含的对象数目不应当超过开发者短期记忆数量,这个数目通常应该是6左右 4.8 让系统在窄而深的包含体系中垂直分布 假设有如下两份菜单: 正餐 --->甜瓜 --->牛排 --->土豆 --->豌豆 --->玉米 --->馅饼 或者 正餐 --->甜瓜 --->牛排套餐 --->牛排 --->配菜--->豌豆 --->土豆 --->玉米 --->馅饼 对使用者来说,哪种更科学呢? 回答1或者回答2都是错的,面向对象…
OOD沉思录 --- 类和对象的关系 --- 包含关系2
4.6 尽量让类中定义的每个方法尽可能多地使用包含的对象(即数据成员) 这其实就是高内聚的翻版强调.如果每个类的情况并非如此,那很可能是这一个类表示了两个或更多的概念,记住一个类只应该表示一个概念. 最明显的情况就是类的一半方法使用了一半的数据成员,而另一半方法使用了另一半的数据成员,那么这个类就应该一分为二. 我们假设一个澡堂,有VIP客户和普通客户,各自有不同的服务(普通客户享受中专生服务,VIP客户享受大学生服务),则定义如下: class 澡堂 { stack<中专生> 普通服务员;…
OOD沉思录 --- 类和对象的关系 --- 使用关系
使用关系 对象A的方法MethodA使用了B的方法MethodB,则表示A对B存在使用关系 使用关系的最关键问题在于,A如何找到B,存在6种方案 方案一: A包含了B,B作为一个成员定义在A的类中,那么在MethodA中可以直接调用B.MethodB() 如汽车可以包含车轮. 如果汽车需要加油,那么就需要调用"加油站B.加油()" class 汽车 { 加油站 m_加油站; 加油(...) { //调用某加油站的加油方法 m_加油站.加油(); } } 那么关键问题在于,汽车如何知道加…
OOD沉思录 --- 类和对象的关系 --- 使用关系原则
4.1 尽量减少类的协作的数量,即减少使用者和被使用者的数量. 协作意味着一定程度的耦合,但是完全没有协作的类也是没有意义的,最多只能作为一个库使用. 通过抽象,依赖接口,可以最大程度减少依赖的实现类,对使用者来说,只看到接口的依赖,而具体的实现的依赖可以通后后期绑定来配置依赖关系. 如 菜单 ----〉牛肉 ----〉羊肉 ----〉鸡肉 可以抽象为 菜单---->肉类 <===牛肉 <===羊肉 …
php课程 11-37 类和对象的关系是什么
php课程 11-37 类和对象的关系是什么 一.总结 一句话总结:类生成对象,对象是类的实例化,一定是先有类,后有对象,一定是先有标准,再有个体. 1.oop的三大优势是什么? 重用性,灵活性.扩展性 二.类和对象的关系是什么 1.相关知识 1.概念2.继承3.封装4.实例:分页类5.实例:数据库操作类6.抽象类7.接口8.多态9.魔术方法10.关键字 OOP定义:Object-Oriented Programming #面向对象编程 软件工程三大目标:重用性.灵活性.扩展性 面向对象的三大特…
OC学习--类和对象的关系
1. 如何创建对象 面向对象解决问题的时候必须有对象, 那应该如何创建对象? 以建造汽车为例子来解释: >建造汽车需要造车图纸, 图纸上 清楚的描述出 汽车具备的属性和功能(行为) >属性: 车轮数 时速 灯光 >功能(行为): 跑 加减速度 开关灯 >然后再根据图纸(类)建造汽车(对象) 每一辆 汽车 都是对象, 都有自己具体的属性值, 都是图纸(类)的实例(对象). 图纸是抽象的, 汽车是具体的, 图纸是对 汽车对象的高度概括. OC中的类相当于图纸, 用来…
Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员、局部),匿名对象的调用,构造代码块(5)
Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员.局部),匿名对象的帝爱用,构造代码块(5)…
2.java面向对象类与类/类与对象之间关系详解
继承.实现.依赖.关联.聚合.组合的联系与区别 下面的内容很基础,同时也很简单,但是也很重要. 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系:在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性: 实现 指的是一个class类实现interface接口(可以是多个)的功能:实现是类与接口之间最常见的关系:在Java中此类关系通过关键字implements明确标…