Home
Corrigés des exercices
Contents
1. public void dormir while true Console Write RRRR PSSSS ge ws Thread Sleep 1000 public void seReveiller threadDormeur Abort Console WriteLine Bonjour je m appelle et je suis reveille public void continueADormir Console WriteLine Aujourd hui c est nom dimanche Je reste couch 28 CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercices 19 1 1 Sauvegarde sur fichier plat travers les streams 2 S rialisation 3 Base de donn es relationnelles 4 Base de donn es orient e objet Exercice 19 2 Selon la nature de ce que l on sauve nombre string et la mani re dont on le sauve avec tampon ou sans tampon plusieurs sous classes de Stream peuvent tre envisag es Exercice 19 3 Le filtre appose des additions aux streams selon la nature de ce que l on sauve de mani re adapter la mani re de le sauver C est l application du design pattern Decorator Exercice 19 4 Car on ne sauve pas que l objet en question mais galement toute la s rie des objets r f r s par lui et cela de mani re encha n e d objets en objets Exercice 19 5 Il ne sert rien de sauvegarder certains objets qui n ont de raison d tre que temporaire et dans un contexte d ex cution donn C est le cas par exemple des objets de type Thread ou Strea
2. 0 l eteint class Lampe private boolean allume L a ampe llume false public void allume allume true public void eteint allume false public class PrincipalLampe public static void main String args Lampe 1 new Lampe Interrupteur i new Interrupteur 1 i allume Exercice 4 2 La relation de d pendance cr e un lien temporaire entre les deux classes qui n a d existence que le temps d un envoi de message alors que l association fait de ce lien un v ritable attribut de classe On privil giera la d pendance lorsque l envoi de message ne doit se faire que pour une ou deux m thodes de l objet exp diteur et n a pas lieu d tre durant toute la dur e de vie de ces objets exp diteurs Exercice 4 3 class ExpediteurAssociation Destinataire d ExpediteurAssociation Destinataire d this d d public void envoi d message class ExpediteurDependance ExpediteurDependance public void envoi Destinataire d d message class Destinataire public void message Exercice 4 4 class Expediteur private Destinatairel dl Expediteur Destinatairel dl this dl dl public void envoi System out println expediteur envoie dl envoil class Destinatairel private Destinataire2 d2 Destinatairel Destinataire2 a2 this d2 d2 public void envoil System out print
3. occuper le syst me d exploitation y compris des siens propres CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercices 18 1 18 2 Dans la communication de type v nement l exp diteur n a pas conna tre explicitement ses destinataires Ces derniers peuvent simplement s inscrire de fa on tre inform des modifications d tat d un objet qui est susceptible de les int resser Lorsque cette modification se produit et quasiment l insu de l exp diteur les destinataires en seront inform s et feront de cette information ce qui leur chante Exercice 18 3 En Java cela donnerait import java util public class Lotterie extends Observable private int numero public Lotterie numero 0 public static void main String args Lotterie 1 new Lotterie Joueur j new Joueur 25 l addObserver j l demarre public int getNumero return numero public void demarre for int i 0 i lt 50 i numero System out println i setChanged notifyObservers class Joueur implements Observer private int numero Joueur int numero this numero numero public void update Observable o Object arg if Lotterie o getNumero numero System out println Wouahhhhhh J ai gagn Exercice 18 4 En C cela donnerait usi
4. Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION 17 Pour avoir cette alternance il suffit de mettre un sleep 10 l int rieur de la boucle et ceci dans un try Batch Exercice 17 2 Il suffit de synchroniser la methode imprime public synchronized void imprime String s Exercice 17 5 Pour que les sessions transactionnelles des clients puissent tre trait es simultan ment Exercice 17 6 Car elle ne concerne toujours que le seul thread en cours elle n a donc pas lieu de d ex cuter sur des objets divers Elle ne s ex cute toujours qu m me un seul objet Exercice 17 7 Bien videmment de mani re ce que cet acc s soit coh rent et qu un acc s concurrent ne vienne pas interrompre un pr c dent qui d buterait les changements mais sans avoir fait toutes les mises jour que ces changements entra nent laissant la base de donn es dans un tat incorrect Exercice 17 8 Car c est le syst me d exploitation qui s occupe de lallocation des dur es d ex cution des diff rents threads Et cette dur e d pend galement en partie de la situation de tous les autres threads dont doit s
5. Voiture private int vitesseChange Voiture vitesseChange 0 Voiture int vitesseChange this vitesseChange vitesseChange public class Principale public static void main String args Voiture v new Voiture 0 Exercice 2 5 Seraient statiques la vitesse maximale la m me pour tous les v hicules le nombre de vitesses le m me pour tous les v hicules la capacit du r servoir le m me pour tous les v hicules la puissance le nombre de porti res Exercice 2 6 Dans le code Java d s qu il y a cr ation d un constructeur celui ci crase d office le constructeur par d faut qui est sans argument Vous ne pouvez donc plus cr er un code en faisant un appel explicite ce constructeur l car il n existe plus Dans le code C le deuxi me constructeur s attend recevoir deux entiers et non pas un double Vous ne pouvez pas caster implicitement un double dans un entier L inverse est possible Dans le code C comme pour le code Java en l absence de constructeur par d faut sans argument cras par les deux autres la troisieme instruction ne compilera pas Exercice 2 7 Dans le code Java L attribut c est d clar non statique D s lors il ne peut tre appel dans une m thode d clar e elle comme statique Toute m thode statique ne peut faire appel qu des attributs et des m thodes d clar es galement statiques Dans le code C et
6. generics ArrayList lt Integer gt 30 Exercice 21 4 Car chaque l ment de la liste pointe vers le suivant et en C tout pointeur n cessite l utilisation explicite de En java ce n est pas n cessaire car les objets sont toujours point s par d finition aucun objet ne pouvant tre utilis par valeur ou sur la m moire pile Exercice 21 5 La premi re liste li e reprend les n uds du graphe et pour chacun une deuxi me liste li e permet d indiquer les n uds auxquels les premiers sont associ s Exercice 21 8 Le code affichera 6724975 Exercice 21 9 Le code affichera infiniment les deux chiffres 1 2
7. CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercice 16 1 Car la classe A cod e dans l ordinateur A n a nul besoin de conna tre l impl mentation de la classe B cod e dans l ordinateur B avec laquelle la premi re doit communiquer Seule la connaissance par de l interface de B permet la communication Exercice 16 2 IDL tant tr s tr s proche de C la traduction de PIDL se fait tr s naturellement et simplement en CH Exercice 16 3 RMI permet le polymorphisme et donc l association dynamique pendant l ex cution car le code des classes peut s changer entre les machines pendant l ex cution Cet change de code n est pas possible par CORBA qui doit conna tre tout la compilation Exercice 16 4 XML r sulte du besoin de s parer dans la r alisation de pages Web la pr sentation de ces pages de leur contenu informationnel XML est ce langage de description de contenu Il tait donc assez naturel de reprendre ce langage de description pour les m thodes rendues disponibles sur le Web Exercices 16 7 et 16 8 Cela est rendu possible par l existence de proxy tant du c t serveur que du c t client qui rendent transparent toute la couche transport et permet au programmeur de ne se pr occuper que de la couche logique de la raison ou ont ses classes de communiquer plut t que de la mani re mat rielle dont elles vont
8. I 6 EDITION Exercice 13 1 Car on ne serait que faire lorsque la m thode abstraite est ex cut e sur un objet instance de cette classe Il est donc tout fait logique d interdire la cr ation d objet partir d une classe abstraite Exercice 13 2 Pour la m me raison que pr c demment Que faire si l on d clenche la m thode abstraire sur un objet issu de la sous classe Exercice 13 3 C consid re que d s lors qu une m thode est d finie abstraite virtuelle pure dans une classe automatiquement celle ci en devient abstraite C n autorise pas une classe devenir abstraite sans qu au moins une m thode le soit Exercice 13 4 Car en tant abstract elle est d office virtual en ceci qu elle exige d tre red finie Exercice 13 5 abstract class MoyenDeTransport public abstract void consomme class Voiture extends MoyenDeTransport public void consomme System out println a la maniere voiture class Moto extends MoyenDeTransport public void consomme System out println a la maniere moto class Camion extends MoyenDeTransport public void consomme System out println a la maniere camion 20 Exercice 13 7 Le code Java affiche C est super C est super vivement le bar vivement la bibliothe A vos ordres chef A vos ordres chef A vos ordres chef Salut les cocos et merde A vos ordres chef Salut les cocos et
9. angements survenus dans l impl mentation des codes des services pr vus par l interface L interface est souvent consid r e comme le mode d emploi de la classe et donc de tous les objets issus de cette classe Exercice 8 6 Car si elles l taient l impact d une modification dans une des classes amies aurait des r percutions loin dans le code et il faut se rappeler que la principale raison d tre de l encapsulation est d viter l impact de modification des codes lors du d veloppement de ceux ci CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercice 9 2 Lors de l effacement de l objet O3 celui ci pointant vers un objet O2 lui m me pointant vers un objet Ol il restera 2 objets en m moire perdus et inutilisables jusqu l interruption du code Exercice 9 3 Il ne devrait plus rester aucun objet en m moire apr s l appel du ramasse miettes vu que les objets disparaissent avec la disparition de leurs r f rents Chaque objet n tant point que par un r f rent la suppression du premier O3 entra nera dans sa suite la suppression des deux autres Exercice 9 4 Ce code donnera un nombre invraisemblable l cran du fait que l on a effac l objet sur lequel s effectue la deuxi me m thode On se retrouve typiquement dans la situation dite du pointeur fou Pour bien faire il faudrait annuler le pointeur apr s l e
10. au contraire de Java une m thode statique ne peut tre appel e sur autre chose que la classe elle m me Appel e sur un objet le compilateur s offusque ce qui est somme toute assez logique Dans le code C la seule mani re d initialiser l attribut statique c est en dehors de la classe rest par une instruction int Test c 5 CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercices 2 8 et 2 9 class Point private int x y z Point int x this x x this y 0 this z 0 Point int x int y this x x this y y this z 0 Point int x int y int z this x x this y y this z public void translate int dx x dx public void translate int dx int dy x dx y dy public void translate int dx int dy int dz Zi x dx y dy S dz public class TestPoint public static void Main Point pl new Point 5 Point p2 new Point 6 7 8 pl translate 5 p2 translate 7 8 C est la m me chose pour le code C d CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercice 4 1 class Interrupteur private int position private Lampe 1 nterrupteur Lampe 1 position 0 this l 1 public void allume position 1 l allume public void eteint position
11. c par des interfaces car le multih ritage est impossible interface A interface B extends A class C implements A class D extends C implements B rri CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENT E OBJET DE HUGUES BERSINI 6 EDITION Exercice 11 5 En Java pas de multih ritage En C la classe exo2 doit imp rativement impl menter la m thode abstraite jeTravaillePourInterface En C il faut pr ciser quelle version de la m thode jerravaillePourLaclasse on veut ex cuter par exemple 01 jeTravaillePourLaClasse Exercice 11 6 En Java l instruction uno2 uno1 est impossible le casting implicite est possible d une sous classe dans sa super classe mais pas l inverse cause du principe de substitution En C m me probl me pour la derni re instruction dans laquelle on cherche placer un objet typ super classe dans un objet typ sous classe et ce type de casting implicite est interdit par le compilateur M me probl me en C Exercice 11 7 Car les sous classes resteront affect es par toute modification des m thodes ou attributs protected de la super classe ce qui va l encontre de l encapsulation Exercice 11 8 Un h ritage private transforme tout ce qui est public dans la super classe en priv pour ses sous classes et donc inaccessible pour les sous classes de celles ci C est un degr d encapsulation suppl mentaire un peu a
12. en la notion d envoi de message Exercice 14 6 class CompteEnBanque private int solde private string titulaire private ArrayList lesEmprunts public CompteEnBanque int solde string titulaire this solde solde this titulaire titulaire lesEmprunts new ArrayList public int Solde get return solde set solde value public void calcullnteret Console WriteLine interet par defaut public void addEmprunt Emprunt e lesEmprunts Add e public static bool operator CompteEnBanque comptel CompteEnBanque compte2 int Sommel 0 int Somme2 0 foreach Emprunt e in comptel lesEmprunts Sommel e Montant foreach Emprunt e in compte2 lesEmprunts Somme2 e Montant if Sommel Somme2 return true else return false public static bool operator CompteEnBanque comptel CompteEnBanque compte2 return comptel compte2 33 rri CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENT E OBJET DE HUGUES BERSINI 6 EDITION Exercice 15 1 En Java cela donnerait interface IA interface IB interface IC extends IA IB interface ID extends IA IB class E implements IC ID En C interface IA interface IB interface IC IA IB interface ID IA IB elass Rz IC ID j Exercice 15 2 La fl che d interface do
13. ffacement de l objet vers lequel il pointe de fa on le rendre inutilisable Exercice 9 5 Un simple effacement d objets bas sur le seul comptage des r f rents est ici rendu difficile par la pr sence d un cycle de r f rence Le ramasse miettes doit d tecter la pr sence de tel cycle dans lequel bien que chaque objet poss de un r f rent vers un autre l ensemble du cycle s av re inaccessible et devrait tre supprim dans sa globalit par le ramasse miettes Exercice 9 6 Le nombre 10 Exercice 9 8 C a repris l id e du ramasse miettes de Java mais autorise galement une gestion m moire des objets pas m moire pile gestion dite aussi par valeur d s lors que l on cr e ces objets comme instance de structure et non plus de classe rri CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENT E OBJET DE HUGUES BERSINI 6 EDITION Exercices 10 1 L exercice 10 1 4 est trait dans le d tail au chapitre 19 du livre Exercice 10 2 class private ine SH 3 E e public void faireX e gt faireE class B public private ine sl 3 public void faireY class C public public void fairez class D public private int 21 int 22 public void faireF class E private double x1 public faireE Exercice 10 3 class A private int unX private int unY p
14. his solde solde public static bool operator CompteEnBanque comptel CompteEnBanque compte if comptel solde compte2 solde return true else return false public static bool operator CompteEnBanque comptel CompteEnBanque compte2 return comptel compte2 public static CompteEnBanque operator CompteEnBanque cl CompteEnBanque c2 return new CompteEnBanque cl solde c2 solde En C ce serait tr s semblable Exercice 14 3 Pour nous forcer la red finir dans toutes les classes qui sont toutes par d finition sous classe de la classe Object La m thode equais doit tre red finie car par d faut elle ne porte que sur les r f rents c est dire les adresses des objets comme le il importe donc de la rendre plus g n rale et de la faire porter sur les attributs de diff rents objets tant protected elle ne peut tre utilis e en dehors de la sous classe et il faut donc qu elle soit automatiquement red finie dans la sous classe comme public cette fois Exercice 14 4 Car celle ci d s le moment o elle s applique sur deux objets pass s en argument ne peut s appeler qu partir de la classe et non plus partir d un objet 22 CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercice 14 5 Car l appel de la m thode quais renvoie bi
15. it aller de la classe s interface ra La classe n a pas besoin d interagir directement avec l impl mentation de la classe C est la pratique de l encapsulation pouss e son paroxysme Exercice 15 3 Comme il n y a pas lieu d y mettre des attributs et que les m thodes n ont pas de corps d instruction dans les interfaces toutes les ambigu t s possibles en cas de duplication des m mes d nominations dans des interfaces distinctes sont lev es Exercice 15 5 Une m thode ne peut tre d clar e comme private dans une interface Toutes les m thodes doivent tre impl ment es Il manque ici la m thode faire3a 24 Exercice 15 6 I ne peut y avoir de public devant la d claration des interfaces Dans la d claration de l h ritage la classe la seule classe doit toujours venir avant l interface Exercice 15 7 Si la classe h riti re n a pas en son sein red finit toutes les m thodes Elle ne constituera d s lors pas le dernier niveau d h ritage Exercice 15 8 Car le fichier interface est juste la signature des m thodes sans leur impl mentation Toutes les m thodes rajout es dans le fichier impl mentation auront un statut diff rent de celles pr d finies dans l interface Exercice 15 9 Oui c est m me une excellente pratique que les classes ne se d voilent entres elles que leur interface et qu elles se dissimulent leur impl mentation
16. la m thode f x La m thode f x soit tre d clar e dans une des classes qui d finit l objet a Il faut conna tre le m canisme d h ritage pour savoir que plus d une classe peut tre concern e et que cette m thode doit se trouver dans une des classes ou superclasses qui d crit l objet a On appelle envoi de message la pr sence dans le code d une classe d un appel de m thode s ex cutant sur un autre objet Lors de l ex cution du code un premier objet passera le relais un deuxi me pour l ex cution de cette m thode le concernant Il suffit que le message qui provoque l ex cution de la m thode sur le deuxi me ait sp cifiquement dans ses attributions la modification des attributs de ce deuxi me Rappelons nous que le respect de l encapsulation rend cette modification directe impossible pour le premier objet qui ne peut avoir un acc s direct aux attributs du deuxi me Exercice 1 3 Exercice 1 5 rri CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENT E OBJET DE HUGUES BERSINI 6 EDITION Humain Sportif Skieur Footballcur Sp cialiste Slalom Instrument de musique Instrument corde Avant Cenire E Voix Instrument vent Trompette Saxophone Violon Guitare 34 1lsqj Exp diteur Destinataire Chauffeur Voiture Footballeur Ballon Guitariste Guitare T l commande T l
17. le faire Exercice 16 9 Jini permet la d couverte des proxys en ligne Il n oblige pas le programmeur de conna tre au d part les services qu il va utiliser Il peut les d couvrir lors de l ex cution du code Exercices 16 10 et 16 11 et 16 12 Les objets doivent se conna tre par leur nom pour pouvoir se solliciter mutuellement C est en effet le cas de RMI et CORBA Pour les services Web seul le nom de la m thode suffit car la communication est sans m moire et aucun objet n est n cessaire du c t du serveur pour maintenir les r sultats des interactions advenues jusqu pr sent Les services Web compensent cela en cr ant des variables de session du c t serveur qui maintiennent les informations sur les interactions Oui c est m me une excellente pratique que les classes ne se d voilent entres elles que leur interface et qu elles se dissimulent leur impl mentation 25 Exercice 17 1 Il produira par exemple 03 04 05 06 07 08 09 0 DJ On UD amp GA M k E GA GA GA GA GA GA GA GA GA GA D ND ND NN ND NND N DM vw J Oh OD amp GO M wO OO J o OD amp M Lo A ss ss ds ds ds ds G J On OD amp OM FA UT O1 n SNJ k U 0 gt Ww UI U Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread Thread
18. ln destinateur envoie d2 envoi2 class Destinataire2 Destinataire2 public void envoi2 System out println destinateur 2 recoit public class Test3Messages public static void main String args Expediteur e new Expediteur new Destinatairel new Destinataire2 e envoi CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENT E OBJET DE HUGUES BERSINI 6 DITION Exercice 4 5 import java awt class Fenetre extends Frame Fenetre public void jeMeFerme Code pour fermeture class Souris public void click Fenetre f Selon l endroit du click f jeMeferme 7 rri CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENT E OBJET DE HUGUES BERSINI 6 EDITION Exercice 5 3 class AutoMessage AutoMessage am AutoMessage AutoMessage AutoMessage am this am am public void message System out println ceci est un message public void jeMeParle message public void jeParleAUnCollegue am message public class TestAutoMessage public static void main String args AutoMessage am new AutoMessage AutoMessage am2 new AutoMessage am am jeMeParle am2 jeParleAUnCollegue Exercice 5 4 En Java la compilation est dynamique et donc le code de la classe 3 se compilera automatiquement d s compilatio
19. m Exercice 19 6 La table se doit de poss der un attribut clef de mani re singulariser les enregistrements alors qu un objet est rendu unique par la place qu il occupe dans la m moire Il en va de m me pour la 19 notion de clef trang re indispensable pour la r alisation des relations 1 n en relationnel et qui disparaissent de l orient objet Exercice 19 7 L h ritage entre deux classes peut tr s simplement se reproduire par une relation de type 1 1 entre les deux tables correspondantes Exercice 19 8 Par la n cessaire pr sence de la clef trang re dans la table du c t n on con oit ais ment qu il est impossible de r aliser une relation de type n n Il faut la casser par une table interm diaire qui contiendra les deux clefs trang res des tables que l on associe Tout cela dispara t de l orient objet pour lequel il suffit que les objets poss dent parmi leurs attributs un tableau de pointeurs vers tous les objets auxquels ils se trouvent associ s Et cela peut bien videmment se faire dans les deux directions Exercice 19 9 Justement pour viter de devoir se pr occuper des clefs et pour maintenir la relation d h ritage pour ce qu elle est Les bases de donn es OO r alisent la sauvegarde des objets de la mani re naturelle dont ils sont utilis s dans les programmes OO Exercice 19 10 Ces deux extensions sont diff rentes car elles r sultent de deux dyna
20. merde A vos ordres chef Exercice 13 8 Le code C affiche je fais un petit groin groin et je m endors en fermant les yeux je fais un petit cot cot et je m endors sur mon perchoir je fais un gros chuuuuut et je m endors a c te de ma vache Exercice 13 11 CORRIG DES EXERCICES DE L OUVRAGE Exercice 13 9 Le code Java affiche le bananier dit lumosite parfaite plus d eau l olivier dit lumosite parfaite plus d eau le magnolia dit je suis aveuglee plus d eau le bananier dit lumosite parfaite blou bloup l olivier dit lumosite parfaite blou bloup le magnolia dit je crame blou bloup le bananier dit more light please plus d eau l olivier dit more light please plus d eau le magnolia dit more light please plus d eau LA PROGRAMMATION ORIENT E OBJET DE HUGUES BERSINI 6 DITION Il faut d clarer les attributs de la classe a protected ou pr voir des m thodes d acc s Il faut red finir la m thode decristoi dans la classe s vu qu elle est abstraite dans la classe a Il faut faire appel au constructeur de la classe a pour l initialisation des attributs h rit s de a super a b c 21 rri CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENT E OBJET DE HUGUES BERSINI 6 EDITION Exercice 14 1 et 14 2 En C cela donnerait class CompteEnBanque private int solde public CompteEnBanque int solde t
21. miques antagonistes l une trouvant son origine dans SQL et tentant d int grer les modes relationnels propres l objet et l autre trouvant son origine dans l OO et tentant d tendre le langage SQL aux m canismes d usage et de requ te classique des objets 29 rri CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercice 21 1 Directionnels le Web les relations d amities Sym triques Internet les r seaux routiers et biologiques pour l essentiel Exercice 21 2 La taille de la liste peut tre quelconque et on peut introduire et supprimer des l ments sans que cela ne pose probl me La cr ation et suppression de listes ne g n rera pas de zones inoccup es dans le support m moire car on peut entreposer les objets de la liste o l on veut dans cette m moire Exercice 21 3 import java util class VectorInteger private Vector unVecteur public VectorInteger unVecteur new Vector public void ajoutelntegerEnQueue Integer i unVecteur addElement i public int afficherInteger int i return Integer unVecteur elementAt i intValue public void montreToutLeVecteur for int i 0 i lt unVecteur size i Integer unVecteur elementAt i intValue Mais depuis les nouvelles versions de Java il est bien videmment beaucoup plus simple d utiliser les
22. n du code de la classe a Il ne faut proc der aucune liaison explicite Cela est rendu possible par la d nomination des classes semblable la d finition des fichiers qui les contiennent Lors de la compilation du fichier A java et la d couverte de l association vers la classe B le compilateur partira la recherche du fichier B java l aide des imports s il ne se trouve pas dans le m me package et le compilera s il a t chang depuis la derni re compilation En C et C il faut lier explicitement les fichiers qui contiennent les classes entrant dans un lien d association ou de d pendance Exercice 5 5 Le nom complet sera as as1 A CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercice 6 1 Exercice 6 3 Le code Java affichera Le code Java affiche i 6 i 20 i 5 Si nous remplacons j par k le Le code C affichera resultat devient i 25 i 6 ne Exercice 6 4 Ge Le code C affiche e i 6 Exercice 6 2 is i 10 Le code C affichera i 5 i 10 H H H H IiOo On On Ui On Exercice 6 5 Le code Java affiche i 5 Exercice 6 6 Tant en C qu en Java les objets sont toujours pass s par r f rent car c est leur adresse qui est dupliqu e dans la m thode et donc on se retrouve travailler avec l objet original En C les objets comme tout argument sont pass s par d faut par valeur avec la pr
23. ng System using System Threading 27 CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION public class Test public static void Main String args Reveil reveil new Reveil Dormeur marcel new Dormeur Marcel reveil client new trop marcel seReveiller marcel seCoucher 20 Dormeur maurice new Dormeur Maurice reveil client new trop maurice seReveiller reveil client new trop maurice seReveiller maurice seCoucher 20 reveil demarre 100 public delegate void trop class Reveil private int temps public trop client public void demarre int temps this temps temps Thread threadReveil new Thread new ThreadStart tictac threadReveil Start public void tictac for int i 0 i lt temps i Console Write tic tac Thread Sleep 200 Console WriteLine iriiri ii i iriri i itr LI ILL Iri 01311 1111111 iinnnnnnnnnnnnnnnnnnnnnnng client class Dormeur Thread threadDormeur String nom public Dormeur string nom this nom nom public void seCoucher int temps Console WriteLine Bonjour je m appelle nom et je suis fatigu Console WriteLine Je vais dormir temps minutes threadDormeur new Thread new ThreadStart dormir threadDormeur Start Console WriteLine nom est maintenant endormi
24. nt if solde montant gt 0 solde montant public int lireSolde return int solde public static void main String args CompteEnBanque c new CompteEnBanque il c credit 100 c debit 200 c debit 50 System out println c lireSolde rri CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENT E OBJET DE HUGUES BERSINI 6 EDITION Exercice 8 2 Feront partie de l interface les m thodes tourne acc l re et changevitesse Exercice 8 3 Une m thode private sera accessible pour peu qu elle soit appel e par une m thode publique de cette m me classe Cette autre classe en faisant appel dans son code la m thode publique d clenchera indirectement l ex cution de la m thode priv e Exercice 8 4 L assemblage peut assurer une forme d encapsulation dans la mesure o il est possible de rendre accessible m thode et attribut d une classe l autre pour autant que ces classes soient d finies dans un m me assemblage L encapsulation peut donc se restreindre au seul assemblage comme si toutes les classes de l assemblage taient amies entre elles Exercice 8 5 C est une forme supr me d encapsulation car la classe impl mentant les services d crits dans l interface peut modifier cette impl mentation sans affecter d aucune sorte les classes qui y font appel L interface pr munit les classes b n ficiaires de cette interface des ch
25. obl matique d un clonage intempestif des objets durant l ex cution des codes C C est la raison premi re de l existence en C du constructeur par copie qui se met en action d s qu un objet est pass par argument Java et C ont opt pour la solution plus logique consistant passer l objet original et non une copie de celui ci C par ailleurs permet par les extensions ref et out le passage galement d argument au type pr d fini int double par r f rent alors qu ils le sont par d faut par valeur 9 CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercice 7 1 public class Calendrier private int date Calendrier int date this date date public String lireDate return date public static void main String args Calendrier c new Calendrier 12052007 System out println c lireDate Exercice 7 2 20 deux m thodes d acc s get et set par attribut Sachez n anmoins que m me ces deux m thodes se devraient d tre rarement sollicit es car les attributs d une classe sont souvent exploit s dans des actions autres que juste la lecture ou l criture Exercices 7 3 et 7 4 public class CompteEnBanque private double solde CompteEnBanque solde 0 public void credit double montant if solde montant gt 0 solde montant public void debit double monta
26. rdu ma triser et que ni Java ni C dans un souci de simplicit n a trouv n cessaire de maintenir Exercice 11 9 Par le principe de substitution c est la premi re assertion qui est correcte Une Ferrari est une voiture pas P inverse Exercice 11 10 On caste toujours dans la sous classe C est donc la premi re instruction qui est correcte La deuxi me forme de casting est toujours implicite et donc inutile Exercice 11 11 Car il y a des multitudes de versions de celles ci en rajoutant au fur et mesure de nouvelles sp cifications 17 CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercice 12 1 Diagramme de classe Une esquisse de code serait import java util ArrayList public class Banque private ArrayList lt CompteBanque gt lesComptes public Banque lesComptes new ArrayList lt CompteBanque gt public void addCompte lesComptes add new CompteCourant abstract class CompteBanque private int solde abstract public void retrait int montant abstract public void depot int montant abstract public void calcullnteret class CompteCourant extends CompteBanque public void retrait int montant public void depot int montant public void calcullnteret class LivretEpargne extends CompteBanque public void retrait int montant public void depot int mon
27. rri CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENT E OBJET DE HUGUES BERSINI 6 EDITION Exercice 1 2 Un r f rent ne peut d signer qu un seul objet puisqu il s agit en effet de l adresse de l objet et qu un objet ne peut tre plac que dans une adresse unique Plusieurs r f rents peuvent ceci dit partager cette adresse et ainsi pointer vers le m me objet Il s agit d un syst me d adressage indirect Cette multiplication des r f rents est un aspect fondamental de la gestion m moire par le ramasse miettes dans les langages de programmation qui le permettent Un objet peut en r f rer un autre en par exemple pour une association forte entre deux objets poss dant parmi ses attributs l adresse d un autre objet En programmation orient e objet tout ce que fait un objet est sp cifi par sa classe Cela permet notamment au compilateur de v rifier que le code est correctement crit C est la classe qui d finit galement les parties communes tous les objets types d attribut et m thodes Tout d pend de ce l on appelle l tat d un objet mais en substance toute modification des attributs d un objet ne peut se faire que par l ex cution de m thodes qui sont pr vues dans la d finition de la classe de l objet Cela signifie que la m thode f x s ex cute sur l objet d sign par a La classe de l objet a contiendra en son sein
28. tant public void calcullnteret Exercice 12 3 Le code Java affichera LePon a fait 3 voix Laguillerette a fait 2 voix StChasse a fait 0 voix LeChe a fait 1 voix Madeleine a fait 0 voix SuperLier a fait 0 voix Jaudepis a fait 2 voix Tamere a fait 0 voix Exercice 12 4 Le code Java affichera ne110 l adresse de l objet en question 18 CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercice 12 5 class public void ail System out println a de A public void b System out println b de A class B extends A public void b System out println b de B public void c System out println c de B public class Correction2 public static void main String args A al new A A bl new Bi B a2 new A B b2 new B r CETTE INSTRUCTION PROVOQUE A L EXECUTION UN CLASS CAST EXCEPTION Exercice 12 6 Le code C affichera Je fais un gros rugissement Je fais un petit barrissement Je fais un gros ronflement Je mange beaucoup de choucroute Je mange beaucoup de choucroute Je mange beaucoup de radis beurre Exercice 12 7 Le code C affichera Attention violon desaccorde Attention pas d accordeur de piano Tout va bien on teste 19 rri CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENT E OBJET DE HUGUES BERSIN
29. ublic void faireX public void faireY public void fairez class B extends A private int und private int unD private ArrayList lt E gt lesE private D unD public void faireC public void faireD class E extends A private double unt 13 CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION private string und private B unB private D unD public void faireC public void faireD class D extends B implements interface C private double unt private string und private B unB private E unE private ArrayList lt D gt B public void faireC public void faireD Exercice 10 4 class FigureGeometrique private int positionX private int positionY public void dessine public void changeLaTaille class CercleDansCarre FigureGeometrique private Rectangle r private Cercle c CercleDansCarre r new Rectangle c new Cercle public void changeLaTaille c getLargeur r setNouvelleLargeur nL r setNouvelleHauteur nH c setNouveauRayon nR class Cercle FigureGeometrique private int rayon private CercleDansCarre c public int getRayon public void setNouveauRayon class Rectangle FigureGeometrique private int largeur private int hauteur private CercleDansCarre c public int getLargeur public
30. vision CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercice 2 1 class Voiture private int vitesseChange Voiture int vitesseChange this vitesseChange vitesseChange public void changeVitesseHaut vitesseChange public void changeVitesseBas vitesseChange public void changeVitesseHaut int deltaV vitesseChange deltaV public class Principale public static void main String args Voiture v new Voiture 0 v changeVitesseHaut Exercice 2 2 public void test public void test double a public void test int a int b _ admis public int test int a Dour une saurait quelle ve Exercice 2 3 Le code Java ne compilera pas cause simplement de la pr sence du voia qui fait de cette m thode une autre methode que le constructeur Le compilateur ne trouve donc pas le constructeur lors de l instruction a una new A 5 Le code CH ne compilera pas car il refusera que vous puissiez cr er une m thode autre que le constructeur avec le m me nom que la classe En fait il vite le genre d erreur plus difficile d celer dont le code Java pourrait tre responsable Seul le constructeur peut porter le nom de la classe 3 rri CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENT E OBJET DE HUGUES BERSINI 6 EDITION Exercice 2 4 class
31. void setNouvelleLargeur int 1 public void setNouvelleHauteur int h class Utilisateur private CercleDansCarre cc public static void main String args cc changeLaTaille cc dessine 14 CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENTEE OBJET DE HUGUES BERSINI 6 EDITION Exercice 10 5 class ElementDeMatiere class Atome public ElementDeMatiere private Molecule m class Molecule public ElementDatiere private Atome lesAtomes public Molecule lesAtomes new Atome class Cellule public Molecule private Molecule lesMolecules public Cellule lesMolecules new Molecule Class ADN public Cellule private ADN unADN public void combine unADN gt combine unADN gt cree void cree Exercice 10 6 Fin2 43 1sq 15 Exercice 11 1 rri CORRIG DES EXERCICES DE L OUVRAGE LA PROGRAMMATION ORIENT E OBJET DE HUGUES BERSINI 6 EDITION Appareil Electrom nager Appareil Appareil cuisiner ges Exercice 11 3 En Java ce sera class D extends B class B extends A class C extends A class A Exercice 11 4 En C ce sera class D public B public C class B public A class C public A Ramasse micttes 44Mlsqj En Java et C il faudra remplacer a et s ou
Download Pdf Manuals
Related Search
Related Contents
Lab1: Introduction to Orcad Kensington Triple Trek MANUAL TÉCNICO XVIII CAMPEONATO Copyright © All rights reserved.
Failed to retrieve file