面向对象的编程实践 - 概念/实体到对象

时间:2013-01-16 12:40:51

标签: python oop

对于OOP来说,我非常业余,使用python自学。

我主要担心的是将概念或实体分解为对象。

例如,我刚刚写了一些代码来控制连接到我的覆盆子pi的交通灯系统。

系统包含:

  • 一辆汽车引出红绿灯(红色,黄色,绿色)。
  • 请求过马路的按钮。
  • 绿灯和红灯告诉行人什么时候穿越

现在我最终将我的代码建模为一个完整的类。对象内部的方法调用对象中的其他方法。例如。当初始化对象时,initialize方法调用“等待按钮按下”方法,当按下按钮时,该方法然后调用“通过光序列”方法。

这是不好的做法吗?每个概念/实体应该是一个单独的类/对象,例如交通灯对象,按钮对象,行人灯对象?

对于问题的公开性表示抱歉。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您目前所拥有的内容违反了Single Responsibility Principle。基本上你上课的时间太多了。

您可以做的事情如下:

为汽车交通灯,行人交通灯和请求开始穿越的按钮设置单独的课程。

之后,您可以将按钮类注入行人灯类。并将汽车和行人舱注入“控制”/“管理”课程,其中班级用于管理灯光。

您甚至可以在此之后进一步抽象它,例如将实际灯光注入交通灯类。

您可能还想了解其他SOLID principles