【问题标题】:How do we decide what should be an object我们如何决定什么应该是一个对象
【发布时间】:2015-09-10 23:16:12
【问题描述】:

一个面向对象的应用程序由几个不同的对象组成。在工程师开始为参与对象编写代码之前:

如何决定什么是对象?

【问题讨论】:

    标签: oop object-oriented-analysis


    【解决方案1】:

    您的问题过于开放,无法提供具体答案,所以让我提供一些可以帮助您入门的想法。

    假设我们将使用像 Smalltalk 这样的纯 OO 语言,其中一切都是对象。

    在使用对象来表示某些现实(或幻想)时,您通常不会在开始之前尝试识别所有对象。相反,您将首先想到的少数人确定为您所在领域的优秀代表。例如,如果您正在编写一个用于对化学的某些方面进行建模的应用程序,您可能希望从 Atom 和 Molecule 开始。

    一般来说,您应该尝试专注于您领域中的具体重要实体。暂时不要考虑他们的互动。

    一旦您确定了最初的几个对象,您就应该关注每个对象的固有行为。例如,如果您正在为一群蚂蚁建模,那么您的 Ant 对象将必须知道如何四处移动、如何返回巢穴、如何切割或携带一片叶子等等。

    当您向对象添加越来越多的方法时,您会发现增强已识别对象的行为所需的新对象。例如,如果您正在为一个国际象棋游戏建模,并且您已经确定了 Pawn 对象,您很快就会意识到您需要对 CheckBoard、CheckGame 等进行建模。

    因此,对象的识别不是您在开始之前尝试解决的问题。相反,您会通过模型的演变自然而然地发现它。随着您的对象成熟,即当他们学到更多的东西,他们将“揭示”哪些其他对象仍然缺失。

    在建模过程中,您可能会遇到一些您缺乏的知识。当您需要咨询领域专家、阅读或学习相关材料、在 Stack Overflow 等论坛上提问时。在这方面,您会发现自己对领域有更多了解,因此您可以“解释”您新获得的知识到你的对象。在某些方面,您会觉得您的对象正在向您提出您自己从未想到过的问题,所有这些活动都会用越来越多的类(或原型)和方法来有效地填充您的模型。

    【讨论】:

    • 谢谢!目前我正在阅读可重用的面向对象软件的设计模式元素。我在第 18 页,所以我还有很多东西要学。
    • 优秀。阅读书籍比阅读简短的答案要好得多。另外请记住,您必须将所学知识付诸实践,因为您需要塑造自己的编程风格,并在您编写的每一段新代码中对其进行改进。
    【解决方案2】:

    我必须说这是一个非常有趣的问题,人们如何识别对象。根据我的知识,我想说程序员不应该担心对象,因为它是某种事物的表示。将面向对象编程与现实世界联系起来很好。所以程序员应该首先确定可以是现实世界实体的类,然后描述我们需要对象的现实世界实体。

    假设您正在为图书馆员开发一个项目,他告诉您以下问题

    “作为一名图书馆员,我想要一个图书馆管理系统,其中有不同类型的阅读器,可以阅读书籍、杂志、CD 和 DVD”(类似这样)

    因此开发人员可以根据其真实世界的表示轻松识别该类 类应该是

    1. 图书管理员
    2. 书籍
    3. 杂志
    4. 光盘
    5. 读者

    对象可以是Programming C++ book, Advance JAVA book。 Hardik 是读者等等。

    因此,对象是现实世界实体的表示,具有某种特定的含义。

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 2013-10-30
      • 1970-01-01
      相关资源
      最近更新 更多