本文共 8697 字,大约阅读时间需要 28 分钟。
UML图如下:
完整的Java代码如下: SimpleGeometricObject.javapublic class SimpleGeometricObject { private String color = "white"; private boolean filled; private java.util.Date dateCreated; /**Construct a default geometric object */ public SimpleGeometricObject(){ dateCreated = new java.util.Date(); } /**Construct a geometric object with the specified color * and filled value*/ public SimpleGeometricObject(String color, boolean filled) { dateCreated = new java.util.Date(); this.color = color; this.filled = filled; } /**Return color*/ public String getColor() { return color; } /**set a new color*/ public void setColor(String color) { this.color = color; } /**Return filled. Since filled is boolean, * its better method is named isFilled*/ public boolean isFilled() { return filled; } /**Set a new filled*/ public void setFilled(boolean filled) { this.filled = filled; } /**Get dateCreated*/ public java.util.Date getDateCreated(){ return dateCreated; } /**Return a string representation of this object*/ public String toString() { return "created on "+dateCreated+"\ncolor: "+color+" and filled: "+filled; }}
CircleFromSimpleGeometricObject.java
public class CircleFromSimpleGeometricObject extends SimpleGeometricObject{ private double radius; public CircleFromSimpleGeometricObject() {} public CircleFromSimpleGeometricObject(double radius) { this.radius = radius; } public CircleFromSimpleGeometricObject(double radius, String color, boolean filled) { super(color, filled); this.radius = radius; } /**Return radius*/ public double getRadius() { return radius; } /**Set a new radius*/ public void setRadius(double radius) { this.radius = radius; } /**Return area*/ public double getArea() { return radius*radius*Math.PI; } /**Return diameter*/ public double getDiameter() { return 2*radius; } /**Return perimeter*/ public double getPerimeter() { return 2*radius*Math.PI; } /**Return the circle info*/ public void printCircle() { System.out.println("The circle is created "+getDateCreated()+" and the radius is "+radius); } }
RectangleFromSimpleGeometricObject.java
public class RectangleFromSimpleGeometricObject extends SimpleGeometricObject{ private double width; private double height; public RectangleFromSimpleGeometricObject() {} public RectangleFromSimpleGeometricObject(double width, double height) { this.width = width; this.height = height; } public RectangleFromSimpleGeometricObject(double width, double height, String color, boolean filled) { super(color, filled); this.width = width; this.height = height; } /**Return width*/ public double getWidth() { return width; } /**Set a new width*/ public void setWidth(double width) { this.width = width; } /**Return height*/ public double getHeight() { return height; } /**Set a new width*/ public void setHeight(double height) { this.height=height; } /**Return area*/ public double gerArea() { return width*height; } /**Return perimeter*/ public double getPerimeter() { return 2*(width+height); }}
Test.java
public class Test{ public static void main(String[] args){ CircleFromSimpleGeometricObject circle = new CircleFromSimpleGeometricObject(1,"red", true); System.out.println("A circle "+circle.toString()); System.out.println("The color is "+circle.getColor()); System.out.println("The radius is "+circle.getRadius()); System.out.println("The area is "+circle.getArea()); System.out.println("The diameter is "+circle.getDiameter()); RectangleFromSimpleGeometricObject rect = new RectangleFromSimpleGeometricObject(2,4); System.out.println("\nA rectangle is "+rect.toString()); System.out.println("The area is "+rect.gerArea()); System.out.println("The perimeter is "+rect.getPerimeter()); }}
完整的Python代码如下:
import mathimport datetimeclass SimpleGeometricObject(object): def __init__(self, color, filled): self.__color = color self.__filled = filled self.__date = datetime.datetime.now() def getColor(self): return self.__color def setColor(self, color): self.__color = color def isFilled(self): return self.__filled def setFilled(self, filled): self.__filled = filled def getDateCreated(self): return self.__date.strftime("%Y/%m/%d/%H:%M") def __str__(self): return "is created on "+self.getDateCreated()+", color: "+self.__color\ +" and filled: "+str(self.__filled)class CircleFromSimpleGeometricObject(SimpleGeometricObject): def __init__(self, color, filled, radius): super(CircleFromSimpleGeometricObject, self).__init__(color, filled) self.__radius = radius def getRadius(self): return self.__radius def setRadius(self, radius): self.__radius = radius def getArea(self): return self.__radius*self.__radius*math.pi def getPerimeter(self): return 2*self.__radius*math.pi def getDiameter(self): return self.__radius*2 def printCircle(self): print(self.__str__()+" and the radius is "+str(self.__radius))class RectangleFromSimpleGeometricObject(SimpleGeometricObject): def __init__(self, color, filled, width, height): super(RectangleFromSimpleGeometricObject, self).__init__(color, filled) self.__width = width self.__height = height def getWidth(self): return self.__width def setWidth(self, width): self.__width = width def getHeight(self): return self.__height def setHeight(self, height): self.__height = height def getArea(self): return self.__width * self.__height def getPerimeter(self): return 2*(self.__width+self.__height)def main(): circle = CircleFromSimpleGeometricObject("red", True, 5) print("A circle ", circle) print("The color is ", circle.getColor()) print("The radius is %s"%circle.getRadius()) print("The area is %s"%circle.getArea()) print("The diameter is %s"%circle.getDiameter()) rect = RectangleFromSimpleGeometricObject("white", False, 3, 4); print("\nA rectangle", rect); print("The area is %s"%rect.getArea()); print("The perimeter is %s"%rect.getPerimeter());main()
完整的Scala代码如下:
import java.util.Date;import scala.math._;object demo extends App { class SimpleGeometricObject (private var color:String="white", private var filled:Boolean=false){ private var dateCreated:java.util.Date = new Date() def getColor() = color def setColor(color:String) = { this.color = color} def isFilled() = filled def setFilled(filled:Boolean) = { this.filled = filled} def getDateCreated() = dateCreated override def toString()= "created on "+dateCreated+"\ncolor: "+color+" and filled: "+filled } class CircleFromSimpleGeometricObject(color:String, filled:Boolean, private var radius:Double) extends SimpleGeometricObject(color,filled){ def this() = this("white", false, 1.0) def getRadius() = radius def setRadius(radius:Double) = { this.radius = radius} def getArea() = radius*radius*Pi def getDiameter() = radius*2 def getPerimeter() = radius*2*Pi def printCircle() = {println("The circle is created "+getDateCreated+" and the radius is "+radius)} } class RectangleFromSimpleGeometricObject(color:String, filled:Boolean, private var width:Double, private var height:Double) extends SimpleGeometricObject(color, filled) { def this() = this("white", false, 1.0, 1.0) def getWidth() = width def setWidth(width:Double) = { this.width = width} def getHeight() = height def setHeight(height:Double) = { this.height = height} def getArea() = width*height def getPerimeter() = 2*(width+height) } var circle = new CircleFromSimpleGeometricObject("red", true, 2.0) println("A circle is "+circle.toString()) println("The color is "+circle.getColor()) println("The radius is "+circle.getRadius()) println("The area is "+circle.getArea()) println("The diameter is "+circle.getPerimeter()) var rect = new RectangleFromSimpleGeometricObject("green", true, 3.0, 4.0) println("\nA rectangle is "+rect.toString()) println("The area is "+rect.getArea()) println("The perimeter is "+rect.getPerimeter())}
读者可以自己从上述代码中体验三种语言的相同点与不同之处,显然,Python与Scala语言较为简洁~~