Support de cours Java Structures de données Notions en Génie Logiciel et Progra

Support de cours Java Structures de données Notions en Génie Logiciel et Programmation Orientée Objet H. Mounier Université Paris Sud 1 Notations Les sigles suivants seront fréquemment utilisés Point notable, auquel il faut prêter attention  Point positif, agréable, du langage Å Point négatif, désagréable, du langage ⇒ Implication logique • Tout code source java sera écrit dans une police particulière, type courier. • Une notion définie, expliquée ou précisée apparaîtra comme ceci. • Des termes jugés importants apparaîtront comme ceci. • Des termes jugés cruciaux apparaîtront comme ceci. i Table des matières Table des matières ii I Entrée en matière 1 I.1 Qu’est-ce que Java, en trois lignes . . . . . . . . . . . . . . . . . 1 I.2 Exemples de “Hello World” en différents langages . . . . . . . . 1 I.3 Un autre exemple . . . . . . . . . . . . . . . . . . . . . . . . . . 4 II Historique et propriétés de Java 7 II.1 Propriétés du langage ; Technologies disponibles . . . . . . . . . 7 II.2 Manifeste en 11 points . . . . . . . . . . . . . . . . . . . . . . . 9 III Paquetages de Java 15 III.1 Technologies et paquetages . . . . . . . . . . . . . . . . . . . . . 15 III.2 Sources de documentation externes . . . . . . . . . . . . . . . . 23 IV Bases procédurales de Java 25 IV.1 Variables et types de données . . . . . . . . . . . . . . . . . . . 25 IV.2 Opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 IV.3 Contrôle de flux . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 V Notions de génie logiciel 39 V.1 La légende des sept singes . . . . . . . . . . . . . . . . . . . . . 39 V.2 Buts du génie logiciel . . . . . . . . . . . . . . . . . . . . . . . . 41 V.3 Principes de génie logiciel . . . . . . . . . . . . . . . . . . . . . 42 V.4 Stratégie de développement orientée objet . . . . . . . . . . . . 47 VI Notions de programmation orientée objet 49 VI.1 POO, Objets, Classes . . . . . . . . . . . . . . . . . . . . . . . . 49 VI.2 Type ou classe ; objet . . . . . . . . . . . . . . . . . . . . . . . . 51 VI.3 Relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 ii iii VII Bases orientées objet de Java 61 VII.1 Classes et objets Java . . . . . . . . . . . . . . . . . . . . . . . . 61 VII.2 Héritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 VII.3 Surcharge, redéfinition . . . . . . . . . . . . . . . . . . . . . . . 69 VII.4 Paquetages et interfaces . . . . . . . . . . . . . . . . . . . . . . 77 VIIIExceptions 83 VIII.1 Fonctionnement général du système d’exceptions . . . . . . . . . 83 IX Classes utilitaires de base 91 IX.1 Classes Object, System, PrintStream . . . . . . . . . . . . . . . 91 IX.2 Méthode main() et classes d’emballage des types primitifs . . . 94 IX.3 Scanner (java.util.Scanner) . . . . . . . . . . . . . . . . . . . 95 IX.4 Classes java.applet.Applet et java.lang.String . . . . . . . 99 X java.util : Conteneurs et autres utilitaires 109 X.1 Classes de java.util ; Classes et interfaces de comparaison . . . . 109 X.2 Classes et interfaces conteneurs . . . . . . . . . . . . . . . . . . 111 X.3 Conteneurs de type Map . . . . . . . . . . . . . . . . . . . . . . 116 X.4 Conteneurs de type Collection et Listes . . . . . . . . . . . . . 125 Bibliographie 139 Index 141 Préface Ces notes de cours rassemblent des éléments de base du langage Java. Les cha- pitres I, II et III sont introductifs ; les chapitres V et VI introduisent des concepts généraux essentiels en programmation, indépendamment de tout langage ; enfin les chapitres IV, VII, VIII, IX et X fournissent de manière concrète les bases du langage. Après les trois premiers chapitres qui donnent des aperçus généraux sous divers angles, le chapitre IV expose les bases purement procédurales (c.à.d. non orientée objet) du langage. Au chapitre V des notions de génie logiciel génériques sont exposées. Le chapitre suivant contient des définitions précises de ce que sont une classe, un objet, ainsi que les relations (notamment l’héritage) qui les relient. La substance concrète de ce qui est décrit au chapitre VI fait l’objet du chapitre VII. Le mécanisme d’exceptions de Java est ensuite exposé au chapitre VIII. Diverses classes utilitaires simples sont données au chapitre IX. Enfin, le chapitre X concerne les classes de Java implantant diverses structures de données (telles les tableaux dynamiques, les listes, les tables de hachage, les arbres) et algorithmes (tels le tri) associés. v I – Entrée en matière Références bibliographiques Java examples in a Nutshell, D. Flanagan, 2ième édition [Flaa] I.1 Qu’est-ce que Java, en trois lignes Le début de l’ouvrage de référence, The Java Language Specification par J. Gosling, B. Joy et G. Steele [GJS96] résume fort bien l’esprit dans lequel le langage a été conçu ainsi que le but poursuivi : “Java is a general purpose, concurrent, class-based, object-oriented language. It is designed to be simple enough that many programmers can achieve fluency in the language. Java is related to C and C++ but is organized rather differently, with a number of aspects of C and C++ ommited and a few ideas from other languages included. Java is intended to be a production language, not a research language, and so, as C.A.R. Hoare suggested in his classic paper on language design, the design of Java has avoided including new and untested features.” I.2 Exemples de “Hello World” en différents langages 2.1 Avec OSF/Motif widgets #include <X11/Intrinsic.h> #include <X11/StringDefs.h> #include <Xm/Xm.h> #include <Xm/Form.h> #include <Xm/Label.h> #include <Xm/PushB.h> 1 2 Support de cours Java typedef struct APP_DATA { char *mtext; char *etext; } APP_DATA, *P_APP_DATA; static XrmOptionDescRec options[] = { /* options de la ligne de commande */ {"-mtext", "*mtext", XrmoptionSepArg, NULL}, {"-etext", "*etext", XrmoptionSepArg, NULL} }; static XtResource resources[] = { /* ressources */ {"mtext", "Mtext", XtRString, sizeof(String), XtOffset(P_APP_DATA, mtext), XtRString, "Maison pauvre, voie riche"}, {"etext", "Etext", XtRString, sizeof(String), XtOffset(P_APP_DATA, etext), XtRString, "Quitter"} }; static Arg args[10]; /* arguments passes aux widgets */ static void quit_action(Widget w, caddr_t client_data, XmAnyCallbackStruct *call_data); void main(int argc, char *argv[]) { APP_DATA data; Widget main_widget, form_widget, hello_message, exit_button; main_widget = XtInitialize(argv[0], "Xmhello", options, XtNumber(options), &argc, argv); XtGetApplicationResourceds(main_widget, &data, resources, XtNumber(resources), NULL, 0); form_widget = XtCreateManagedWidget("Form", xmFormWidgetClass, main_widget, NULL, 0); XtSetArg(args[0], XmNtopAttachment, XmATTACH_FORM); XtSetArg(args[1], XmNleftAttachment, XmATTACH_FORM); XtSetArg(args[2], XmNLabelString, XmStringCreateLtoR(data.etext, XmSTRING_DEFAUKT_CHARSET)); exit_button = XtCreateManagedWidget("Exit", xmPushButtonWidgetClass, form_widget, (ArgList) args, 3); XtAddCallback(exit_button, XmNactivateCallback, quit_action, NULL); XtSetArg(args[0], XmNtopAttachment, XmATTACH_WIDGET); XtSetArg(args[1], XmNtopWidget, exit_button); I.2 – Exemples de “Hello World” en différents langages 3 XtSetArg(args[2], XmNleftAttachment, XmATTACH_FORM); XtSetArg(args[3], XmNrightAttachment, XmATTACH_FORM); XtSetArg(args[4], XmNbottomAttachment, XmATTACH_FORM); XtSetArg(args[5], XmNLabelString, XmStringCreateLtoR(data.mtext, XmSTRING_DEFAUKT_CHARSET)); hello_message = XtCreateManagedWidget("Hello", xmLabelWidgetClass, form_widget, (ArgList) args, 6); XtRealizeWidget(main_widget); XtMainLoop(); } static void quit_action(Widget w, caddr_t client_data, XmAnyCallbackStruct *call_data) { XtCloseDisplay(XtDisplay(w)); exit(0); } • Avantage : souple. • Désavantages : code long, ne fonctionne que sous XWindows (pas sur Macintosh ou Windows 98). • Remarque : code 3 fois plus long en Xlib. 2.2 Hello world en Tcl/Tk • Tcl uploads/s1/ java.pdf

  • 38
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Jan 14, 2022
  • Catégorie Administration
  • Langue French
  • Taille du fichier 1.0862MB