Python 面向对象编程实践-概念/实体到对象
谈到面向对象编程,我非常业余,自学使用python 我主要关心的是将概念或实体分解成对象 例如,我刚刚编写了一些代码来控制连接到我的raspberry pi的交通灯系统 该系统包括:Python 面向对象编程实践-概念/实体到对象,python,oop,Python,Oop,谈到面向对象编程,我非常业余,自学使用python 我主要关心的是将概念或实体分解成对象 例如,我刚刚编写了一些代码来控制连接到我的raspberry pi的交通灯系统 该系统包括: 一辆汽车亮起交通灯(红、黄、绿) 请求交叉的按钮 还有绿灯和红灯,告诉行人什么时候过马路 现在,我将代码建模为一个完整的类。其中,对象中的方法调用对象中的其他方法。例如,当对象被初始化时,initialize方法调用“等待按钮按下”方法,当检测到按钮按下时,该方法调用“通过光序列运行”方法 这是坏习惯吗?每个概
- 一辆汽车亮起交通灯(红、黄、绿)李>
- 请求交叉的按钮
- 还有绿灯和红灯,告诉行人什么时候过马路
感谢您的帮助。您当前拥有的内容违反了标准。基本上你们班做的太多了 您可以执行以下操作: 对汽车交通灯、行人交通灯和请求开始穿越的按钮进行单独分类 之后,可以将button类注入到行人灯类中。并将汽车和行人类都注入到“控制”/“管理”类中,这些类用于管理灯光 在此之后,您甚至可以进一步抽象它,例如将实际灯光注入trafficlights类
您可能还想了解其他人。您当前拥有的内容违反了。基本上你们班做的太多了 您可以执行以下操作: 对汽车交通灯、行人交通灯和请求开始穿越的按钮进行单独分类 之后,可以将button类注入到行人灯类中。并将汽车和行人类都注入到“控制”/“管理”类中,这些类用于管理灯光 在此之后,您甚至可以进一步抽象它,例如将实际灯光注入trafficlights类
您可能还想了解其他人。您应该在codereview:中发布此答案和代码。一般来说,我会说分解为不同的对象。尝试至少区分用于与其他实体(对象)交互的方法和用于初始化或设置的方法。考虑一下界面,试着以自然的方式分解你的东西。但无论如何,不要过度设计简单的问题,而是慢慢向面向对象的实践发展。拥有一个巨大的类只是在面向对象的外表下编写过程代码。所以,你应该把问题分解成更小的实体。谢谢你的回复。将实体分解为对象时应该走多远?例如,以我为例,每个LED的对象是否会走得太远?取决于LED的复杂性,但一般来说,是的,为LED创建一个有意义的接口,并让交通灯聚合它们。这将极大地改变您处理实体的方式,迫使您创建干净的接口,并将实体行为与实现细节分离。任何类只需要知道LED可以做什么,而不需要知道它是如何完成的。您应该在codereview中发布此答案,并附上代码:。一般来说,我会说分解为不同的对象。尝试至少区分用于与其他实体(对象)交互的方法和用于初始化或设置的方法。考虑一下界面,试着以自然的方式分解你的东西。但无论如何,不要过度设计简单的问题,而是慢慢向面向对象的实践发展。拥有一个巨大的类只是在面向对象的外表下编写过程代码。所以,你应该把问题分解成更小的实体。谢谢你的回复。将实体分解为对象时应该走多远?例如,以我为例,每个LED的对象是否会走得太远?取决于LED的复杂性,但一般来说,是的,为LED创建一个有意义的接口,并让交通灯聚合它们。这将极大地改变您处理实体的方式,迫使您创建干净的接口,并将实体行为与实现细节分离。任何一个班级只需要知道LED能做什么,而不需要知道它是如何做的。谢谢你的回答,那些坚实的原则看起来真的很有趣。虽然还不知道注射是什么或它是如何工作的。@Cornucopia看这::)谢谢你的帮助,非常感谢。这些链接和你自己教会了我很多。谢谢你的回复,那些坚实的原则看起来真的很有趣。虽然还不知道注射是什么或它是如何工作的。@Cornucopia看这::)谢谢你的帮助,非常感谢。链接和你自己教会了我很多。