DES CONCEPTS OBJET PAR JAVA
|
|
|
- Oscar Croteau
- il y a 10 ans
- Total affichages :
Transcription
1 Université Abou-Bakr Belkaïd Tlemcen Faculté des Sciences de l Ingénieur Département d Informatique Mémoire de Fin d Etudes en vue de l obtention du Diplôme d Etudes Universitaires Appliquées Thème : ETUDE DE L APPLICATION DES CONCEPTS OBJET PAR JAVA Présenté par : Amine BRIKCI-NIGASSA Promoteur : Azzeddine CHIKH Examinateur : Amine BOUDEFLA Année universitaire
2 à Mohammed-Reda, que Dieu le guide vers le Savoir
3 Remerciements Je tiens par ces quelques mots à exprimer ma gratitude envers mon encadreur, M. Azzeddine Chikh, dont la patience et la gentillesse n ont d égal que sa compétence. Que mon professeur et examinateur, M. Amine Boudefla, soit aussi remercié d avoir accepté à la dernière minute et sans hésiter de juger ce modeste travail. Que tous ceux qui m ont aidé, concrètement, moralement, ou par leur simple présence à mener à bien ce mémoire soient gratifiés par Le Tout-Puissant. Ils se reconnaîtront. Je ne peux omettre également tous mes professeurs, et en particulier les nombreux auteurs des ouvrages et autres sites Web que j ai parcourus pendant la préparation de ce travail, même si la plupart d entre eux ne liront très probablement jamais ceci.
4 Table des matières BUT DU PROJET... 3 INTRODUCTION... 3 L APPROCHE OBJET... 4 MAIS QU EST-CE QU UN OBJET?... 5 SON IDENTITE... 5 SON ETAT... 5 SON COMPORTEMENT... 6 Constructeurs et destructeurs... 6 LES CLASSES, MOULES A OBJETS... 7 LES PRINCIPES FONDAMENTAUX DE L APPROCHE OBJET... 7 L ENCAPSULATION... 7 L HERITAGE... 8 LE POLYMORPHISME AUTRES CONCEPTS DE L APPROCHE OBJET Agrégation et Composition Classes abstraites Interfaces Persistance des objets Paquetages LES DOMAINES D APPLICATION DE L APPROCHE OBJET LES METHODES ORIENTEES OBJET La «méthode» UML LES LANGAGES DE P.O.O LES BASES DE DONNEES OBJET LES ARCHITECTURES DISTRIBUEES LE LANGAGE JAVA HISTORIQUE CARACTERISTIQUES DE JAVA Amine Brikci-Nigassa 1
5 LES PROGRAMMES JAVA : APPLICATIONS ET APPLETS L ENVIRONNEMENT DE DEVELOPPEMENT JAVA : LE JDK LES CLASSES JAVA LES TYPES CONSTRUCTEURS ET DESTRUCTEURS LE CONSTRUCTEUR LE DESTRUCTEUR INSTANCIATION IDENTITE D UN OBJET : NOTION DE REFERENCE ENCAPSULATION HERITAGE POLYMORPHISME LIAISON DYNAMIQUE SURCHARGE DES METHODES CLASSES ABSTRAITES INTERFACES PAQUETAGES PAQUETAGE DESCRIPTION PERSISTANCE DES OBJETS LA SERIALISATION LE JDBC CONCLUSION BIBLIOGRAPHIE Amine Brikci-Nigassa 2
6 But du projet L objectif de ce travail est l acquisition des notions fondamentales de la «pensée objet» et de déterminer dans quelles mesures le langage de programmation Java met en pratique ces notions. Introduction A la mode depuis quelques années déjà, Java est un langage jeune et en pleine maturation. La firme Sun veut en faire un standard en matière de programmation orientée objet. Du statut de langage d applets pour embellir les pages Web, Java est en train de devenir un véritable langage professionnel, avec toute la puissance nécessaire au développement d applications sérieuses et durables. Java se veut orienté objet et le clame haut et fort. Contrairement à son aîné C++ qui s est contraint à garder une compatibilité avec C, il ne permet pas son utilisation pour la programmation procédurale classique. Mais Java se conforme-t-il totalement à l esprit du paradigme objet? A quelles proportions est-il fidèle à cette philosophie moderne? C est ce que nous allons essayer de déterminer dans ce modeste travail en illustrant chaque notion de l approche objet par son implémentation en Java. Amine Brikci-Nigassa 3
7 L approche objet L évolution de l informatique s est toujours faite dans un but de simplification et d abstraction progressive. Les instructions du processeur en chiffres binaires ont d abord été remplacées par les chiffres hexadécimaux, qui ont laissé place à des notations mnémoniques pour donner l assembleur, puis apparurent les langages évolués avec le Fortran, ensuite les langages procéduraux comme Algol, Pascal etc. Plus on avance, plus les détails de l implémentation sont oubliés pour s occuper de choses plus abstraites, plus proches du problème à résoudre. Provoquant l adoration chez certains, et le mépris voire la peur chez d autres, le paradigme objet, se rapproche d une «philosophie» (une «religion» diront les fanatiques?) vu sa mise en œuvre dans tous les domaines de l informatique. A la fois neuve et ancienne, l approche objet a ses racines bien ancrées dans les années 60-70, avec l apparition des premiers langages orientés objets (Simula, en 1967, et Smalltalk, en 1976, notamment). En effet, paradoxalement mais comme pour les autres approches, l approche objet a d abord été mise en pratique dans les langages (surtout pour la programmation des IHM 1 ), puis dans les méthodes de conception pour n atteindre la phase d analyse que très récemment. Programmation Conception Analyse Evolution des méthodes Figure 1. : L évolution des méthodes, objet ou non, s est toujours faite de la programmation vers l analyse. (D après Pierre-Alain Muller, 1997) «Tout est objet» : C est là la phrase clé classique caractéristique de cette approche. Alors que la vision procédurale mettait l accent sur le travail à faire (les 1 Interfaces Homme-Machine : conviviales, le plus souvent graphiques, à base de fenêtres et de composants tels que les boutons, les cases à cocher etc. et utilisant la souris. Les plus connues sont celles de X Window, MacOS et MS-Windows. Amine Brikci-Nigassa 4
8 procédures) et posait d abord la question «Que veut-on faire?», l approche objet, elle, insiste sur les entités qui sont mises en jeu dans les différents processus. La question posée est alors : «De quoi parle-t-on?». Chaque objet possède sa propre vie, avec tous les organes vitaux dont il a besoin et bien sûr la possibilité de communiquer avec son entourage, c est-à-dire les autres objets. Mais qu est-ce qu un objet? C est une entité «modélisable», ayant une existence propre, concrète ou abstraite. Exemples : une voiture, un client, un compte bancaire, un bouton OK, une chaîne de caractères. Tout objet se distingue par trois caractéristiques essentielles : son identité Elle est implicite, chaque objet a une identité propre, qui le différencie des autres objet sans que cela ne soit explicitement indiqué par un quelconque artifice (contrairement par exemple aux entité des modèles relationnels, qui doivent obligatoirement posséder un identifiant, souvent artificiel). son état Variable dans le temps, il est constitué par les valeurs de ses différents attributs en un instant donné. L ensemble de ces attributs ou données (ou champs) correspond à la mémoire de l objet. Exemple : une voiture sera de couleur rouge, de marque VolksWagen, aura une vitesse de 60 km/h et une quantité restante d essence de 15 l à un instant t ; ces propriétés peuvent changer dans le temps (sauf peut-être pour la marque...) et constituent l état de la voiture à l instant t. Amine Brikci-Nigassa 5
9 son comportement C est l ensemble des opérations qui peuvent être réalisées par ou sur l objet. Ces opérations ou méthodes sont le plus souvent provoquées par les autres objets en relation avec celui-ci, par l envoi de messages, moyens de communications élémentaires entre les objets. Exemple : la voiture pourra freiner, son coffre pourra être ouvert, son moteur pourra être vidangé etc. Les méthodes freiner(), ouvrir_coffre(), vidanger()... correspondent aux actions qui régissent le comportement de la voiture et ils sont provoqués par les objets conducteur et garagiste par exemple. Les méthodes peuvent recevoir des informations concernant la manière d effectuer l action (exemple : remplir_essence(20 litres)) et/ou en renvoyer (exemple : afficher_vitesse() renverra la valeur de l attribut vitesse à l objet conducteur). On voit bien que les méthodes ne sont rien d autres que des fonctions (ou des procédures quand elles ne renvoient pas d informations) telles qu on les conçoit en programmation procédurale. Constructeurs et destructeurs Il faut citer ici deux cas particuliers de méthodes retrouvées surtout en P.O.O : les constructeurs et les destructeurs. Un constructeur est une méthode invoquée automatiquement au moment de la création d un objet, il comporte implicitement les processus qui permettent l allocation de mémoire et le référencement de l objet et de façon explicite l initialisation des attributs ainsi que les éventuelles actions à effectuer à la création de l objet. Le destructeur, par contre, est la méthode qui est appelée au moment de l élimination de l objet, et il comporte les actions à effectuer à la destruction de cet objet. C est ce dernier qui est invoqué pour libérer la mémoire des objets inutilisés, ce qui n est pas nécessaire dans tous les langages de P.O.O. (Smalltalk et Java, notamment, laissent cette tâche au «ramasse-miettes 2»). 2 voir p.28 Amine Brikci-Nigassa 6
10 Les classes, moules à objets Les populations d objets ayant des attributs et des comportements semblables sont regroupées en classes, qui ne sont rien d autre que les «types» des objets : ma coccinelle rouge fait partie de la classe Voiture, c est une instance de cette classe. A partir d une classe ainsi déterminée, on peut instancier toutes sortes d objets ayant les mêmes types d attributs et les mêmes méthodes, de la même manière que l on cuisinerait différents gâteaux avec le même moule à gâteaux. Une classe est donc déterminée par : les attributs de ses objets et leur type. Exemples : marque : Chaîne_de_caractères, couleur : Couleur, quantité_d_essence : Entier, vitesse : Entier. les méthodes, avec la description des actions effectuées au moment de leur invocation et le type des informations reçues ou renvoyées par chaque méthode. Les principes fondamentaux de l approche objet L approche objet est basée sur trois principes élémentaires, simples, mais qui lui confèrent tout son intérêt : L encapsulation On désigne par ce néologisme deux propriétés essentielles des objets : 1. Un objet englobe en une seule entité les données et les opérations effectuées sur ces données. 2. Un objet masque sa structure interne, et notamment ses données, en interdisant l accès direct à ses attributs, qui sont dits privés. Ceux-ci ne Amine Brikci-Nigassa 7
11 pourront être alors accédés que par l intermédiaire des méthodes publiques, qui constituent l interface de l objet, seul contact avec le monde extérieur. objet données privées méthodes privées méthodes publiques }STRUCTURE INTERNE INTERFACE Monde extérieur Figure 2. : L encapsulation permet de cacher la structure interne au monde extérieur. Ce deuxième aspect de l encapsulation est théorique et idéal. En pratique, le choix est généralement laissé au concepteur de cacher ou non les attributs. Mais l accès direct à des attributs par les autres objets environnants peut être dangereux et est contraire à l esprit même de l orienté objet. L un des avantages principaux de ce principe est de permettre l évolution des objets. En effet, un objet pourra être amélioré, ses méthodes et sa structure interne modifiées, et ceci sans altérer les objets environnants et sans qu il soit nécessaire de les adapter à ces nouvelles améliorations. La seule condition à respecter est de garder la même interface. L héritage Toujours dans un souci d «évolutivité», l approche objet permet la réutilisation et l extension des classes préexistantes afin de créer des objets plus spécialisés. Cette spécialisation est réalisée par le principe d héritage. Une classe qui hérite d une autre en prend ses attributs et ses méthodes et en ajoute de nouveaux pour l étendre. La nouvelle classe, nommée sous-classe, est donc une spécialisation de l ancienne, nommée super-classe. Une super-classe peut être étendue par plusieurs Amine Brikci-Nigassa 8
12 généralisation spécialisation Etude de l application des concepts objet par Java sous-classes, pour former une arborescence, à la manière des répertoires et sousrépertoires d un disque dur. Le processus visant à créer une super-classe à partir de plusieurs classes (qui deviendront ses sous-classes) est appelé généralisation, et c est l un des moyens que l approche objet fournit pour améliorer l abstraction. titre auteur Œuvre Livre Film Disque Western Dessin-animé Thriller Figure 3. : Relations d héritage D un autre côté, mais cela est moins fréquent, une classe peut hériter de plusieurs super-classes. Cet héritage multiple peut être source de confusions quand les super-classes possèdent des attributs ou méthodes de même nom ; en effet, comment choisir celui/celle qui sera hérité(e)? C est pour cette raison que l héritage multiple n est pas implémenté dans tous les langages orientés objet (il a notamment été interdit dans Java), malgré son utilité dans certains cas particuliers 3. 3 Cas pour lesquels Java prévoit l implémentation d interfaces multiples, qui est souvent suffisante (voir p. 13) Amine Brikci-Nigassa 9
13 Le polymorphisme Ce mot à consonance ésotérique est composé de mots d origine grecque : le préfixe poly qui signifie plusieurs, et morphos qui veut dire forme. C est donc la faculté de prendre plusieurs formes. En effet, le polymorphisme est la propriété qu ont les méthodes des objets de prendre des formes différentes selon : 1- l objet sur lesquelles elles s appliquent : la même méthode peut exister pour des objets différents, mais n aura pas le même effet. Exemple : la méthode décoller() d un objet de la classe hélicoptère aura pour effet de faire tourner son hélice, alors que la même méthode appliquée à un objet de la classe avion fera vrombir ses réacteurs. En P.O.O., cet aspect du polymorphisme met en jeu la notion de liaison dynamique. 2- le type et le nombre des paramètres qui lui sont associés : une méthode aura des actions différentes selon le type et le nombre de paramètres avec lesquelles elle s applique. Exemple : l opération sortir() qui ferait partie du comportement d un objet de la classe robot_domestique devra se réaliser de manières différentes selon qu elle sera utilisée avec les paramètres poubelles ou chien (on ne sort pas les poubelles comme on sort le chien) ou encore sans paramètres (pour qu il sorte lui-même). Ce deuxième aspect est nommé polymorphisme ad hoc ou surcharge des opérations 4. En réalité ces comportements différents sont le résultat de méthodes différentes, mais ayant le même nom. 4 qui, en P.O.O., n a rien à voir avec la liaison dynamique. Amine Brikci-Nigassa 10
14 Autres concepts de l approche objet Agrégation et Composition L agrégation est un relation forte entre deux classes qui s apparente à la relation ensemble/élément. C est une relation de subordination subjective qui peut exprimer entre autres : qu une classe (l élément) fait partie d une autre (l agrégat), qu un changement d état d une classe entraîne celui d une autre, qu une action sur une classe en entraîne une sur une autre. La composition est un cas particulier de l agrégation. Aussi appelée agrégation forte, elle consiste en la relation qui existe entre un objet et ses attributs. Les composants sont physiquement contenus dans l agrégat (parfois nommé classe composite). La composition est une relation simple mais souvent confondue avec celle d héritage, plus complexe, surtout par les novices en POO, qui se retrouvent alors face à des situations souvent inextricables. Il faut toujours commencer par se demander si elle n est pas plus appropriée que l héritage. En règle générale, la composition permet de réutiliser l implémentation, alors que l héritage est utilisé pour réutiliser l interface. Quand on veut déterminer le type de relation adéquat entre une classe («forte») A et une classe («faible») B, il suffit de se poser la question «est-ce que A a un B, ou B est un A?». La relation est un (is a) est classiquement celle de l héritage, alors que a un (has a) illustre la composition. Exemples : une Voiture est un Véhicule (héritage) ; une Voiture a un Moteur (composition). Amine Brikci-Nigassa 11
15 Classes abstraites Dans un souci d abstraction et pour permettre une meilleure classification par la relation d héritage, l approche objet permet d utiliser des classes qui, contrairement aux classes concrètes, ne seront l objet d aucune instanciation et ne donneront donc naissance à aucun objet. Ces classes sont dites abstraites et permettent de regrouper des classes aux caractéristiques semblables. Par exemple, la figure 3 représente la classe abstraite Œuvre 5, qui n a pas de réalisations concrètes si tous les genres d œuvres sont prévus : en effet, toute œuvre sera alors une instance des sous-classes (ou des «soussous-classes»). La classe Œuvre n existe que pour être étendue, pas pour être instanciée. Le caractère abstrait d une classe permet de ne pas définir le corps d une ou plusieurs méthodes. Cela ne pose pas de problème vu que cette classe ne sera pas utilisée pour créer des objets. Ces méthodes abstraites devront être définies dans les sous-classes concrètes. En règle générale, on peut dire que toute classe qui a une méthode abstraite (ou plus) est alors abstraite. Les classes abstraites permettent de définir les spécifications auxquelles toute classe de la descendance devra se conformer. Elles permettent une classification plus vaste en «étendant vers le haut» l arborescence des relations d héritage. C est ainsi que seront regroupées des classes éloignées pour ne descendre que d une seule classe abstraite. Dans certains langages de P.O.O. (c est le cas de Java), toutes les classes descendent d un même ancêtre (la racine de l arbre), qui est une classe abstraite (nommée Object en Java). Cette classe définit le comportement minimal que tout objet doit avoir. 5 La notation UML utilisée dans la figure 3 différencie les classes abstraites en mettant leur nom en italique. Amine Brikci-Nigassa 12
16 Interfaces Dans le même esprit des classes abstraites, la notion d interface est un outil de plus aidant au processus d abstraction dans l approche objet. Une interface est une simple spécification à suivre par les classes qui voudront l implémenter. Contrairement aux classes abstraites qui peuvent avoir des méthodes concrètes et abstraites, les interfaces possèdent uniquement des méthodes abstraites. L implémentation d une interface par une classe est un engagement que prend cette classe à suivre les spécifications établies dans le «contrat» que constitue l interface. Cette relation est semblable à la relation d héritage qu a une sous-classe avec une classe abstraite. Elle est choisie par Java pour implémenter l héritage multiple, qu il ne tolère pas. Elle n a en effet pas les effets néfastes de celui-ci puisqu une classe qui hériterait de deux méthodes de même nom par deux interfaces ne poserait pas le problème de savoir laquelle prendre : de toute façon, ces méthodes sont abstraites! Persistance des objets La persistance est, pour un objet, l aptitude à continuer à exister après que le processus qui l a créé se termine, sans que les informations qu il porte ne soient perdues. Elle est assurée par la sauvegarde des données sur un support physique (disque magnétique par exemple) puis sa restitution ultérieure en mémoire. Les langages de P.O.O. ne proposent guère de support direct pour la persistance des objets. Les S.G.B.D.Objet (voir p.17), de plus en plus usuels mais pas aussi répandus que les S.G.B.D.Relationnels, implémentent la persistance et seront peut-être, à l avenir, la solution à retenir. Paquetages Afin d étendre la notion de modularité déjà offerte par la découpe en classe, l idée de regrouper les classes en éléments organisationnels a donné naissance au Amine Brikci-Nigassa 13
17 concept de paquetage (package). Ce regroupement se fait selon des critères logiques. Un paquetage peut contenir des classes, des interfaces, des sous-paquetages. La hiérarchie de paquetages constituant l architecture logicielle d une application est semblable à l arborescence d un système de fichiers (avec les répertoires, qui contiennent des fichiers et des sous-répertoires), aussi bien que certains langages de P.O.O., comme Java, font correspondre chaque paquetage avec un répertoire. Les domaines d application de l approche objet Comme nous l avons déjà dit, l approche objet s est propagée dans le sens inverse du cycle de vie des logiciels : programmation orientée objet (P.O.O.), conception puis analyse orientées objet. Mais ce ne sont pas les seuls aspects de cette approche, qui a «contaminé» pratiquement tous les domaines de l informatique en général : bases de données, systèmes d exploitation, génie logiciel, systèmes répartis Les méthodes orientées objet Les années 90 ont témoigné d un foisonnement de méthodes objet dans tous les milieux informatiques mondiaux. En 1995, on dénombrait plus de 50 méthodes différentes. Chaque méthode avait ses particularités, chacune couvrant plus ou moins la totalité du cycle de vie du développement logiciel. Cependant, au fur et à mesure de leur évolution et de leur amélioration, les caractéristiques les plus intéressantes des unes étaient reprises par les autres et les «moins bonnes» étaient délaissées. C est ainsi que beaucoup de méthodes finirent par se ressembler tellement, que le choix devenait difficile pour l utilisateur en l absence de standard. En effet, aucune de ces méthodes n arriva à s imposer. Amine Brikci-Nigassa 14
18 La «méthode» UML UML, initiales de Unified Modeling Language, c est-à-dire «langage de modélisation unifié», est le résultat de la fusion des trois méthodes orientées objet dominantes de la scène mondiale durant la dernière décennie : OMT de James Rumbaugh, OOD de Grady Booch et OOSE de Ivar Jacobson. Né en 1997 après une gestation de deux ans, au sein de la société Rational Software, il reprend les caractéristiques prédominantes des trois méthodes, à savoir : de OMT : vues statiques, dynamiques et fonctionnelles d un système ; notation riche lisible ; de OOD : vues logiques et physiques, concept de paquetage ; de OOSE : couverture de tout le cycle 6, analyse des besoins de l utilisateur (use cases). UML n est pas une méthode proprement dite et, contrairement à l ambition qu avaient ses trois prédécesseurs, elle n a pas la prétention de dicter le processus à suivre pour mettre en œuvre les étapes de la modélisation. Et il est consenti que sans processus, point de méthode. UML, d après ses auteurs eux-mêmes, se définit plus comme une notation standardisée, un langage de modélisation (comme son nom l indique) permettant de faire communiquer les différents acteurs du développement sans ambiguïté. Sa normalisation est passée par une soumission de la version 1.0 à l OMG, qui l a adopté dès son passage à la version 1.1, en novembre OOD ne couvrait pas la phase d analyse (préconisait le SADT) Amine Brikci-Nigassa 15
19 Les langages de P.O.O. Après des débuts très modestes, la P.O.O. a connu son essor dès l apparition des I.H.M. graphiques, qui se prêtent à ce type de programmation en raison de la modularité des éléments graphiques (fenêtres, boutons ). C est ainsi que sont apparus les concepts de programmation événementielle et visuelle, avec les premiers RAD (Rapid Application Development) dont le précurseur dans la micro-informatique contemporaine est sans conteste l environnement de développement Visual Basic de Microsoft. Ces environnements exploitent les concepts de réutilisation en permettant une programmation grâce à des composants logiciels, qui, assemblés, permettent de développer rapidement une application sans même connaître tous les aspects de la programmation. C est ainsi que Visual Basic (entre autres) se veut être un langage de programmation pour les non programmeurs, qui a même été implémenté par Microsoft comme langage de macro-commandes pour tous les progiciels bureautiques de sa suite Office. Mais programmer en Visual Basic n est pas faire de la programmation orientée objet. On utilise les objets comme composants logiciels, mais la démarche suivie est le plus souvent une simple programmation structurée classique (centrée, certes, autour des événements engendrés par ces objets) étant donné que les utilisateurs de Visual Basic ne sont justement pas sensés connaître les fondements du paradigme objet. A l heure actuelle, plusieurs langages objet règnent sur le marché. Certains sont des langages auparavant structurés qui ont évolué (un exemple en est le Pascal Objet et Delphi), d autres ont été créés pour la P.O.O. Smalltalk, un des pionniers de ce terrain, continue à être utilisé couramment. C++ est un surensemble de C (le célèbre langage structuré dans lequel UNIX est écrit), qui reprend sa syntaxe et permet une compatibilité avec lui (les programmes écrits en C fonctionnent sur tous les Amine Brikci-Nigassa 16
20 compilateurs C++). Java, sujet de notre étude, est un langage qui s inspire de ces deux derniers. Il utilise, comme C++, la syntaxe de C. Etant la propriété de la firme Sun Microsystems, le succès de Java a suscité la jalousie des concurrents, et en particulier celle du géant «monopolisateur» Microsoft, qui s essaie à une contre-attaque avec le langage C#, qui n a pour l instant pas le succès de son rival. On citera enfin un nouveau venu, Python 7, qui est le langage qui se conforme probablement le plus à l esprit de la programmation orientée objet, bien qu il ne soit trop souvent considéré que comme un simple langage de script (rôle qu il joue néanmoins à merveille). Les bases de données objet Incontestablement, le standard en matière de modèles de base de données est le modèle relationnel. Basé sur la notion de tables, il est parfaitement adapté aux méthodes et à la programmation fonctionnelles. Cependant, avec l émergence des applications objet, on assiste souvent à une «cassure» au niveau de l implémentation des données sur les supports physiques. Avec la notion de persistance des objets, l approche objet prévoit une méthode de sauvegarde des objets sur disques ; mais son implémentation, quand elle utilise un SGBDR 8, doit passer par des artifices qui ne sont pas en parfait accord avec les principes du paradigme objet. Pour remédier à cette situation, sont apparus les SGBD orientés objet. Pour qu une base de donnée soit estampillée de la «marque» objet, elle doit se conformer à plusieurs règles, la plus importante desquelles étant la mise en œuvre de la persistance avec la possibilité de sauvegarder et restituer directement un objet dans la base. 7 voir le site pour faire connaissance avec ce langage 8 Système de Gestion de Bases de Données Relationnelles Amine Brikci-Nigassa 17
21 Ces avancées technologiques sont toutefois à leurs débuts, et le modèle relationnel continue à être le plus largement utilisé, même par les langages purement objet comme Java, qui prévoit, avec son extension JDBC (Java DataBase Connectivity), une interface avec les SGBDR par l utilisation du langage SQL. Les architectures distribuées Avec le développement considérable des réseaux et notamment Internet, le monde de l informatique est confronté à la répartition des ressources sur les différents points d une toile pouvant s étendre sur des milliers de kilomètres. D abord propriétaires et totalement incompatibles, les différentes normes des architectures réseaux, à leurs différents niveaux d abstractions (couches) tendent à se standardiser pour permettre une meilleure communication des systèmes entre eux. L approche objet, de par son pouvoir d abstraction, avec notamment sa notion d encapsulation qui permet de cacher la structure interne des objets, ne pouvait épargner un domaine où, justement, une telle abstraction est plus que bénéfique. C est ainsi que plusieurs acteurs de la scène informatique mondiale ont cherché à développer une norme dans le domaine des architectures distribuées pour permettre de développer des applications utilisant des objets empruntés à différents nœuds du réseau. Ce type de logiciel appelé middleware, encapsule la gestion de l architecture matérielle, des systèmes d exploitation et des protocoles de communication. Deux standards principaux émergent de ces efforts : CORBA dans le monde Unix, et DCOM dans celui de Microsoft. DCOM est dérivé du mécanisme d intégration d objets OLE, à l origine utilisé par les applications de sa suite Office et étendu à Windows. Il est une évolution d OLE vers les composants objets distribués. Amine Brikci-Nigassa 18
22 CORBA (Common Object Request Broker Architecture), par contre, est le résultat d un consortium international à but non-lucratif : l OMG (Object Management Group) qui se consacre uniquement à la promotion des technologies objet dans le domaine des systèmes distribués. Amine Brikci-Nigassa 19
23 Le langage Java Historique En 1991, James Gosling, un informaticien de la firme Sun Microsystems, reçut pour mission de mener à bien le projet d un logiciel pour l ordinateur domestique *7 (Star Seven). Celui-ci devait permettre de gérer les différents appareils électroménagers de la maison. Il utilisa pour cela le langage C++, alors «à la mode», pour ses qualités de langage objet. Cependant, il se heurta à de multiples difficultés, inhérentes à ce langage, qui rendaient fastidieuses les différentes étapes du développement. En effet, C++ bien que puissant est un langage qui s avère assez complexe quand la taille des applications est assez importante; les bugs s y glissent facilement, sont difficiles à dénicher, et ont un impact fatal sur la stabilité du système. La correction des erreurs prend souvent beaucoup plus de temps que le développement proprement dit. Gosling décida alors d abandonner ce langage aux qualités pourtant si avantageuses, pour en créer une «variante» beaucoup moins complexe, gardant l esprit de la programmation orientée objet (le sublimant même) et la syntaxe du C, mais en supprimant tout ce qui pouvait causer des erreurs, et notamment : les pointeurs : une erreur dans leur manipulation peut être fatale; l héritage multiple : trop ambigu, a été remplacé par l implémentation de plusieurs interfaces; les conversions implicites de types : le «typage fort» est imposé, avec des conversions obligatoirement explicites, pour éviter les incohérences; la gestion de la mémoire par l utilisateur : les objets sont créés sur le tas et en sont automatiquement éliminés par un processus dédié, nommé «garbage collector» (littéralement «ramasseur de déchets» ou «éboueur», mais traduit le plus souvent par «ramasse-miettes»). La mémoire est ainsi toujours optimisée et les crashs dus à l utilisation d un objet déjà supprimé par erreur disparaissent (ils sont fréquents Amine Brikci-Nigassa 20
24 quand, comme en C++, l utilisateur doit explicitement libérer la mémoire occupée par un objet quand celui-ci n est plus utilisé). Il nomma ce langage «Oak» («chêne» en anglais) en hommage à l arbre qu il voyait de la fenêtre de son bureau. Le projet pour lequel il a été conçu fut abandonné, mais le langage persista. L une des caractéristiques de ce nouveau langage qui ont fait son succès était sa portabilité. En effet, il était conçu pour être utilisé sur plusieurs plates-formes en raison du contexte de son utilisation. C est pour cette raison que la firme Sun eut l idée de l utiliser dans un domaine qui allait le rendre si populaire, à savoir Internet. En chemin, «Oak», qui était un nom déjà déposé auparavant, fut rebaptisé «Java» (qui signifie «pause café» en langage populaire américain). Dans sa forme actuelle, Java est un langage jeune. La première version du Java Development Kit (JDK), distribuée gratuitement sur le site Web de Sun, ne date que de Il a depuis grandement été amélioré et continue de subir des changements (tout en gardant une compatibilité avec les anciennes versions) pour notamment couvrir tous les aspects du développement d applications professionnelles. Caractéristiques de Java Orienté objet : Pour Java, et contrairement à C++ par exemple (qui a voulu rester compatible avec C), tout programme est constitué d une ou plusieurs classes. Il est toujours possible de faire de la programmation procédurale classique avec Java en implémentant toutes les fonctions du programme dans une seule classe statique, mais le résultat apparaît vite artificiel (voire grotesque!). Portable, multi-plate-formes : Java est un langage compilé et interprété. En effet, les classes Java subissent d abord une compilation en «byte-code» c est à dire qu elles sont compilées pour la machine virtuelle Java. Cependant, cette machine Amine Brikci-Nigassa 21
25 n existant pas réellement, comme son nom l indique 9, les classes ainsi compilées doivent passer par un interpréteur pour pouvoir être exécutées. Par abus de langage, cet interpréteur est nommé lui-même machine virtuelle. C est ainsi que Java a la faculté d être «écrit une fois et exécuté partout» (Write once, run everywhere) pour reprendre le slogan de ses créateurs, c est-à-dire que les classes Java, une fois compilées sur une machine, peuvent être exécutées sur n importe quelle plate-forme possédant l interpréteur Java (et elles sont nombreuses, du fait de son intégration à tous les browsers Web actuels entre autres). Sécurité : L un des premiers objectifs devant être atteints lors de la création de Java était d obtenir un langage sûr sur un grand nombre de points : vérification à la compilation et à l interprétation pour éviter un maximum d erreurs de programmation, typage fort, gestion programmée des exceptions, limitation des accès à la mémoire et suppression des pointeurs, limitation des accès aux ressources locales par les applets téléchargées à distance (pour éviter, notamment, le développement de code malveillant : virus etc.) Simplicité : Dans le même esprit, et pour permettre à Java de devenir l un des langages les plus rapides en matière de temps de développement, de grands efforts ont été faits dans le sens de la simplification. La suppression des pointeurs et de l héritage multiple, des règles de syntaxe limitées facilement cernables réduisent la difficulté de la programmation à la conception par découpage des objets, qui reste toutefois une tâche compliquée pour les novices en P.O.O. et doit s acquérir par l expérience. Les programmeurs C++ ou Smalltalk confirmés seront par contre parfaitement à l aise. Multithread : Java permet d exploiter pleinement les possibilités multitâches des systèmes d exploitation 32 bits et, sans l indiquer explicitement, d optimiser le traitement parallèle sur les systèmes multiprocesseurs. Cela est possible grâce à la 9 Il existe cependant de véritables machines Java, avec un processeur directement capable d exécuter le «byte-code» compilé. Amine Brikci-Nigassa 22
26 notion de thread, que l on peut traduire par «fil d exécution». Chaque thread a une exécution indépendante des autres et porte plusieurs processus qui travailleront en parallèle avec les processus des autres threads en cours d exécution. Distribué : Avec principalement le mécanisme RMI (Remote Method Invocation, invocation de méthodes à distance), mais aussi par les nombreuses extensions réseau (paquetage java.net) fournies, Java est particulièrement intéressant pour le développement d applications distribuées. RMI permet de mettre en communication des objets répartis afin de leur permettre l échange de messages. Plus récemment, avec la version 2, Java permet aussi de se conformer au standard CORBA de l OMG. Performant : Contrairement à la plupart des langages interprétés, Java peut se vanter de posséder les performances suffisantes à la majorité des applications. Il n égale cependant pas celles des langages compilés (C++ notamment), mais avec l apparition des compilateurs Just in Time (JIT), la différence ne se fait pas trop ressentir. Ces compilateurs particuliers, présents avec la plupart des implémentations de machines virtuelles Java, permettent de compiler «à la volée» le byte-code des classes à exécuter. Il en résulte un certain temps de latence au chargement de l application, mais la vitesse d exécution approche alors celle des langages compilés. Pour des applications plus exigeantes en matière de temps d exécution, Java permet d utiliser du code natif, spécifique à une plate-forme et directement exécuté par le processeur (sans passer par l interpréteur). Les parties d un programme les plus cruciales pourront être implémentées par des méthodes natives pour accélérer le traitement 10. Les programmes Java : applications et applets Java est devenu célèbre grâce à Internet. C est ainsi que beaucoup croient que ce langage n est qu un simple outil permettant de créer des animations ou des 10 Cela se fera cependant aux dépens de la portabilité. Amine Brikci-Nigassa 23
27 curiosités dans les pages Web. En effet, ce qui a popularisé Java, c est son utilisation en tant que langage d applets. Une applet est un petit programme (d où le diminutif, qui fut parfois traduit par «appliquette») intégré à l intérieur d une page hypertexte Web, comme on intègre une image, mais qui permet en plus d ajouter un contenu «intelligent» et interactif à un site. Pour que les applets puissent être exécutées à l intérieur de la fenêtre d un navigateur Web, il faut que celui-ci télécharge son code et l interprète grâce à une machine virtuelle Java. Aux débuts de Java, seul le navigateur «HotJava», créé pour la circonstance par Sun, incluait une telle machine virtuelle. Ensuite, Sun vendit sa licence au fameux Netscape, qui fut rapidement suivi par le géant Microsoft. C est ainsi qu aujourd hui tout navigateur Web digne de ce nom doit avoir sa machine virtuelle Java pour savoir exécuter les innombrables applets qui fourmillent actuellement sur le réseau des réseaux. Cependant, Java ne se limite pas aux applets, et, ce qui est moins connu du grand public, est aujourd hui l un des langages les plus prisés pour le développement professionnel d applications plus «classiques». L environnement de développement Java : le JDK Pour programmer en Java, plusieurs possibilités sont offertes au développeur, Sun offre gratuitement son Java Development Kit (JDK) à télécharger sur son site Web ( mais on pourra utiliser l un des nombreux EDI (environnements de développement intégré) du marché, dont le célèbre outil RAD (Rapid Application Development) JBuilder de Borland. Bien que ce dernier, inspiré du très populaire Delphi, est de loin le plus utilisé des environnements de développement, Amine Brikci-Nigassa 24
28 avec 44% de parts du marché, un très grand nombre de programmeurs (25%!) préfèrent écrire eux-mêmes leur code Java et utilisent seulement le JDK 11. Le JDK comporte deux programmes essentiels, qui constituent les deux commandes les plus utilisées dans cet environnement : javac et java. Le compilateur javac permet de traduire le code source en byte-code. Il prend pour paramètre le nom du fichier texte, d extension.java, contenant le code source à compiler, et donne pour résultat un ou plusieurs fichiers d extension.class, contenant le byte-code compilé. L interpréteur java permet d exécuter le programme en interprétant le code compilé dans les fichiers.class. Il prend pour paramètre le nom du fichier contenant la classe de départ du programme (la classe qui contient la méthode statique main), sans extension. L interpréteur est utilisé dans le cas des applications, mais java permettant aussi d écrire des applets, le JDK permet, grâce au programme appletviewer de visualiser les applets incorporées dans des pages HTML, au cas (improbable!) où aucun navigateur Web ne serait installé sur la machine qui l exécute. Cette commande prend pour paramètre le nom du fichier HTML qui fait appel aux applets à exécuter (bien que seules les applets soient visualisées, et non toute la page web). D autres outils sont livrés avec le kit, on citera en particulier un débogueur, un générateur de documentation, etc. Les classes Java En Java, tout programme est composé d une ou plusieurs classes. Chaque classe donnera naissance après compilation à un fichier, d extension.class. Il est souvent conseillé, bien que cela ne soit pas obligatoire, de ne définir qu une seule classe par fichier source, de sorte qu à chaque fichier source.java correspondra un 11 Source : Evans Research, Linux developer survey, December 1999 Amine Brikci-Nigassa 25
29 seul fichier compilé.class. Une classe est déclarée en Java par le mot-clé class, suivi du nom de la classe, puis d un bloc, délimité par deux accolades, qui contient la définition proprement dite. Le nom d une classe, par convention (ce n est pas vérifié par le compilateur), doit commencer par une majuscule, pour différencier les classes des objets, qui, eux, commencent par une minuscule. Notons au passage que Java est «sensible à la casse» (case sensitive) comme son ancêtre le C, c est-à-dire qu il différencie les majuscules des minuscules. Exemple de classe : class Fournisseur { } A l intérieur du bloc seront alors déclarés : les attributs, avec leur type suivi de leur nom, les méthodes, avec leur nom, précédé du type de leur résultat (void si elles n en retournent pas) et suivi des paramètres formels entre parenthèses. Chaque paramètre est précédé de son type et ils sont séparés par des virgules. Les parenthèses sont obligatoires, même si la méthode n admet pas de paramètres. Exemple : class Rectangle { double largeur ; double hauteur ; double surface() ; void afficher(double x, double y) ; } Les types Les types autorisés par Java sont de deux sortes : Amine Brikci-Nigassa 26
30 Les classes, types des objets qui sont leurs instances. Les attributs peuvent alors être des objets, comme une méthode peut retourner un objet ou recevoir un objet en paramètre. Exemple : l attribut nom sera un objet du type prédéfini String (chaîne de caractère). Les types simples, ou élémentaires, d une façon moins orthodoxe, et contraire au paradigme qui stipule que «tout est objet», ce sont des types scalaires du style de ceux que l on rencontre dans les langages structurés, à savoir boolean, int, float, double, char, etc. (respectivement booléen, entier, réel, réel en double précision, caractère). Leur utilisation a été prévue dans un souci de simplification, mais il est toujours possible de les remplacer par les classes prédéfinies équivalentes Boolean, Integer, Float, Double, Character, etc. qui sont appelées «classes enveloppes» et qui permettent d utiliser plutôt des objets (en pratique, elles sont bien plus rarement nécessaires). Toujours est-il qu en permettant l utilisation des types simples, Java s avère s être détourné du «droit chemin» de l approche objet. Quant aux tableaux, ils peuvent être classés parmi la première catégorie : en Java, les tableaux sont des objets. Constructeurs et destructeurs particulières : La plupart des langages de P.O.O. prévoient en plus deux genres de méthodes Le constructeur alloue l espace mémoire nécessaire à l objet, littéralement «construit» l objet, initialise ces attributs, effectue les opérations initiales au moment de la création de l objet. En Java, le constructeur est reconnaissable par : son nom : il porte le même nom que la classe des objets qu il est destiné à construire (et donc, par convention, débute par une majuscule) ; Amine Brikci-Nigassa 27
31 l absence de type de retour : n étant pas fait pour retourner un résultat, la déclaration d un constructeur, en Java, n est précédée d aucun type (pas même void). L allocation de la mémoire et la «construction» de l objet sont implicites et ne nécessitent aucun code de la part du programmeur, qui, par contre, pourra écrire les instructions d initialisation des attributs. «vide». Si sa déclaration est omise, Java attribuera implicitement un constructeur Le destructeur désalloue l espace mémoire réservé à l objet, et, éventuellement, effectue certaines ultimes actions avant de détruire l objet. Contrairement à C++ par exemple, il n y a pas d appel au destructeur en Java. La machine s occupe automatiquement de libérer la mémoire grâce à un processus appelé «ramasse-mietttes» (garbage collector) qui est capable de détecter l absence de référence à un objet et donc son «inutilité». Il est cependant possible de déclarer une méthode particulière, la méthode finalize(), qui est automatiquement exécutée au moment de la destruction de l objet par le ramasse-miettes, mais cette méthode n est que très rarement 12 utilisée car le ramassemiettes est imprévisible (la destruction peut même ne jamais se faire si le besoin ne se fait pas sentir). Instanciation Les classes, une fois déclarées, peuvent être utilisées pour créer de nouveaux objets. Cette instanciation est réalisée grâce à l opérateur new, dont le rôle est de provoquer l allocation de mémoire et l initialisation de l objet à construire et fait appel pour cela à son constructeur. 12 dans les cas où l objet utilise de la mémoire par l intermédiaire de méthodes natives, mémoire qui ne pourra donc être libérée par le garbage collector, et devra l être de façon explicite Amine Brikci-Nigassa 28
32 Exemples : new Rectangle(); new Bouton("Annuler"); Pour pouvoir être utilisé, l objet ainsi créé doit être affecté à une variable de même type préalablement déclarée. Exemple : Rectangle r; r = new Rectangle(); Notons que les instructions de déclaration d instanciation sont souvent combinées comme dans l exemple suivant : Rectangle r = new Rectangle(); Identité d un objet : notion de référence En réalité, la variable prédéclarée n est pas un objet proprement dit mais une référence à un objet (assimilable à un pointeur dans les langages tels que C ou Pascal). Cette référence est la seule entité réellement manipulée par le programmeur. Au moment de sa déclaration, elle ne «pointe» sur aucun objet et c est après l instanciation et l affectation que sont reliés la référence avec l objet réel. Il faut toujours garder cette vision à l esprit car elle permet d expliquer certains phénomènes comme : le passage «par adresse» des objets comme paramètres des méthodes : Le passage des paramètres en Java se fait toujours par valeur, mais, comme les variables manipulées sont des références et non des objets, cela revient à faire un passage par adresse. l affectation d un objet à un autre : Une telle affectation ne permet pas d obtenir deux objets identiques mais un seul objet référencé par deux variables. C est ainsi que si l on affecte à une variable objet a une autre variable b, modifier l état de b ne peut se faire sans modifier aussi celui de a, puisqu il d agit du même objet. Amine Brikci-Nigassa 29
33 le test d égalité de deux objets : Deux objets distincts ayant le même contenu ne sont pas égaux, puisqu ils ont une identité différente et occupent des espaces mémoire différents, et ont des références différentes. Exemple : si l on crée deux variables objet a et b de type Rectangle avec les instructions suivantes : Rectangle a = new Rectangle(10, 15); Rectangle b = new Rectangle(10, 15); On aurait tendance à croire que a est égal à b (ce qui se note a == b en Java), ce qui est faux car les objets référencés par a et par b ont été créés indépendamment, occupent donc des espaces mémoires différents, et sont donc bien référencés par des variables différentes. a est bien différent de b, même si les objets qu ils référencent sont du même type et ont le même état. Cette égalité des contenus est parfois appelée égalité profonde 13, par opposition à l égalité superficielle, qui concerne les références à un même objet. On voit bien que c est par cette notion de référence que Java implémente la notion théorique d identité abordée dans notre introduction sur les objets (p.5). Deux objets ayant le même contenu n ont pas forcément la même identité. Encapsulation Chaque objet en Java encapsule des données et des méthodes bien sûr. Les types des données sont déclarés dans la classe, et leurs valeurs font partie de l objet. Quant aux méthodes, leur corps est entièrement présent avec la classe, ce qui permet de le réutiliser pour chaque instance sans occuper d espace mémoire supplémentaire, si ce n est pour les références à ces méthodes, qui, elles, accompagnent chaque objet. L encapsulation dans le sens du masquage des données est contrôlée par le programmeur grâce aux modificateurs de visibilité private, protected et public. Elle n est pas toujours respectée, puisque Java permet de laisser publics des attributs, ce qui transgresse les lois du paradigme objet. Il est conseillé de permettre 13 l implémentation d une méthode equals() permet de la tester Amine Brikci-Nigassa 30
34 uniquement la lecture des données d un objet et non leur modification directe, et donc de préférer à l utilisation de champs publics la déclaration de méthodes publiques de lecture qui retournent la valeur de ces champs. On pourra nommer ces méthodes du même nom que l attribut qui leur correspond. Exemple : ajouter à l interface de la classe Rectangle les méthodes publiques hauteur() et largeur() pour retourner les valeurs respectives des attributs privés hauteur et largeur permet d empêcher les autres objets de modifier ces derniers tout en leur permettant de se renseigner sur leurs valeurs. Héritage L héritage en Java est limité à sa forme simple. En effet, les concepteurs de ce langage ont constaté que l utilisation de l héritage multiple multipliait (c est le cas de le dire) les risques d erreurs de programmation, et rendait difficile leur détection. Ces erreurs peuvent provenir d une confusion dans les noms des opérations héritées de plusieurs classes. Une sous-classe qui hériterait de deux méthodes de même nom provenant de deux classes différentes poserait le problème de savoir quelle méthode prendre. L héritage multiple n étant vraiment utile que pour spécifier des interfaces (dans le sens partie publique du comportement) à implémenter dans une sous-classe, il a été remplacé par la notion d interfaces qui peuvent, elles, être héritées de façon multiple sans poser de problème. L héritage est vu comme une extension de la super-classe, c est pourquoi Java utilise le mot-clé extends pour l indiquer dans la déclaration de la classe, en le faisant suivre du nom de la super-classe ainsi étendue. Exemple : class Western extends Film { } Amine Brikci-Nigassa 31
35 Polymorphisme Liaison dynamique Le polymorphisme proprement dit est possible en Java grâce au mécanisme de liaison dynamique (dynamic binding). Contrairement à C++, Java ne demande pas d indiquer explicitement qu une méthode est destinée à être polymorphe. La liaison dynamique fait que la méthode effectivement exécutée en conséquence d un message n est déterminée qu au moment de l exécution, et non à la compilation comme pour les méthodes non-polymorphes. Exemple : Imaginons une opération qui demanderait l effacement de plusieurs objets des types Rectangle, Cercle, Triangle etc., différents, stockés dans un tableau d éléments de type FormeGéométrique. Elle pourrait simplement appeler la méthode effacer(), préalablement déclarée dans leur super-classe commune, pour tous les objets. Cet appel pourrait par exemple être effectué dans une boucle itérative. C est à l exécution que l interpréteur déterminerait l action à effectuer en fonction du véritable type de l objet et relierait dynamiquement l appel de l opération à la bonne méthode. Surcharge des méthodes Le polymorphisme ad hoc, ou surcharge des méthodes est également une des puissantes possibilités du langage Java. Il se base sur la différenciation des méthodes par leur signature, afin de pouvoir nommer des méthodes différentes par le même identificateur pour réagir différemment selon le type et le nombre des paramètres de la méthode. La signature d une méthode est constituée du nom de la méthode suivi de la liste ordonnée des types de ses arguments. Une classe peut avoir des méthodes de Amine Brikci-Nigassa 32
36 même nom à condition qu elles aient des signatures distinctes, c est-à-dire qu elles diffèrent : soit par le nombre de ses paramètres, soit par leur type, soit par leur ordre. Cette caractéristique est particulièrement intéressante dans le cas des méthodes particulières que sont les constructeurs. C est grâce à la surcharge qu une classe peut définir plusieurs constructeurs, qui permettent de créer un objet différemment selon les circonstances. En effet, un constructeur ne peut avoir d autre nom que celui de sa classe. Il suffit donc que les différents constructeurs aient des signatures différentes. Nous remarquons que la signature n inclut pas le type de retour de la méthode. C est tout à fait compréhensible du fait qu au moment de l appel, le type de retour peut ne pas être déterminé. Contrairement au polymorphisme proprement dit, la surcharge ne met pas en jeu la liaison dynamique. En effet, il s agit d une liaison statique : c est au moment de la compilation que la bonne méthode est choisie. Classes abstraites Java permet de déclarer une méthode seulement par son en-tête, sans en donner le corps. Il faut pour cela faire précéder le corps de cette méthode abstraite par le modificateur abstract qui signifie : «je n ai pas d implémentation pour cette méthode pour l instant, je la définirai dans les sous-classes». Une classe qui comporte de telles méthodes est appelée elle-même classe abstraite, et doit elle aussi être précédée dans sa définition du mot-clé abstract, pour signifier qu elle ne sera pas instanciée et que sa raison d être n est autre que de constituer une généralisation de ses sous-classes. Amine Brikci-Nigassa 33
37 Il existe dans le JDK plusieurs classes abstraites, qui sont volontairement ou non utilisées quand on programme en Java. La plus remarquable sans doute est la classe Object, qui n est rien de moins que la super-classe «mère» de toutes les classes existantes et créées. En effet, toute classe en Java hérite explicitement ou implicitement de la classe Object, qui constitue la «racine» de l arborescence des relations d héritage. Cette classe est bien sûr abstraite, et dicte le comportement de base que toute classe Java doit au minimum avoir. Interfaces Lorsque toutes les méthodes d une classe sont abstraites, il s agit alors d un cas particulier : la classe ne sert qu à spécifier les caractéristiques de l interface de ses sousclasses, puisque aucune de ses méthodes n est définie. Cette classe abstraite particulière est une interface. Bien qu elle puisse être déclarée par le mot-clé abstract, comme toutes les classes abstraites, il vaut mieux utiliser pour cela le motclé interface, qui remplacera alors le mot class. Les classes qui implémenteront cette interface n utiliseront plus le mot-clé extends, mais implements. L avantage des interfaces est de permettre l équivalent de l héritage multiple, qui se traduira par l implémentation de plusieurs interfaces, ou par l extension d une super-classe et l implémentation d une interface. Java fournit en standard plusieurs interfaces à implémenter. Elles permettent une meilleure organisation des classes. Paquetages Le JDK comporte une collection importante de classes et d interfaces, certaines indispensables et d autres utiles pour des applications spécifiques. Ces classes sont organisées en paquetages, tous réunis en un seul et même fichier compressé au Amine Brikci-Nigassa 34
38 format ZIP (ou au format JAR 14 pour les nouvelles versions), qui renferme une arborescence de répertoires, chaque répertoire correspondant à un paquetage différent. C est ainsi que le paquetage java.lang rassemble les classes fondamentales du langage telles que la fameuse classe Object, les classes String des chaînes de caractères, Math dont les méthodes sont les fonctions mathématiques (racine carrée, logarithme, etc.). Les paquetages sont par convention écrits en minuscules. Le nom des souspaquetages est toujours précédé de celui de leur paquetage «parent», séparé par un point. Exemple : le sous-paquetage dnd du paquetage java.awt est représenté par java.awt.dnd. Le tableau suivant donne quelques exemples de paquetages standard : Tableau 1 : Quelques paquetages de la plate-forme Java 2 (extrait de la documentation du JDK 1.3) 14 qui n est en fait que le format ZIP avec un fichier descriptif («manifest») supplémentaire Amine Brikci-Nigassa 35
39 Paquetage Description java.applet Fournit les classes nécessaires pour créer une applet ( ) java.awt Contient toutes les classes pour créer des I.H.M. et pour dessiner des graphiques. java.awt.color Fournit des classes pour les couleurs java.awt.dnd Fournit les classes nécessaires au «drag and drop» (glisser-déposer) java.io Fournit les classes utilisées pour les entrées-sorties java.lang Fournit les classes fondamentales du langage java.math 15 Fournit les classes nécessaires aux calculs arithmétiques à haute précision (BigInteger et BigDecimal) java.net Fournit les classes pour implémenter les applications réseaux java.sql Fournit les classes du JDBC, nécessaires au traitement des bases de données. java.util Contient diverses classes utilitaires java.util.zip Fournit les classes pour lire et écrire les formats ZIP et GZIP standard javax.sound.midi Interfaces et classes pour le séquençage et la synthèse de musiques MIDI javax.sound.sampled Interfaces et classes pour le traitement de sons échantillonnés javax.swing Fournit l ensemble des composants «Swing», pour interfaces graphiques portables org.omg.corba Fournit les classes permettant le support du standard CORBA de l OMG Parallèlement à ces paquetages standard, Java permet de constituer sa propre «bibliothèque» de paquetages. Il suffit pour cela de créer une arborescence de répertoires de mêmes noms que les paquetages à créer et de faire commencer les fichiers source des classes à inclure dans ces paquetages par le mot-clé package suivi du nom du paquetage (et d un point-virgule). Exemple : supposons que j aie créé la classe NombreComplexe et que je veuille la mettre dans le paquetage reda.math. Il suffit pour cela que je crée le répertoire reda et son sous-répertoire math et que je mette dans ce dernier le fichier NombreComplexe.java, sans oublier d y insérer au début la ligne : package reda.math ; 15 à ne pas confondre avec la classe java.lang.math Amine Brikci-Nigassa 36
40 Pour accéder aux classes d un package, il faut soit faire précéder leur nom du nom complet de leur package (en les séparant par un point), soit commencer le fichier source par le mot clé import, suivi du nom des classes à importer (le caractère générique * pouvant être utilisé). Exemple : pour utiliser la classe NombreComplexe, on peut soit la nommer par reda.math.nombrecomplexe, soit faire précéder la classe qui l utilise par : import reda.math.* ; ce qui permet en même temps de pouvoir accéder à toutes les autres classes du package reda.math par leur simple «petit nom». Persistance des objets Le problème de la persistance peut être résolu en Java par deux types de solutions : la sérialisation, et l utilisation des bases de données avec le JDBC. La sérialisation C est une opération consistant à lire et écrire un objet dans un flux, par transformation des objets en une série d octets lue ou écrite en une seule fois. La sérialisation dans des fichiers est une solution souvent très satisfaisante quand la quantité d informations à sauvegarder est minime. Elle met en jeu l interface Serializable qui est la spécification à suivre si nous voulons que nos objets puissent «persister» par sérialisation. Cependant, dès que les données prennent des proportions assez considérables, cette méthode s avère insuffisante. Amine Brikci-Nigassa 37
41 Le JDBC Le JDBC (Java DataBase Connectivity) est la partie de Java qui permet d utiliser les bases de données. Ecrit pour l utilisation des SGBDR, il suit le standard du langage de requêtes SQL. Le package qui contient les classes du JDBC se nomme d ailleurs java.sql. Le problème qui se pose ici est l utilisation de tables pour sauvegarder des données qui à l origine sont des objets. La rupture est choquante de prime abord. Java n est-il pas un langage «tout objet»? Le choix des créateurs de Java s est porté sur le standard le plus utilisé en matière de bases de données, à savoir le modèle relationnel et le langage SQL, n ayant pas voulu risquer de perdre le pari de continuer dans la lignée du paradigme objet en implémentant un mécanisme de liaison avec les SGBDO. Ceux-ci sont encore source de réticences pour la majorité des utilisateurs. Comment implémenter la persistance des objets quand on n a la possibilité d utiliser que des bases de données relationnelles? Beaucoup sont découragés et finissent par convertir les objets qu ils ont eu tant de mal à cerner pendant les phases d analyse et de conception (objet bien sûr) en tables. Ils se retrouvent alors avec un «banal» modèle entité-relations et on ne retrouve aucun des objets de l analyse dans les fichiers source de leur logiciel. A quoi bon alors avoir utilisé le must des langages de P.O.O.? Une simple implémentation avec un langage de SGBDR (tel que Fox-Pro ou Nantucket Clipper) n aurait-elle pas fait l affaire? George Reese (1998) (auteur du premier pilote JDBC) apporte la solution la plus proche des concepts d abstraction de l approche objet au problème de la persistance en Java. Il propose de «créer une couche logicielle, absente de JDBC, permettant de stocker les objets dans une base relationnelle puis de les relire». Cette couche logicielle, réalisée sous la forme d une bibliothèque de persistance est, une fois créée, «exploitable par tout type d application de base de données». Elle permet de faire abstraction de la structure des tables qui seront manipulées et de ne se concentrer que sur l aspect purement objet des données. La persistance sera alors Amine Brikci-Nigassa 38
42 déclenchée par quelques méthodes rattachées aux objets persistants, telles que sauve() et restaure(), qui déclencheront les mécanismes inhérents à la couche logicielle dédiée aux opérations de persistance. Trop complexes pour entrer dans le cadre de ce mémoire, les solutions apportées par cet auteur pourraient faire l objet d une étude approfondie non dénuée d intérêts, surtout dans le domaine de la programmation Java appliquée à l informatique de gestion (voir l ouvrage cité en référence bibliographique). Amine Brikci-Nigassa 39
43 Conclusion Notre travail n a pas la prétention d évaluer le langage Java. Le but recherché n est que l assimilation des différentes notions apportées par l approche objet et leur comparaison avec ce qu apporte ce jeune langage plein de promesses. Cela nous a permis de nous familiariser avec la pensée objet et surtout de la démystifier. Un langage purement objet est-il une utopie? Java a été créé pour approcher cette utopie, il n a cependant pas pu s empêcher de dévier quelque peu du «droit chemin» dicté par cette philosophie. En implémentant des types élémentaires non objet, en permettant la déclaration de champs de données publics, en empêchant l héritage multiple, en préférant les SGBDR aux SGBDO, il a pêché. Faut-il l en blâmer? Les habitudes des programmeurs se calqueront-elles un jour parfaitement sur le paradigme objet? Est-ce vraiment nécessaire? Le monde du logiciel tend doucement à devenir «tout objet» et les nouveaux langages, comme le désormais célèbre Python, essaient de suivre au mieux toutes les règles de la conduite orientée objet. Amine Brikci-Nigassa 40
44 BIBLIOGRAPHIE 1. Jérôme AVRILLON et Erik DASQUE. Deux cafés, l addition! Mémoire de fin d études d ingénieur à l Ecole Supérieure d Informatique (1996). URL : 2. Klaus BERGNER, Andreas RAUSCH et Marc SIHLING. Using UML for Modeling a Distributed Java Application. Institut für Informatik, Technische Universität München (1997). 3. Laurent BOIS. Informations sur Java. (1996). URL : 4. Michel BONJOUR, Gilles FALQUET, Jacques GUYOT et André LE GRAND. Java : de l esprit à la méthode. Distribution d applications sur Internet. Vuibert (2 édition, 1999). 5. Borland France. URL : 6. Sabrina BOUAZOUN. Développement orienté objet d un système de gestion des stocks. Mémoire d ingénieur. Institut National de Formation en Informatique Oued-Smar. Promotion Jean BRONDEAU. Introduction à la programmation objet en Java. Cours et exercices. Dunod (1999). 8. Bruce ECKEL. Thinking in Java. (2 édition, 2000). Gratuitement disponible à l adresse http :// 9. Bruce ECKEL. Thinking in Patterns. Problem-Solving Techniques using Java. (2000). Gratuitement disponible à l adresse http :// 10.Aurélien ESNARD. Cours de Java 2. ENSERB informatique (1999). 11.Véronique GAILDRAT. Le langage JAVA 1.1 : le résumé. Amine Brikci-Nigassa 41
45 12.Francis GAILLARD. Comparatif des environnements de développement Java. URL : 13.Georges GARDARIN. Bases de données. Objet et relationnel. Eyrolles (1999). 14.Jean-Luc HAINAUT. Bases de données et modèles de calcul. Outils et méthodes pour l utilisateur. Dunod (2 édition, 2000). 15.Michel LAI. Penser objet avec UML et Java. Dunod (2 édition, 2000). 16.Djallal S.-A. MIDOUNI et Lotfi S. SETTOUTI. Réalisation d un logiciel de gestion de bibliothèque sous l approche objet. Mémoire de DEUA. Faculté des Sciences de l Ingénieur. Université A.-B. Belkaid Tlemcen. (2001) 17.Pierre-Alain MULLER. Modélisation objet avec UML. Eyrolles (1997). 18.Laurent PIECHOCKI. UML en français. URL : 19.Jean-François PILLOU. Comment ça marche? [l informatique]. Site de vulgarisation informatique. URL : 20.Sébastien PISSAVY. L approche orientée objet. Fanzine «Le Reporter» N 3 (1994). 21.Rational Software. URL : 22.George REESE. JDBC et Java. Guide du programmeur. O Reilly (1998). 23.Sun Microsystems. URL : 24.Syseca. Glossaire Syseca, 30 ans d informatique. Syseca (1997). Amine Brikci-Nigassa 42
Évaluation et implémentation des langages
Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation
Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique
Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation
Chapitre I Notions de base et outils de travail
Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement
Langage et Concepts de ProgrammationOrientée-Objet 1 / 40
Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne [email protected]
as Architecture des Systèmes d Information
Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes
Programmer en JAVA. par Tama ([email protected]( [email protected])
Programmer en JAVA par Tama ([email protected]( [email protected]) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes
TP1 : Initiation à Java et Eclipse
TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les
Initiation à JAVA et à la programmation objet. [email protected]
Initiation à JAVA et à la programmation objet [email protected] O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation
Éléments de programmation et introduction à Java
Éléments de programmation et introduction à Java Jean-Baptiste Vioix ([email protected]) IUT de Dijon-Auxerre - LE2I http://jb.vioix.free.fr 1-20 Les différents langages informatiques
UML (Diagramme de classes) Unified Modeling Language
UML (Diagramme de classes) Unified Modeling Language Sommaire Introduction Objectifs Diagramme de classes Classe (Nom, attribut, opération) Visibilité et portée des constituants d une classe Association
IFT2255 : Génie logiciel
IFT2255 : Génie logiciel Chapitre 6 - Analyse orientée objets Section 1. Introduction à UML Julie Vachon et Houari Sahraoui 6.1. Introduction à UML 1. Vers une approche orientée objet 2. Introduction ti
Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java
Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page
Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java
Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique
INTRODUCTION A JAVA. Fichier en langage machine Exécutable
INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du
Premiers Pas en Programmation Objet : les Classes et les Objets
Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.
La technologie Java Card TM
Présentation interne au CESTI La technologie Java Card TM [email protected] http://dept-info.labri.u-bordeaux.fr/~sauveron 8 novembre 2002 Plan Qu est ce que Java Card? Historique Les avantages
Programmation Orientée Objet
Université de Pau et des Pays de l Adour Institut Universitaire de Technologie des Pays de l Adour Département Réseaux et Télécommunications 371, rue du Ruisseau BP 201 40004 Mont-de-Marsan Cedex tél :
Structure d un programme et Compilation Notions de classe et d objet Syntaxe
Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types
Analyse,, Conception des Systèmes Informatiques
Analyse,, Conception des Systèmes Informatiques Méthode Analyse Conception Introduction à UML Génie logiciel Définition «Ensemble de méthodes, techniques et outils pour la production et la maintenance
Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2
Langage et Concepts de Programmation Objet Travaux Dirigés no2 Pôle Informatique École Nationale Supérieure des Mines de St-Etienne Vous trouverez plus de détails sur les concepts abordés lors de ce TD
Annexe : La Programmation Informatique
GLOSSAIRE Table des matières La Programmation...2 Les langages de programmation...2 Java...2 La programmation orientée objet...2 Classe et Objet...3 API et Bibliothèque Logicielle...3 Environnement de
Chapitre VI- La validation de la composition.
Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions
Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. [email protected]
. Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 [email protected] LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le
Développement d un interpréteur OCL pour une machine virtuelle UML.
ObjeXion Software Prototyping made easy SA au capital de 500 000 F Siret 421 565 565 00015 APE 722Z Téléphone : 03 89 35 70 75 Télécopie : 03 89 35 70 76 L embarcadère 5, rue Gutemberg 68 800 Vieux-Thann,
Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère
L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la
C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement
C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement des objets d'une classe Utilisation d'une classe Droit
Une introduction à Java
Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)
Université de Bangui. Modélisons en UML
Université de Bangui CRM Modélisons en UML Ce cours a été possible grâce à l initiative d Apollinaire MOLAYE qui m a contacté pour vous faire bénéficier de mes connaissances en nouvelles technologies et
Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.
Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres
Cours 1: Java et les objets
Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/
Généralités sur le Langage Java et éléments syntaxiques.
Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...
INITIATION AU LANGAGE JAVA
INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal
Java c est quoi? Java pourquoi?
Grandes lignes du cours Cours JAVA : Le bases du langage Java. Version 3.02 Julien Sopena 1 1 [email protected] Équipe REGAL - INRIA Rocquencourt LIP6 - Université Pierre et Marie Curie Licence professionnelle
Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf
Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations
GOL502 Industries de services
GOL502 Industries de services Conception d un service Partie IIb Version 2013 Introduction Conception d un service partie IIb Nous verrons dans ce chapitre Modélisation d un service; Langage de modélisation
UE Programmation Impérative Licence 2ème Année 2014 2015
UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie [email protected] 2 Programmation Impérative
Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)
Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Module 1 : Programmer une application informatique Durée
Introduction aux concepts d ez Publish
Introduction aux concepts d ez Publish Tutoriel rédigé par Bergfrid Skaara. Traduit de l Anglais par Benjamin Lemoine Mercredi 30 Janvier 2008 Sommaire Concepts d ez Publish... 3 Système de Gestion de
basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML
basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML http://olivier-augereau.com Sommaire Introduction I) Les bases II) Les diagrammes
INITIATION AU LANGAGE C SUR PIC DE MICROSHIP
COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par
Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets
Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper
RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java
RN2-Programmation Orientée Objet - JAVA CH 1 à la POO et Java Licence Professionnelle 2006 Agnès Guerraz INRIA Rhône-Alpes [email protected] LP UPMF, Grenoble Septembre 2006 Ce cours reprend en grande
3. UML - Unified Modeling Language Diagrammes statiques
3. UML - Unified Modeling Language Diagrammes statiques Laëtitia Matignon [email protected] Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski [email protected]
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski [email protected] Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université
Héritage presque multiple en Java (1/2)
Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen
Génie Logiciel avec Ada. 4 février 2013
Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre
Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction
PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés
Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code
Généralités javadoc Université de Nice - Sophia Antipolis Richard Grin Version 1.4.1 8/2/11 javadoc produit de la documentation en partant de commentaires particuliers insérés dans le code source des classes
Environnements de développement (intégrés)
Environnements de développement (intégrés) Introduction aux EDI, la plateforme Eclipse Patrick Labatut [email protected] http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure
Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués
International Journal of Engineering Research and Development e-issn: 2278-067X, p-issn: 2278-800X, www.ijerd.com Volume 7, Issue 5 (June 2013), PP.99-103 Solution A La Gestion Des Objets Java Pour Des
Programmation en Java IUT GEII (MC-II1) 1
Programmation en Java IUT GEII (MC-II1) 1 Christophe BLANC - Paul CHECCHIN IUT Montluçon Université Blaise Pascal Novembre 2009 Christophe BLANC - Paul CHECCHIN Programmation en Java IUT GEII (MC-II1)
Chapitre I : le langage UML et le processus unifié
I. Introduction Les méthodes d analyse orientées objet sont initialement issues des milieux industriels. La préoccupation dominante de leurs auteurs est le génie logiciel, c est-àdire les principes et
Langage Java. Classe de première SI
Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les
Aide mémoire UML & Java 1ère partie : Introduction. [email protected]
Aide mémoire UML & Java 1ère partie : Introduction [email protected] 9 septembre 2014 1 2014 v1.11 Table des matières 1 Généralités 6 1.1 Notations utilisées.....................................
Java Licence Professionnelle CISII, 2009-2010
Licence Professionnelle CISII, 2009-2010 Cours 1 : Introduction à Java A. Belaïd [email protected] Cours disponible sur le site : http://www.loria.fr/~abelaid puis Teaching 1 Fonctionnement 12 séances :
Traduction des Langages : Le Compilateur Micro Java
BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant
Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/2012. 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme Java
1 - Vue générale 2 - Mon premier programme 3 - Types de Programme 1 2 c est quoi? Technologie développée par SUN Microsystems lancée en 1995 Dans un des premiers papiers* sur le langage JAVA, SUN le décrit
Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7
Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin
Créer le schéma relationnel d une base de données ACCESS
Utilisation du SGBD ACCESS Polycopié réalisé par Chihab Hanachi et Jean-Marc Thévenin Créer le schéma relationnel d une base de données ACCESS GENERALITES SUR ACCESS... 1 A PROPOS DE L UTILISATION D ACCESS...
Conception des bases de données : Modèle Entité-Association
Conception des bases de données : Modèle Entité-Association La modélisation d un problème, c est-à-dire le passage du monde réel à sa représentation informatique, se définit en plusieurs étapes pour parvenir
Chapitre 2. Classes et objets
Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons
Cours 1 : La compilation
/38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas [email protected] PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà
L informatique en BCPST
L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité
Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.
Analyse et conception objet du logiciel : Méthode de conception objet et notation UML Rémy Courdier Email : [email protected] Rémy Courdier V2.1 1 Plan du cours Introduction au Génie Logiciel
Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)
Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07
Architectures web/bases de données
Architectures web/bases de données I - Page web simple : HTML statique Le code HTML est le langage de base pour concevoir des pages destinées à être publiées sur le réseau Internet ou intranet. Ce n'est
Créer et partager des fichiers
Créer et partager des fichiers Le rôle Services de fichiers... 246 Les autorisations de fichiers NTFS... 255 Recherche de comptes d utilisateurs et d ordinateurs dans Active Directory... 262 Délégation
4. Utilisation d un SGBD : le langage SQL. 5. Normalisation
Base de données S. Lèbre [email protected] Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :
MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»
MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE» Du cours Modélisation Semi -Formelle de Système d Information Du Professeur Jean-Pierre GIRAUDIN Décembre. 2002 1 Table de matière Partie 1...2 1.1
UML (Paquetage) Unified Modeling Language
UML (Paquetage) Unified Modeling Language Sommaire Introduction Objectifs Paquetage Espace de nommage d un paquetage Dépendances entre paquetages 2 Notion introduite véritablement par UML car superficiellement
Programmation Objet Java Correction
INSA - 4 AE 2007 2008 Durée : 1H00 Contrôle Programmation Objet Java Correction Consignes Tous les documents sont autorisés, mais ils seront peu utiles. Indiquez vos nom et prénom sur chaque feuille. Le
Objets et Programmation. origine des langages orientés-objet
Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève
Programmation C. Apprendre à développer des programmes simples dans le langage C
Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités
INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE
I N T E RS Y S T E M S INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE David Kaaret InterSystems Corporation INTERSySTEMS CAChé CoMME ALTERNATIvE AUx BASES de données RéSIdENTES
Bases Java - Eclipse / Netbeans
Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement
Les structures. Chapitre 3
Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre
1 Introduction et installation
TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on
Bases de données. Chapitre 1. Introduction
Références : Bases de données Pierre Wolper Email : [email protected] URL : http : //www.montefiore.ulg.ac.be/~pw/ http : //www.montefiore.ulg.ac.be/ ~pw/cours/bd.html Henry F. Korth, Abraham Silberschatz,
Polymorphisme, la classe Object, les package et la visibilité en Java... 1
Polymorphisme, la classe Object, les package et la visibilité en Java. Polymorphisme, la classe Object, les package et la visibilité en Java.... 1 Polymorphisme.... 1 Le DownCast... 4 La Classe Object....
Notions fondamentales du langage C# Version 1.0
Notions fondamentales du langage C# Version 1.0 Z 2 [Notions fondamentales du langage Csharp] [Date : 25/03/09] Sommaire 1 Tout ce qu il faut savoir pour bien commencer... 3 1.1 Qu est ce qu un langage
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface
RTDS G3. Emmanuel Gaudin [email protected]
RTDS G3 Emmanuel Gaudin [email protected] PragmaDev Dédiée au développement d un AGL pour le développement des applications temps réel et embarquées. Réseau de partenaires: Formations, Service,
Eclipse atelier Java
Eclipse atelier Java Table des matières 1. Introduction...2 2. Télécharger eclipse...3 3. Installer eclipse...3 4. Premier lancement d eclipse...3 5. Configurer eclipse pour faire du Java...5 6. Développer
LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation
ING 01 LANGAGUE JAVA Durée : 21 heures 1090 HT / jour Dates : à définir en 2012 Concevoir et développer des programmes en langage Java Comprendre le fonctionnement de la machine virtuelle S approprier
Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)
Introduction à la POO 1. Histoire de la POO 9 2. Historique du 12 La conception orientée objet 1. Approche procédurale et décomposition fonctionnelle 13 2. La transition vers l'approche objet 14 3. Les
Auto-évaluation Programmation en Java
Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN
RMI le langage Java XII-1 JMF
Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine
Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.
: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL
Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle
2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA Stéphane Vialle [email protected] http://www.metz.supelec.fr/~vialle 1 Principes 2 Architecture 3 4 Aperçu d utilisation
Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles
Types d applications pour la persistance Université de Nice Sophia-Antipolis Version 0.9 28/8/07 Richard Grin Toutes les applications n ont pas une complexité qui nécessite une architecture n- tiers Ce
DOSSIER SOLUTION CA ERwin Modeling. Comment gérer la complexité des données et améliorer l agilité métier?
DOSSIER SOLUTION CA ERwin Modeling Comment gérer la complexité des données et améliorer l agilité métier? CA ERwin Modeling fournit une vue centralisée des définitions de données clés afin de mieux comprendre
XML, PMML, SOAP. Rapport. EPITA SCIA Promo 2004 16 janvier 2003. Julien Lemoine Alexandre Thibault Nicolas Wiest-Million
XML, PMML, SOAP Rapport EPITA SCIA Promo 2004 16 janvier 2003 Julien Lemoine Alexandre Thibault Nicolas Wiest-Million i TABLE DES MATIÈRES Table des matières 1 XML 1 1.1 Présentation de XML.................................
Patrons de Conception (Design Patterns)
Patrons de Conception (Design Patterns) Introduction 1 Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques
La carte à puce. Jean-Philippe Babau
La carte à puce Jean-Philippe Babau Département Informatique INSA Lyon Certains éléments de cette présentation sont issus de documents Gemplus Research Group 1 Introduction Carte à puce de plus en plus
UML et les Bases de Données
CNAM UML et les Bases de Données UML et les Bases de Données. Diagramme de classes / diagramme d objets (UML)...2.. Premier niveau de modélisation des données d une application...2.2. Les éléments de modélisation...2.2..
CORBA. (Common Request Broker Architecture)
CORBA (Common Request Broker Architecture) Projet MIAGe Toulouse Groupe 2 1 CORBA, introduction (1/4) Les systèmes répartis permettent de créer des applications basées sur des composants auto-gérables,
Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5
UNIVERISTE MOHAMMED PREMIER Faculté des Sciences d Oujda Oujda - Maroc Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5 Pr. El Mostafa DAOUDI Département de Mathématiques
Mise en œuvre des serveurs d application
Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés
Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2
éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........
