1. 程式人生 > 其它 >python-以圓類為基礎設計三維圖形體系

python-以圓類為基礎設計三維圖形體系

【題目描述】設計三維圖形類體系,要求如下:

設計三維圖形功能介面,介面包含周長、面積、體積計算方法;

基於以上介面,首先定義點類,應包含x,y座標資料成員,座標獲取及設定方法、顯示方法等;

以點類為基類派生圓類,增加表示半徑的資料成員,半徑獲取及設定方法,過載顯示函式,並可計算周長和麵積等;

以圓類為基礎派生球類、圓柱類、圓錐類;要求派生類球、圓柱、圓錐中都含有輸入和輸出顯示方法;並可計算面積、周長。

程式中定義各種類的物件,並完成測試。
【練習要求】請給出原始碼程式和執行測試結果,原始碼程式要求新增必要的註釋。

 

程式碼:

import math
class Shape:
    def cal_perimeter(self):
        
pass def cal_area(self): pass def cal_volume(self): pass class Point(Shape): def __init__(self,x=0,y=0): self.x = x self.y = y def setX(self,x): self.x = x def setY(self,y): self.y = y def getX(self): return self.x def
getY(self): return self.y def display(self): print('({}'.format(self.x)+',{})'.format(self.y)) class Circle(Point): def __init__(self,r): Point.__init__(self,x=0,y=0) self.r = r def setR(self,r): self.r = r def getR(self): return self.r
def cal_perimeter(self): perimeter=round(2*3.14*self.r,2) return perimeter def cal_area(self): area=round(3.14*self.r**2,2) return area def display(self): print('圓的周長:',self.cal_perimeter()) print('圓的面積:',self.cal_area()) class Ball(Circle): def __init__(self,r): Circle.__init__(self,r=10) def cal_volume(self): perimeter=round((4/3)*3.14*(self.r**3),2) return perimeter def cal_area(self): area=round(3.14*self.r**2*4,2) return area def display(self): print('球的體積:',self.cal_volume()) print('球的面積:',self.cal_area()) class Circular(Circle): def __init__(self,r,h): Circle.__init__(self,r=10) self.h = h def cal_volume(self): perimeter=round(3.14*(self.r**2)*self.h,2) return perimeter def cal_area(self): area=round(3.14*2*self.r*self.h+2*3.14*self.r**2,2) return area def display(self): print('圓柱的體積:',self.cal_volume()) print('圓柱的面積:',self.cal_area()) class CircularCone(Circle): def __init__(self,r,h): Circle.__init__(self,r=10) self.h = h def cal_volume(self): perimeter=round((1/3)*3.14*(self.r**2)*self.h,2) return perimeter def cal_area(self): area=round(3.14*self.r*(self.r+math.sqrt(self.r**2+self.h**2)),2) return area def display(self): print('圓錐的體積:',self.cal_volume()) print('圓錐的面積:',self.cal_area()) p = Point(10,5) p.display() c = Circle(10) c.display() r = float(input("請輸入球體半徑:")) b = Ball(r) b.display() r = float(input("請輸入圓柱底面半徑:")) h = float(input("請輸入圓柱的高:")) cc = Circular(r,h) cc.display() r = float(input("請輸入圓錐底面半徑:")) h = float(input("請輸入圓錐的高:")) cn = CircularCone(r,h) cn.display()