Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Dimension: px
Commencer à balayer dès la page:

Download "Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object"

Transcription

1 Facultés Universitaires Notre-Dame de la Paix Conception et Programmation Orientées- Object

2 RÉSUMÉ PRATIQUE... 4 CLASSE OBJET... 4 NOTION D HÉRITAGE... 4 LE POLYMORPHISME... 5 LES CLASSES ABSTRAITES... 6 LES INTERFACES... 6 LES EXCEPTIONS... 7 LES EXCEPTIONS PERSONNALISÉES... 7 GESTION DE PLUSIEURS EXCEPTIONS... 8 LES COLLECTIONS D OBJET... 8 RÉSUMÉ DU COURS THÉORIQUE CHAPITRE LA MODULARITÉ L ABSTRACTION CHAPITRE 2 : OBJETS ET JAVA LES OBJETS LES CLASSES LES DIAGRAMMES DE CLASSE L ENCAPSULATION VISIBILITÉ PACKAGES ET VISIBILITÉ OBJETS ET VARIABLES STACK ET HEAP PARTAGE DE RÉFÉRENCE LE GARBAGE COLLECTOR LA MUTABILITÉ L APPEL DE MÉTHODES LE TYPE CHECKING HIÉRARCHIE DES TYPES PRINCIPE DE SUBSTITUTION VALIDITÉ DES ASSIGNATIONS TYPE DÉCLARÉ VS TYPE EFFECTIF LE CASTING CONVERSION DE TYPE L OVERLOADING LE DISPATCHING LES TYPES D OBJETS PRIMITIFS VECTOR CHAPITRE 3 : ABSTRACTION PROCÉDURALE RAPPEL : ABSTRACTION PAR SPÉCIFICATION LES SPÉCIFICATIONS

3 MÉTHODE EN JAVA CONCEPTION D ABSTRACTIONS PROCÉDURALES CHAPITRE 4 : LES EXCEPTIONS RETOUR D UNE VALEUR PARTICULIÈRE DU TYPE DE RETOUR PRINCIPE DES EXCEPTIONS DANS LA SPÉCIFICATION LES TYPES D EXCEPTIONS DÉFINITION D EXCEPTIONS CRÉATION D EXCEPTIONS RENVOI D EXCEPTIONS GESTIONS D EXCEPTIONS : TRY{} ET CATCH{} LA PROPAGATION PROGRAMMER AVEC LES EXCEPTIONS CHAPITRE 5 : ABSTRACTION DE DONNÉES PRINCIPE LA SPÉCIFICATION L IMPLÉMENTATION LES MÉTHODES EQUALS, SIMILAR, CLONE ET TOSTRING AIDES À LA COMPRÉHENSION ET À LA VÉRIFICATION DE L IMPLÉMENTATION LA FONCTION D ABSTRACTION (FA) L INVARIANT DE REPRÉSENTATION (IR) L IMPLÉMENTATION DE LA FA ET DE L IR REMARQUES SUR LA FA ET L IR NE PAS EXPOSER LA REP TYPES MUTABLES VS TYPES IMMUTABLES LES 4 TYPES D OPÉRATIONS ADÉQUATION DE TYPES RAISONNEMENT RÉSUMÉ DU CHAPITRE 5 (TEL QUE DANS LE COURS) CHAPITRE 6 : ABSTRACTION DE L ITÉRATION OBJECTIF LES ITÉRATEURS EN JAVA LA SPÉCIFICATION D UN ITÉRATEUR IMPLÉMENTATION D ITÉRATEUR CHAPITRE 7 : HIÉRARCHIES DE TYPES DÉFINITION D UNE HIÉRARCHIE DE TYPES CLASSE ABSTRAITE INTERFACES SÉMANTIQUE DU SOUS-TYPAGE RÈGLE DES SIGNATURES RÈGLE DES MÉTHODES RÈGLE DES PROPRIÉTÉS RÉSUMÉ DE CE CHAPITRE

4 Note : Les «A retenir» ont été copiés du site du zéro. Classe objet RÉSUMÉ PRATIQUE Les 3 types de variables dans une classe objet : - Les variables d'instances : ce sont elles qui définiront les caractéristiques de notre objet. Elles sont de préférences privates, ainsi on ne peut pas y accéder ou les modifier sans passer par des accesseurs ou des mutateurs. - Les variables de classes : celles-ci sont communes à toutes les instances de notre classe. Exemple: pour le nombre d'instances d'une classe. Déclarations public ou private, toujours static. Attention! Les méthodes de classes n'utilisant que des variables de classes doivent toujours être déclarées static. On les appelle méthodes de classes. (Ce n'est plus vrai si elle utilise aussi d'autres types de variables). Ne pas oublier de préciser dans quelle classe elle se trouve (par ex: ville.getnombreinstance()). - Les variables locales : ce sont des variables que nous utiliserons pour travailler dans notre objet. Notes : Les constructeurs d'une classe doivent porter le même nom que la classe. This fait référence à l'objet courant. A retenir : Une classe permet de définir des objets. Ceux-ci ont des attributs (variables d instances) et des méthodes (méthodes de classes + accesseurs (le terme accesseurs comprend aussi les mutateurs en fait)). Les objets permettent d'encapsuler du code et des données. Une classe est par défaut déclarée public. Le ou les constructeurs d'une classe doivent porter le même nom que la classe, et pas de type de retour! Il est recommandé de déclarer ses variables d'instance private. Dans une classe, on accède aux variables de celle-ci grâce au mot clé this. Une variable de classe est une variable devant être déclarée static. Les méthodes n'utilisant que des variables de classes doivent elles aussi être déclarées static. On instancie un nouvel objet grâce au mot clé new. L'ordre des paramètres passé dans le constructeur doit être respecté. Eclipse nous aide à développer vos applications (javadoc, création de getters et setters automatique). Notion d héritage Apprendre à créer des Classes héritées (classes dérivées) de nos classes mères (classes de base). (Une classe héritée peut aussi être une classe mère pour d autres classes). Mot-clé : extends (classe héritée extends classe mère). Les objets d une classe héritée possèdent tous les attributs et méthodes associée des objets de la classe mère. Les objets hérités peuvent accéder à toutes les méthodes public de leur classe mère. Pour accéder aux variables et méthodes de la classe mère il faut donc que ceux-ci aient la visibilité public. Si elles sont private, il y a un moyen pour qu elles restent protégée des autres classes mais qu elles soient accessibles par les classes filles : les mettre en visibilité protected. Attention : java ne gère pas les héritages multiples (<> au C++) : une classe fille ne peut hériter que d une seule classe mère!!! Pour récupérer les éléments de l objet de base et les envoyer à notre objet hérité : utilise super. 4

5 Pour le constructeur de la classe fille, nous pouvons faire appel au constructeur de la classe mère juste en écrivant super(), et ajouter ensuite des instructions d initialisation spécifiques à la classe fille. (Pareil pour les méthodes de classes). A retenir : Une classe hérite d une autre classe par le biais du mot clé extends. Une classe ne peut hériter que d une seule et unique classe. Si nous ne définissons pas de constructeur dans nos classes, la JVM se charge d en créer un à l interprétation. Si aucun constructeur n est défini dans une classe fille, la JVM en créera un et appellera automatiquement le constructeur de la classe mère. La classe fille hérite de toutes les propriétés et méthodes public et protected de la classe mère. Les méthodes et propriétés private d une classe mère ne sont pas accessibles dans la classe fille. On peut redéfinir (changer tout le code) d une méthode héritée. Le polymorphisme Il permet de manipuler des objets sans vraiment connaître leur type. Covariance des variables : une variable objet peut contenir un objet qui hérite du type de cette variable. La covariance est efficace dans le cas où la classe héritante redéfinit certaines des méthodes de sa super classe. Attention : surcharge de méthode différent de méthode polymorphe : - Une méthode surchargée a des paramètres que la méthode de base n a pas, ou a le même nombre de paramètres, mais de types différents. - Une méthode polymorphe a un squelette identique à celle de base, mais un traitement différent. Celle-ci fait référence à une autre classe et donc, par extension, à une autre instance de cette classe. On peut dire que les méthodes polymorphes sont typiques des classes héritées. Par défaut, lorsque l on crée une classe, celle-ci est héritée de la classe Object présente dans Java. On hérite donc des méthodes protected et public d Object. On peut polymorpher des méthodes d Object, (on les redéfinit) et lorsqu on les appelle, c est par ex : obj de type Object et : obj.methodepolymorphée() qu il faut écrire, et cela va quand même appeler la méthode que l on a redéfinie. Si on met obj.methodeinventéeparnous() ca va planter car une méthode est invoquable par un autre objet que si celui-ci définit la dite méthode! Donc dans ce cas, il faut préciser que la référence de type Object est en fait une référence de type «machincréé» : ((machincréé)obj).methodeinventéeparnous(). Donc, intérêt des méthodes polymorphes : plus besoin de se soucier du type de variable appelante, mais il faut utiliser le type Object avec parcimonie. Les méthodes finales : («final»), elles sont figées et on ne pourra JAMAIS redéfinir une méthode déclarée final. Il existe aussi des classes final. A retenir : On peut utiliser le polymorphisme sur une méthode par le biais du mot clé super. Le polymorphisme permet, entre autres, d ajouter des traitements spécifiques à une méthode en continuant d utiliser les traitements déjà définis (utilisation de super). Grâce à l héritage et au polymorphisme, nous pouvons utiliser la covariance des variables! 5

6 Si une méthode d une classe mère n est pas redéfinie ou polymorphée, à l appel de cette méthode par le biais d un objet enfant, c est la méthode de la classe mère qui sera appelée! Vous ne pouvez pas hériter d une classe déclarée final. Une méthode déclarée final est non redéfinissable. Les classes abstraites Il existe des classes que l on ne veut pas instancier. Cette classe va alors être déclarée abstraite, et servira de super classe. On définit une classe abstraite à l aide du mot clé abstract. Une classe abstraite peut avoir des méthodes normales, et des méthodes abstraites, pour pouvoir faire des méthodes abstraites, il faut que la classe soit abstraite! Mais ce n est pas parce qu une classe est abstraite qu elle à forcément des méthodes abstraites. Une méthode abstract n a pas de corps! Ex : abstract void nawak(); est une méthode abstraite. Etant donné qu une méthode abstraite n a pas de corps, c est aux classes filles de la classe abstract de redéfinir ces méthodes. Pour instancier, n oublions pas qu il faut faire un new, donc si nous avons une classe nommée «Class1», nous avons le droit de faire : Class1 machin = new machin(); car ce qu on instanciera c est un machin, et non une Class1 (machin étant une classe héritée de Class1). Il ne faut pas oublier qu il faut que les sous-classes d une classe abstraite doivent implémenter le corps des méthodes abstraites de cette classe. (Pas forcément les classes filles directes, une classe fille d une classe fille d une classe mère peut l implémenter à la place de la première classe fille tant que la méthode abstraite soit implémentée avant son utilisation ) A retenir : Une classe est définie comme abstraite avec le mot clé abstract. Une classe abstraite ne peut pas être instanciée. Une classe abstraite n est pas obligée de contenir de méthode abstraite. Si une classe contient une méthode abstraite, cette classe doit alors être déclarée abstraite. Une méthode abstraite n a pas de corps. Les classes abstraites sont à utiliser lorsqu une classe mère ne doit pas être instanciée. Les interfaces Une interface permet de définir un super type, composé uniquement de méthodes abstraites. En fait, une interface est une classe 100% abstraite. Déclarer une interface qui est un super type permet d utiliser le polymorphisme. Une classe peut utiliser plusieurs interfaces, alors qu elle ne peut hériter que d une classe mère. Déclaration d une interface : public interface A{ } Les méthodes d une interface sont automatiquement (et uniquement) abstraites, pas besoin d ajouter abstract dans leur déclaration. Pour qu une classe utilise une (ou plusieurs) interface(s) il faut utiliser le mot clé implements. Lorsque l on implémente une ou plusieurs interfaces, on doit obligatoirement redéfinir leurs méthodes (dans la classe même où on a mis l implements, sinon java pas ). La motivation de base pour la création d interface est que lorsqu on a notre implémentation avec nos jolies classes abstraites, nos superbes classes normales, etc et que l on doit ajouter brusquement de façon infâme des fonctionnalités pour adapter le programme à une nouvelle utilisation, on ne veut pas tout changer, et 6

7 surtout continuer à pouvoir profiter du polymorphisme, tout cela en laissant notre code marcher comme avant, mais en disposant aussi des nouvelles fonctionnalités. Le polymorphisme est menacé sans l utilisation d interface, dans le cas où l on ajoute les nouvelles fonctionnalités dans la classe où elles sont nécessaire, ce qui fait que, pour accéder à ces méthodes (les nouvelles fonctionnalités) il faudra passer par une référence à un objet de la classe, au lieu d appeler les objets par le biais d un super type ce qui serait plus élégant A retenir : Une interface est une classe 100% abstraite. Toutes les méthodes d une interface n ont pas de corps. Une interface sert à définir un super type et à utiliser le polymorphisme. Une interface s implémente dans une classe en utilisant le mot clé implements. On peut implémenter autant d interfaces que l on veut dans nos classes. On doit redéfinir toutes les méthodes de l interface (ou les interfaces) dans notre classe. Les exceptions Quand on a une exception qui surgit dans l exécution d un programme, celui ci se bloque et renvoie le nom de l exception, et s arrête. Pour éviter qu il s arrête, il faut traiter l exception, et ceci grâce au try{} catch{}. Dans les {} du try, on met le code susceptible de générer une exception, et dans les {} du catch, on met ce que le programme doit faire si une exception est capturée. Pour être plus précis : try{ code pouvant être foireux } catch(exception possible d être renvoyée + var stockant le type d exception){ si cette exception est capturée, je la traite } On stocke le type de l exception survenue dans une variable car on peut ainsi l afficher dans un message par exemple, grâce au getmessage : System.out.println(var.getMessage()); Grâce à cela, le programme continue son exécution après l interruption. Les exceptions personnalisées On peut créer nos propres exceptions pour cela il faut deux nouveaux mots clé : - throws qui permet de dire qu une classe, une instruction, une méthode peut renvoyer une exception. throws est suivi du nom de la classe qui va gérer l exception. (définit le type d exception qui peut être générée par l instruction, ou la classe précédant le mot clé throws). - throw, qui permet d instancier un objet dans la classe suivant l instruction throws. throw est suivi d un new ainsi que d un objet cité avec throws. Il lance une exception. En gros, on prévient s il y a risque d exception en ajoutant throws nomexception derrière l en-tête, et on fait throw new nomexception à l endroit où l on veut la lancer. Pour créer une exception, on crée une classe, avec le nom de l exception, qui extends Exception. A l intérieur de cette classe, on fait la même démarche que pour un constructeur. Par ex : class nawakexception extends Exception{ public nawakexception(){system.out.println(mais tu fais n importe quoi!) ;} } Il faut ensuite ajouter un bloc try{} catch{} là où la méthode est appelée. Attention, une variable déclarée dans un bloc d instructions n existe que dans ce bloc d instructions! Solution pour un objet étant instancié dans un try et réutilisé ensuite : le déclarer en dehors du bloc (par ex en l initialisant à null). 7

8 Attention cependant à la NullPointerException qui survient si une exception est levée, car si l objet est initialisé à Null, que l éxécution dans le try{} renvoie une exception, et que c était dans cette exécution que l objet était instancié, si on utilise l objet après ça plante, solution : dans le catch, instancier l objet grâce à un constructeur par défaut (qui initialise l objet à 0, ou autre valeur par défaut, en quelque sorte). On peut obtenir plus d information sur l exception, notamment en renvoyant la valeur de la variable posant problème Méthode printstacktrace() : permet de situer l exception dans le code (l objet passé en paramètre de la clause catch à des méthodes héritées de Exception). Gestion de plusieurs exceptions Derrière le throws, on peut mettre plusieurs exceptions, séparées par «,». On peut faire plusieurs catch{} à la suite d un try{}, il faut organiser les catch selon la pertinence de l exception (le premier catch est traité en premier, et les catch suivant ne sont pas traités si le premier est exécuté). Note : en faisant un super dans le constructeur d une exception, on hérite des méthodes d Exception, comme le getmessage() par exemple. A retenir : La super classe qui gère les exceptions s appelle : Exception. Lorsqu un événement que la JVM ne sait pas gérer apparaît, une exception est levée. On peut créer une classe d exception personnalisée en créant une classe héritant de la classe Exception. L instruction qui permet de capturer des exceptions est le bloc try{} catch{}. Si une exception est levée dans le bloc try, les instructions figurant dans le bloc catch seront exécutées si celui-ci capture l exception levée. On peut ajouter autant de blocs catch que l on veut à la suite d un bloc try. Mais il faut respecter l ordre de pertinence. Du plus pertinent au moins pertinent. Dans une classe objet, on peut prévenir la JVM qu une méthode est dite «à risque», grâce au mot clé throws. On peut définir plusieurs risques d exceptions sur une même méthode, il suffit de les séparer par une «,». Dans cette méthode, on peut définir les conditions d instanciation d une exception et lancer cette dernière grâce au mot clé throw suivit de l instanciation. Une instanciation lancée par le biais de l instruction throw doit être déclarée avec throws au préalable. Un exemple vaut mieux qu un long discourt, c est vrai, donc si vous avez eu du mal avec cette partie, les exemples du site du zéro sont vraiment simple et font très vite comprendre. Les collections d objet Tous ces objets nécessitent l importation de java.util. L objet LinkedList Liste chainée liste d élément dont chacun est relié au suivant par une référence à ce dernier. La taille d une LinkedList n est pas fixe (on peut ajouter et retirer). Accepte tout type d objet. Le dernier élément pointe vers null. Déclaration normale : List elt = new LinkedList) Pour ajouter : elt.add(truc à ajouter) Pour l itération utiliser elt.size() Pour accéder à l élément en cours : elt.get(var de stockage) 8

9 On peut aussi utiliser un Iterator pour parcourir la liste. ListIterator eltiterator = elt.listiterator() Pour parcourir utiliser eltiterator.hasnext() et pour afficher utiliser eltiterator.next() L objet ArrayList Objet de taille illimitée (conceptuellement parlant) qui accepte n importe quel type de données (y compris null). Donc on peut mettre des String, des int, etc dans le même objet. Méthodes : - add() - get(int index) - remove(int index) - isempty() renvoie true si c est vide - removeall() - contains(object élément) renvoie true si l élément appartient à l ArrayList - L objet Hashtable Une Hashtable (table de hachage) est un objet entrant dans la catégorie Map, c est à dire qu il range ses éléments avec un système clé-valeur, la clé étant unique, mais la valeur pouvant être la même pour plusieurs clés. On parcourt l objet grâce aux clés, mais on peut utiliser la classe Enumeration. Tout fonctionne comme pour le LinkedList (l Iterator ressemblant à l Enumeration dans sa déclaration et son utilisation) à part le nom des méthodes : put(clé, valeur) Et pour l Enumeration (Enumeration machin = hash1.elements()) - hasmoreelements() - nextelement() Autres méthodes : - isempty() - contains(object value) = containsvalue(object value) renvoie true si la valeur existe - containskey(int key) renvoie true si la clé existe - elements() retourne une énumération des elts de l objet - keys() retourne la liste des clés sous forme d énumération - L objet HashSet Un objet Set est une collection qui n accepte pas les doublons (null ne peut être présent qu une fois). Certain Set sont plus restrictif que d autres. On peut le parcourir à l aide d Iterator ou d un tableau d Object. Pour le tableau d Object : Object[] obj = monhashset.toarray(). Méthodes : - Add() - contains(object value) - isempty() - iterator() 9

10 - remove(object o) - toarray() - 10

11 Chapitre 1 RÉSUMÉ DU COURS THÉORIQUE La modularité La modularité est la caractéristique qu ont les programmes décomposés en modules! Les modules ont des responsabilités bien définies et coopèrent pour honorer les obligations du programme. Un module peut déléguer une partie de ses responsabilités à un autre. La modularité est une forme particulière de décomposition. L abstraction L abstraction est la faculté d oublier momentanément les détails d un problème pour se focaliser sur les aspects intéressants. Nous connaissons déjà : - L abstraction par paramétrisation (lorsque l on faisait des méthodes (rappel : paramètres dans l appel de la méthode : paramètres effectifs; paramètres dans l en-tête de la méthode : paramètres formels)). - L abstraction par spécification (pré/post, le quoi assumé par le module pas le comment). De là se dérivent 3 techniques avancées : - L abstraction procédurale (procedural abstraction) Extension de l ensemble des opérations/méthodes/fonctions/routines fournies par la machine virtuelle/abstraite définie par le langage de programmation. Décomposition de type fonctionnel, utilisant les deux premiers types d abstraction. - L abstraction par les données (data abstraction) Extension de l ensemble des types de données fournis par la machine virtuelle du langage. Autour d un type de données, on regroupe les opérations qui le concernent : CRUD (Create, Read, Update, Delete). On parle de type de données abstrait. Pour les autres programmeurs, le nouveau type de donnée peut être utilisé au travers des opérations empty, insert, delete... Ces opérations doivent pouvoir être utilisées sans avoir à connaître leur implémentation. Elles peuvent être définies les unes par rapport aux autres. C est l abstraction la plus importante, l outil de base de la POO. Cette abstraction est complémentée par l abstraction par hiérarchie de types : - Les sous-types (+ spécifiques) et les super-types (+ généraux). - Toute propriété qui est valable pour un type, est valable pour tous ses sous-types et toute opération définie pour un type est applicable pour tous ses sous-types. - On raisonne donc sur une famille de types. - L abstraction de l itération (iteration abstraction) Permet d itérer sur un ensemble d éléments en ignorant comment ceux-ci sont obtenus. Résumé supp du Chapitre : Le «secret» du développement efficace de logiciels de qualité est une bonne décomposition! La décomposition doit être guidée par l abstraction. Deux formes d abstraction de base : par paramétrisation et par spécification. 11

12 Formes plus élaborées : procédurale, itération, données, hiérarchie de types. Il est plus important de savoir bien décomposer un problème/ programme que de savoir «coder». 12

13 Chapitre 2 : Objets et Java Les Objets Objet (au sens restreint) : - «Morceau» de programme en cours d exécution qui possède : Un état contenant des données manipulées par le programme. Un comportement fait d opérations (appelées méthodes). - On interagit avec un objet en invoquant ses méthodes. «On» = le code appelant (un objet, une méthode ou le programme principal). - Les méthodes d un objet permettent (entre autres) d'accéder à son état : lire/consulter (Read, le R de CRUD) ou écrire/modifier (Update, le U de CRUD). Note : l OO manipule des objets représentant souvent des entités de la vie réelle (personnes, concepts, ). Les classes Les programmes Java sont composés de définitions de classes (et d interfaces). Classe = élément d un programme. Objet = élément d une exécution. A tout moment de l exécution, chaque classe du programme peut avoir plusieurs objets (instances). Une classe a deux utilités possibles : Définir des collections de méthodes/méthodes/opérations (abstraction procédurale) Définir des types de données (abstraction par les données). Les diagrammes de classe Dans les diagrammes de classe, les méthodes static sont soulignées, les méthodes public sont précédées d un «+». Rappel : les méthodes static d une classe sont des méthodes ne contenant que des variables de classes (les variables de classes sont communes à toutes les instances de notre classe), et les méthodes public sont visibles et accessibles par les autres méthodes (de la classe ou en dehors de la classe). Il n y a pas de static dans les déclarations de méthodes de type de données. Le nom de la méthode appelée est précédé du nom de la classe dans laquelle elle est définie suivi d un «.». On appelle cette méthode comme ceci (par ex) : int x = Num.gcd(15,6); L absence de valeur de retour s indique par le «type» void. Lorsque l on instancie un nouvel objet, par exemple : MultiSet m = new et puis que l on appelle une méthode de la classe MultiSet via m : m.insert(9); par exemple, on fait un appel sur l instance et non pas sur la classe. Si on avait fait par ex : init(m); on aurait fait un appel sur la classe. Les méthodes invisibles pour les autres classes sont déclarées private, une méthode private est dite encapsulée dans sa classe. Dans les diagrammes de classes, les méthodes private sont précédées d un «-». 13

14 L encapsulation Petit rappel : les classes servent entre autres à programmer des types abstraits (c est l abstraction par les données). Ces types abstraits sont dotés : - D une interface spécifiant les méthodes pouvant être effectuées par une instance du type et représentant ses responsabilités. - D une implémentation précisant : - Les structures de données (qui encodent l état d une instance). - Le corps des méthodes. - Des méthodes auxiliaires. Attention, type abstrait et méthode (et classe) abstraite sont deux notions différentes. Une méthode abstraite est une méthode qui n a pas de corps, qui délègue son implémentation aux classes filles. Rappel : si, dans une classe, on a une méthode abstraite, cette classe doit être déclarée abstraite, avec abstract. L abstraction par les données est une forme d encapsulation : seule l interface d un objet est accessible depuis son environnement (= les autres classes); l implémentation est cachée. N oublions pas qu une méthode private est dite encapsulée, comme on a pas accès non plus à l implémentation d une abstraction de données, c est aussi une forme d encapsulation. Rappel : une interface est une classe (abstraite) ne contenant que des méthodes abstraites. Principe de Parnas : - La définition d une classe doit fournir à l environnement toutes les informations nécessaires pour manipuler correctement une instance de la classe, et rien d autre. - L implémentation d une méthode doit se baser sur toutes les informations nécessaires à l accomplissement de sa tâche, et sur rien d autre. Visibilité Dans la définition d une classe, la distinction entre une interface et une implémentation s exprime par un marqueur de visibilité associé aux éléments, c est à dire les méthodes et les variables membres de la classe : - Un élément public est rendu accessible à tout le code du programme. - Un élément private n est accessible que par le code de la classe même. En fait, la notion d interface ici est un peu différente de la notion vue plus haut. Mais on voit quand même bien instinctivement que cette notion est assez proche de la définition d une interface comme étant une classe 100% abstraite, dans le sens que l implémentation de celle-ci reste cachée aux classes extérieures (l environnement) comme en quelque sorte avec le private. Rappel : on ne peut pas instancier une classe abstraite. Packages et visibilité Les classes sont regroupées en packages, ces packages sont avant tout une méthode d encapsulation. Les classes ont une visibilité, seules les classes déclarées public peuvent être utilisées par du code se trouvant dans d autres packages. Les classes non déclarées public ne sont utilisables que par le code du package. Déclarations : package NomPackage; public class NomClasse{ } 14

15 Les éléments private restent confinés à la classe. Les éléments public d une classe déclarée public sont accessible de l extérieur du package (exception : visibilité protected). Les éléments déclarés package sont accessible au code (des autres classes) du package quelle que soit la visibilité de la classe à laquelle ils appartiennent. Les packages sont également utiles pour le nommage : - Les packages sont organisés hiérarchiquement (différent de la hiérarchie de classes). - Chacun possède un nom qualifié (fully qualified name) qui reprend toute la hiérarchie du package et l identifie de manière absolue. - Un même package ne peut donc contenir deux sous-packages (directs) de même nom. - Un même package ne peut pas non plus contenir directement deux classes de même nom. - Toute classe possède un nom court ou nom relatif (par rapport au package). - Toute classe possède aussi un nom qualifié (fully qualified name) ou nom absolu : nomqualpackage.nomclasse. - Si du code doit accéder à une classe du même package, il peut se contenter du nom court. - Si du code doit accéder à une classe d un autre package, il doit utiliser : - Soit le nom qualifié, - Soit importer la classe ou le package dans laquelle elle se trouve. Attention aux conflits! Si on importe un package, on a plus besoin d écrire le nom qualifié, mais alors il y a possibilité de conflit si une classe de même nom que celle du package existe déjà dans la classe actuelle. Pour importer un package : [import NomPackage [.NomPackage] * [.NomClasse] ;]* Objets et variables Les données du programme sont stockées dans des variables. Toute variable possède un type, qui est soit : - Un type primitif (int, boolean, char ). - Un type d objet (String, MultiSet, int[], ). Les types primitifs : il en existe 8 en Java, ils sont prédéfinis et on ne peut pas en définir de nouveaux, un type primitif définit un ensemble de valeurs. Les types d objets : définit un ensemble d objets, l utilisateur peut définir autant de nouveau types d objets qu il veut. Il en existe déjà qui sont prédéfinit (par ex : String). Une variable primitive (variable d un type primitifs) contient une valeur de ce type. Elle peut être initialisée à la déclaration, elle doit l être avant toute utilisation. Une variable de référence est une variable de type objet qui contient une référence vers un objet de ce type. (aussi appelé pointeur). Toute variable qui n est pas primitive est un pointeur, elle doit être initialisée avant toute utilisation, si elle ne pointe vers aucun objet, elle a la valeur null. Stack et Heap Ce sont les deux mémoires de la JVM (stack = pile, heap = tas). Les variables locales, contenant des valeurs ou des références, sont stockées dans le stack, tandis que les objets sont stockés dans le heap. 15

16 Pour créer un objet dans le heap, on utilise new (par ex : int[] tab = new int[3];) New a pour effet : 1. D allouer une partie du heap au stockage d un objet du type indiqué. 2. D initialiser l objet par un constructeur. 3. D assigner une valeur de référence à l objet nouvellement créé, qui le distingue de tous les autres (object ID) 4. De retourner cette valeur de référence (et donc dans l ex assigner à tab la valeur de référence). On peut aussi faire : int[] tab = {1,5,7,9}; Partage de référence Si une variable de référence se voit donner une valeur de référence déjà assignée à une autre variable, les deux variables partagent (la référence vers) l objet. L objet devient alors accessible par ces deux variables. L opérateur «==» détermine si deux variables ont la même valeur, et renvoie un boolean. Attention, pour les variables de références, ça teste s ils pointent vers le même objet. Le garbage Collector Le garbage collector (ou ramasse-miettes) est la partie de la machine virtuelle Java chargée de libérer la mémoire (heap) occupée par les objets qui ne sont plus référencés. Le processus de garbage collection se déclenche périodiquement ou lorsque la mémoire est saturée. La mutabilité Un objet est mutable ssi son état peut changer. Dans le cas contraire, il est immutable. Il appartient au concepteur de la classe de décider de sa mutabilité. Par exemple, les String sont immutables, il n existe pas de méthode ou d opérateur qui modifie (Update) un String une fois qu il a été créé. Quand on modifie un String, cela crée un nouvel objet String avec les modifications dedans, l ancien objet String va être supprimé au prochain passage du garbage collector, car il ne sera plus référencé, car son ancienne référence pointera vers le nouveau String. Les tableaux sont quant à eux mutables. Si un objet mutable est partagé par plusieurs variables, toute modification de l objet effectuée à partir d une des variables est visible au travers des autres. L appel de méthodes En Java, l appel à une méthode m se fait via l"instruction <expr>.m(<expr1>, <expr2>,...,<exprn>) et est traité comme suit: <expr> est évaluée de manière à fournir la classe (si méthode statique) ou l objet dont on invoque la méthode. Si <expr> est évaluée à null, l exécution sera interrompue par une NullPointerException. Les expressions <expr1>, <expr2>,...<exprn> sont évaluées (de gauche à droite) de manière à fournir les paramètres effectifs de l appel. 16

17 Un activation record est créé dans le stack réservant de la mémoire pour les paramètres formels et variables locales de la méthode. Les paramètres formels prennent les paramètres effectifs pour valeurs dans le stack (passage de paramètres par valeur). C est à dire que les valeurs des paramètres effectifs sont copiées dans l activation record Le contrôle est passé à la méthode. C est le dispatching. Ce mécanisme complexe sera abordé plus loin. Le type checking Java étant un langage fortement typé, le compilateur vérifie que toutes les assignations et que tous les appels sont corrects du point de vue du typage, toute erreur à ce niveau étant sanctionné par une erreur de compilation. Le type checking requiert : Que toute déclaration de variable indique le type de celle-ci. Que toute déclaration de méthode indique sa signature les types des paramètres, le type du résultat, les types d exceptions renvoyées. Ces informations de typage permettent au compilateur de déduire le type apparent de toute expression, ce qui permet de vérifier la correction des assignations et des appels. Cela assure le «type safe», aucune erreur de typage (type mismatch) ne peut survenir pendant l exécution, et il n est pas possible que le programme manipule des données d un autre type que celui qu il croit manipuler. Il existe deux autres mécanismes pour que le programme soit type safe : l automatic storage management (Il s agit de l allocation et la désallocation automatique de la mémoire dans le heap) et l array bound checking. Hiérarchie des types Les types non primitifs sont organisés de façon hiérarchique. Un type donné T peut avoir plusieurs super-types (ses ancêtres dans la hiérarchie). Il est dit être un sous-type (subtype) de chacun de ses super-types. (Cela ne contredit pas ce qui est dit au début du résumé, une classe ne peut être héritée que d une classe à la fois, mais cette classe peut elle même être une sous classe d une autre classe). L organisation hiérarchique des types est un mécanisme d abstraction permettant d ignorer les différences entre types pour ne plus voir que ce que leurs comportements ont de commun et qui se trouve dans leurs supertypes communs. La relation de sous-typage est : transitive et réflexive. Principe de substitution «Si S est un sous-type de T, les objets de type S doivent pouvoir être utilisés dans tout contexte qui requiert des objets de type T.» Implications : - Toutes les méthodes de T doivent être disponibles dans S (vérifié par le compilateur Java). - Les appels à ces méthodes doivent produire le même comportement dans S et T Non vérifiable par le compilateur puisque cela reviendrait à pouvoir prouver que deux programmes ont le même comportement. Doit être garantit par le programmeur. 17

18 Pour l instant, contentons nous d utiliser des types prédéfinis supposés offrir ces garanties. Object Il existe un type Object, qui est supertypes de tous les types (qu ils soient prédéfinis ou non). Ce type contient notamment : boolean equals (object o); et String tostring(); qui peuvent être invoquée sur tout objet java. Validité des assignations Règle : l assignation v = <expr> (v variable de référence) est valide si le type apparent de <expr> est un sous-type du type apparent de v. Type déclaré VS type effectif Type déclaré (apparent type, compile-time type) = type d une variable tel qu il est donné dans sa déclaration (il est le même pendant toutes les exécutions). Type effectif (actual type, runtime type) = type d une variable à un moment donné de l exécution, déterminé par le type de l objet qu elle référence dans le heap (celui-ci est déterminé à la création de l objet). Le type checking (à la compilation) est toujours effectué sur base du type déclaré. Validité des appels de méthodes : Règle : la validité des appels de méthodes est vérifiée de manière analogue aux assignations c est à dire : - Le type déclaré de l objet sur lequel on invoque la méthode doit être un sous-type du type pour lequel la méthode a été définie. - Le type déclaré d un paramètre effectif doit être un sous-type du type déclaré du paramètre formel. Les deux règles de validité que l on vient de voir ont pour conséquence que, à l exécution, le type effectif d une variable ou d une expression est toujours un sous-type de son type déclaré. Le casting Via le casting on peut invoquer une méthode sur un objet dont le type déclaré l interdit mais dont on sait que le type effectif le permet. On peut aussi assigner à une variable la valeur d une expression dont le type déclaré l interdit mais dont on sait que le type effectif le permet. (par ex : (String) obj ; on assure que obj est bien un String). Il provoque la survenance d une vérification de type à l exécution. Si cette vérification échoue => renvoie ClassCastException. Conversion de type On peut faire des conversions implicites de valeurs d un type primitif en valeur d un autre type primitif. Par ex, les char peuvent être élargis (widened) en int. L overloading Les opérateurs sont overloadés (surcharchés). On peut overloader les méthodes que nous définissons. Il s agit du même nom de méthode, soit avec plus de paramètres, soit avec les mêmes paramètres mais de types différents. Lorsque plusieurs définitions de méthodes surchargées peuvent convenir à un même appel de méthode, le 18

19 compilateur résout l ambiguïté en choisissant la plus spécifique. Une définition de méthode m1 est plus spécifique qu une autre définition m2 si tout appel valide à m1 serait également un appel valide à m2 moyennant plus de conversions. S il ne sait pas résoudre l ambiguïté, l utilisateur peut la lever en faisant une conversion explicite du type en utilisant un cast dans l appel. L overloading s applique sur les types primitifs mais aussi sur les types abstraits. Il existe cependant des ambiguïtés que l on ne peut lever. Vient alors le dispatching. Le Dispatching Idée : garantir que quand une méthode est appelée sur un objet donné, c est le code fourni pour cette méthode et cet objet (type effectif) qui est exécuté. Mais il se peut qu à la compilation, on ne puisse déterminer quel code appeler car seul le type apparent est connu du compilateur. Il est donc nécessaire d avoir un mécanisme à l exécution qui fasse le dispatching vers le code souhaité. Dispatch Vector Chaque objet (dans le heap) contient une référence vers un dispatch vector. Celui-ci contient une entrée pour chaque méthode d un type d objet donné. Un dispatch vector n est associé à un objet qu à l exécution en fonction de son type effectif. Le compilateur ne fait que générer le code qui accède à l entrée de la méthode dans le dispatch vector et qui se branche à l endroit où le dispatch vector dit que le code de la méthode se trouve. Les types d objets primitifs Les types primitifs n étant pas des sous-types d Object, ils ne peuvent pas être utilisés là où on attend un Object (car violation du principe de substitution). On peut résoudre cela grâce aux types d objets primitifs (les wrapper types) : pour chaque type primitif il existe un type d objet correspondant qui «emballe» sa valeur dans un objet et le mettra donc dans le heap et non le stack. Integer pour int, Character pour char, etc Chaque type d objet primitif fournit un constructeur permettant d emballer la valeur dans un objet. Par ex : public Integer(int x); et à l inverse chaque type d objet primitif fournit une méthode renvoyant la valeur contenue dans l objet. Par ex : public int intvalue(); On trouve également d autres méthodes, par exemple celle qui construit un objet à partir de la lecture d un String : int n = Integer.parseInt(s);si s pointe vers le String 1024, n prendra la valeur Vector Dans java.util, sert à représenter des tableaux d objets de tailles variables. De plus ces objets peuvent être de types différents dans le même vector. Sa longueur est donnée par int size(); Ex : Vector v = new Vector(); add(object o); get(int i); Vector set (int i, Object o); Vector remove(int i); Ne pas oublier de faire un cast lors du get vers un String. 19

20 Chapitre 3 : Abstraction procédurale Bien que Java soit un langage POO, nous pouvons aussi faire de la programmation impérative (procédurale) classique. On va juste revoir quelques principes et les adapter à Java. Rappel : abstraction par spécification spécification qui suffit à comprendre le quoi d une méthode, peut importe le comment. A une spécification peut correspondre plusieurs implémentation. Les choix d implémentation sont indépendants les uns des autres grâce à la spécif, on peut comprendre plus vite le rôle de la méthode, et l on peut introduire les concepts de localité et de modifiabilité. Localité : l implémentation d une abstraction peut être lue/écrite sans qu il n y ait besoin de consulter L implémentation d aucune autre abstraction. Permet l indépendance des activités des programmeurs. Modifiabilité : une abstraction peut être réimplémentée sans nécessiter la réimplémentation des parties de programme qui l utilisent (pour peu que l abstraction (la spécification) ne doive pas changer). Par exemple pour améliorer les performances : remplacer un tri à bulle par un tri rapide. Cela permet de ne devoir réimplémenter que les parties où la performance est insuffisante (approche itérative). Les spécifications Les abstractions sont décrites à l aide des spécifications, celles-ci sont écrit sont écrites dans un langage formel ou informel. La spécification d une méthode comprend : sa signature (header) (information syntaxique qui décrit la forme mais pas ce que fait la méthode, ne décris pas son comportement). une description des effets (comportement) de celle-ci (information sémantique). Canevas de spécifications : type_de_retour nomproc (...) { // REQUIRES : contraintes sur l utilisation de la méthode (précondition) // MODIFIES : liste des inputs modifiés par la méthode // EFFECTS : définition du comportement (postcondition) [seule cette clause est obligatoire] } Les 3 clauses ont pour but de décrire les relations qui existent entre les inputs et les outputs de la méthode. Les inputs : - explicites : les paramètres repris dans la signature. - implicites : fichiers, sorties/entrées standard (System.out, System.in). REQUIRES définit les conditions sous lesquelles la méthode (ou du moins l abstraction) est définie. Elle n est utile que si la méthode est partielle et définit les classes d inputs pour lesquels son comportement est défini. Si la méthode est totale, REQUIRES n est pas nécessaire car son comportement est défini pour tout les inputs respectant la signature. = préconditions 20

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

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Chapitre VI- La validation de la composition.

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

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) 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

Plus en détail

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

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

Plus en détail

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 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

Plus en détail

Une introduction à Java

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é)

Plus en détail

Cours 1: Java et les objets

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/

Plus en détail

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

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....

Plus en détail

Génie Logiciel avec Ada. 4 février 2013

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

Plus en détail

Programmation Par Objets

Programmation Par Objets Programmation Par Objets Structures de données package java.util B. Carré Polytech Lille 1 Tableaux et structures de données Tableaux «Objets» taille fixe type des éléments : primitif (homogène) ou objets

Plus en détail

TP1 : Initiation à Java et Eclipse

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

Plus en détail

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

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

Plus en détail

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. 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

Plus en détail

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. 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

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

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.

Plus en détail

as Architecture des Systèmes d Information

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

Plus en détail

Auto-évaluation Programmation en Java

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

Plus en détail

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

Chapitre V. Les classes : Object, Vector, etc. Chapitre V Les classes de base Les classes : Object, Vector, etc. Plan La classe Object Les collections La classe ArrayList La classe Vector Les classes Wrappers Les classes String et StringBuffer La classe

Plus en détail

Chapitre 2. Classes et objets

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

Plus en détail

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 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

Plus en détail

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

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

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) CLASSE RACINE Object ancêtre de toutes les classes RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) définit donc des méthodes héritées par toutes

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets

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

Plus en détail

Programmation Objet Java Correction

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

Plus en détail

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire

Plus en détail

Java 1.5 : principales nouveautés

Java 1.5 : principales nouveautés Cours 6 - TEP - UPMC - 2008/2009 p. 1/34 Java 1.5 : principales nouveautés classes paramétrées : generics encapsulation des valeurs de types primitifs : auto[un]boxing itération sur les boucles types énumérés

Plus en détail

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr Initiation à JAVA et à la programmation objet raphael.bolze@ens-lyon.fr 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

Plus en détail

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. 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...

Plus en détail

Classes et Objets en Ocaml.

Classes et Objets en Ocaml. Classes et Objets en Ocaml. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/2/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/2/ Cours Exercices Slide 1 1. Objets 2.

Plus en détail

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

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 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

Plus en détail

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 ) P r ob lé m a t iq u e d e la g é n é r icit é les versions de Java antérieures à 1.5 permettaient de créer des classes de structures contenant n'importe quels types d'objet : les collections (classes

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

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

Plus en détail

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

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

Plus en détail

Java c est quoi? Java pourquoi?

Java c est quoi? Java pourquoi? Grandes lignes du cours Cours JAVA : Le bases du langage Java. Version 3.02 Julien Sopena 1 1 julien.sopena@lip6.fr Équipe REGAL - INRIA Rocquencourt LIP6 - Université Pierre et Marie Curie Licence professionnelle

Plus en détail

4. Groupement d objets

4. Groupement d objets Conception objet en Java avec BlueJ une approche interactive 4. Groupement d objets Collections et itérateurs David J. Barnes, Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Principaux

Plus en détail

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e P r o b l é m a t i q u e OCL : O b j e c t C o n s t r a i n t L a n g u a g e Le langage de contraintes d UML Les différents diagrammes d UML permettent d exprimer certaines contraintes graphiquement

Plus en détail

Création d objet imbriqué sous PowerShell.

Création d objet imbriqué sous PowerShell. Création d objet imbriqué sous PowerShell. Par Laurent Dardenne, le 13/01/2014. Niveau Ce tutoriel aborde la création d objet composé, c est-à-dire que certains de ses membres seront eux-mêmes des PSObjects.

Plus en détail

La gestion des exceptions

La gestion des exceptions La gestion des exceptions Même lorsqu un programme est au point, certaines circonstances exceptionnelles peuvent compromettre la poursuite de son exécution ; il peut s agir par exemple de données incorrectes

Plus en détail

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

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 gauthier.picard@emse.fr

Plus en détail

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

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

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Programmation MacOSX / ios

Programmation MacOSX / ios Programmation MacOSX / ios Master Ingénierie Informatique 2011-2012 Jean-Baptiste.Yunès@liafa.jussieu.fr deux extensions objets de C : C++ (Stroustrup) Objective-C (Cox & Love) ajout de constructions à

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Chapitre VIII. Les bases de données. Orientées Objet. Motivation Chapitre VIII Motivation Le modèle relationnel connaît un très grand succès et s avère très adéquat pour les applications traditionnelles des bases de données (gestion) Les bases de données Orientées Objet

Plus en détail

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

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez... Au programme Conception Orientée Objet Jean-Christophe Routier Licence mention Informatique Université Lille 1 Présentation L UE COO est le prolongement immédiat de l UE POO du S4 informatique. cf. http://portail.fil.univ-lille1.fr/portail/ls4/poo

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

UML et les Bases de Données

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..

Plus en détail

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

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

Plus en détail

Évaluation et implémentation des langages

É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

Plus en détail

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java Université Catholique de Louvain Faculté des Sciences Appliquées Département d Ingénierie Informatique Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Plus en détail

F. Barthélemy. 17 mai 2005

F. Barthélemy. 17 mai 2005 Typage de la généricité en Java F. Barthélemy 17 mai 2005 1 Le shéma général La g én éricit é en Java est un ajout r éalis é sur un langage existant depuis d éjà une dizaine d ann ées, avec des contraintes

Plus en détail

TD/TP PAC - Programmation n 3

TD/TP PAC - Programmation n 3 Université Paris Sud Licence d informatique/iup-miage2 - Année 2004-2005 auteur : Frédéric Vernier semaine : 11-16 octobre 2004 conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html

Plus en détail

Patrons de Conception (Design Patterns)

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

Plus en détail

Université de Bangui. Modélisons en UML

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

Plus en détail

TD/TP PAC - Programmation n 3

TD/TP PAC - Programmation n 3 Université Paris Sud Licence d informatique/iup-miage2 Année 2004-2005 Auteur : Frédéric Vernier Semaine : 11-16 octobre 2004 Conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

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

Plus en détail

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

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

Plus en détail

Programmation par composants (1/3) Programmation par composants (2/3)

Programmation par composants (1/3) Programmation par composants (2/3) Programmation par composants (1/3) La programmation par composant vise le développement de logiciel par aggrégation de briques logicielles existantes est indépendante de la POO La programmation par composant

Plus en détail

PROGRAMMATION PAR OBJETS

PROGRAMMATION PAR OBJETS PROGRAMMATION PAR OBJETS Java Environnement et constructions spécifiques Walter Rudametkin Maître de Conférences Bureau F011 Walter.Rudametkin@polytech-lille.fr B. Carré Polytech Lille 2 Java (Sun 1995)

Plus en détail

Threads. Threads. USTL http://www.lifl.fr/ routier 1

Threads. Threads. USTL http://www.lifl.fr/ routier 1 Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un

Plus en détail

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

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr Aide mémoire UML & Java 1ère partie : Introduction marc.lemaire@u-cergy.fr 9 septembre 2014 1 2014 v1.11 Table des matières 1 Généralités 6 1.1 Notations utilisées.....................................

Plus en détail

Programmation Objet - Cours II

Programmation Objet - Cours II Programmation Objet - Cours II - Exercices - Page 1 Programmation Objet - Cours II Exercices Auteur : E.Thirion - Dernière mise à jour : 05/07/2015 Les exercices suivants sont en majorité des projets à

Plus en détail

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

Plus en détail

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

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

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

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

Plus en détail

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

Programmation Orientée Objet application au langage Java Version Novembre 2007 Programmation Orientée Objet application au langage Java Version Novembre 2007 Mickaël BARON - 2007 mailto:baron.mickael@gmail.com ou mailto:mickael.baron@serli.com SERLI informatique SERLI : www.serli.com

Plus en détail

Architecture Orientée Service, JSON et API REST

Architecture Orientée Service, JSON et API REST UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API

Plus en détail

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

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

Plus en détail

Package Java.util Classe générique

Package Java.util Classe générique Package Java.util Classe générique 1 Classe Vector La taille est dynamique: dès qu un tableau vectoriel est plein, sa taille est doublée, triplée, etc. automatiquement Les cases sont de type Object add(object

Plus en détail

RMI le langage Java XII-1 JMF

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

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

1 Définition d une classe en Java

1 Définition d une classe en Java Université Montpellier-II UFR des Sciences - Département Informatique Licence Informatique - Ingénierie Logicielle - Concepts et Outils de la modélisation et du développement de logiciel par et pour la

Plus en détail

Environnements de développement (intégrés)

Environnements de développement (intégrés) Environnements de développement (intégrés) Tests unitaires, outils de couverture de code Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

Plus en détail

Projet gestion d'objets dupliqués

Projet gestion d'objets dupliqués Projet gestion d'objets dupliqués Daniel Hagimont Daniel.Hagimont@enseeiht.fr 1 Projet Service de gestion d'objets dupliqués Mise en cohérence lors de la prise d'un verrou sur un objet Pas de verrous imbriqués

Plus en détail

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

Plus en détail

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

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée forax at univ-mlv dot fr - ParisJUG Java.next() - Mars 2012 What Else? Lambda == Inner class? Java a des lambdas depuis la version 1.1 Exemple utilisant

Plus en détail

Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014

Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014 numériques et Institut d Astrophysique et de Géophysique (Bât. B5c) Bureau 0/13 email:.@ulg.ac.be Tél.: 04-3669771 29 septembre 2014 Plan du cours 2014-2015 Cours théoriques 16-09-2014 numériques pour

Plus en détail

Gestion distribuée (par sockets) de banque en Java

Gestion distribuée (par sockets) de banque en Java Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante

Plus en détail

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,

Plus en détail

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

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

Plus en détail

Classe Interne, Anonyme & Enumération

Classe Interne, Anonyme & Enumération Java Avancé Classe Interne, Anonyme & Enumération Rémi Forax forax@univ-mlv.fr 1 Rappel Nous nous intéressons aujourd'hui à deux formes de type abstrait en Java Les interfaces Les classes abstraites Les

Plus en détail

Langage Java. Classe de première SI

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

Plus en détail

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

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

Programmation Orientée Objet Java

Programmation Orientée Objet Java Programmation Orientée Objet Java Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 12 novembre 2014 Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre

Plus en détail

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2 Débuter avec EXPRESS Alain Plantec Table des matières 1 Schema 2 2 Entité 2 2.1 Attributs simples................................................ 2 2.2 Attributs collection...............................................

Plus en détail

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

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

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

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

Plus en détail

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 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

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

Programmation par les Objets en Java

Programmation par les Objets en Java Programmation par les Objets en Java Najib TOUNSI Les classes en Java (TD 3) I. Notion de classe I.1 Classe, champs, méthodes, instanciation, this, private vs. public. Créer une classe Point (coordonnée

Plus en détail