申論題內容
三、請以 Java 或 C++撰寫實做一簡單幾何圖形類別系統(class hierarchy),可以表示圓
形、方形與矩形。圓形、方形與矩形之類別名稱分別為 Circle、Square 與 Rectangle。
三者的共同祖先類別 Shape 是一個抽象類別,代表所有可能的幾何圖形。Shape 下的
兩個具體子類別分別為 Circle 及 Square,Square 下則有 Rectangle 類別。
我們希望每一幾何物件均能提供以下方法:1.透過 getX(),getY()可得到幾何中心點的 X 與 Y 座標。2.透過 getArea()可得到圖形面積。 3.透過 getPerimeter()可得到圖形周長。 4.透過 translate(double x, double y):void 可對圖形進行位移。5.透過 scale(double f):void 可對圖形進行放大或縮小。 6.透過 toString():String 可得到該圖形的形狀種類、中心與長寬或半徑的文字
資訊。
其他類別須額外提供以下方法: 7. Circle 物件須提供 getRadius():double,可以取得物件半徑。 8.Square 物件須提供 getSide():double,可以取得邊長。9. Rectangle 物件須提供 getHeight(),getWidth():double,可以取得矩形的高
與寬。
每一類別僅需提供一建構式(constructor),其參數格式要求如下: 10. a. Shape(x,y),b. Rectangle(x,y,w,h),c. Square(x,y,s),d.Circle(x,y,r)。
所有參數的型態(type)均為 double,其中 x 與 y 為幾何圖形中心的 X 與 Y 座
標,r 為圓形半徑,w 與 h 為矩形的寬與高而 s 則是方形的邊長。請根據以上要
求,以 Java 實做此四類別(class)。除須符合上述要求之外,實做時尚須遵循一般
物件導向與軟體設計原則,尚須避免程式碼重複、產生無用欄位,以及資訊隱藏不
全等缺點。(20 分)