E2I- 4 (option HF) CONTRÔLE JAVA 1



Documents pareils
Programmation par les Objets en Java

Cours 1: Java et les objets

Package Java.util Classe générique

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

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

Programmation en Java IUT GEII (MC-II1) 1

Programmer en JAVA. par Tama

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

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

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

Corrigé des exercices sur les références

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

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Projet de programmation (IK3) : TP n 1 Correction

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

Java Licence Professionnelle CISII,

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Auto-évaluation Programmation en Java

Utilisation d objets : String et ArrayList

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmation Orientée Objet

TP1 : Initiation à Java et Eclipse

Programmation Objet I

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

PROGRAMMATION PAR OBJETS

as Architecture des Systèmes d Information

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

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

TD/TP PAC - Programmation n 3

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

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

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

TP, première séquence d exercices.

TD/TP PAC - Programmation n 3

Exercices sur les interfaces

Java c est quoi? Java pourquoi?

Langage Java. Classe de première SI

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

Java 1.5 : principales nouveautés

Programmation avec des objets : Cours 7. Menu du jour

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

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

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

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Programmation Par Objets

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

Solutions du chapitre 4

Threads. Threads. USTL routier 1

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

Une introduction à Java

Chapitre VI- La validation de la composition.

Java Licence Professionnelle CISII,

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

2. Comprendre les définitions de classes

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

Programme Compte bancaire (code)

LOG4430 : Architecture logicielle et conception avancée

F. Barthélemy. 17 mai 2005

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

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

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

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

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

INF 321 : mémento de la syntaxe de Java

Classe Interne, Anonyme & Enumération

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Jacques Lonchamp. Conception. d applications en Java/JEE. Principes, patterns et architectures

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

Corrigés des premiers exercices sur les classes

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

Interfaces graphiques avec l API Swing

Design patterns. Design patterns - définition. Design patterns - avantages

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

Apprendre Java en 154 minutes

Flux de données Lecture/Ecriture Fichiers

Initiation à JAVA et à la programmation objet.

TP1. Outils Java Eléments de correction

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 )

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Développement Logiciel

Bases Java - Eclipse / Netbeans

Remote Method Invocation en Java (RMI)

Synchro et Threads Java TM

Machines virtuelles fonctionnelles (suite) Compilation ML Java

OpenPaaS Le réseau social d'entreprise

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

Introduction au langage Java

Chapitre V. Les classes : Object, Vector, etc.

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

Remote Method Invocation (RMI)

Remote Method Invocation Les classes implémentant Serializable

Programmation Objet Java Correction

INITIATION AU LANGAGE JAVA

TP1 : Initiation à Java et Eclipse

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Transcription:

E2I- 4 (option HF) CONTRÔLE JAVA 1 Corrigé 1. Les données de type char sont codées en java comme : un octet (code ASCII) deux octets (code ASCII) un octet (code unicode) X deux octets (code unicode) un ou deux octets selon l application Aucune des réponses ci-dessus n est valable 2. Pour exécuter une application écrite en java et compilée sous Linux dans un ordinateur fonctionnant sous Windows on doit : Recompiler les sources originales Changer légèrement les sources et les recompiler Réécrire le programme pour l adapter au nouveau système X Copier les binaires qui peuvent être exécutés sans changement Installer un plugin de conversion Aucune des réponses ci-dessus n est valable 3. Pour toute classe, un constructeur par défaut (créé par le compilateur), existe dans les cas suivants : Dans tous les cas X Si il n y a pas d autre constructeur de défini Si il y a au moins un autre constructeur de défini Jamais, il faut le définir Si la classe comporte une méthode main Quand la classe est publique 4. On a la variable String sb=new String("Bonjour"); Lesquelles de ces expressions renvoient la valeur true? sb="bonjour" sb.equals("bonjour") sb=="bonjour" sb=="bonjour" X sb.equalsignorecase("bonjour") 1

5. Considérer la définition de la classe public class Q{ int [] tab= new int[10]; Q(){ for(int i=0; i<10; i++) tab[i]=0; assignedeux(tab,3); System.out.println( "tab[3]="+tab[3]); public void assignedeux(int tab[], int i){ tab[i]=2; public static void main(string[] args){ Q monapp= new Q(); Imprime : tab[3]=0 X Imprime : tab[3]=2 Imprime : tab[3]=3 Imprime : tab[3]=null Aucune des réponses ci-dessus n est valable 6. On a la classe suivante : public class A extends B{... Cela signifie que (une seule réponse) : A a un B A est relié à un B A dépends de B A exclue un B A précède un B X A est un B 7. Pour appeler un constructeur de la classe de base à partir de la classe dérivée on utilise le mot clé static this extends X super implements Aucune des réponses ci-dessus n est valable 8. La classe TroupeauDeVaches est une classe dérivée de la classe Mammifère Vache Quadrupède Mouton FermeAgricole X Aucune des classes énoncées ci-dessus 2

9. La classe B est une classe dérivée de A et la classe C est dérivée de B. Nous avons : A a= new A(); B b = new B(); C c = new C(); if(c instanceof A) System.out.println("Le test est vrai"); else System.out.println("Le test est faux"); imprime : X Le test est vrai Le test est faux Donne une exception 10. Ecrire un programme qu initialise un tableau de 100 entiers multiples de 4 et l affiche à l écran 10 nombres par ligne public class Tab4 { public static void main(string[] args) { int tab4[] = new int[100]; int j = 0; for (int i = 0; i < 100; i++) { tab4[i] = j; j += 4; for (int i = 0; i < 100; i++) { System.out.print(tab4[i] + " "); if((i+1)%10==0)system.out.println(); 11. Ecrire la classe Point qui décrit un point géométrique dans le cadre d un programme de dessin. On se limitera aux dessins sur un plan. Écrivez un constructeur, les méthodes d accès et au moins deux autres méthodes dont la méthode tostring() ; public class Point { private int x, y; public Point(int x, int y) { this.x = x; this.y = y; public int getx() { return x; public void setx(int x) { this.x = x; 3

public int gety() { return y; public void sety(int y) { this.y = y; public void decale(int dx, int dy){ x+=dx; y+=dy; public boolean estegalea(point p) { return x == p.x && y == p.y; public boolean estagauchede(point p){ return x<p.x; public String tostring() { return "Point{" + "x=" + x + "y=" + y + ; 12. Ecrire la classe Polygone utilisant la classe Point définie ci-dessus. Écrivez, ici aussi, un constructeur, les méthodes d accès et au moins deux autres méthodes dont la méthode tostring() ; public class Polygone { private Point mespoints[]; private int nbpoints=0; public Polygone() { mespoints= new Point[100]; public Point[] getmespoints() { return mespoints; public void setmespoints(point[] mespoints) { this.mespoints = mespoints; public int getnbpoints() { return nbpoints; public void setnbpoints(int nbpoints) { this.nbpoints = nbpoints; public boolean addpoint(point p){ if(nbpoints==100) return false; mespoints[nbpoints]=p; 4

return true; public String tostring() { String s="polygone{\n"; for(int i=0; i<nbpoints; i++){ s+=mespoints[i]+"\n"; s+="\n"; return s; 5

E2I-3 (option M.O. et F.P) TP Java n o 4 (Contrôle) Seuls documents admis : des notes manuscrites Attention : Créez un sous-répertoire avec votre NOM dans un répertoire nommé reponse dans le Bureau. Déposez dans ce répertoire uniquement les sources (fichiers.java ou xml) qui constituent vos réponses. Seulement les sources présentes dans ce repertoire seront corrigés. Le Sac Postal Un sac postal contient un ensemble de lettres et de colis simples. Le poids totale du sac ne peux exceder 30 kilogrammes. On veut savoir le poids total du sac, le montant total des affranchissements et on veut également imprimer les caractéristiques des lettres et colis contenues dans le sac postal. Une lettre est un envoi qui se caractérise par son poids en grammes ( 200g) et par son adresse de destination. L affranchissement d une lettre se calcule grâce au tableau suivant : Poids (grammes) 0-19 20-49 50-99 100-149 150-200 tarif (euros) 0,5 0,75 1 2 2,5 Une lettre recommandée est une lettre dotée d un taux de recommandation parmi trois possibles : taux R1 R2 R3 prix supplémentaire 2,7 3,2 4 Une lettre recommandée avec accusé de réception est une lettre recommandée dotée d une adresse de retour. L affranchissement est celui d une lettre recommandée majoré d une surtaxe uniforme de 1 euro. Un colis simple est un envoi qui a une adresse de destination et un expediteur. Il pesse plus de 200 g et moins de 2000 g. Il ne peut pas être recommandé ni avoir d accusé de réception (il existent d autres types d envoi qui ne vont pas dans notre sac postal). L affranchissement est proportionel au poids et fixé à 10 centimes le 100 grammes avec un prix de base de 2 euros 50 pour les premiers 200g. 1. ( barème indicatif : 5 points ) Faire le diagramme UML des classes correspondantes à envoi, lettre, lettre recommandée, lettre recommandée avec accusé de réception, colis simple et sac postal. Vous pouvez aussi ajouter d autres classes auxiliaires si vous le souhaitez. Vous pouvez le faire soit à l aide du logiciel umbrello ou simplement sur papier libre. N oubliez pas de le rendre à la fin ou de sauver le diagramme umbrello dans le répertoire de réponses. 2. ( barème indicatif : 3 points ) Ecrire la ou les classes pour décrire une lettre et faire un programme de test qui : (a) Crée une lettre (b) L affiche à l écran (c) Calcule le prix de son affranchissement el l affiche à l écran 3. ( barème indicatif : 3 points) Ecrire les classes pour les lettres recommandées sans et avec accusé de réception. Completez le programme de test pour : (a) Créer une lettre recommandée et une lettre recommandé avec accusé de réception (b) Les afficher à l écran, avec leur affranchissement. 4. ( barème indicatif : 2 points) Ecrire la classe pour le colis simple. Completez le programme de test pour : (a) Créer un colis simple (b) Les afficher à l écran, avec son affranchissement. 5. ( barème indicatif : 5 points) Ecrire la classe SacPostal en prenant en compte qu un sac ne peut contenir plus de 30 Kg. Écrire un programme d application qui crée un SacPostal contenant 5 lettres de tous types, et deux colis simples, qui calcule et affiche son poids, le prix Total des affranchissements et un liste de toutes les envois que le sac contient. 6

6. ( barème indicatif : 2 points) Ajouter à la classe SacPostal une méthode qui permette de trouver une lettre d après son adresse et indiquer si elle est recommandée ou non et si elle comporte ou non un accusé de réception. 7. (Bonus) Finalement vous devez écrire une application pour gérer un sac postal. Cette application permettra (au minimum) de : Ajouter une lettre au sac Afficher le contenu du sac Calculer le poids total du sac Calculer le prix total des affranchissements des lettres du sac 7

Corrigé Envoi.java 1 2 package laposte; 3 4 /** 5 * Classe modélisant un envoi postal 6 */ 7 public abstract class Envoi { 8 9 private String adresse; 10 private double poids; 11 12 public Envoi(String adresse, double poids) { 13 this.adresse = adresse; 14 this.poids = poids; 15 16 17 /** Trouve l adresse de la lettre 18 */ 19 public String getadresse() { 20 return adresse; 21 22 23 /** Modifie l adresse de la lettre 24 */ 25 public void setadresse(string adresse) { 26 this.adresse = adresse; 8

27 28 29 /** Trouve le poids de la Lettre 30 */ 31 public double getpoids() { 32 return poids; 33 34 35 /** Donne un nouveau poids a la lettre 36 */ 37 public void setpoids(double poids) { 38 this.poids = poids; 39 40 41 abstract double getprix(); 42 43 @Override 44 public String tostring() { 45 return "adresse=" + adresse + "\n poids=" + poids + ; 46 47 Lettre.java 1 package laposte; 2 3 4 /** class modelisant une lettre postale normale 5 */ 6 public class Lettre extends Envoi{ 7 8 public Lettre( String a, double p){ 9 super(a,p); 10 11 12 13 /** Calcule le prix de la lettre 14 */ 15 public double getprix(){ 16 double tabpoids[]={20.,50.,100.,250.,500.,1000., 2000.; 17 double tabprix[]={0.5,0.75,1.,2.,2.5,3.5,4.5; 18 for (int i=0; i<tabprix.length;i++){ 19 if (getpoids() < tabpoids[i]) 20 return tabprix[i]; 21 22 return 0.; 23 ; 24 25 @Override 26 public String tostring(){ 27 return 28 "Adresse destinataire: \n"+ getadresse() +"\n"+"poids: "+getpoids()+"\n"; 29 30 LettreRecommandee.java 1 2 package laposte; 3 4 public class LettreRecommandee extends Lettre { 5 6 int tauxr; 7 8 public LettreRecommandee(String a, double p, int t) { 9 super(a, p); 10 tauxr = t - 1; 11 12 13 public double getprix() { 14 double tabprixsup[] = {2.7, 3.2, 4.0; 15 return super.getprix() + tabprixsup[tauxr]; 16 9

17 18 public String tostring() { 19 return super.tostring() + "Taux recommande: R" 20 + (tauxr + 1) + "\n"; 21 22 LettreAR.java 1 package laposte; 2 3 public class LettreAR extends LettreRecommandee { 4 5 private String adresseretour; 6 7 public LettreAR(String a, double p, int tr, String ar) { 8 super(a, p, tr); 9 adresseretour = ar; 10 11 12 public void setadresseretour(string ar) { 13 adresseretour = ar; 14 15 16 17 public String getadresseretour() { 18 return adresseretour; 19 20 21 @Override 22 public double getprix() { 23 return super.getprix() + 1.; 24 25 26 @Override 27 public String tostring() { 28 return super.tostring() + "Adresse retour:\n" + adresseretour + "\n"; 29 30 ColisSimple.java 1 2 package laposte; 3 4 /** 5 * 7 */ 8 public class ColisSimple extends Envoi{ 9 String expediteur; 10 public ColisSimple(String adresse, double poids, String ar) { 11 super(adresse, poids); 12 expediteur=ar; 13 14 15 @Override 16 double getprix() { 17 return (int)((getpoids()-200.)/10)*.1+2.5; 18 19 20 @Override 21 public String tostring() { 22 return "Colis Simple:\n" + "Adresse destinataire: \n"+ 23 getadresse() +"\n"+"poids: "+getpoids()+"\nexpediteur=" + expediteur+"\n" ; 24 25 SacPostal.java 1 package laposte; 2 3 import java.util.arraylist; 4 5 /** Class modelisant un sac postal composé 10

6 des Lettres et de Colis Simples 7 */ 8 public class SacPostal { 9 10 ArrayList<Envoi> sac; 11 double poidstotale; 12 13 public SacPostal() { 14 sac = new ArrayList(); 15 16 17 /** Calcule le poids total des lettres presentes dans le sac 18 * @return Le poids total des lettres du sac 19 */ 20 public double getpoidstotal() { 21 return poidstotale; 22 23 24 25 /** Calcule le prix total des lettres presentes dans le sac 26 * @return Le prix total des lettres du sac 27 */ 28 public double getprixtotal() { 29 double somme = 0; 30 for (int i = 0; i < sac.size(); i++) { 31 somme += sac.get(i).getprix(); 32 33 return somme; 34 35 36 37 /** Ajouter une Lettre au sac 38 * @param l la lettre a ajouter 39 * @return vrai si l ajout a ete fait faux dans le cas contraire 40 */ 41 public boolean addenvoi(envoi l) { 42 if (poidstotale+l.getpoids() <30000) { 43 sac.add(l); 44 return true; 45 else { 46 return false; 47 48 49 50 /** Initialise le sac avec 6 lettre de tous types 51 cette méthode est appellée par le constructeur 52 */ 53 public void initsac() { 54 55 Envoi l; 56 57 l = new Lettre("Jojo la Menace \n" 58 + "1,rue Mozart\n 91678 Fresnes", 20.); 59 addenvoi(l); 60 l = new LettreRecommandee("Pierre Dupont\n" 61 + "5, rue du Bach\n 75031 Paris", 10., 1); 62 addenvoi(l); 63 l = new Lettre("Miguel Gomez\n15, rue d Espagne\n" 64 + " 63219 Nantes", 30.); 65 66 addenvoi(l); 67 l= new ColisSimple("Patrice Lelay 15 rue de la Convention,"+"" 68 + " 93300 Aubervillliers", 500, "Anonyme Boulevard Inconnu 1000 Nullpart"); 69 addenvoi(l); 70 l = new LettreRecommandee("Arthur Rambaud\n" 71 + "21,place Jussieu\n 75231 Paris", 200., 2); 72 addenvoi(l); 73 l = new LettreAR("Albert Camus\n14, rue de la Poste \n" 74 + " 75005 Paris ", 1400, 2, 75 "Marcel Lejuge\n11 rue des escargots\n" 76 + "45098\nLa Follie sur Seine"); 11

77 addenvoi(l); 78 l = new Lettre("Edith Piaf\n71,rue Bethoven\n 91000 Melun", 5.); 79 addenvoi(l); 80 81 82 83 84 /** Creation d une chaine contenant les informations de 85 toutes les lettres presentes dans le sac 86 */ 87 public String tostring() { 88 String s = ""; 89 for (int i = 0; i < sac.size(); i++) { 90 s += sac.get(i).tostring() + "\n"; 91 92 93 return s; 94 95 96 public Envoi trouveadresse(string ad){ 97 for(int i=0; i< sac.size();i++) 98 { 99 Envoi e=sac.get(i); 100 if( e.getadresse().equals(ad)){ 101 return e; 102 103 104 105 return null; 106 107 108 LaPoste.java 1 package laposte; 2 3 /** 4 * 5 * @author jorge 6 */ 7 public class LaPoste { 8 9 public static void main(string[] args) { 10 11 /* Deuxième point */ 12 Lettre l1 = new Lettre("Vincent Monami\n13 rue Detente, Monaco", 20.); 13 System.out.print("Lettre :" + l1); 14 System.out.println("prix : " + l1.getprix() + "euros\n"); 15 16 /* Troisième point */ 17 LettreRecommandee lr = new LettreRecommandee("Administration impots\n" 18 + "32 rue de la Dette, 75101 Paris", 120., 2); 19 System.out.print("Lettre R :" + lr); 20 System.out.println("prix : " + lr.getprix() + "euros\n"); 21 22 LettreAR lrar = new LettreAR("Syndic Copropriété\n 32 rue de la Justice," 23 + "21380 NUllepart", 200., 3, 24 "21 rue des Violettes, Fleury Merogis"); 25 System.out.print("Lettre AR :" + lrar); 26 System.out.println("prix : " + lrar.getprix() + "euros\n"); 27 28 /*Quatrième point */ 29 30 SacPostal sp = new SacPostal(); 31 sp.initsac(); 32 sp.addenvoi(l1); 33 sp.addenvoi(lr); 34 sp.addenvoi(lrar); 35 sp.addenvoi(new LettreRecommandee("Mr X, 123 rue des Radio," 36 + "France Inter", 300., 1)); 37 sp.addenvoi(new LettreAR("Pere Noel, rue des Plages, Laponie", 150., 3, 12

38 "Kevin Nivek, 12 rue des Reves, Saint Malo")); 39 40 41 System.out.println("Poids total : " + sp.getpoidstotal() + "g"); 42 System.out.println("Prix total : " + sp.getprixtotal() + "euros"); 43 System.out.println(sp); 44 String ad = "Pere Noel"; 45 Envoi l = sp.trouveadresse(ad); 46 if (l!= null) { 47 System.out.println("Trouvée :" + l); 48 if (l instanceof Lettre) { 49 System.out.print("C est une Lettre"); 50 51 if (l instanceof LettreRecommandee) { 52 System.out.print(" recommandée"); 53 54 if (l instanceof LettreAR) { 55 System.out.print(" avec AR"); 56 57 if (l instanceof ColisSimple){ 58 System.out.print (" Colis Simple"); 59 60 System.out.println(); 61 62 else { 63 System.out.println("Lettre pour :" + ad + " non trouvée!"); 64 65 66 67 68 69 13