Aplicación integral orientada a objetos de Java: sistema de consulta de vehículos

1. Completar un sistema de consulta de automóvil para encapsulación orientada a objetos, herencia, polimorfismo, abstracción, interfaz y conocimiento de excepciones.

Descripción del requisito: Hay 3 tipos de automóviles: automóviles, autobuses, camiones, entre los cuales el número de asientos en el automóvil es 4, el número de asientos en el autobús es 53 y el número de asientos en el camión es 2, que requiere empaque, herencia y abstracción Para completar la definición del vehículo.

La información del vehículo se puede modificar. El camión puede transportar mercancías pero la carga no puede exceder las 12 toneladas. Utilice excepciones personalizadas para manejar errores. Los automóviles y autobuses no tienen esta función y requieren el uso de interfaces.

Coche

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();
}

Entonces

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座";
	}
	
}

Autobús

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座";
	}

}

Camión

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;
	}

}

Envase

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);
	}
}

Prueba

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();
	}
}

La parte de alto nivel de la orientación a objetos, incluida la clase de objeto, la clase contenedora, la interfaz y la excepción. La clase Object es la clase padre de todas las clases Java. Define la información básica del sistema Java. Se pasa a cada clase de Java a través de la herencia, y todo el sistema Java tiene una gran flexibilidad a través de la reescritura de métodos y el polimorfismo.

Las clases de envoltura son un conjunto de clases que Java proporciona encapsulamiento para tipos de datos básicos, a través del cual podemos convertir tipos de datos básicos en objetos, lo cual es muy importante en la programación orientada a objetos.

La interfaz es una extensión de las clases abstractas y una forma importante de lograr polimorfismo en Java. Puede reducir el acoplamiento del programa y hacer que el programa sea más flexible y cambiante. Las interfaces son equivalentes a piezas y podemos ensamblar e integrar estas piezas libremente.

La excepción es un mecanismo para manejar errores en Java. También se basa en el pensamiento orientado a objetos. Los errores se abstraen en objetos y luego se procesan. Lo que necesita atención aquí es el uso de varias palabras clave relacionadas con las excepciones, intentar, capturar, finalmente, lanzar , lanza.

Supongo que te gusta

Origin blog.csdn.net/qq_40220309/article/details/105687299
Recomendado
Clasificación