ING 1 - POO Java année TD-TP n 7

Documents pareils
Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Projet de programmation (IK3) : TP n 1 Correction

Programme Compte bancaire (code)

Corrigé des exercices sur les références

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Package Java.util Classe générique

Exercices sur les interfaces

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Programmation par les Objets en Java

TD/TP PAC - Programmation n 3

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Tp 1 correction. Structures de données (IF2)

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Java Licence Professionnelle CISII,

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Chapitre 10. Les interfaces Comparable et Comparator 1

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

TD3: tableaux avancées, première classe et chaînes

Langage Java. Classe de première SI

TD/TP PAC - Programmation n 3

Programmer en JAVA. par Tama

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Corrigés des premiers exercices sur les classes

Premiers Pas en Programmation Objet : les Classes et les Objets

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

TP1 : Initiation à Java et Eclipse

Auto-évaluation Programmation en Java

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Cours 1: Java et les objets

ACTIVITÉ DE PROGRAMMATION

Plan du cours. Historique du langage Nouveautés de Java 7

Programmation Par Objets

Utilisation d objets : String et ArrayList

Programmation avec des objets : Cours 7. Menu du jour

Objets et Programmation. origine des langages orientés-objet

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

as Architecture des Systèmes d Information

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Remote Method Invocation Les classes implémentant Serializable

Initiation à JAVA et à la programmation objet.

RMI le langage Java XII-1 JMF

TD2 Programmation concurrentielle

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Héritage presque multiple en Java (1/2)

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

TP, première séquence d exercices.

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Threads. Threads. USTL routier 1

Synchro et Threads Java TM

Java - la plateforme

Remote Method Invocation (RMI)

Serveur d'archivage 2007 Installation et utilisation de la BD exist

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Généralités sur le Langage Java et éléments syntaxiques.

Programmation Objet I

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

PROGRAMMATION PAR OBJETS

Flux de données Lecture/Ecriture Fichiers

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Calcul Parallèle. Cours 5 - JAVA RMI

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Recherche dans un tableau

Un ordonnanceur stupide

Classe Interne, Anonyme & Enumération

Support de cours et TD Programmation Orientée Objet

4. Groupement d objets

Dis papa, c est quoi un bus logiciel réparti?

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Bases Java - Eclipse / Netbeans

INITIATION AU LANGAGE JAVA

Une introduction à Java

Programmation Orientée Objet Java

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Master d Informatique Corrigé du partiel novembre 2010

Utiliser Java sans BlueJ

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

INF 321 : mémento de la syntaxe de Java

Environnements de développement (intégrés)

Desktop Intégration. Rémi Forax

Programmation Objet Java Correction

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Java Licence Professionnelle CISII,

Notion de thread (1/2)

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Notes de cours Practical BigData

Programmation Orientée Objet application au langage Java Version Novembre 2007

Java 1.5 : principales nouveautés

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Transcription:

ING 1 - POO Java année 2015-2016 TD-TP n 7 Une entreprise de transport de marchandises et de passagers décide de demander aux étudiants d'ing1 de l'aider pour mettre sous forme d'objets sa flotte de véhicules. Cet exercice va nous permettre de revenir sur les concepts d'héritage. Si ce n'est pas précisé, tous les attributs de vos méthodes auront comme mode d'accès «private» Nous allons démarrer à partir d'une super classe appelée Véhicule qui contiendra les attributs suivants : l'immatriculation du véhicule sous forme de String ; le poids à vide du véhicule sous forme d'entier ; une année d'achat sous forme d'entier ; Nous allons spécialiser cette classe. Certains véhicules peuvent transporter des marchandises dans ce cas, ils peuvent transporter une certaine charge. On distingue principalement deux types de véhicule pouvant porter une charge : les fourgonnettes les camions Les fourgonnettes ont un poids à vide de 2 tonnes et peuvent transporter au maximum 3 tonnes de marchandise. Certains limitations s'imposent dans ce cas, les fourgonnettes à vide peuvent rouler à 110 km/h mais sont limitées à 100 km/h lorsqu'elles ont une certaine charge. Les camions (pour simplifier nous n'aurons que de petits camions) ont un poids à vide de 5 tonnes et peuvent transporter dans leur remorque jusqu'à 6 tonnes de marchandise. A vide, les camions roulent à 110 km/h, à 90 km/h pour une charge comprise entre 0 et 3 tonnes et 80 km/h pour une charge supérieure. De même, nous aurons des véhicules de transport de passagers. Les bus qui permettent (poids 20 tonnes) de transporter entre 1 et 50 passagers et les taxis (poids 2 tonnes) qui permettent de transporter entre 1 et 4 passagers. Pour les bus, la vitesse limite est toujours de 100 km/h et de 130 km/h pour les taxis. Q.1

Écrire votre hiérarchie des classes dont la classe mère est la classe Véhicule (a priori 5 classes en incluant la classe mère). Écrire les constructeurs dont vous avez besoin pour chacune des classes et pour chaque classe une méthode d'affichage (tostring()). Écrire une méthode public int vitessemaximale() qui retourne la vitesse maximale du véhicule. Cette vitesse maximal sera également reprise dans la méthode d'affichage tostring() de chaque classe. Par exemple, pour le fichier main suivant définissant deux camions de charge respective 3 et 5 tonnes et un taxi, vous devrez avoir le fonctionnement suivant : public class Test { public static void main(string [] args){ Camion c1 = new Camion("TA 622 JX",2000,3); Camion c2 = new Camion("TB 455 UY",2010,5); Taxi t1 = new Taxi("RD 877 HG",2000); System.out.println(c1); System.out.println(c2); System.out.println(t1); camion (poids = 5) (charge = 3) (immatriculation = TA 622 JX) (vitesse maximale = 90) camion (poids = 5) (charge = 5) (immatriculation = TB 455 UY) (vitesse maximale = 80) taxi (poids = 4) (immatriculation = RD 877 HG) (vitesse maximale = 130) Q.2 On s'intéresse maintenant à la définition d'une flotte de véhicule. Une flotte de véhicule est une ArrayList de divers véhicules. Créer une classe Flotte dont un des attributs sera une ArrayList de véhicules. Écrire les méthodes nécessaires pour y ajouter des véhicules. Écrire une méthode tostring() permettant d'afficher tous les véhicules et leurs caractéristiques de la flotte. Tester ces méthodes. Le programme main suivant vous donnera des indications : public class Test { public static void main(string [] args){ Flotte f = new Flotte(); Camion c1 = new Camion("TA 622 JX",2000,3); Camion c2 = new Camion("TB 455 UY",2010,5); Taxi t1 = new Taxi("RD 877 HG",2000); Bus b1 = new Bus("TB 468 JX",2005);

f.ajoutevéhicule(c1); f.ajoutevéhicule(c2); f.ajoutevéhicule(t1); f.ajoutevéhicule(b1); f.ajoutevéhicule(new Camion("ER 451 AU",2014,0)); System.out.println(f); Flotte de 5 véhicules camion (poids = 5) (charge = 3) (immatriculation = TA 622 JX) (vitesse maximale = 90) camion (poids = 5) (charge = 5) (immatriculation = TB 455 UY) (vitesse maximale = 80) taxi (poids = 4) (immatriculation = RD 877 HG) (vitesse maximale = 130) bus (poids = 20) (immatriculation = TB 468 JX) (vitesse maximale = 130) camion (poids = 5) (charge = 0) (immatriculation = ER 451 AU) (vitesse maximale = 110) Les véhicules peuvent fonctionner en convoi (c'est-à-dire que dans ce cas la vitesse du convoi est la vitesse minimale de tous les véhicules le composant), vous utiliserez un attribut booléen convoi pour indiquer si la flotte fonctionne ou non en convoi. Écrire une méthode vitesseflotte() qui retourne la vitesse de la flotte de véhicules, si la flotte ne fonctionne pas en convoi, vous retournerzz de manière arbitraire la vitesse de 0. Vous devrez également pouvoir positionner l'attribut convoi à vrai ou faux et calculer la vitesse de la flotte en conséquence. public abstract class Véhicule { private String immatriculation; private int annéeachat; private int poids; public Véhicule(String _immatriculation, int _annéeachat, int _poids){ immatriculation = _immatriculation; annéeachat = _annéeachat; poids = _poids; public int getpoids(){ return poids; public abstract int vitessemaximale(); public String getimmatriculation(){ return immatriculation; public class Taxi extends Véhicule {

public Taxi(String _immatriculation, int _annéeachat){ super(_immatriculation,_annéeachat,4); return 130; String res; res = "taxi (poids = " + getpoids() + ") (immatriculation = " + getimmatriculation() + ") (vitesse maximale = " + vitessemaximale() + ")"; public class Bus extends Véhicule { public Bus(String _immatriculation, int _annéeachat){ super(_immatriculation,_annéeachat,20); return 130; String res; res = "bus (poids = " + getpoids() + ") (immatriculation = " + getimmatriculation() + ") (vitesse maximale = " + vitessemaximale() + ")"; public class Camion extends Véhicule { private int charge; public Camion(String _immatriculation, int _annéeachat, int _charge){ super(_immatriculation,_annéeachat,5); charge = _charge; if (charge == 0) return 110; if (charge <= 3) return 90; return 80; String res;

res = "camion (poids = " + getpoids() + ") (charge = " + charge + ") (immatriculation = " + getimmatriculation() + ") (vitesse maximale = " + vitessemaximale() + ")"; public class Fourgonnette extends Véhicule { private int charge; public Fourgonnette(String _immatriculation, int _annéeachat, int _charge){ super(_immatriculation,_annéeachat,2); charge = _charge; if (charge == 0) return 110; else return 100; import java.util.arraylist; public class Flotte { private ArrayList<Véhicule> flotte; private boolean convoi; public Flotte(){ flotte = new ArrayList<Véhicule>(); convoi = false; public void ajoutevéhicule(véhicule v){ flotte.add(v); public void positionneconvoi(){ convoi = true; public void enleveconvoi(){ convoi = false; public int vitesseflotte(){ if (!convoi) return 0; int vitesse; int min = flotte.get(0).vitessemaximale(); for(int i = 0; i < flotte.size(); i++){ vitesse = flotte.get(i).vitessemaximale();

if (vitesse < min) min = vitesse; return min; String res="flotte de " + flotte.size() + " véhicules\n"; for(int i = 0; i < flotte.size(); i++) res += flotte.get(i).tostring() + "\n";