OOP - 如何选择可能的候选对象?

时间:2009-12-02 00:36:13

标签: oop

我担心我应该使用哪些技术在OOP中选择正确的对象

在如何选择对象方面是否有关于OOP的必读书?

最佳,

5 个答案:

答案 0 :(得分:5)

只要写下完成工作的东西,即使它很难看,然后不断重构:

可是:

这不是一个精确的配方,只是一些一般的指导方针。继续练习。

P.S。

代码对象与有形现实生活对象相关;它们只是将相关信息保存在一起的结构。

不要相信Java书籍/学校教的对象;他们在说谎。

答案 1 :(得分:2)

你可能意味着“正确的阶级”,而不是“正确的对象”。 : - )

有一些技巧,例如文本分析(a.k.a.强调名词)和Class Responsibility Collaborator (CRC)

通过“强调名词”,你基本上从一个书面的,自然语言(即简单的英语)开始描述你要解决的问题,并强调名词。这会为您提供候选课程列表。您需要执行多次传递以将其细化为要实现的类列表。

对于CRC,check out the Wikipedia

我建议The OPEN Toolbox of Techniques作为完整参考。

希望它有所帮助。

答案 2 :(得分:0)

我假设有什么是sctruct,类型,类,集合,状态,字母,标量,向量和关系的理解。

对象是名词,方法是动词。对象成员可以表示每个字段的标识,状态或标量值。对象之间的关系通常用引用表示,其中引用是对象的成员。在情况下,当关系复杂,多向,具有大于2的arity时,表示某种分组或包含,则关系可以表示为对象。

对于其他更广泛的技术原因,对象很可能是用OOP语言表示任何形式信息的唯一方式。

答案 3 :(得分:0)

你应该看看Eric Evans的Domain-Driven Design。它提供了非常有用的概念,可以考虑模型中的对象,它们在域中的功能以及它们如何组织起来协同工作。这不是一本烹饪书,可能不是一本初学者书 - 但是,我在职业生涯的不同阶段读到它,每次我发现它都有价值的东西......
alt text
(来源:domaindrivendesign.org

答案 4 :(得分:0)

由于demian的评论,我正在添加第二个答案:

  

有时班级如此明显   因为它是有形的,但其他时候   对象的概念是抽象的   像数据库连接器。

这是事实。我首选的方法是对系统进行行为分析(例如,使用用例),然后导出系统操作。一旦你有一个稳定的系统操作列表(例如PrintDocument,SaveDocument,SpellCheck,MergeMail等,用于文字处理器),你需要将它们分配给一个类。如果您已经使用我之前提到的一些技术开发了候选类列表,那么您将能够分配一些操作。但有些仍未分配。这些将表明需要更多抽象或不直观的课程,你需要使用你的良好判断来弥补这些课程。

整个方法记录在www.openmetis.com的白皮书中。