OOP:哪个类应该拥有一个方法?[已关闭]

2022-09-01 07:45:30

我无法理解类与方法的关系。一个方法是由对象做的,还是它做的?或者这是一个完全不同的概念?

具体而言,在图书馆的软件系统中,该方法应该属于代表图书馆读者的类,还是属于代表读者借阅的项目的类?我的直觉是,它应该读起来像,像英语句子结构一样;但是我的老师说这是错误的,我不明白为什么他会属于这个班级(而且他并没有很好地解释事情)。我不是在寻找理由,但有人可以解释适当的关系吗?borrow()patron.borrow(copy)subject.verb(object)borrow()Copy

编辑:这个问题被关闭为“偏离主题”。我不明白。软件设计问题是否不适合此站点?


答案 1

主观:)但老实说,我会使用信息专家模式并说类似的话

library.lend(item, patron)

库包含有关其拥有的项目的信息(可能在其目录中)。
图书馆将物品借给顾客(它知道,因为它注册了他们)

不知道您的教师如何看待这一点,但这是“抽象”(模仿现实世界实体的软件对象)级别,这对你的场景有意义。


答案 2

你不应该将OOP的概念与一个特定的化身(如Java或C++)混淆。

这个限制“方法是对象的属性”不是OOP思想的一部分,而只是一些实现的一部分,正如你发现的那样,它不能很好地扩展。

一个“整数”对象有多少个方法?更合乎逻辑的是... 或?对此确实没有好的一般答案。将方法作为单个对象的一部分的想法是一种特殊情况,有时使问题适应此解决方案所需的弯曲可能会变得明显,甚至接近于一个障碍者。只有当一个方法除了正在处理的对象之外没有参数时,答案才是完全完全可以接受的:只有当涉及单个类型时,单调度才是一个完美的答案。myfile.write(myint)myint.write(myfile)

在其他语言中,对象和方法之间有分离,因此例如,您有文件对象,整数对象和描述需要操作时要执行的操作的方法...并且此方法既不是文件的一部分,也不是整数的一部分。write(myfile, myint)