ood专题提供ood的最新资讯内容,帮你更好的了解ood。
      面向过程的软件开发通过非常集中化的控制机制来分解功能,在程序设计中表现就是大量的条件判断,深层次的循环嵌套等。这种模式下,我们可以通过分析方法的参数,局部变量及其访问的全局变量来得到方法对数据的依赖性,但是我们只有分析整个项目代码才能得到数据对方法的依赖性。       面向对象的软件开发主要关注在非常分布的环境中分解数据以及同数据相关的功能。通过高内聚(数据与其相关行为的高度融合)和
3.7 从设计中取出不需要的类     只有Get/Set方法的类不算是一个必要的类,Get/Set方法也不算是有意义的行为。这种类降级为属性更加合适。 3.8 去除系统外部的类     如果一个类只调用系统领域的方法,而系统没有向该类调用,则可以认为这个类并不属于系统。可能只是系统的使用者,我们没必要去为此建模。     创建此类时应该问一问“这个类在系统内做什么事情?” 3.9 不要把操作变成
  使用关系 对象A的方法MethodA使用了B的方法MethodB,则表示A对B存在使用关系 使用关系的最关键问题在于,A如何找到B,存在6种方案 方案一:       A包含了B,B作为一个成员定义在A的类中,那么在MethodA中可以直接调用B.MethodB()       如汽车可以包含车轮。       但是汽车需要加油,那么就需要调用"加油站B.加油()"       
  4.1 尽量减少类的协作的数量,即减少使用者和被使用者的数量。       协作意味着一定程度的耦合,但是完全没有协作的类也是没有意义的,最多只能作为一个库使用。       通过抽象,依赖接口,可以最大程度减少依赖的实现类,对使用者来说,只看到接口的依赖,而具体的实现的依赖可以通后后期绑定来配置依赖关系。       如 菜单----〉牛肉              ----〉羊肉     
  4.5 如果类包含另一个类的对象,那么包含类应当向被包含的对象发送消息(调用方法)。     也就是说,所有的包含关系都应当是使用关系。     如果不是这样,那么包含的类有什么用处呢?当然,面向过程的开发人员会想到可能有一个Get方法供其它类使用这个包含的对象,那么按照“数据隐藏原则”,为什么 不让使用包含类的类直接包含被包含的这个对象呢?包含一个对象一定是需要使用它才包含。     比如说
  4.6 尽量让类中定义的每个方法尽可能多地使用包含的对象(即数据成员)     这其实就是高内聚的翻版强调。如果每个类的情况并非如此,那很可能是这一个类表示了两个或更多的概念,记住一个类只应该表示一个概念。     最明显的情况就是类的一半方法使用了一半的数据成员,而另一半方法使用了另一半的数据成员,那么这个类就应该一分为二。     我们假设一个澡堂,有VIP客户和普通客户,各自有不同的服务
  4.7 类包含的对象数目不应当超过开发者短期记忆数量,这个数目通常应该是6左右   4.8 让系统在窄而深的包含体系中垂直分布     假设有如下两份菜单:     正餐--->甜瓜         --->牛排         --->土豆         --->豌豆         --->玉米         --->馅饼     或者     正餐--->甜瓜         ---
  4.9 在实现语义约束时,最好根据类定义来实现。但是这经常会导致泛滥成灾的类,在这种情况下约束应当在类的行为中实现,通常在类的构造函数中实现,但不是必须如此。     还是以汽车为例,我们看汽车的定义,为了集中注意力,先只关心汽车的发动机   class 汽车 { 汽车(发动机 para) { m_发动机=para;
每一个object都含有state和method,因此定义一个object的时候一定要说明他的含有什么data member,还有什么method。 多用design pattern,少用inheritance;using interfaces 1. 设计一个文本编辑器    a)composite pattern来分别管理只读文本和可读写文本    b)singleton 一个文本管理manag
1.  学习目标: 1) 理解与掌握面向对象的概念与方法 2) 使用UML 3) 完成面向对象的分析与设计工作 4) 了解OO的设计原则及一些典型的设计模式 使用比较的UML工具一般是:Jude 和starUML:http://staruml.sourceforge.net/en/                                                          
面向对象设计 如何应对 面向对象设计的问题非常重要,它能反映出面试者的代码质量。若是对此类问题支支吾吾,面试多半就凶多吉少了。 应付面试中的含糊不清 面向对象设计的问题经常是有意含糊的,以此测试你是否会做假设,或者考验你是否会进一步地询问,以明确需求。否则当面对模棱两可的约束时,你又如何设计一个类呢?抛出你的问题来消除这些含糊,然后再设计类来处理剩余的含糊之处。 面向对象设计 假定要为一副扑克牌做
[OOD设计原则]一. 单一职责原则(SRP)         单一职责原则的核心思想就是:系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。它的英文缩写是SRP,英文全称是Single Responsibility Principle。         其实单一职责原则的意思就是开发人员经常说的"高内聚、低耦合"。也就是说,每个类应该只有一个职责,对外只能提供一种
二. 开闭原则(OCP)        开闭原则的核心思想就是:一个对象对扩展开放,对修改关闭。它的英文缩写是OCP,英文全称是Open for Extension,Closed for Modification。       开闭原则的意思就是:对类的改动是通过增加代码进行的,而不是改动现有的代码。也就是说,软件开发人员一旦写出了可以运行的代码,就不应该去改变它,而是要保证它能一直运行下去,如何
三.里氏替换原则(LSP)        里氏替换原则的核心思想就是:在任何父类出现的地方都可以用它的子类来替代。它的英文缩写是LSP,英文全称是Liskov Substitution Principle。        其实里氏替换原则的意思就是:同一个继承体系中的对象应该有共同的行为特征。里氏代换原则关注的是怎样良好地使用继承,也就是说不要滥用继承,它是继承复用的基石。 例如:       
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。 默认的复制构造函数不符合我们的要求,它默认拷贝的是指针,对象如果需要拷贝构造函数,往往也需要提供赋值运算符。 关于那些nonmodifying运算符,如+,-,×等,往往可以实现为non menber function,这里的运算符返回类型是对象,(对于那些对输入和输出的运算符应该只可以实现为non menbe
if the destruct functions cause exception ;  that is means that  SOMETHING DELETE TOO SOON  because the class member will be deleted after the class is over~~~ there are also some other reasons;
                                                  OOA   Object-Oriented Analysis:面向对象分析方法   是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状
http://www.ibm.com/developerworks/cn/aix/library/1212_lufang_c11new/  1= overload and override; 2 = cast style; 3 = principles in the proj 1 2 3 4; 4 = template specialization  5 = rtti;;enum; 6 = dar
      面向切面编程编辑 面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),是 软件开发中的一个热点,也是 Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的 耦合度降低,提高程序的可重用性,同时提高了开发的效率。 [1] AOP是 OOP的延续。 主要的功能是:日志记录,性能统计,安全控
 S.O.L.I.D 是面向对象设计(OOD)和面向对象编程(OOP)中的几个重要编码原则(Programming Priciple)的首字母缩写。 面向对象设计的原则 SRP  The Single Responsibility Principle 单一职责原则 OCP   The Open Closed Principle 开放封闭原则 LSP  The Liskov Substitution