1.オブジェクト指向のカプセル化、継承、ポリモーフィズム、抽象化、インターフェース、および例外知識のための自動車クエリシステムを完成させます。
要件の説明:車には、車、バス、トラックの3種類があり、そのうち車の座席数は4、バスの座席数は53、トラックの座席数は2、車両の定義を完了するには、パッケージ化、継承、および抽象化が必要です。
車両情報は変更可能です。トラックは商品を輸送できますが、積載量は12トンを超えることはできません。エラーを処理するにはカスタム例外を使用してください。車やバスにはこの機能がなく、インターフェースを使用する必要があります。
車
package com.song.test;
public abstract class Car {
private String name;
private String color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Car(String name, String color) {
super();
this.name = name;
this.color = color;
}
public abstract String seatNum();
}
次に
package com.song.test;
public class Sedan extends Car {
public Sedan(String name, String color) {
super(name, color);
}
@Override
public String seatNum() {
// TODO Auto-generated method stub
return "4座";
}
}
バス
package com.song.test;
public class Bus extends Car {
public Bus(String name, String color) {
super(name, color);
// TODO Auto-generated constructor stub
}
@Override
public String seatNum() {
// TODO Auto-generated method stub
return "53座";
}
}
トラック
package com.song.test;
public class Truck extends Car implements Container {
private int weight;
public Truck(String name, String color,int weight) {
super(name, color);
this.weight = weight;
// TODO Auto-generated constructor stub
}
@Override
public String seatNum() {
// TODO Auto-generated method stub
return "2座";
}
@Override
public int getweight() {
// TODO Auto-generated method stub
return this.weight;
}
}
コンテナ
package com.song.test;
public interface Container {
public int getweight();
}
CarException
package com.song.test;
public class CarException extends Exception {
public CarException(String error) {
super(error);
}
}
テスト
package com.song.test;
import java.util.Scanner;
public class Test {
private static Scanner scanner;
private static Sedan sedan;
private static Bus bus;
private static Truck truck;
private static Car[] cars;
static {
scanner = new Scanner(System.in);
sedan = new Sedan("小轿车","黑色");
bus = new Bus("大巴车","绿色");
truck = new Truck("卡车","蓝色",2);
cars = new Car[3];
cars[0] = sedan;
cars[1] = bus;
cars[2] = truck;
}
public void showCars() {
System.out.println("欢迎使用本汽车管理系统");
System.out.println("车辆名称\t\t车辆颜色\t\t座位数\t\t载重量");
for(Car car:cars) {
if(car instanceof Truck) {
Truck truck = (Truck)car;
System.out.println(car.getName()+"\t\t"+car.getColor()+"\t\t"+car.seatNum()+"\t\t"+truck.getweight());
}else {
System.out.println(car.getName()+"\t\t"+car.getColor()+"\t\t"+car.seatNum()+"\t\t不能拉货");
}
}
System.out.println("1.小轿车\t2.大巴车\t3.卡车");
System.out.print("请选择要修改的车辆:");
int num = scanner.nextInt();
switch(num) {
case 1:
update("sedan");
break;
case 2:
update("bus");
break;
case 3:
update("truck");
break;
default:
System.out.println("车辆不存在!");
break;
}
}
public void update(String type) {
String name = null;
String color = null;
if(type.equals("sedan")) {
System.out.print("输入车辆名称");
name = scanner.next();
System.out.print("输入车辆颜色");
color = scanner.next();
Sedan sedan = new Sedan(name,color);
cars[0] = sedan;
}
if(type.equals("bus")) {
System.out.print("输入车辆名称");
name = scanner.next();
System.out.print("输入车辆颜色");
color = scanner.next();
Bus bus = new Bus(name,color);
cars[1] = bus;
}
if(type.equals("truck")) {
System.out.print("输入车辆名称");
name = scanner.next();
System.out.print("输入车辆颜色");
color = scanner.next();
System.out.print("输入载重量");
int weight = scanner.nextInt();
if(weight > 12) {
CarException carException = new CarException("卡车的载重量不能超过12吨");
try {
throw carException;
} catch (CarException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
}
Truck truck = new Truck(name,color,weight);
cars[2] = truck;
}
showCars();
}
public static void main(String[] args) {
Test test = new Test();
test.showCars();
}
}
オブジェクトクラス、ラッパークラス、インターフェイス、例外など、オブジェクト指向の高レベルの部分。Objectクラスは、すべてのJavaクラスの親クラスであり、Javaシステムの基本情報を定義します。継承によってJavaの各クラスに渡され、Javaシステム全体がメソッドの書き換えと多態性によって強力な柔軟性を備えています。
ラッピングクラスは、Javaが基本データ型のカプセル化を提供するクラスのセットであり、これを介して基本データ型をオブジェクトに変換できます。これは、オブジェクト指向プログラミングで非常に重要です。
インターフェイスは抽象クラスの拡張であり、Javaでポリモーフィズムを実現するための重要な方法です。これにより、プログラムの結合を減らし、プログラムをより柔軟で変更可能にすることができます。インターフェースはパーツと同等であり、これらのパーツを自由に組み立てて統合することができます。
例外は、Javaでエラーを処理するためのメカニズムです。これもオブジェクト指向の考え方に基づいています。エラーはオブジェクトに抽象化されてから処理されます。ここで注意が必要なのは、例外、try、catch、finally、throwに関連するいくつかのキーワードの使用です。 、スローします。