如何使对象在OOP中进行交互?

时间:2016-11-19 13:23:57

标签: oop language-agnostic

我试图理解对象交互是如何编程的。

我认为我理解一个对象具有可以访问其数据并可以更改它的方法的基本原则。但是,如果两个对象交互并且object1确实需要更改object2的状态,那该怎么办?

假设您有一个Person对象和一个Ball对象,并且Person必须踢球,从而改变球的坐标。

看起来像是:

TakeFromAny

person.kick看起来像

person.kick(ball)

这一切都正确吗?

对象状态是否只能通过自己的方法更改?

对象交互的模式总是:

  1. 将object1的引用传递给object2
  2. 使用object2的方法调用object1的方法来检索或更改object1的状态?
  3. 此外,如果有人可以推荐一本关于OOP原则和设计模式的书,那将是非常好的。

    感谢。

1 个答案:

答案 0 :(得分:1)

基本上,你写的是正确的:

  1. 对象的状态只能由该对象的方法修改。否则你必须公开国家并失去封装。

  2. 如果对象A需要调用对象B的方法,则需要引用B.如何调用该方法。

  3. 但更重要的是:你似乎认为OOP就是要修改对象'州。不幸的是,许多介绍给出了这种印象。但事实并非如此。可变状态会导致许多问题,使程序更难以阅读和测试。幸运的是,您可能需要的大部分内容都可以使用不可变对象完成。只是google的不变性。我还建议看看函数式编程,其中不变性是标准的。

    (我不会回答你的上一个问题,因为这里的主题是偏离主题的。)