gpt4 book ai didi

oop - 面向对象编程——类设计的困惑

转载 作者:行者123 更新时间:2023-12-04 01:30:04 25 4
gpt4 key购买 nike

我试图围绕面向对象的编程。

我的理解是我们有对象,所以我们可以设计我们的程序来反射(reflect)现实生活中的对象。

让我们看一个类层次结构:

class Fruit {
void Eat() {

}
}

class Apple extends Fruit {

}

显然,如果 Eat(),您可以多态地使用 Fruit是虚拟的。但这有意义吗?水果不能自己吃!

应该将水果对象传递给具有 Eat() 的人类对象吗?功能?

我试图找出正确的方法来思考这个问题。一般来说,编程对象应该多接近地反射(reflect)现实生活中的对象?

最佳答案

您遇到了一个设计问题——正如您正确指出的那样,作为 Fruit 的成员,Eat() 没有明显的意义。另一方面,“可食用”属性更有意义。与“onEaten”事件等一样。您的水果/苹果类公开的内容(以及您的模型中其他哪些对象有意义)取决于许多其他因素,包括您尝试在应用程序中使用这些构造完成什么.

通常,您希望您的类表示逻辑域级别的实体。有时它们对应于现实世界中的物理实体,但在许多情况下它们不对应。

在我看来,OO 问题分解是程序员通常非常不擅长的。我不知道有多少次我看到了相当于从方向盘衍生出来的汽车并摇头,而最初的开发人员无法理解为什么他们的设计没有多大意义。

关于oop - 面向对象编程——类设计的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1740706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com