「已注销」 2021-06-18 17:04 采纳率: 100%
浏览 195
已结题

  利用面向对象的知识,通过封装、继承、多态设计一个求圆、长方形的周长、面积的程序怎么弄

1.1.      定义一个基类Pm,有求平面图形周长、面积的2个方法。(10分)

1.2.      定义一个Pm的子类Cfx,有构造方法,私有属性为长、宽,有分别设置长、宽的set方法,有返回长、宽的get方法。重写父类的求周长、面积的方法。(10分)

1.3.      定义一个Pm的子类Yuan,有构造方法,私有属性为半径,有设置半径的set方法,有返回半径的get方法。重写父类的求周长、面积的方法。(10分)

1.4.      定义一普通函数,利用多态实现2个子类求周长、面积的方法。(10分)

1.5.      用户输入长方形的长、宽。输入圆的半径。把输入的数据实例化长方形、圆的类,然后显示它们的周长、面积。(10分)

  • 写回答

1条回答 默认 最新

  • 关注
    import math
    
    class Pm:
        def perimeter(self):
            pass
        def area(self):
            pass
    
    class Cfx(Pm):
        def __init__(self,l,w):
            self.set(l,w)
        def set(self,l,w):
            self.__long = l
            self.__wide = w
        def get(self):
            return self.__long,self.__wide
        def perimeter(self):
            return (self.__long + self.__wide)*2
        def area(self):
            return self.__long * self.__wide
    
    class Yuan(Pm):
        def __init__(self,r):
            self.set(r)
        def set(self,r):
            self.__radius = r
        def get(self):
            return self.__radius
        def perimeter(self):
            return 2*math.pi * self.__radius
        def area(self):
            return math.pi * self.__radius**2
    
    def getClass(a,b=None):
        if b==None:
            return Yuan(a)
        else:
            return Cfx(a,b)
    
    
    l = int(input('输入长方形的长:'))
    w = int(input('输入长方形的宽:'))
    p = getClass(l,w)
    print("长方形的周长:",p.perimeter())
    print("长方形的面积:",p.area())
    r = int(input('输入圆的半径:'))
    p = getClass(r)
    print("圆的周长:",p.perimeter())
    print("圆的面积:",p.area())

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失