UML图如下:
完整的Java代码如下:
SimpleGeometricObject.java
public 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 math
import datetime
class 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语言较为简洁~~
本次分享到此结束,欢迎大家交流~~