【问题标题】:Whats the difference between these two classes这两个类有什么区别
【发布时间】:2017-11-14 23:40:53
【问题描述】:

您好,我有一个关于这两个类的问题, • 总线(即,它需要存储什么值以及它可以采取什么行动) • 命令(即,向什么总线发出了什么类型的命令和什么值)我很困惑有什么区别,总线类将具有它自己移动的功能。但是,命令类有什么用呢?我需要使用不同的类,因为这个被称为总线和其他命令。

指导方针--- 您正在经营一家拥有四辆巴士的巴士公司。这些总线将根据键盘输入提供的命令四处移动。要移动公共汽车,您将从键盘发出一个带有公共汽车标识、方向和要移动的空间数量的命令。例如: 黑白 3 将公共汽车“B”向西移动三个空间。所有公交车都将从坐标 (0,0) 的公交车站开始。 “N”orth 命令将增加 y 坐标; “S”outh 递减 y 坐标。 “E”ast 命令增加 x 坐标,“W”est 命令减少 x 坐标。 您还将接受接送人员的命令: DP 5 A D 2

【问题讨论】:

  • 您知道我们看不到您的代码吗?
  • 是的,我没有任何代码,因为我不知道每个类之间的区别是什么
  • 欢迎来到 Stack Overflow @KidProg。请使用tour 并阅读有关How to Ask 的信息。
  • 如果这些类没有代码,那么唯一的区别就是它们的名称。
  • 也许吧。另一方面,如果他们不清楚,为什么不问问给你指导方针的人呢?

标签: python class object-oriented-analysis


【解决方案1】:

在尝试理解您的问题时,我看到了一个总线类,也称为总线对象。

它就像一个物理总线,具有如下属性:

车牌号 容量

以及构成该总线的任何其他属性。

如果我没看错的话,命令类是一个可以被总线继承的类,但它也可以被其他对象继承。如果你有一个公共汽车对象和一个汽车对象,它们都有一个车牌。

如果公共汽车和汽车有一些不同的属性,它们就会不同。

然而,它们都可以继承命令类,如果命令类有一个 go 函数,它们都可以去。

抽象和多态可能很棘手,但它是面向对象编程的关键。

我希望这会有所帮助。

【讨论】:

  • 可能,无论您使用哪种设计,Bus 都不应该从 Command 继承,反之亦然。
  • ^ 我同意。 command 可能更像是一个跟踪总线位置和运动的类,并且在继承方面与 Bus 类没有任何关系。
  • 有趣。如果那是你的感觉。无论是location还是go,都必须继承才能使用。对象需要知道它可以做某事。
  • @SynchroDynamic 不,它不会必须被继承。作为一般规则,继承意味着“is-a”关系。总线是命令?命令是总线?总线可以接受命令。或者一个命令作用于总线。总线和命令之间没有“is-a”关系。
  • 我认为没有必要如此沮丧。我必须以不同的方式阅读这个问题。我读它的方式是命令类是一个组件类。如果不是那么我道歉。这个问题很开放。
【解决方案2】:

仍然令人困惑,但我会试一试。如果这些是您程序中仅有的两个类,我认为划分非常明确。

Bus 将是一个class,其中包含有关总线的信息。它将有成员variables 代表它在“地图”(x,y) 上的位置,并带有一个将更新这些成员变量的移动函数。因此,当您致电busname.move(variables) 时,它会按照您的意愿移动并更新其位置。此外,它似乎会有一个 variable 代表船上有多少人。

command 类完全是另外一回事,它将是您程序的主要控件。它将有bus 类的实例作为其成员(A、B、C、D),它会解释来自键盘的命令以确定向bus 发出的命令。例如,如果您在键盘上键入 A W 3,那么总线 A 怎么会知道向西移动三个空格?因为命令类将接受键盘输入并调用A.move(-3, 0) 或类似的东西来更新其位置。

希望这会有所帮助。

【讨论】:

  • 哇,谢谢,如果可以的话,我知道我在这里分配了很多。你能提供一个代码示例吗?
  • 嘿 KidProg,如果他们愿意,我会让其他人编辑我的答案——我用 C++ 编写面向对象的代码,而不是 Python,所以无论如何我不会有太大用处。
猜你喜欢
  • 1970-01-01
  • 2019-07-19
  • 2016-12-22
  • 2012-06-12
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多