seria 3 iia2 2011_2012

5
SERIE IIA2 JAVA Exercice 1 – 1. On considère la classe définie par : class A { static int i; } a- Combien de mémoire consommera le code suivant. Expliquer par un schéma. b- Quel est le résultat affiché par le code ci-dessus (inséré dans un main): A a=new A(); A b=new A(); a.i=10; b.i=12; System.out.println(a.i); Exercice 2 – Pour les classes Machin et Bidule définies comme suit: abstract class Machin { public abstract int f(); public int g() {return (6);} } class Bidule extends Machin { public int f() {return(2); } public int g() {return (4); } } a- Le code JAVA suivant va-t-il compiler correctement ? Expliquer b- Si oui que va t-il afficher ? Expliquer class Test{ public static void main(String [] args){ Bidule b=new Bidule(); Machin m =new Bidule(); System.out.println(b.f()*m.g());}} Saloua Ben Yahia Page 1 sur 5

Upload: amel-morchdi

Post on 18-Jun-2015

665 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Seria 3 iia2 2011_2012

SERIE IIA2 JAVA

Exercice 1 –

1. On considère la classe définie par :

class A {static int i;}

a- Combien de mémoire consommera le code suivant. Expliquer par un schéma. b- Quel est le résultat affiché par le code ci-dessus (inséré dans un main):

A a=new A(); A b=new A();a.i=10; b.i=12;System.out.println(a.i);

Exercice 2 –

Pour les classes Machin et Bidule définies comme suit:

abstract class Machin {public abstract int f();public int g() {return (6);}}

class Bidule extends Machin {public int f() {return(2); }public int g() {return (4); }}

a- Le code JAVA suivant va-t-il compiler correctement ? Expliquerb- Si oui que va t-il afficher ? Expliquer

class Test{public static void main(String [] args){Bidule b=new Bidule(); Machin m =new Bidule();System.out.println(b.f()*m.g());}}

Problème

L’objet de cette application est de gérer un service de transport en commun.Une ville souhaite une application permettant d’afficher la liste des services de transport en commun dont elle dispose ainsi que la représentation spatiale des stations.

La ville dispose de différents types de moyen de transport que l’on divisera en deux catégories. La pre-mière concerne les moyen de locomotion sur rails contenant des métropolitains, des trains et des tramway. La deuxième concerne les moyens de locomotions sur route, c’est à dire des bus. Chacun des moyens de

Saloua Ben Yahia Page 1 sur 4

Page 2: Seria 3 iia2 2011_2012

transport à un numéro indépendant. Les métropolitains et les trains ont plusieurs wagons. Les bus une ca-pacité de réservoir.

Chaque moyen de locomotion part d’un terminal de départ, s’arrête à série de Station, arrive à un terminal d’arrivée. Toutes les stations ont un nom et un numéro. On a établit la hiérarchie des classes pour cette application. Les classes soulignées sont abstraites (Object, Transport, TransportSurRoute,TransportSurRail).

Partie 1 (4.5pt)

Dans la suite, utiliser les noms des classes, des variables ou des méthodes qui vous sont donnés.

Remarque : le type des variables est laissé à votre choix, mais vous veillerez à ce qu’il soit réaliste par rapport à l’application.

Remarque : pour simplifier l’écriture, les attributs sont private et les get/set sont supposés existants. De ce fait, on ne vous demande de ne pas les écrire mais de supposer toujours qu’ils existent.

Question 1 : (1.5 points) Définir une classe Station qui correspond à une station d’arrêt d’un moyen de transport. Elle sera situé à endroit dans la ville, que l’on représentera par des coordonnées entières (x,y). Chaque station aura un nom et un numéro. Ecrire un seul constructeur avec paramètres et sa méthode toS-tring qui affichera la description de la station sous la forme :

Station Le Passage n°1 est à la position 100:200

Question 2 : (1.5 points) Définir une classe Terminal qui hérite de la classe Station. Elle correspond à une station de départ ou d’arrivée. Elle n’a aucune caractéristique en plus autre que celles dont elle hérite. Ecrire le constructeur correspondant ainsi que sa méthode toString. La méthode toString de Terminal devra re-utiliser la méthode de la classe Station. Elle produira l’affichage d’un terminal sous la forme:

Saloua Ben Yahia Page 2 sur 4

Page 3: Seria 3 iia2 2011_2012

Terminal : Station Gare n°3 est à la position 150:280

Question 3 : (1.5 points) Soit la classe Transport

//Classe qui définit un moyen de transportabstract class Transport {//variable d’instanceint numero;//numero du transport//ConstructeurTransport(int n){numero=n;}//Methode toStringpublic String toString(){

return "Transport n°" + numero + "\n";}

}

L’instruction ci-dessous compilera t-elle correctement ? Si oui quel affichage va-t-elle produire ? Justifiez votre réponse.

Transport monPremierTransport = new Transport(1);

Partie 2 (7.5 pts)

On considère donné le code Java du reste classes TransportSurRail, TransportSurRoute,Bus,Metro, Train,Tramway.

On veut maintenant définir une ligne de transport de metro. Chaque ligne est référencée par une lettre et une seule (On ne peut donc avoir que 26 lignes de transport au total). Chacune a un terminal de départ et un terminal d’arrivée. Elles desservent de plus une liste de stations spécifiques (au maximum 20).

Question 4 : (1 pt) Dessiner le diagramme UML représentant la relation entre la classe Ligne et Station

Question 5 : (1 points) Ecrire uniquement la déclaration des variables (les attributs) de la classe Ligne

Question 6 : (1 points) Ecrire le constructeur de la classe Ligne de manière à respecter l’instanciation suivante :

Terminal departA=new Terminal("Depart A",10,5);Terminal arriveeA=new Terminal("Arrivee A",234,53);Ligne ligneA=new Ligne(‘A’, departA,arriveeA);

Question 7 : (1.5 points)

Saloua Ben Yahia Page 3 sur 4

Page 4: Seria 3 iia2 2011_2012

Rajouter les méthodes public void addStation(Station s) à la classe Ligne de manière à ce qu’elle ajoute une station à la classe. Cette méthode doit afficher des messages d’erreur si on ajoute trop de stations.

Question 7 : (1.5 pts) Dans la classe Ligne, ajouter une méthode void existeSta-tion(Station s) qui vérifie que la station passée en paramètre est bien sur cette ligne et affiche un message d’erreur sinon.

Question 8 : (1.5 points)

On a décidé de rajouter à la classe Transport la méthode suivante.

abstract int consommationEnergetique() ;

a - Que faut-il faire et dans qu’elles classes faut-il le faire pour que les classes de l’application compilent à nouveau correctement ? (ne pas écrire de code)b - Une fois les corrections apportés, le code suivant est il correct à la compilation? Expliquez. Si le code est correct expliquer le résultat attendu à l’exécution (Sans donner l’affichage exact).

Transport [ ] tab=new Transport[10] ;tab[0]=new Metro(1,2);//La classe Metro existe et possède bien un cst 2-args entierstab[1]=new Bus(2); //La classe Bus existe et possède bien un cst 1-args entierSystem.out.println(tab[0].consommationEnergetique());System.out.println(tab[1]. consommationEnergetique());

Saloua Ben Yahia Page 4 sur 4