例如,假设您正在设计一个名为Car的对象类,该对象支持以符号+表示的二进制操作,即您可以执行car1 + car2,其中car1car2Car的实例

当您刚完成抽象的代数 class 时,您尝试设计类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

  • 您能否举个例子说明这种实现是必要的还是至少是有益的。

    最佳答案

    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的值。该产品是具有六个座位的新车。

    这就是概念的工作原理。因此,根据这一理论,我们可以对任何事物进行操作。由于汽车不是最好的例子,因此在现实生活中很难做到。

    事实是,这种行为取决于开发人员的负责人。当我们从一个正方形物体开始,并且与另一个正方形碰撞时,我们可以设计一个游戏。我们的起始方块随着碰撞方块的大小而增加。另一个很好的例子是Money类型,除了它的值外,我们总是货币。因此,对数字进行比较复杂,但是我们可以对数字执行所有的操作。

    08-08 01:32