gpt4 book ai didi

面向对象。选择对象

转载 作者:行者123 更新时间:2023-12-03 21:00:36 25 4
gpt4 key购买 nike

我是用 OOP 术语思考的相对新手,还没有找到正确的方法的“直觉”。作为练习,我试图找出不同类型物体之间的界限,以我 table 上的饮料为例。

假设我创建了一个对象 Drink , 具有类似 volume 的属性和 temperature ,以及类似 pour() 的方法和 drink() ,我正在努力寻找特定饮料“类型”的来源。

假设我有一种饮料类型 Tea , CoffeeJuice ,我的第一直觉是子类Drink因为它们有共同的属性和方法。

那么问题就变成了 TeaCoffee具有类似 sugars 的属性和 milk ,但是 Juice没有,而所有三个都有 variant (分别是伯爵灰色、脱咖啡因和橙色)。

同样,TeaCoffee有一个 addSugar()方法,而这对于 Juice 没有意义目的。

那么这是否意味着父类(super class)应该具有这些属性和方法,即使所有子类都不需要它们,或者我是否在子类上定义它们,特别是对于像 variant 这样的属性? ,其中每个子类都有自己的有效值列表?

但后来我得到了两个 addSugar()方法,在 Tea 上和 Coffee子类。

或者考虑到我最终将所有属性和方法放在父类(super class)上,因为大多数属性和方法至少在几种饮料类型之间共享,我想知道子类化的意义何在?

我担心我只是想抽象太多,但如果我想添加一个新类型,例如 Water,我不想让自己陷入困境。 —与 variant静止或闪闪发光——在路上。

最佳答案

面向对象的设计不是孤立进行的。您要问的问题是我的特定应用程序需要对 Drink 类做什么(如果有的话)?答案以及设计将因应用程序而异。在 OO 中失败的第一个方法是尝试构建完美的柏拉图类层次结构——这些东西只存在于完美的柏拉图世界中,在我们居住的现实世界中没有用。

关于面向对象。选择对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1078838/

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