Algorithms and Data Structures学习———002.继承类实现逻辑门与电路
1、学习内容:
继承、子类、父类、IS-A关系、HAS-A关系
2、学习时间:2021.1.22
3、思路与代码
目标:实现下图所示的电路,举一反三:
为了实现电路,首先理清楚逻辑门组成类的继承层次结构,【IS-A关系】如下图:
下面依次描述每个类:
LogicGate类,代表逻辑门的通用特性,所有的逻辑门都有标签,和输出值,因此该类包含属性n。n指每个逻辑门的标签,通过get_label方法返回该值。同时定义函数get_output来返回输出值。输出值通过方法perform_logic_gate求得,因为不同的逻辑门有不同的输出逻辑,因此该方法的代码还不存在。
这是一种在面向对象编程中非常强大的思想——我们创建了一个方法,而其代码还不存在!
代码如下:
class LogicGate:
"""创建逻辑门的类"""
def __init__(self, n):
self.label = n
self.output = None
def get_label(self):
return self.label
def get_output(self):
self.output = self.perform_gate_logic()
return self.output
逻辑门可依据引脚的个数分为双引脚和单引脚。与门和或门有两个引脚,而非门只有一个引脚。创建BinaryGate类和UnaryGate类。两个类均是LogicGate的子类。因此首先需要初始化所有继承的数据项。双引脚类获取两个输入引脚值,单引脚只获取一个,在程序中我们写为拥有两个相同的引脚(为方便后续的程序),这两个类添加了获取输入值的方法,该方法我们后续解释。
代码如下:
class BinaryGate(LogicGate):
"""创建两输入逻辑门的类"""
def __init__(self, n):
super().__init__(n)
self.pin_A = None
self.pin_B = None
def get_pin_A(self)