1. Compléter un système de requête automobile pour l'encapsulation orientée objet, l'héritage, le polymorphisme, l'abstraction, l'interface et la connaissance des exceptions.
Description de l'exigence: Il existe 3 types de voitures: voitures, bus, camions, parmi lesquels le nombre de sièges dans la voiture est de 4, le nombre de sièges dans le bus est de 53 et le nombre de sièges dans le camion est de 2, ce qui nécessite un emballage, un héritage et une abstraction Pour compléter la définition du véhicule.
Les informations du véhicule peuvent être modifiées. Le camion peut transporter des marchandises mais la charge ne peut pas dépasser 12 tonnes. Utilisez des exceptions personnalisées pour gérer les erreurs. Les voitures et les bus n'ont pas cette fonction et nécessitent l'utilisation d'interfaces.
Voiture
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();
}
ensuite
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座";
}
}
Autobus
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座";
}
}
un camion
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;
}
}
Récipient
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);
}
}
Tester
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 partie de haut niveau orientée objet, y compris la classe Object, la classe wrapper, l'interface et l'exception. La classe Object est la classe parente de toutes les classes Java. Elle définit les informations de base du système Java. Elle est transmise à chaque classe de Java par héritage, et l'ensemble du système Java dispose d'une grande flexibilité grâce à la réécriture de méthodes et au polymorphisme.
Les classes de wrapping sont un ensemble de classes que Java fournit l'encapsulation pour les types de données de base, grâce auxquelles nous pouvons convertir des types de données de base en objets, ce qui est très important dans la programmation orientée objet.
L'interface est une extension des classes abstraites et un moyen important de réaliser le polymorphisme en Java. Elle peut réduire le couplage du programme et rendre le programme plus flexible et modifiable. Les interfaces sont équivalentes aux pièces, et nous pouvons assembler et intégrer ces pièces librement.
L'exception est un mécanisme de gestion des erreurs en Java. Il est également basé sur une réflexion orientée objet. Les erreurs sont abstraites en objets puis traitées. Ce qui nécessite une attention particulière ici, c'est l'utilisation de plusieurs mots-clés liés aux exceptions, essayez, attrapez, enfin, lancez , jette.