3

例如,假设您正在设计一个名为 的对象类Car,它支持用符号 表示的二元运算+,即您可以执行car1 + car2wherecar1car2are 的实例Car

当您刚刚完成抽象代数课程时,您尝试Car根据数学群论将课程设计为一个“群”,因此该课程Car具有以下属性:

  • car1 + car2返回另一个实例Car
  • (car1 + car2) + car3 == car1 + (car2 + car3)
  • 对于任何实例carx,都有car0这样一个实例carx + car0 == car0 + carx == carx
  • 每个实例carx都有它的逆carx_inv,使得carx + carx_inv == carx_inv + carx == car0

你能给我一个例子,这种实现是必要的,或者至少是有益的。

4

1 回答 1

0

OOP 概念是以设计类的形式表示现实世界的概念。因此,如果您想找到群论在 OOP 概念中的应用,请寻找群论在现实生活中的应用。

理论上,我们可以将这个概念应用于 OOP 世界中创建的所有内容。

该对象只是存储一些值的属性包的快捷方式。当我们创建一个对象时,我们收集这些属性并用名称将它们括起来以简化通信。

由于对象由具有价值的属性组成。我们可以使用代数来处理它们。作为概念的对象保持不变,只是属性的值发生了变化。属性的值是对象的真实表示。

所以不要和汽车一起去,这将是它的结构

Car {
 numberOfSeats
}

我们有一个名为的结构Car,只有一个属性numberOfSeats

我们的工作数据将是一辆有 2 个座位的汽车和有 4 个座位的汽车,分别称为 car2 和 car4。

Object car2 = Create Car with 2 seats.
Object car4 = Create Car with 4 seats.

所以我们有两个对象。现在不要做数学了。

Object car6 = car2 + car4.

在幕后,我们创建了一个新的 Car 对象并添加了numberOfSeats. 产品为六座新车。


这就是这个概念的运作方式。所以根据这个理论,我们可以对任何东西进行操作。由于汽车不是最好的例子,在现实生活中真的很难做到这一点。

事实是,这种行为取决于开发人员的负责人。当我们从单个正方形对象开始时,当我们与另一个正方形发生碰撞时,我们可以设计一个游戏。我们的起始方块随着碰撞方块的大小而增加。另一个很好的例子是 type Money,除了它的值,我们总是有货币。所以数字更复杂,但我们可以用它来完成我们可以用数字执行的每一个操作。

于 2013-04-11T09:29:46.920 回答