【发布时间】:2015-09-10 23:16:12
【问题描述】:
一个面向对象的应用程序由几个不同的对象组成。在工程师开始为参与对象编写代码之前:
如何决定什么是对象?
【问题讨论】:
标签: oop object-oriented-analysis
一个面向对象的应用程序由几个不同的对象组成。在工程师开始为参与对象编写代码之前:
如何决定什么是对象?
【问题讨论】:
标签: oop object-oriented-analysis
您的问题过于开放,无法提供具体答案,所以让我提供一些可以帮助您入门的想法。
假设我们将使用像 Smalltalk 这样的纯 OO 语言,其中一切都是对象。
在使用对象来表示某些现实(或幻想)时,您通常不会在开始之前尝试识别所有对象。相反,您将首先想到的少数人确定为您所在领域的优秀代表。例如,如果您正在编写一个用于对化学的某些方面进行建模的应用程序,您可能希望从 Atom 和 Molecule 开始。
一般来说,您应该尝试专注于您领域中的具体重要实体。暂时不要考虑他们的互动。
一旦您确定了最初的几个对象,您就应该关注每个对象的固有行为。例如,如果您正在为一群蚂蚁建模,那么您的 Ant 对象将必须知道如何四处移动、如何返回巢穴、如何切割或携带一片叶子等等。
当您向对象添加越来越多的方法时,您会发现增强已识别对象的行为所需的新对象。例如,如果您正在为一个国际象棋游戏建模,并且您已经确定了 Pawn 对象,您很快就会意识到您需要对 CheckBoard、CheckGame 等进行建模。
因此,对象的识别不是您在开始之前尝试解决的问题。相反,您会通过模型的演变自然而然地发现它。随着您的对象成熟,即当他们学到更多的东西,他们将“揭示”哪些其他对象仍然缺失。
在建模过程中,您可能会遇到一些您缺乏的知识。当您需要咨询领域专家、阅读或学习相关材料、在 Stack Overflow 等论坛上提问时。在这方面,您会发现自己对领域有更多了解,因此您可以“解释”您新获得的知识到你的对象。在某些方面,您会觉得您的对象正在向您提出您自己从未想到过的问题,所有这些活动都会用越来越多的类(或原型)和方法来有效地填充您的模型。
【讨论】:
我必须说这是一个非常有趣的问题,人们如何识别对象。根据我的知识,我想说程序员不应该担心对象,因为它是某种事物的表示。将面向对象编程与现实世界联系起来很好。所以程序员应该首先确定可以是现实世界实体的类,然后描述我们需要对象的现实世界实体。
假设您正在为图书馆员开发一个项目,他告诉您以下问题
“作为一名图书馆员,我想要一个图书馆管理系统,其中有不同类型的阅读器,可以阅读书籍、杂志、CD 和 DVD”(类似这样)
因此开发人员可以根据其真实世界的表示轻松识别该类 类应该是
对象可以是Programming C++ book, Advance JAVA book。 Hardik 是读者等等。
因此,对象是现实世界实体的表示,具有某种特定的含义。
【讨论】: