题意:
(程序题)编程模拟图形处理(绘制和计算图形面积),要求从Shape类派生Circle(圆形)、Rectangle(矩形)、Square(正方形)和Triangle(三角形)四个子类,子类中实现对description属性的初始化,以及draw和area两个方法的实现。图形编号:1代表正方形,2代表矩形,3代表圆形,4代表三角形.
输入格式:
其中第一个数代表图形类别,后面的数代表计算该图形面积所需的值(正方形是边长,矩形是宽和高,圆形是半径,三角形底和高)。4 4 2,代表三角,底为4,高为2
输出格式:
面积:4.00,面积后面的冒号为半角符号Shape类的直接使用,主程序及各个图形类需要补充完整。
给出的代码框架
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
Shape shape = null;
Scanner scanner = new Scanner(System.in);
int category = scanner.nextInt();
switch (category) {
case 1:
double edge = scanner.nextDouble();
shape = new Square(edge);
System.out.printf("面积:%.2f\r\n", shape.area());
break;
case 2:
case 3:
case 4:
}
}
}
abstract class Shape {
String description;
public Shape(String description) {
this.description = description;
}
public final void print() {
System.out.println(description);
}
//输出一段文本,模拟绘制图形
public abstract void draw();
//根据实际数据计算形状面积
public abstract double area();
}
/**
* 三角形类
*/
class Triangle extends Shape {
}
/**
* 矩形类
*/
class Rectangle extends Shape {
}
/**
* 圆形类
*/
class Circle extends Shape {
}
/**
* 正方形类
*/
class Square extends Shape {
}
通过代码
package shiyan2;
import java.util.Scanner;
public class Client {
public static void main(String[] args){
Shape shape = null;
Scanner scanner = new Scanner(System.in);
int category = scanner.nextInt();
switch(category){
case 1:
double edge = scanner.nextDouble();
shape = new Square(edge);
System.out.printf("面积:%.2f\r\n",shape.area());
break;
case 2:
double length = scanner.nextDouble();
double width = scanner.nextDouble();
shape = new Rectangle(length,width);
System.out.printf("面积:%.2f\r\n",shape.area());
break;
case 3:
double radius = scanner.nextDouble();
shape = new Circle(radius);
System.out.printf("面积:%.2f\r\n",shape.area());
break;
case 4:
double side = scanner.nextDouble();
double height = scanner.nextDouble();
shape = new Triangle(side,height);
System.out.printf("面积:%.2f\r\n",shape.area());
break;
}
}
}
abstract class Shape {
String description;
public Shape(String description) {
this.description = description;
}
public final void print(){
System.out.println(description);
}
//输出一段文本,模拟绘制图形
public abstract void draw();
//根据实际数据计算形状面积
public abstract double area();
}
/**
* 三角形类
*/
class Triangle extends Shape {
private double side,height;
public Triangle(double side,double height) {
super("三角形");
this.side = side;
this.height = height;
}
@Override
public void draw() {
System.out.println("绘制三角形");
}
@Override
public double area() {
return side * height / 2;
}
}
/**
* 矩形类
*/
class Rectangle extends Shape {
private double a, b;
public Rectangle(double a, double b) {
super("矩形");
this.a = a;
this.b = b;
}
public void draw() {
System.out.println("画一个矩形");
}
public double area() {
return a * b;
}
}
/**
* 圆形类
*/
class Circle extends Shape {
private double r;
public Circle(double r) {
super("圆形");
this.r = r;
}
public void draw() {
System.out.println("画一个圆");
}
public double area() {
return Math.PI * r * r;
}
}
/**
* 正方形类
*/
class Square extends Shape {
private double a;
public Square(double a) {
super("正方形");
this.a = a;
}
public void draw() {
System.out.println("画一个正方形");
}
public double area() {
return a * a;
}
}