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

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

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 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助