对象分析方法的说明:
1.一切都是对象
在面向对象的眼里,一切有名字的东西都是对象,都应当使用对象的观点来看待它,分析他。哪怕这个东西的名字叫某某业务流程,
他也应当看作一个对象,而不是一个过程。这意味着,无论什么时候都应当采用接下里讲述的一些观点和方法来看待和分析事物。
2.对象都是独立的
独立性是面向对象的一大特点,承认对象的同时,就应该接纳这一观点。对象和对象之间是天然独立的,只是在某个特定的场景下,
它们的某一个特定的实例才联系在一起。
我们获取和分析对象的手段经常是通过分析某个场景,但是需要知道,对象是离散的,他不是因为该场景而存在的。场景中的对象
只是对象映射到该场景中的一个侧面,我们称之为对象实例。换言之,通过一个场景,我们仅能得到对象的一个侧面信息,如果以
没一个场景作为坐标,那么对象实例就是对象在该坐标上的投影。
要深入了解对象,我们经常需要分析很多该对象实例所参入的场景,以获得对象的过个侧面再通过整理这些对象的多个实例抽象出
对象的一般特性,这就是面向对象的分析方法,同时也是UML来为对象建模所采用的方法。我们看到的对象产生,并不是拍脑袋得到
对象来源于场景分析,场景分析越多,我们对对象的了解也即越多,越精确。有个项目经验的人应该有深刻的体会,在做过多个项目后,会发现在许多
项目当中相似的对象或者函数,会产生强烈的想把他们公共化的想法,这就是对象抽象的源动力
从每个场景看到仅仅是对象映射到该场景的一个方面,或者说一个实例,他仅仅对象分析的开始。请记住,当采用面向对象的方法时,
在需求,分析,设计过程中,你所得到的任何一个有名字的东西,不论是用例,类,包,组件等都是独立于哪些场景的,不要将对象局限在哪个场景中
对象的独立性带来的正是对象的可抽象能力和可扩展能力
3.对象具有原子性
无论什么时候,在同一个抽象层次上,在分析过程中都应当将对象视为一个不可分割的原子。那么这个对象规模很大。例如在分析一个商业过程的时候,对象的
规模大到银行,工厂,商场的程度,不论多么巨大,只要我们认为他是对象,他和其他对象的交互时就是一个整体,不能分割。原子性是抽象层次有意义的
重要保证,一旦破坏原子性,则表示在同一个抽象层次上的对象不具备同样的粒度,这使得分析工作陷入混乱。
在分析过程中,对象总有一个边界,永远不要打破边界去窥探底线的内部。
我们应当将分析过程中得到的所有对于对象的认识附加到对象边界上,在实现找个对象之前不理会内部细节,这称之为面向接口编程
4对象具有可抽象性
对象有很多不同的方面。一般来说,对象参与一个场景是会张显出某一个方面。总可以将对象的某一个方面出现出来,让其作为对象的一个代表
参入场景交互。通常这种抽象会以接口来命名。在分析过程中,得到的任何一个对象都有特定方面可作为抽象。因为对象总是从场景分析中得到饿,他
在场景中肯定展现一个方面
对象所具有的方面,或者说对象所参入的场景越多,对象越具有抽象价值,反之则越没有抽象价值。
5.对象具有层次性
对象具有抽象层次性,层次越高,其描述越粗。层次越低,描述越精确。在分析过程中,应当根据问题领域的复杂度设定过个抽象层次