La Programmation Objet En Java - Cours Et Exercices Corrigés - Free

1y ago
16 Views
2 Downloads
7.09 MB
460 Pages
Last View : 1d ago
Last Download : 3m ago
Upload by : Ronan Orellana
Transcription

M. DIVAYSCIENCES SUPSCIENCES SUPMichel DivayMICHEL DIVAYest professeur des Universitésen informatique à Rennes 1.Il est déjà l’auteur de deuxouvrages de référence auxéditions Dunod : Algorithmeset structures de donnéesgénériques ; Unix, Linux et lesSystèmes CES DE L’INGÉNIEURINFORMATIQUESCIENCES DE LA VIELA PROGRAMMATION OBJET EN JAVACe livre s’adresse aux étudiants en IUT, BTS, licences et écolesd’ingénieurs des filières informatiques.Issu d’un cours que l’auteur enseigne depuis de nombreusesannées, il suit une démarche pédagogique progressive. Toutesles notions importantes sont illustrées par des exemples completset concrets que le lecteur peut tester et modifier lui-même. Denombreux exercices corrigés font de ce livre un outil de travailindispensable.Pour une plus grande interactivité, le code des programmes Javade ce livre est disponible sur le web.Les principaux concepts expliqués sont les suivants :– la syntaxe de base de Java ;– les notions de la programmation objet : classes, encapsulation,attributs, méthodes, paquetages et exceptions ;– l’héritage et le polymorphisme ;– le développement d’une classe générique de gestion de listes ;– les notions de composants, conteneurs et écouteurs decomposants pour les interfaces graphiques (Awt) ;– l’interface graphique Swing ;– les flux d’entrées-sorties (fichiers, périphériques, site distant) ;– les tâches concurrentes pour les animations (les threads) ;– les applets (sur le web).COURSLA PROGRAMMATION OBJETEN JAVACours et exercices corrigésIUT BTS Licence Écoles d’ingénieursLA PROGRAMMATION OBJETEN JAVASCIENCES DE LA TERRE1er cycle 2e cycle3e cycle1 2 3 4 5 6 7 8LICENCEMASTERDOCTORAT9 782100 496976ISBN 2 10 049697 2www.dunod.comMichel Divay

divay Page I Mercredi, 19. juillet 2006 3:01 15LA PROGRAMMATION OBJETEN JAVA

divay Page II Mercredi, 19. juillet 2006 3:01 15

divay Page III Mercredi, 19. juillet 2006 3:01 15LA PROGRAMMATION OBJETEN JAVAMichel DivayProfesseur des Universités en informatique à Rennes 1

divay Page IV Mercredi, 19. juillet 2006 3:01 15Illustration de couverture : Contexture, digitalvision Dunod, Paris, 2006ISBN 2 10 049697 2

Divay.Livre Page V Mardi, 18. juillet 2006 7:40 19Table des matièresTABLE DES MATIÈRESAVANT-PROPOSXIIICHAPITRE 1 PRÉSENTATION DU LANGAGE JAVA11.1Introduction générale11.2La syntaxe de Java31.2.1 Les conventions d’écriture des identificateurs4Résumé des instructions Java de base41.3 Dunod – La photocopie non autorisée est un 3.91.3.101.3.111.41.5Les commentairesLes types de données primitifs (ou de base)Les constantes symboliquesLes opérateurs arithmétiques, relationnels, logiquesLes problèmes de dépassement de capacité (à l’exécution)Le transtypage (cast)Les chaînes de caractères : class StringLes tableaux à une dimensionLes tableaux à plusieurs dimensionsLes instructions de contrôle (alternatives, boucles)Le passage des paramètres des fonctions (ou méthodes)45889101212141620La récursivité231.4.1 Les boucles récursives1.4.2 La factorielle de N1.4.3 La puissance de N232425Conclusion27

Divay.Livre Page VI Mardi, 18. juillet 2006 7:40 19VIProgrammation objet en JavaCHAPITRE 2 LES CLASSES EN JAVA282.1Les modules, les classes, 2.32.42.5La notion de module et de type abstrait de données (TAD)La notion de classeLa classe PileLa mise en œuvre de la classe PileLa notion de constructeur d’un objet352.2.1 Le constructeur d’un objet2.2.2 L’initialisation d’un attribut d’un objet3536Les attributs static362.3.12.3.22.3.32.3.42.3.53637384243La classe EcranL’implémentation de la classe EcranLa classe Ecran en Java : le rôle de thisLes attributs static (les constantes static final)La mise en œuvre de la classe EcranLa surcharge des méthodes, les méthodes static452.4.12.4.22.4.32.4.42.4.54546485054La classe Complex des nombres complexesLa surcharge des méthodesLes attributs et méthodes staticLa classe Java ComplexLa mise en œuvre de la classe ComplexL’implémentation des références562.5.12.5.22.5.32.5.456585963La classe Personne (référençant elle-même deux objets Personne)L’implémentation des référencesL’affectation des références, l’implémentation des tableaux d’objetsLa désallocation de la mémoire (ramasse-miettes, garbage collector)2.6Exemple : la classe Date632.7Les paquetages (packages)652.7.1 Le rangement d’une classe dans un paquetage2.7.2 Le référencement d’une classe d’un paquetage6666Les droits d’accès aux attributs et aux méthodes : public, private ou "de paquetage"672.8.1 Le paquetage paquetage12.8.2 L’utilisation du paquetage paquetage16869L’ajout d’une classe au paquetage mdawt702.9.1 La classe Couleur (méthodes static)2.9.2 Implémentation de la classe Couleur2.9.3 La mise en œuvre de la classe Couleur7071732.82.92.10 Les exceptions2.10.1 Les exceptions de type RunTimeException2.10.2 La définition et le lancement d’exceptions utilisateurs (throw et throws)747478

Divay.Livre Page VII Mardi, 18. juillet 2006 7:40 19Table des matières2.11 La classe String2.11.1 Les différentes méthodes de la classe String2.11.2 L’opérateur de concaténation (de chaînes de caractères),la méthode toString()2.11.3 Exemple d’utilisation des méthodes de la classe String2.12 La classe StringBuffer2.12.1 Les principales méthodes de la classe StringBuffer2.12.2 Exemple de programme utilisant StringBuffer808082838686872.13 La classe Vector892.14 La classe Hashtable902.15 Les classes internes912.16 Conclusion93CHAPITRE 3 L’HÉRITAGE943.1Le principe de l’héritage943.1.1 Les définitions3.1.2 La redéfinition des méthodes et l’utilisation du mot-clé protected9495Les classes Personne, Secretaire, Enseignant, Etudiant963.23.2.13.2.23.2.33.2.4La classe abstraite PersonneLes classes Secretaire, Enseignant et EtudiantLes mots-clés abstract, extends, superLes méthodes abstraites, la liaison dynamique, le polymorphisme9697981023.3La super-classe Object1053.4La hiérarchie des exceptions1063.5Les interfaces1063.6Conclusion110CHAPITRE 4 LE PAQUETAGE LISTE Dunod – La photocopie non autorisée est un délit.VII4.1111La notion de liste1114.1.14.1.24.1.34.1.4111112112114La classe abstraite ListeBaseLes classes dérivées de ListeBase : Liste et ListeOrdPolymorphisme des méthodes toString() et compareTo()L’implémentation des classes ListeBase, Liste et ListeOrd4.2L’utilisation de la classe Liste pour une liste de personnes1224.3L’utilisation de la classe ListeOrd (Personne, NbEntier)1244.4L’utilisation de la classe ListeOrd pour une liste de monômes (polynômes)1274.5L’utilisation des classes Liste et ListeOrd pour une liste de cartes130

Divay.Livre Page VIII Mardi, 18. juillet 2006 7:40 19VIIIProgrammation objet en Java4.6La notion de listes polymorphes1314.7Conclusion134CHAPITRE 5 LES INTERFACES GRAPHIQUES1355.1L’interface graphique Java AWT1355.1.15.1.25.1.35.1.4Les classes Point, Dimension, Rectangle, Color, Cursor, Font, GraphicsLa classe Component (composant graphique)La hiérarchie des composants graphiques de baseLes gestionnaires de répartition des composants (gestionnairesde mise en page)5.1.5 Les composants (Component) de type conteneur (Container)135138141Un nouveau composant : la classe Motif1535.2.1 La classe Motif5.2.2 Le programme Java de la classe Motif5.2.3 La mise en œuvre du composant Motif1531561605.25.3146149La gestion des événements des boutons1635.3.1 Les écouteurs d’événements des boutons (ActionListener)5.3.2 Le composant Phonetique5.3.3 La mise en œuvre du composant Phonetique dans une application1631651685.4Les menus déroulants1685.5La gestion des événements des composants et des menus1725.5.1 L’interface graphique ComposantsDemo5.5.2 La classe FigGeo d’affichage du dessin173181Le jeu du pendu1875.6.1 L’interface graphique5.6.2 La classe Potence187187Le composant Balle1935.65.75.7.1 La classe Balle1935.7.2 La mise en œuvre du composant Balle avec un gestionnaire de mise en page1965.7.3 La mise en œuvre du composant Balle dans le contexte graphique du conteneur 1975.8Les interfaces MouseListener et MouseMotionListener2005.9Le jeu du MasterMind (Exemple de synthèse)2065.9.15.9.25.9.35.9.4206207212217La présentation du jeuLe composant MasterMindLes actions des composants (les écouteurs)La mise en œuvre du composant MasterMind dans une application5.10 Les fenêtres de type Window, Dialog et Frame5.10.1 Les différentes fenêtres5.10.2 La classe FermerFenetre (WindowListener) pour AWT218218221

Divay.Livre Page IX Mardi, 18. juillet 2006 7:40 19Table des matières5.11 La barre de défilement (AdjustmentListener)2225.12 La gestion du clavier2335.12.1 Les écouteurs de type KeyListener5.12.2 La création d’une classe MenuAide de menu d’aide (touche F1)5.12.3 Exemple de mise en œuvre du menu d’aide2332332355.13 Conclusion238CHAPITRE 6 LA LIBRAIRIE SWING2406.1Généralités2406.2La classe JComponent2406.3La classe JLabel2426.4La classe JComboBox2446.5La classe AbstractButton (pour les 86.66.7 Dunod – La photocopie non autorisée est un délit.IX6.86.9JButton (avec texte et/ou image, hérite de AbstractButton)JToggleButton (hérite de AbstractButton)JCheckBox (case à cocher, hérite de JToggleButton)RadioButton (hérite de JToggleButton)JMenuItem (hérite de AbstractButton)Les menus uBar (hérite de JComponent)JMenu (hérite de JMenuItem)JMenuItem (hérite de AbstractButton)JCheckBoxMenuItemLes Containers type 54254255JPanel (dérive de JComponent)JToolBar (hérite de JComponent)JScrollPane (hérite de JComponent)JTabbedPane (hérite de JComponent)SplitPane (hérite de JComponent)Le gestionnaire de répartition BoxLayoutLes Containers de type Fenêtre2576.8.1 JFrame (hérite de Frame)6.8.2 JDialog (hérite de Dialog)6.8.3 JWindow (hérite de Window)257258258Les composants Text (JTextComponent)2586.9.1 JTextField, JTextArea, JEditorPane2586.10 La classe JList (hérite de JComponent)6.10.1 Exemple simple avec des String6.10.2 Les classes Etudiant et LesEtudiants261261264

Divay.Livre Page X Mardi, 18. juillet 2006 7:40 19XProgrammation objet en Java6.10.3 Le ListModel de la JList Etudiant6.10.4 Le Renderer (des cellules) de la JList Etudiant6.10.5 Utilisation du ListModel et du Renderer2642652666.11 Les arbres et la classe JTree6.11.1 Représentation d’un arbre en mémoire (TreeNode)6.11.2 La classe JTree6.11.3 L’écouteur de sélection simple ou multiple6.11.4 Le Renderer de l’arbre (JTree) des étudiants6.11.5 Utilisation du Renderer de l’arbre des étudiants2682682712722732746.12 La classe JTable6.12.1 Exemple de JTable élémentaire6.12.2 Le TableModel de la JTable6.12.3 Le Renderer de la JTable des étudiants6.12.4 Le CellEditor de la JTable6.12.5 Utilisation de la JTable des étudiants2752752762782802826.13 Conclusion284CHAPITRE 7 LES ENTRÉES-SORTIES2857.1Introduction2857.2Les exceptions sur les fichiers2867.3Les flux de type données (data) pour un fichier7.3.1 Les classes (File, Data)InputStream, (File, Data)OutputStream7.3.2 Exemple de classes utilisant des fichiers de type données (data)7.3.3 L’accès direct sur un flux d’un fichier de type data (binaire)2862862872927.4Les flux de type texte pour un fichier7.4.1 Les classes FileReader, BufferedReader7.4.2 Exemples de classes utilisant un fichier de type texte7.4.3 La lecture d’un fichier de données en mode texte7.4.4 L’accès direct à la définition d’un mot du dictionnaire sur un fichierde type texte2932932942957.5Exemples de sources de flux binaire7.5.1 Les flux en lecture (type InputStream)7.5.2 Les flux en écriture (type OutputStream)3023023047.6Exemples de sources de flux de type texte7.6.1 Le flux de type texte pour l’entrée standard (System.in)7.6.2 La lecture à partir d’une URL7.6.3 La classe PrintWriter : écriture formatée de texte3043043063107.7L’écriture et la lecture d’objets : la sérialisation3107.8La classe File3127.9La gestion d’un carnet d’adresses (fichier de texte)313298

Divay.Livre Page XI Mardi, 18. juillet 2006 7:40 19Table des matièresXI7.10 La gestion des répertoires3147.11 Conclusion315CHAPITRE 8 LES PROCESSUS (LES THREADS)3168.1 Le problème3168.2317Les threads8.2.1 La classe Thread3188.2.2 La première façon de créer un Thread (par héritage de la classe Thread)3188.2.3 La deuxième façon de créer un Thread (en implémentant l’interface Runnable) 319 Dunod – La photocopie non autorisée est un délit.8.3La solution au problème des économiseurs3208.3.1 La solution8.3.2 Le test de différentes méthodes de la classe Thread3203228.4Les motifs animés3238.5La génération de Exemple 1 : deux processus générateurs de nombres non synchronisésWait, notify, notifyAllLa synchronisation avec sémaphoresExemple 2 : deux processus synchronisés (tampon une place)Exemple 3 : deux processus synchronisés (tampon de N places)8.6La synchronisation des (threads) baigneurs3328.7Conclusion336CHAPITRE 9 LES APPLETS3379.1Les définitions3379.2La classe Applet3379.3La classe JApplet3389.4La transformation d’une application en une applet3389.5L’applet ComposantsDemo3389.5.1 Avec Applet9.5.2 Avec JApplet9.5.3 Mise en œuvre à l’aide d’un fichier HTML3383393399.6L’applet Economiseur3399.7L’applet MotifAnimé3429.8L’applet jeu du Pendu3439.9L’applet MasterMind3449.10 Le dessin récursif d’un arbre (applet et application)345

Divay.Livre Page XII Mardi, 18. juillet 2006 7:40 19XIIProgrammation objet en Java9.11 Le feu d’artifice (applet et application)3479.12 Le son et les images9.12.1 Les images9.12.2 Les sons (bruit ou parole)9.12.3 Un exemple d’utilisation d’images et de sons3483483483499.13 Le mouvement perpétuel des balles (applet et application)3529.14 Le trempoline (applet et application)3549.15 La bataille navale (applet et application)3559.16 Conclusions sur les applets3569.17 Conclusion générale356CHAPITRE 10 ANNEXES35810.1 La classe MotifLib : exemples de Motif35810.2 Le paquetage utile36610.3 Suggestions de projets de synthèse en Java10.3.1 Partition de musique10.3.2 Emploi du temps36636636710.4 La structure du paquetage mdpaquetage36910.5 Compilation et exécution de programmes Java10.5.1 Compilation d’un programme Java10.5.2 Exécution d’un programme Java10.5.3 Les fichiers archives (.jar)371371371372CHAPITRE 11 CORRIGÉS DES EXERCICES373BIBLIOGRAPHIE438INDEX439

Divay.Livre Page XIII Mardi, 18. juillet 2006 7:40 19 Dunod – La photocopie non autorisée est un délit.Avant-proposJava est un langage de programmation objet. Les principaux concepts de laprogrammation objet et du langage de programmation Java sont présentés dans celivre à l’aide de nombreux exemples issus de domaines variés. Le livre n’essaie pasd’être exhaustif mais présente des notions et les illustre sur des exemples completsque le lecteur est encouragé à tester lui-même. Java définit de nombreuses fonctions(méthodes) comportant tout un éventail de paramètres. La documentation en lignede Java est là pour détailler le rôle de chacun des paramètres et les variantes desfonctions. Le livre s’appuie également sur de nombreuses figures (environ 150)illustrant les concepts et les résultats attendus ou obtenus. Il est toujours difficile deprésenter séquentiellement des notions qui en fait sont très imbriquées et interdépendantes comme le sont les concepts de programmation objet, d’héritage, de polymorphisme, d’interfaces graphiques, d’événements, de processus ou d’applets Java. Denombreux renvois tout au cours du livre évitent les répétitions fastidieuses.Le premier chapitre présente la syntaxe de base du langage Java et fait le parallèleavec le langage C pour montrer les similitudes et les différences de syntaxe. On y passerapidement en revue les notions de constantes, de variables, de tableaux, d’opérateurs,d’instructions de contrôles, de passages de paramètres et de récursivité.Le deuxième chapitre aborde la notion de classes et d’encapsulation desdonnées. On y définit les notions d’attributs et de méthodes, de variables d’instanceet de variables de classe spécifiques de la programmation objet. La notion de référence d’objet et d’allocation dynamique des objets est illustrée par de nombreuxschémas. La compréhension de cette notion est importante en Java car tous lesobjets sont repérés par des références. On peut grouper certaines classes dans despaquetages (packages ou bibliothèques) de façon à pouvoir les utiliser dans différentes applications. Les anomalies d’un programme peuvent donner naissance à desexceptions qui se propagent au fil des appels de fonctions jusqu’à ce qu’elles soientprises en compte au niveau décidé par le programmeur. Ce chapitre se termine par

Divay.Livre Page XIV Mardi, 18. juillet 2006 7:40 19XIVProgrammation objet en Javaune présentation des classes de gestion des chaînes de caractères et des classes degestion d’ensembles d’éléments.Le chapitre 3 introduit la notion fondamentale en programmation objet d’héritage qui permet de définir une classe contenant les caractéristiques communes àplusieurs classes, celles-ci spécialisant la classe de base pour leurs besoins propres.En Java, une classe ne peut hériter que d’une seule classe. Néanmoins, un conceptd’interface permet d’accéder à des objets de différentes classes suivant un autrecritère. La notion d’héritage conduit à la notion de polymorphisme faisant qu’unemême instruction peut en fait appeler lors de l’exécution des fonctions différentes dedifférents objets (mais ayant le même nom).Le chapitre 4 traite de la notion de liste permettant d’insérer ou d’extraire deséléments d’un ensemble. Ce chapitre illustre sur un exemple de structure de donnéestrès classique, les concepts d’héritage et de polymorphisme. Cette classe est trèsgénérale et peut être utilisée sans modification dans de nombreuses applications. Lacréation d’une liste ordonnée nécessite un critère de comparaison de deux éléments.Ceci conduit à l’utilisation d’une interface Java de comparaison.Les interfaces graphiques Java (chapitre 5) utilisent abondamment les conceptsd’héritage. Une classe répertorie les caractéristiques communes aux composantsgraphiques (leur emplacement, leur taille, les couleurs d’arrière-plan et de premierplan, etc.). Puis chaque composant se spécialise éventuellement en plusieurs niveauxde sous-composants. Les composants peuvent être ajoutés à des composants conteneurs pour former des composants plus complexes. Les composants peuvent s’afficherdans des fenêtres et réagir à des événements les concernant provoqués à partir de lasouris ou du clavier. Cette notion de groupement des composants en un composantplus complexe ayant ses propres propriétés est fondamentale en Java. Elle permet lacréation de composants réutilisables dans diverses applications ou dans des appletssur le Web. De nouveaux composants sont créés et réutilisés (sans modification) aufil des exemples.Le chapitre 6 présente l’interface graphique de la librairie Swing. Celle-cireprend les concepts de l’interface graphique de AWT en y ajoutant de nombreusespossibilités qui permettent de développer des interfaces graphiques au look plusprofessionnel. La mise en œuvre de certains composants peut devenir toutefois assezcomplexe (gestion des listes, des arbres, des tables par exemple) si on veut utilisertoutes les possibilités de mise en œuvre.Le chapitre 7 est consacré à l’étude des flux d’information en entrée et en sortie.Il présente les deux grandes familles de flux en Java concernant les données binaireset les textes. Des exemples de flux sur des fichiers et sur des sites distants sont développés.Un programme Java peut exécuter plusieurs animations en parallèle grâce au conceptde processus (thread). Le programme se découpe en plusieurs programmes se partageant l’unité centrale à tour de rôle. Le chapitre 8 présente cette notion et indiquecomment faire communiquer plusieurs threads entre eux pour les synchroniser oupour échanger de l’information.

Divay.Livre Page XV Mardi, 18. juillet 2006 7:40 19Avant-proposXVJava est très connu pour ses applets : programmes Java s’exécutant dans une pageWeb et se présentant souvent sous une forme graphique ou une animation. Lechapitre 9 reprend certains des exemples développés dans les chapitres précédentset explique comment les convertir en applet.Les classes développées sont présentées dans un paquetage ce qui permet de lesréutiliser facilement. Des exercices corrigés, mais qui peuvent être mis au point defaçon différente, sont proposés tout au cours de ce livre.Les programmes Java de ce livre sont disponibles sur le site :www.iut-lannion.fr/MD/MDLIVRES/LivreJavaVous pouvez adresser vos remarques à l’adresse électronique suivante :Michel.Divay@univ-rennes1.frD’avance merci. Dunod – La photocopie non autorisée est un délit.Michel DIVAY

Divay.Livre Page XVI Mardi, 18. juillet 2006 7:40 19

Divay.Livre Page 1 Mardi, 18. juillet 2006 7:40 19Chapitre 1Présentation du langage Java1.1INTRODUCTION GÉNÉRALEJava est un langage objet permettant le développement d’applications complètess’appuyant sur les structures de données classiques (tableaux, fichiers) et utilisantabondamment l’allocation dynamique de mémoire pour créer des objets en mémoire.La notion de structure, ensemble de données décrivant une entité (un objet en Java)est remplacée par la notion de classe au sens de la programmation objet. Le langageJava permet également la définition d’interfaces graphiques (GUI : Graphical UserInterface) facilitant le développement d’applications interactives et permettant àl’utilisateur de "piloter" son programme dans un ordre non imposé par le logiciel.Le langage est aussi très connu pour son interactivité sur le Web facilitant l’insertion dans des pages Web, au milieu d’images et de textes, de programmes interactifsappelés "applets" 1. Pour des problèmes de sécurité, ces applets sont contrôlées etsouvent limitées dans leur interaction avec le système d’exploitation de l’ordinateursur lequel elles se déroulent : limitation des accès aux fichiers locaux ou aux appelssystème de la machine.Un programme Java est portable au sens où il peut s’exécuter sur des ordinateursfonctionnant avec différents systèmes d’exploitation. Les programmes écrits enPascal ou en langage C sont aussi portables par compilation du code source sur lamachine où le programme doit s’exécuter. Java est portable d’une plate-forme(matériel et système d’exploitation) à une autre sans recompilation. Le compilateur1. Applet (nf) est l’acronyme de Application light weight.

Divay.Livre Page 2 Mardi, 18. juillet 2006 7:40 1921 Présentation du langage Javaproduit un langage intermédiaire appelé "bytecode" qui est interprété sur les différentes machines. Il suffit donc de communiquer le bytecode et de disposer d’uninterpréteur de bytecode pour obtenir l’exécution d’un programme Java. Les navigateurs du Web ont intégré un interpréteur de bytecode qui leur permet d’exécuter desprogrammes (applets) Java.Cette portabilité est possible grâce à une normalisation indépendante de la plateforme : les entiers, par exemple, ont toujours la même longueur (en nombre d’octets)en Java quel que soit l’ordinateur, ce qui n’est pas le cas des langages C ou C (letype int peut occuper 2 ou 4 octets suivant les machines). Cette portabilité estsouvent résumée de manière un peu commerciale par write once, run anywhere (écrivezune seule fois, exécutez n’importe où). Les programmes en Java ont l’extension.java, et le bytecode généré a l’extension .class (voir figures 1.1 et 1.2).programmeenJavacompilateur Javabytecode(p1.java)(javac p1.java)(p1.class)Figure 1.1 — La compilation du programme p1.javaen son équivalent p1.class en bytecode.bytecode(p1.class)interpréteur Java machine virtuelle Java bibliothèque de classes (API)(java p1)résultatsduprogrammep1Figure 1.2 — L’interprétation du bytecode p1.classsur n’importe quel ordinateur disposant d’un interpréteur de bytecode(indépendamment du langage machine de cet ordinateur).La souplesse de la portabilité a cependant une contrepartie. L’interprétation d’unprogramme est plus lente que l’exécution directe en langage machine qui résulteraitd’une compilation classique. La richesse du langage Java tient aussi à sa bibliothèque de classes (API : Application Programming Interface) qui permet de traiterdes applications très diverses (interfaces graphiques, chaînes de caractères, images,sons, mathématiques, etc.). Là également, il suffit de disposer du bytecode desbibliothèques pour pouvoir les utiliser sur n’importe quel ordinateur. Certainesclasses peuvent cependant être spécifiques d’un système d’exploitation (gestion del’heure, des droits d’accès aux fichiers, des processus, des interfaces graphiquess’appuyant ou non sur le système d’exploitation sous-jacent, etc.).

Divay.Livre Page 3 Mardi, 18. juillet 2006 7:40 191.2La syntaxe de Java1.23LA SYNTAXE DE JAVAJava est un langage objet qui s’appuie sur la syntaxe du langage C et du C . Javaest un langage objet : on doit utiliser les classes et les objets ; C est un langageorienté objet, sorte de langage hybride permettant à la fois la programmation classique sans objets et la programmation avec objets. Ce chapitre présente la syntaxedes instructions de base de Java permettant de définir des variables de types dits"primitifs" et de contrôler le déroulement du programme. Les instructions sontprésentées dans leur analogie avec C. Ce premier chapitre évite au maximum (maispas entièrement) les concepts de classe et d’objet définis au chapitre 2.La figure 1.3 présente un programme réalisant la somme des nb éléments d’untableau tabEnt d’entiers.// SomTab.java somme des nb éléments d'un tableau d'entiersclass SomTab {public static void main (String[] args) {int[] tabEnt {1, 2, 3};// tableau de int nommé tabEnt//int tabEnt[] {1, 2, 3};identique à l'instruction précédenteint somme 0;//for (int i 0; i 3;i ) somme tabEnt[i];for (int i 0; i tabEnt.length; i ) somme tabEnt[i];System.out.println ("Somme : " somme);}} // class SomTabFigure 1.3 — La présentation de la syntaxe de base de Java.Le résultat de l’exécution est le suivant : Dunod – La photocopie non autorisée est un délit.Somme : 6SomTab est une classe. Dans un premier temps, on peut considérer la classe SomTabcomme un module comportant une fonction main. Les mots-clés public et staticsont définis dans le chapitre 2. String[] args déclare un tableau de chaînes decaractères nommé args ; il contient les arguments de la ligne de commande lors dulancement du programme (voir la notion de tableau page 12 et la classe String page 80).Les instructions suivantes déclarent et initialisent un tableau d’entiers. La deuxièmeligne est en commentaires et constitue une variante de la ligne 1. La ligne 2 déclare etinitialise avec la même syntaxe qu’en C ou C , un tableau tabEnt de trois entiers.int[] tabEnt {1, 2, 3};//int tabEnt[] {1, 2, 3};La syntaxe de la ligne 1 évoque mieux un tableau d’entiers (int[]). Les deuxsyntaxes sont acceptées en Java (voir tableau en page 12).

Divay.Livre Page 4 Mardi, 18. juillet 2006 7:40 1941 Présentation du langage JavaDe même, les deux instructions suivantes (la première en commentaires)effectuent une boucle faisant la somme des entiers. En Java, la longueur dutableau (tabEnt.length) est connue et contrôlée. Il vaut donc mieux l’utiliserpour contrôler la boucle (ligne 2 du code suivant).//for (int i 0; i 3;i ) somme tabEnt[i];for (int i 0; i tabEnt.length; i ) somme tabEnt[i];L’écriture sur la sortie standard (l’écran par défaut) se fait par appel de la fonction(méthode) println() de l’objet out de la classe System (voir chapitre 7). "Somme :"est une chaîne de caractères à écrire suivie (c’est le sens du , opération de concaténation de chaînes de caractères) de la valeur de l’entier somme (convertie automatiquement en chaîne de caractères) :System.out.println ("Somme : " somme);Remarque : cette présentation sur un exemple fait bien apparaître l’analogie avecla syntaxe du C, et met en évidence quelques variantes qui sont développéesdans les chapitres suivants.1.2.1Les conventions d’écriture des identificateursEn Java, la convention adoptée (par les concepteurs de Java) mais non obligatoireconsiste à écrire les noms des classes avec un identificateur commençant par unemajuscule. Sur la figure 1.3, SomTab est une classe, de même que System (dansSystem.out.println). Par contre, les identificateurs de variables ou de fonctionscommencent par une minuscule (main, tabEnt, somme, i, println). De plus, si l’identificateur consiste en la juxtaposition de mots, chaque mot interne commence parune majuscule : tabEnt (variable) pour table d’entiers ou SomTab (classe) pour sommedu tableau. Les constantes symboliques sont écrites entièrement en majuscules (voirpage 8 : GAUCHE, HAUT).1.3RÉSUMÉ DES INSTRUCTIONS JAVA DE BASEL’exemple précédent (figure 1.3) a permis d’avoir une idée générale de la syntaxe deJava. Ce paragraphe décrit de façon concise et à l’aide d’exemples la syntaxe desinstructions Java. Ce tour d’horizon présente dans l’ordre suivant : les types primitifs, les constantes, les variables, les expressions effectuant des opérations sur cestypes primitifs et les tableaux (à une ou plusieurs dimensions) regroupant sous unmême nom un ensemble de variables de même type.1.3.1Les commentairesComme en C, il existe deux types de commentaires. Les commentaires pour unensemble de lignes délimités par /* au début et */ à la fin :/* commentaires entre ces 2 marques,éventuellement sur plusieurs lignes */

Divay.Livre Page 5 Mardi, 18. juillet 2006 7:40 191.3Résumé des instructions Java de base5et les commentaires pour fin de ligne (de // jusqu’à la fin de la ligne) :i 0; // commentaires jusqu’à la fin de la ligne1.3.2Les types de données primitifs (ou de base)Les types primitifs (simples ou de base) correspondent à ceux du langage Cauxquels s’ajoutent les types byte et boolean. Les cha

LA PROGRAMMATION OBJET EN JAVA Michel Divay M. DIVAY IUT BTS Licence Écoles d'ingénieurs LA PROGRAMMATION OBJET EN JAVA Michel Divay COURS 9 782100 496976 ISBN 2 10 049697 2 LA PROGRAMMATION OBJET EN JAVA www.dunod.com Ce livre s'adresse aux étudiants en IUT, BTS, licences et écoles d'ingénieurs des filières informatiques.

Related Documents:

Cours c et programmation orientée objet Programmation orientée objet 3 UMMTO Apparu dans les années 60s au sein de MIT Offre une grande souplesse de travail maintenance aisée Objet en programmation objet dans le monde réel Objet propriétés (attributs ) actions (méthodes ) Objet en C Structure de données (objet simple ) Classe

Programmation Orientée Objet Java Enseignant : Ramzi Mahmoudi mahmoudr@esiee.fr Année Universitaire: 2012/2013. Plan des chapitres 1. Introduction 2. Les bases du langage 33. La Programmation Objet avec Java 2 44. Des concepts avancés de la programmation orientée objet Java 55. Les classes de base

Cédric Bastoul - Initiation à la programmation orientée objet en JAVA 1 Programmation Orientée Objet en JAVA Plan général 1.Introduction : historique et intérêt de JAVA 2.Premiers pas : généralités sur JAVA 3.Objets et classes 4.Héritage 5.Paquetages 6.Exceptions 7.Interfaces graphiques 8.Généricité 9.Les flux

La programmation objets expliquée aux programmeurs Si vous êtes programmeur, mais habitué aux langages de programmation "procéduraux" (pascal, fortran, C, perl, etc.), ce chapitre est pour vous: il essaie d'expliquer comment on peut passer de la programmation procédurale à la programmation objet, via la programmation structurée.

Programmation orientée objet dans Java 1. Introduction La programmation orientée objet existe depuis 1967 (date d’apparition du langage Simula ’67). Cependant, elle n’est vraiment devenue un des paradigmes de la programmation qu’au milieu des années 1980.

34 Programmation objet 34.1 Programmation objet 34.2 Mot clé new 34.3 Object methods and fields 34.4 Function et prototype 34.5 mot clé this 34.6 paradigme de programmation classe/objet 35 Notation JSON 35.1 Tableau 35.2 Objet 35.3 Imbrications 35.4 Voir aussi 36 Ajax 36.1 Ajax : comment créer un sommaire 36.1.1 Intérêt de l'utilisation d .

La programmation oriente objet(POO) I. La programmation orientée objet La programmation orientée objets (POO) est une technique d'organisation du code d'un programme en le groupant en objets, les objets étant ici des éléments individuels comportant des informations (valeurs de données) et des fonctionnalités. L'approche orientée objet .

ASTM C167-15 – Standard Test Method for Thickness and Density of Blanket or . Batt Thermal Insulations. TEST RESULTS: The various insulations were tested to ASTM C518 and ASTM C167 with a summary of results available on Page 2 of this report. Prepared By Signed for and on behalf of. QAI Laboratories Ltd. Robert Giona Matt Lansdowne Senior Technologist Business Manager . Page 1 of 8 . THIS .