【发布时间】:2021-10-04 16:57:19
【问题描述】:
我正在尝试基于以下 UML 类图为分配设计一个 Java 程序,但我一直坚持为 House 和 ApartmentBuilding 类的 create 方法获取 name 和 xPosition 和将其存储在其父类(Building)和接口(@987654328@)中。
可绘制:
import javafx.scene.canvas.GraphicsContext;
interface Drawable {
void draw(GraphicsContext canvas);
public double getXPosition();
}
建筑:
import javafx.scene.canvas.GraphicsContext;
public class Building implements Drawable {
private final String name;
private final double xPosition;
public Building(){
this.name = " ";
this.xPosition = 0.0;
}
public Building(String name, double xPosition){
this.name = name;
this.xPosition = xPosition;
}
public String getName(){
return name;
}
public void draw(GraphicsContext canvas) {
}
public double getXPosition() {
return xPosition;
}
@Override
public String toString(){
return "Type... Building: " + "name= " + name + ", xPosition= " + xPosition + "\n";}
}
房子:
import javafx.scene.canvas.GraphicsContext;
import java.util.Scanner;
public class House extends Building implements Dwelling {
int bedrooms;
int occupants;
House(int bedrooms, int occupants){
this.bedrooms = bedrooms;
this.occupants = occupants;
}
public static House create() {
Scanner scan = new Scanner(System.in);
House a;
System.out.println("Enter name of the House: ");
String name = scan.nextLine();
System.out.println("Enter XPosition of the House: ");
int xPosition = scan.nextInt();
System.out.println("Enter number of bedrooms: ");
int bedrooms = scan.nextInt();
System.out.println("Enter number of occupants: ");
int occupants = scan.nextInt();
a = new House(bedrooms, occupants);
return a;
}
public void draw(GraphicsContext canvas){
}
@Override
public String toString(){
return "House: " + "bedrooms= " + bedrooms + " occupants= " + occupants + "\n" + super.toString();
}
@Override
public int getNumberOfOccupants() {
return occupants;
}
}
公寓楼:
import javafx.scene.canvas.GraphicsContext;
import java.util.Scanner;
public class ApartmentBuilding extends HighRise implements Dwelling{
int occupantsPerFloor;
int numberOfFloors;
ApartmentBuilding(int numberOfFloors, int occupantsPerFloor){
this.occupantsPerFloor = occupantsPerFloor;
this.numberOfFloors = numberOfFloors;
}
public static ApartmentBuilding create() {
Scanner scan = new Scanner(System.in);
ApartmentBuilding a;
System.out.println("Enter name of the Apartment Building: ");
String name = scan.nextLine();
System.out.println("Enter XPosition of the Apartment Building: ");
int xPosition = scan.nextInt();
System.out.println("Enter number of floors: ");
int numberOfFloors = scan.nextInt();
System.out.println("Enter number of occupants per floor: ");
int occupantsPerFloor = scan.nextInt();
a = new ApartmentBuilding(numberOfFloors, occupantsPerFloor);
return a;
}
public void draw(GraphicsContext canvas){
}
@Override
public String toString(){
return "Apartment Building: " + "occupantsPerFloor= " + occupantsPerFloor + "\n" + super.toString() + "\n";
}
@Override
public int getNumberOfOccupants() {
return 0;
}
}
我是编程新手,正在努力学习,但不幸的是,我陷入了困境。
【问题讨论】:
-
House 的构造函数可以采用
create然后在构造函数调用super(name, xPosition)中读取的所有四个参数(包括名称和 XPOsition)
标签: java interface polymorphism abstract-class super