Vous êtes sur la page 1sur 3

Série n°3(SMI5, LPI)

On considère un parc de moyens de transport constitué par:

 Des voitures Véhicule


 Des camions
 Des autocars

Voiture Camion Autocar

Le problème répondre aux critères suivants:


 Le parc ne doit pas dépasser un nombre limité de voitures (nbMax Voitures), un
nombre limité de camion (nbMaxCamions), un nombre limité d'autocars
(nbAutocars).
 Chaque type de véhicule possède un matricule incrémenté selon le type
 Pendant la création d'un véhicule, il faut préciser l'année du modèle.
 Chaque type de véhicule possède une capacité de réservoir
 Chaque véhicule possède une quantité de carburant
 Les véhicules sont destinés à la vente
 Les véhicules peuvent être en panne ou non

Questions

1- Donnez le diagramme des classes


2- Créer le code java de la classe Véhicule
3- Créer le code java de la classe Camion
4- Créer le code java de la class Voiture
5- Créer le programme test Permettant de créer des objets de type Voiture et
camion et verifiez les divers niveaux de protections( public, private et
protected)
6- On souhaite sauvegarder les objets voiture dans un fichier en utilisant la
sérialisation
a. Ecrire le code java correspondant à la sérialisation des objets
voitures
b. Ecrire le code java correspondant à la de-sérialisation des objets
voitures.
Correction:

import java.util.*;
import java.io.*;
public abstract class Vehicule implements Serializable{
//attributs
private String matricule;
private int modele;
private boolean vendu;
private boolean panne;
private float carburant;
// constructeur
public Vehicule(int _modele){modele=_modele;}
public void setCarburant(float c){carburant=c;}
public float getCarburant(){return carburant; }
public void setMatricule (String m){matricule=m;}
public String getMatricule (){return matricule;}
public int getModele(){return modele;}
public boolean getPanne(){return panne;}
public void setPanne(boolean p){panne=p;}
public boolean getVendu(){ return vendu;}
public void setVendu(boolean p){vendu=p;}

}
import java.util.*;
import java.io.*;

public class Voiture extends Vehicule implements Serializable


{private static int nbMaxVoitures =10;
private static int capacite =36;
private static int nbVoitures=0;

private Voiture (int m) // le constructeur est private pour empecher la création


d'objet avant de s'assurer qu'il y'a de la place dans le parc
{super(m);
++nbVoitures;
this.setMatricule("voiture maticule : "+nbVoitures);
}
public static Voiture CreerVoiture(int m)
{if (nbVoitures<nbMaxVoitures)
return new Voiture(m);
else System.out.println("Nombre max de voiture est atteint et le parc est fermé");
return null;
}
public void addCarburant(float c)
{if ((getCarburant()+c)<= capacite) setCarburant(getCarburant()+c);
else{ float max_carburant_ajout= capacite-getCarburant();
this.setCarburant(capacite);
System.out.println("la quantite :"+(c-max_carburant_ajout)+" a deborder");
}}
public String toString(){return "Voiture matricule =
"+this.getMatricule()+"Carburant="+this.getCarburant();}
}
import java.io.*;
public class Test{
public static void main(String[] args)throws IOException
{
// modifieur static caractérise la classe c-àd qu'on peut appliquer la méthodes
Créer sur la classe sans créer l'objet
Voiture v1=Voiture.CreerVoiture(2013);
Voiture v2=Voiture.CreerVoiture(2014);
V1. Modele =3 //erreur car model esr private changer l'attribut à protected et voir
v1.addCarburant(30);
System.out.println(v1.toString());
v1.setPanne(true);
//****************Serialisation***********************************************
FileOutputStream f= new FileOutputStream("garage");
ObjectOutputStream o=new ObjectOutputStream(f);
o.writeObject(v1);
o.writeObject(v2);
o.close(); }
}
//************************deserilisation****************************************
import java.io.*;
public class Test2{
public static void main (String [] args) throws IOException,
ClassNotFoundException {
FileInputStream f= new FileInputStream ("garage");
ObjectInputStream o=new ObjectInputStream(f);
Voiture voiture1=(Voiture)o.readObject();
Voiture voiture2=(Voiture)o.readObject();
o.close();
System.out.println(voiture1.toString());}}

Vous aimerez peut-être aussi