Algorithms and Data Structures学习———002.继承类实现逻辑门与电路

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值