Programmation Objet et JAVA

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

Download "Programmation Objet et JAVA"

Transcription

1 Programmation Objet et JAVA Organisation du cours 10 séances de CM/TD/TP Les chapitres essentiels Java, la notion d Objet et de Classes L héritage et le polymorphisme Les collections, Les exceptions, les fichiers Les interfaces graphiques en Swing x sujets de TD/TP Sujets donnés à l avance 1 examen écrit de 2h Phelma 2015 Documents : Site : Le poly Les sujets de TD Site indispensable : Caractéristiques Introduction Objet : Inspiré du C++, Objective C et Smalltalk : Java fortement objet. Simple Suppression des sources d erreurs classiques : pas de pointeurs, pas de gestion mémoire par le programmeur Robuste Nombreuses vérifications sont faites à la compilation (protection des classes, ) Sécurisé à la conception du langage Les notions de sécurité réseau sont incluses (SecurityManager), en particulier pour les applets Compact Java a été conçu pour fonctionner dans un environnement évolutif. L'interpréteur Java n'a besoin que de 215Ko. Chargement dynamique des classes 3

2 Introduction : caractéristiques Introduction : caractéristiques Langage Interprété Traduit et exécuté à chaque chargement Développement plus simple Temps d exécution plus long Fichier *.java Indépendant du processeur et de l OS dépend de la définition de la machine virtuelle Fichier *.class Indépendant du processeur et de l OS dépend de la définition de la machine virtuelle Pas de Fichier Executable Dépendant du processeur et de l OS Dépend de la Réalisation de la machine virtuelle Indépendant de l'architecture : Portable Conçu pour cela (machine virtuelle) Ensemble complet d exécution : machine à pile 32 bits Jeu d instructions précis Des registres Une pile Interprète du byte_code : intermédiaire entre compilation et interprétation Seule, la JVM change entre MAC, PC, Windows, Unix. Les types de base ont des tailles fixes Multithread Gestion de plusieurs tâches prévue Réseau Ensemble de classes pour utiliser des protocoles TCP/IP tels que HTTP et FTP Gestion des langues Deux types de programmation différents Applications Programmes écrits en Java Exécuté sur une machine qui possède un interpréteur java. Ce programme pourra se lancer indifféremment sous n'importe quelle machine/os. Applets Introduction : Applets Java versus C Applets : intégration de java au www Programmes écrits en Java, installés généralement sur un serveur Web L'applet est téléchargée depuis le serveur Web sur le poste client Exécutés sur le poste Client par la JVM du navigateur à la demande de celui-ci Testés grâce à appletviewer 2 chargement applet (.class) Serveur www distant Poste client netscape, IE,... 1 : demande 3 execution JAVA est portable sans recompilation sur toutes les plates formes (processeur/os) PC, Mac, PDA, telephone, etc Même syntaxe, même structure de contrôle que C et C++ Principales différences Pas de variables globales Pas de préprocesseur #define, #include #ifdef Pas de pointeurs Le main est une fonction interne à une classe C++ : Pas de surcharge des opérateurs C++ : Pas d'héritage multiple Nombreuses bibliothèques standard Réseau,Système, thread Graphisme, Interface utilisateur, Multimédia E/S, chaînes et expressions régulières` RMI : applications réparties sur plusieurs machines Securité, cryptographie Base de données, xml 8

3 Types de base Langage fortement typé comme C++ huit types de base Type Taille Valeur int 4 bytes à ( 231) short 2 bytes à long 8 bytes 263 byte 1 byte -128 à +127 float 4 bytes +/- ( 1, à ) double 8 bytes +/- ( 4, à 1, ) char 2 bytes caractères (internationaux) boolean true or false POO et UML Notions de base Valeurs extrémales par Type.MAX_VALUE, type.min_value char c = Byte.MAX_VALUE 9 10 Concept de classe : le point 2D Le point 2D en procédural ou en objet Problème posé Définir les outils nécessaires pour un logiciel de géométrie tel que cabri ou pour un logiciel de dessin Exemple : définir la symétrie centrale et les translations et homothéties sur des points dans le plan cartésien Structure point avec champs x et y class point Attributs x et y Qu est ce qu un point du plan Définition statique : ce sont les champs ou attributs Une entité comportant 2 coordonnées abscisse ordonnée Que doit on pouvoir faire avec : ce sont les méthodes Entrées/sorties Le créer : mettre des valeurs dans les coordonnées L afficher : ecrire les valeurs à l écran L utiliser pour résoudre un problème Translation d un vecteur donné Homothétie par un facteur k Trouver le symétrique d un point 11 Fonctions void affiche (point) void translate(point*, double,double) point homothetie(point, double) point symetriecentrale(point) En C, pas de liens entre les fonctions et les structures de données qu elles manipulent Exemple : on peut utiliser affiche sur un entier par erreur Méthodes void affiche () void translate(double,double) point homothetie(double) point symetriecentrale() En POO, on regroupe champs et fonctions au sein de la classe il existe un lien physique entre attributs, méthodes et objets On ne peut pas utiliser affiche sur un int 12

4 En C, le point 2D et ses fonctions typedef struct Point { /* Definition des champs d'un point */ double x; double y; POINT; Point : 2 coordonnées /* definition des fonctions sur un point */ /* Comment afficher un point */ void affiche(point a) {printf("x:%lf y:%lf\n",a.x,a.y); /* Comment translater un point */ void translate(point* ax, double a, double b) { ax->x += a; ax->y += b; /* constante x point ==> point */ POINT multcste(point a, double k) { POINT res; res.x = k*a.x; res.y = k*a.y; return res; /* Symetrie centrale d un point : ==> point */ POINT symetriecentrale(point a) {POINT res; res.x = -a.x; res.y = -a.y; return res; Quelles sont les actions réalisables sur un point? 13 En C, le point 2D et ses fonctions void main() { int i; POINT p1, p2, p3; printf("premier exemple"); p1.x=2; p1.y=8; affiche(p1); translate( &p1, 1,-6); // Attention aux pointeurs!!! affiche(p1); p2 = multcste(p1, 10.0); affiche(p2); p3=symetriecentrale(p1); affiche(p3); affiche(i); // Rien n empeche cela : il n y a aucun lien entre affiche et la structure POINT 14 Exemple de classe : le point 2D Point : 2 coordonnées Exemple d objet : des points particuliers public class Point { /* Definition des champs d'un point */ private double x; private double y; /* definition des methodes d'un point */ /* Constructeur : valeurs initiales d'un point */ public Point () { x = 0; y = 0; public Point (double a, double b) { x = a; y = b; Quelles sont les actions réalisables sur un point? Comment initialiser un point : 2 possibilités /* Comment afficher un point */ public void affiche() { System.out.println("Abcisse "+x+" ordonnee : "+y); /* Comment translater un point */ public void translate(double a, double b) { x += a; y += b; /* constante x point ==> point */ public Point multcste(double k) { Point res; res = new Point(this.x, this.y); // Ou Point(x,y) res.x = k*res.x; res.y = k*res.y; return res; /* Symetrie centrale d un point : ==> point */ public Point symetriecentrale() { return new Point(-x,-y); 15 public class Ex1b { public static void main (String[] args){ Point p1, p2, p3; System.out.println("Premier exemple"); p1 = new Point(2,8); p1.affiche(); p1.translate(1,-6); p1.affiche(); p2 = p1.multcste(10.0); p2.affiche(); p2=null; p3=p1.symetriecentrale(); p3.affiche(); 3 Points : p1 p2 p3 Affichage de p1 Creation de p1 16

5 POO : concepts de base Conception, Modèles et Diagrammes en POO 1 programme ; 1 ensemble d objets qui s envoient des messages Encapsulation : données+méthodes+sécurité Données et méthodes dans une même entité : la classe données : les informations propres à un objet, méthodes : les actions réalisables sur/avec cet objet Objet : instance d'une classe Sécurité : Cloisonne l intérieur et l extérieur de l objet privé : inaccessible de l'extérieur de la classe ou de l objet public : ce qui l'extérieur à le droit d'utiliser Réutiliser sans connaître le fonctionnement interne Sans risquer de modifier ce qui est fait Héritage Graphe de parenté entre des Classes Héritage des méthodes et données qui ne sont pas à redéfinir Ajouter des nouvelles fonctionnalités à ce qui existe déjà Isole les éléments nouveaux pour la sécurité du code existant Polymorphisme : une même méthode prend plusieurs formes Une méthode est typée par ses paramètres. Le même nom est utilisable par plusieurs classes ou type de données Quand on utilise une classe donnée, elle sait quelle est la bonne fonction à utiliser! pas de test de type en POO. 17 UML : Unified Modeling Langage Langage graphique de modélisation de projet informatique orienté objet : Définition des classes/attributs et des méthodes (modèle statique) Définition des aspects dynamiques et temporels (modèle dynamique). Le modèle statique permet de structurer les besoins de l utilisateur du logiciel : diagramme use-cases de structurer les attributs et les méthodes en les répartissant dans des classes, reliées entre elles par des liaisons de trois types : héritage, agrégation, relation : diagrammes d objets, de classes, De structurer l application en terme de modules (diagramme de composants) et de matériel utilisé (diagramme de déploiement) Le modèle dynamique décrit le comportement dynamique et temporel du système : Structurer les interactions entre objets (diagramme de collaboration) et leur séquencement temporel, ie ordre d'exécution des méthodes (diagramme de séquence) Spécifier les séquences d etats possibles des objets (automates) : diagramme d etat-transition 18 Diagramme de classe : UML Questions Une classe Faire le diagramme de classe d un complexe Quels sont ses attributs? Donnez les prototypes de 4 méthodes utiles Nom de la classe Attributs ou champs + : public # : protégé - : private méthodes 19 20

6 Les classes en JAVA Notion d objet Les classes et les objets Une classe permet de définir des modèles ayant une certaine autonomie La classe définit la structure des objets Les champs les méthodes utilisables par un objet de ce type, i.e. les actions qu un objet de ce type peut réaliser Syntaxe [public] class Nom_de_ma_classe { // déclaration des champs; [public, private] type nom_champ; //déclaration de methodes; [public, private] type_retour nom_de_fonction(type nom_parametre, ) 21 En java, pas de rédéfinition des opérateurs à l inverse du C++ En pratique, le nom d une classe commence par une majuscule Le nom du fichier est celui de la classe contenant la fonction main ou celui de la classe public 22 Les objets et les variables en JAVA Concept d'objet : exemple Un objet = un exemple ou une entité dont le modèle (type) est une classe On dit aussi une instance de classe. La variable est une référence (pointeur constant) sur cet objet En Java, 3 étapes Définition de la variable : Point p1; Sa durée de vie est celle du bloc Création et allocation de l objet : p1= new Point(2,8); Sa durée de vie est celle de son utilisation Elle est détruite AUTOMATIQUEMENT par le garbage collector, quand elle est devenue inutile Utilisation du point p1 : par exemple, appliquer affiche() à p1 : p1.affiche() ou changer la valeur de l abscisse : p1.x=10; public class Ex1c { public static void main (String[] args){ System.out.println("Premier exemple"); Point p1=null, p2=null; // Définition p1, p2 p1 = new Point(); p1.x=2; p1.y=8; p1.affiche(); p2 = new Point(20,80); p2.affiche(); // Creation p1 // On change p1 p1.x = p1.x + 20; p1.y += 80; p1.affiche(); p2=null; ` // l objet pointé par p2 est libre // les variables p2 et p1 sont détruites p1 p2 p1 22 p p1 80 Donc En java, une variable est une référence, i.e. un pointeur "masqué" Le passage d un objet comme paramètre d une fonction permet de modifier cet objet : pas besoin de passage de l adresse Pas de pointeur, de gestion mémoire par le programmeur p2.affiche() p1.affiche() p1.affiche() 23 24

7 Accès aux membres Notion d objet Accès aux membres d un objet : objet.champ Attention, objet est une référence Exemple : a.x est l abscisse du point a. Les attributs et les méthodes Appeler/exécuter une méthode : objetappelant.methode(param); Cela signifie que l on exécute methode(parametres) «SUR» objetappelant Les méthodes s exécutent sur un objet p.affiche() signifie On cherche la classe de p : c est la classe Point On cherche si une méthode affiche() existe dans la classe Point : si elle n existe pas, erreur de compilation «Cannot find Symbol» On exécute cette fonction avec un paramètre supplémentaire invisible :this, qui est l objet sur lequel on travaille = objet appelant. Ici, this = p public void translate(double a, double b) { x = x + a; y = y + b; Si on appelle translate avec le point p sous la forme p.translate(2,3), p.x et p.y qui sont incrémentés de 2 et 3 25 Comment écrire public void translate(double x, double y) 26 Paramètre this Dans une méthode, il y a toujours un paramètre «implicite» this, qui est l objet sur lequel on travaille p.translate(1,2) ==> this est une référence sur p Notion d objet Donc public void translate(double a, double y) { ATTENTION!!!!! x = x + a; y = y + y; // Quand on écrit y, est ce le paramètre de la fonction ou l attribut de p? Sécurité public void translate(double a, double y) { x = x + a; this.y = this.y + y; 27 28

8 Accès et protection Accès aux membres et aux méthodes (2) Principe de la POO : L objet est responsable de son état les membres (attributs ou méthodes) peuvent etre protégés en lecture/écriture des autres fonctions ou objets du programme. Public Les membres public sont accessibles pour toutes les méthodes et fonctions du programme On peut lire et ecrire les champs à n importe quel endroit dans le code On peut executer une méthode dans n importe quelle lméthode Private Un membre private n est accessible que par les méthodes de sa classe ou de son package Une méthode private peut être exécutée par une autre méthode de la classe, mais pas par celles des autres classes. Un champ private n est accessible que par une méthode de la classe. En particulier, main() est une fonction qui n appartient pas à la classe Point : elle ne peut pas accéder aux champs x et y d un objet de la classe Point 29 Lecture de 2 nombres au clavier, creation d un point Ex6.java import java.util.*; public class Ex6 { public static void main (String []arg) {double x1, x2; Point a,b,c ; Scanner clavier = new Scanner(System.in); System.out.println("Entrer 2 reels "); x1=clavier.nextdouble(); // Lecture d un reel x2=clavier.nextdouble(); // 3,14567 :virgule a= new Point(x1,x2); // Création du point avec x1 et x2 a.affiche(); // On execute affiche sur a; ici, this = a b = new Point(3,8); b.affiche(); // On execute affiche sur a; ici, this = b b.x=x1; // Interdit car x est privé b.translate(2,6); b.affiche(); a.translate(b); a.affiche(); c = a.multcst(2.); c.affiche(); 30 Accès et protection Exemple :Fichier Ex7.java class Point { private double x,y; // x et y ne peuvent être lus/modifiés que par des méthodes de la classe private void interdit() {x=0; System.out.println("Appel interdit hors classe"); // interdit() ne peut être appelée que par des méthodes de la classe public void autorise() {this.interdit(); // OK car autorise() est dans la classe // autorise() peut être appelée par des méthodes d autres classes ; public class Ex7 { public static void main (String []arg) { Point a,b ; a= new Point(1,2); a.affiche(); b= new Point(); b.affiche(); a.x=5; // Interdit car x est private b.interdit(); // Interdit car interdit() est private b.autorise(); // Autorise car autorise() est public 31 Accès et protection : pourquoi? class Fraction{ public double numerateur, denominateur; // Constructeur : jamais de denominateur nul public Fraction(double a, double b) { if (b==0) { System.out.println("Denominateur nul"); System.out.exit(1); else {set=a; denominateur=b; Fraction produit(fraction q) { // Attention si q.denominateur est nul, rien n est verifié ici numerateur *= q. numerateur; denominateur *= q. denominateur; public String tostring() { return numerateur + "/" + denominateur; ; public class Ex7c { public static void main (String []arg) { Fraction a = new Fraction(1,2); Fraction b = new Fraction(3,4); System.out.println("b vaut " + b); b.produit(a); System.out.println("b vaut " + b); a.denominateur=0; // C est contraire au fonctionnement de la classe, mais comme denominateur n est pas privé, c est syntaxiquement correct. b.produit(a); System.out.println("b vaut " + b); 32

9 Accesseurs et mutateurs Accesseurs et mutateurs Le concepteur de la classe se pose la question : Qu est ce qui est utile aux autres classes et fonctions de ma classe, i.e. le monde extérieur Ce qui est utile est public, le reste, utile au fonctionnement interne de l objet est private. De cette manière, «l extérieur» ne peut modifier le comportement interne et voulu par le concepteur : c est l encapsulation En pratique, les champs sont souvent privés Si besoin, autoriser la lecture du champ par un accesseur getchamp() que vous devez définir Parfois, autoriser la modification du champ par un mutateur setchamp() que vous devez définir Les mutateurs/accesseurs peuvent etre public ou privé Toujours initialiser les champs grâce aux constructeurs C est le concepteur qui décide et non l utilisateur de l accès possible Classe Fraction Méthodes internes à la classe void init(double,double) Attributs num et denum Mutateurs/Accesseurs main() { Méthodes autorisées à l extérieur 33 class Fraction{ //Attributs privés private double numerateur, denominateur; // Accesseurs et Mutateurs: public double getnumerateur(){ return numerateur; public double getdenominateur() { return denominateur; public void setnumerateur(double a) {numerateur=a; // Avec ce mutateur, on est sur que jamais une fraction ne sera infinie public void setdenominateur(double a) { if (b==0) {System.out.println("Denominateur nul"); System.exit(1); else denominateur=a; // Methode interne à la classe, inutile pour les autres classes private void init(double a, double b){setnumerateur(a); setdenominateur(b); // Constructeurs : on utilise la méthode privée public Fraction(double a, double b) { init(a,b); public Fraction(Fraction q) { init(q.a,q.b); // Meme la methode produit peut utiliser les mutateurs, avec verification automatique du denominateur. public void produit(fraction q) { setnumerateur(numerateur*q. numerateur); setdenominateur(denominateur*q. denominateur); ; 34 Accesseurs et mutateurs public class Ex7c { public static void main (String []arg) { Fraction a = new Fraction(1,2); Fraction b = new Fraction(a); System.out.println("b vaut " + b); b.produit(a); System.out.println("b vaut " + b); a.setdenominateur(0); // C est contraire au fonctionnement de la classe, qui refuse les fractions infinies, et le programme va quitter à cet endroit. b.produit(a); System.out.println("b vaut " + b); Notion d objet Initialisation, construction, destruction 35 36

10 Constructeur Constructeur Constructeur : méthode appelée automatiquement à la création d'un objet Rôle Initialise les différentes parties de l'objet : on connaît toujours l état initial Réalise les actions indispensable à l'état initial de l'objet Plusieurs manières d'initialiser un objet " Surcharge possible i.e. plusieurs constructeurs de même nom Construire un point à partir de 2 réels Construire un point à partir de rien Construire un point à partir d un autre point Syntaxe Fonction de même nom que la classe, comme en C++ Attention Par défaut, java ajoute un constructeur sans paramètres Quand on définit un constructeur, on ne peut plus construire des points sans utiliser un de ceux ci class Point { private double x; private double y; /* Constructeur : quelles sont les valeurs initiales d'un point */ public Point (double a, double b) {System.out.println("C1"); x = a; y = b; public Point () { System.out.println("Constructeur 2"); x = 0; y = 0; public Point (Point a) { System.out.println("Cons 3"); x = a.x; y = a.y; ; public class Ex4 { public static void main (String []arg) { Point a ; System.out.println("Creation de a"); a= new Point(1,2); // Création du point 1,2, constructeur 1 System.out.println("Fin xreation de a"); System.out.println("Creation de b"); Point b = new Point(); // Création du point 0,0 constructeur 2 System.out.println("Fin creation de b"); System.out.println("Creation de c"); Point c = new Point(b); // Création de C à partir de b; System.out.println("Fin creation de c"); Destructeur Destructeur Fonction appelée automatiquement lors de la destruction des objets Prototype : protected void finalize() En C++, ~nom_de_la_classe() En java, très peu utilisé car vous ne gérez pas la libération de la mémoire : c est automatique, grâce au ramasse miette GC ou ramasse miette : Récupère automatiquement la mémoire des objets devenus inutiles et appelle la méthode finalize On ne sait pas quand il est appelé : on ne sait donc pas quand est utilisé le destructeur Objets inutiles : objets réels alloués qui ne sont plus utilisés Difficile à trouver ==> quand un objet est inutile, pour qu il puisse etre détruit, mettre sa référence à null En général, on n appelle pas le gc() directement car il peut etre tres lent pas de destructeur 39 import java.util.*; class Point { protected void finalize() {System.out.println("Appel au Destructeur"); ; public class Ex5 { public static void main (String []arg) {Point a ; Scanner clavier = new Scanner(System.in); System.out.println("Creation de a"); a= new Point(1,2); // Création du point 1,2, constructeur 1 System.out.println("Fin xreation de a"); a=null; clavier.nextline(); System.gc(); // Destruction du point a System.out.println("Creation de b"); Point b = new Point(); // Création du point 0,0 constructeur 2 On passe dans le destructeur Ligne : System.gc() 40

11 Surcharge ou Polymorphisme de méthodes : Notion d objet Surcharge de méthodes Possibilité pour une fonction ou méthode d avoir un même nom si les signatures différentes Signature : type de retour, nombre et type des paramètres En Java et C++, surcharge uniquement sur les paramètres La fonction réellement exécuter est déterminée sur la base des paramètres utilisés En java, il y a liaison dynamique décidé à l execuion Attention : on ne peut pas surcharger uniquement sur le type de retour Surcharge ou Polymorphisme de méthodes : class Point { private double x, y; /* Constructeur */ public Point (double a, double b) {x = a; y = b; public Point (Point a) {x = a.x; y = a.y; Objets et références public void affiche() { System.out.println( "x:"+x+" y:"+y); // Deux methodes de translations : A partir de 2 reels public void translate(double a, double b) { x += a; y += b; // A partir d un point public void translate(point p) { x += p.x; y += p.y; ; public class Ex5 { public static void main (String []arg) { Point a= new Point(1,2); // Création du point 1,2 Point b = new Point(10,20); Point c = new Point(b); // Création de C à partir de b; b.affiche(); b.translate(1,2); b.affiche(); c.affiche(); c.translate(a); c.affiche(); 43 44

12 Objets et référence ou le retour des pointeurs Le passage d objets en paramètres p1 = new Point (2,3); p1 est une référence sur un objet réel C est donc un pointeur constant public class Ex8b { public static void main (String []arg) { Point a,b,c ; a= new Point(1,2); a.affiche(); b = a; c = new Point(a); b.affiche(); c.affiche(); a.setx(8); a.affiche(); b.affiche(); c.affiche(); Qu est ce que ce programme affiche a b 18 2 c 1 2 class Point {. /* Cette fonction modifie son parametre meme si elle est stupide : */ void ajoutemoiap(point p) { p.x = p.x+x; p.y += y; public class Ex1c { public static void main (String[] args){ p1 22 p1 Point p1=null, p2=null; 88 p1 = new Point(2,8); p1.affiche(); p2 = new Point(20,80); ` p2 20 p1 p2.affiche(); 80 p2.ajoutemoiap(p1); // Ici p1 est modifié à cause de ajoutemoiap p1 p1.affiche(); Un objet passé en paramètre d une méthode est passé par adresse et il peut être modifié par la fonction // les variables p2 et p1 sont détruites p2.affiche() p1.affiche() 45 p1.affiche() 46 Les Entrées Sorties en pratique Divers Lire des nombres et des chaines : classe Scanner Créer un objet de la classe scanner associé au flux de lecture voulu : le clavier Les méthodes nextdouble(), nextint(), nextline() de la classe scanner permettent la lecture des réels, entiers et chaines. Afficher : System.out.println() import java.util.*; public class Essai { public static void main (String []arg) { double x1, x2; String x; Scanner clavier = new Scanner(System.in); System.out.println("Entrer 2 reels "); x1=clavier.nextdouble(); // Lecture d un reel x2=clavier.nextdouble(); // 3,14567 :virgule System.out.println("Voici x1 : " + x1); 47 System.out.println("Tapez une chaine"); x=clavier.nextline(); System.out.println("Ce que vous avez ecrit : " + x); 48

13 Méthodes existantes dans une classe Tous les classes JAVA héritent de la classe de base Object, qui contient : Pour l affichage : tostring() Doit retourner une représentation textuelle de l objet Elle est utilisée par System.out.println Pour les tests d égalité : equals() a==b ne test pas si les objets a et b sont identiques mais si a et b regarde le même objet Il faut définir le test d égalité avec la méthode equals Pour recopier un objet : clone() class Point { public String tostring() {return("abscisse:"+x+" ordonnée:"+y); // Avec cette methode, on peut afficher point avec System.out.println(a) public boolean equals(point b) {return( x==b.x && y==b.y); ; public class Ex8c { public static void main (String []arg) { Point a,b,c,d; a= new Point(1,2); b = new Point(1,2); c=new Point(1,3); d=a; System.out.println(a);// Affiche a if (a==b) System.out.println("a et b pointe le meme objet"); if (a==d) System.out.println("a et d pointe le meme objet"); if (a.equals(b)) System.out.println("a et b de contenu identique"); if (a.equals(c)) System.out.println("a et c de contenu identique"); if (a.equals(d)) System.out.println("a et d de contenu identique"); 49 Résumé Un programme objet : 1 fonction main qui démarre le programme, crée les objets et les enchainements d actions 1 ensemble de classes décrivant les capacités des données manipulées 1 classe : type de données qui rassemble des données (champs) et la manière de s en servir (méthodes) Données et méthodes protégées si besoin : public : n importe quelle fonction du programme peut les modifier ou les utiliser private : seules les méthodes de la classe concernée peuvent les modifier ou les utiliser En pratique données privées. Que doit faire l utilisateur avec la classe que je développe? ==> seules méthodes publiques Initialisation, affichage, addition, etc.. Autres méthodes privées Constructeurs : comment initialiser l objet? Accesseurs et mutateurs : méthodes publiques ou privées définissant l accès en lecture/ecriture à un champ Surcharge : plusieurs fonctions peuvent avoir le même nom, mais pas les mêmes nombres et/ou types de paramètres 1 objet : 1 instance Définir la variable Créer l objet Destruction de l objet automatique quand on n en a plus besoin : pas de gestion mémoire ni pointeurs Exécuter une méthode ou fonction : objet.méthode(parametres); x.affiche(); ou c1.add(c2,c3); INTERDIT : affiche(x) Aucune fonction/méthode hors d une classe, aucune variable hors d une méthode Mélanger, ajouter 3 litres de jus d orange, 1 litre de vodka, et ca doit marcher!!! 50 Tableaux Tableaux Ensemble d objets de même type à accès direct Les tableaux sont des OBJETS Taille du tableau fixe, n est pas modifiable, accessible par la valeur (et pas la méthode) length: tab.length; Accès aux éléments par tab[i] Vérification des bornes, ArrayIndexOutOfBoundsException si erreur Indices débutant à 0 Tableaux et tableaux d objets Création d un tableau en 3 étapes 1/ Déclaration d une variable : int [] tableau; 2/ Instanciation ou création : tableau = new int [10]; 3/ Utilisation : tableau [i] = 2*i tableau Indices Tableau de 10 éléments

14 Tableaux (2) Copie de tableaux de nombres ou partage Ex9.java Lire la dimension au clavier, créer un tableau de nombre, le remplir et l afficher Copie : fonction arraycopy : la destination doit etre créée (allouée) System.arraycopy(Object src, int indsrc, Object dest, int inddest, int long) import java.util.*; public class Ex9 { public static void main(string[] arg) { int [] tableau; Scanner clavier = new Scanner (System.in); System.out.println("Nombre d'element du tableau?"); int nb = clavier.nextint(); tableau = new int [nb]; for (int i=0; i<tableau.length ; i++) tableau[i]=2*i+1; for (int i=0; i< tableau.length ; i++) System.out.print(tableau[i]+" " ); tableau[2+ tableau.length ]=0; // ERREUR : pourquoi? public class Ex10 { public static void main (String []arg) {Scanner clavier = new Scanner(System.in); double [] t1, t2,t3; System.out.println("Entrer le nombre de reels"); t1 = new double [ clavier.nextint()]; for (int i=0; i< t1.length ; i++) t1[i]=2*i+1; for (int i=0; i< t1.length ; i++) System.out.print(t1[i]+" "); System.out.println(); t2=t1; t3 = new double [ t1.length ]; System.arraycopy(t1,0,t3,0,t1.length); for (int i=0; i< t2.length ; i++) System.out.print(t2[i]+" "); System.out.println(); for (int i=0; i< t3.length ; i++) System.out.print(t3[i]+" "); System.out.println(); for (int i=0; i< t2.length ; i++) t2[i]=-1; for (int i=0; i< t1.length ; i++) System.out.print(t1[i]+" "); System.out.println(); for (int i=0; i< t2.length ; i++) System.out.print(t2[i]+" "); System.out.println(); for (int i=0; i< t3.length ; i++) System.out.print(t3[i]+" "); System.out.println(); Copie de tableaux de nombres ou partage Tableaux d objets t t2 t Création d un tableau d objet : 2 étapes Créer le tableau : Point [] tab = new Point [ clavier.nextint()]; Créer chaque objet du tableau :` for (int i=0; i< tab.length ; i++) tab[i]=new Point(2*i,2*i+1); Exemple : tableau de points public class Ex11 { public static void main (String []arg) { Point [] tab; Scanner clavier = new Scanner(System.in); System.out.println("Entrer le nombre de points"); tab = new Point [ clavier.nextint()]; clavier.nextline(); // Attention ; les points ne sont pas créés for (int i=0; i< tab.length ; i++) System.out.print(tab[i]+" "); System.out.println(); clavier.nextline(); // Creation des points for (int i=0; i< tab.length ; i++) tab[i]=new Point(2*i,2*i+1); for (int i=0; i< tab.length ; i++) System.out.print(tab[i]+" "); System.out.println();

15 Copie légère ou profonde de tableaux d objets Copie légère de tableaux d objets arraycopy! recopie de tous les éléments du tableau Ne duplique pas les objets!!! --> partage des objets t[i] : copie légère SI le programmeur duplique aussi les objets t[i] : copie profonde tab public class Ex12 { public static void main (String []arg) { Point [] tab, copie1, copie2; Scanner clavier = new Scanner(System.in); System.out.println("Entrer le nombre de points"); tab = new Point [ clavier.nextint()]; // Creation des points for (int i=0; i< tab.length ; i++) tab[i]=new Point(2*i,2*i+1); // Pour tous les points du tableau tab for (Point a : tab) System.out.print(a+" "); System.out.println(); copie1=tab copie arraycopy( ) 20 3 copie1 = tab; copie2 = new Point [tab.length] ; System.arraycopy(tab,0,copie2,0,tab.length); copie2 for (Point a : tab) System.out.print(a+" "); System.out.println(); for (Point a : copie1) System.out.print(a+" "); System.out.println(); for (Point a : copie2) System.out.print(a+" "); System.out.println(); // On met toutes les abcisses de tab a zero for (int i=0; i< tab.length ; i++) tab[i].setx(0); for (Point a : tab) System.out.print(a+" "); System.out.println(); for (Point a : copie1) System.out.print(a+" "); System.out.println(); for (Point a : copie2) System.out.print(a+" "); System.out.println(); Pour la copie profonde, il faut utiliser la méthode clone(). Voir plus loin sur les interfaces Copie légèrede tableaux d objets Notion d objet Les classes et objets composés

16 Les points essentiels Des objets dans les objets Agrégation ou composition Construction Héritage Chainage des constructeurs Protection des attributs Redéfinition des méthodes / Surcharge des méthodes Une classe Cercle Les champs Le point du centre : de la classe Point: C est un lien de COMPOSITION Le rayon : un double Les méthodes La surface L affichage La translation Polymorphisme Liaison dynamique Classe abstraite Héritage multiple Classe Point Des objets dans les objets import java.util.*; class Point { /* Definition des donnees d'un point */ private double x; private double y; /* Constructeur : 1 seule définition, les 2 autres l'appellent */ public Point (double a, double b) { setx(a); sety(b); public Point () { this(0.,0.); public Point (Point a) { this(a.getx(),a.gety()); /* Accesseurs et mutateurs */ public double getx() { return x; protected void setx(double val) { x=val; public double gety() { return y; protected void sety(double val) { y=val; public void affiche() { System.out.println("Abcisse "+getx()+" ordonnee : "+gety()); /* Comment translater un point */ public void translate(double a, double b) { setx(getx()+a); sety(gety()+b); public void translate(point t) { translate(t.getx(),t.gety()); /* Afficher un nombre : deux ecritures */ public String tostring() { return Double.toString(x)+","+ y +" "; public boolean equals(point b) {return( getx()==b.getx() && gety()==b.gety()); public Point multcste(double k) { Point res= new Point(this); res.setx(getx()*k); res.sety( gety()*k); return res; ; class Cercle { // on utilise au maximum les méthodes de Point. private Point cdg; private double rayon; public Cercle() { rayon=0; cdg= new Point(); // Attention : créer le cdg public Cercle(Point p, double r) { rayon=r; cdg=new Point(p); // pas cdg=p; public Cercle(double cdgx, double cdgy, double r) { rayon=r; cdg=new Point(cdgx, cdgy); public double surface() { return (Math.PI*rayon*rayon); public String tostring() { return("cercle de Cdg "+cdg.tostring()+" et de rayon"+rayon); //OU public String tostring() { return("cercle de Cdg "+cdg+" et de rayon"+rayon); public void translate(double a, double b) { cdg.translate(a,b); public class Ex13 { public static void main (String []arg) { Scanner clavier = new Scanner(System.in); Cercle c1, c2; double x1, x2,r; Point a; // Creation du cercle avec les 3 valeurs lues au clavier System.out.println("Entrer le cdg du cercle 1, puis le rayon"); c1 = new Cercle(clavier.nextDouble(), clavier.nextdouble(),clavier.nextdouble()); System.out.println("C1 : "+c1 + "de surface :"+c1.surface()); System.out.println("Cdg cercle 2"); x1=clavier.nextdouble(); x2=clavier.nextdouble(); a= new Point(x1,x2); // Création du point avec les x1 et x2 1 System.out.println("Entrer le rayon du cercle 2"); r=clavier.nextdouble(); c2 = new Cercle(a,r); System.out.println("C2 : "+c2+" de surface :"+c2.surface()); System.out.println("translation?"); x1=clavier.nextdouble(); x2=clavier.nextdouble(); c1.translate(x1,x2); System.out.println("C1 : "+c1);

17 Héritage Héritage simple Héritage L héritage est un concept pour les fainéants qui exploitent le travail des autres L héritage permet de réutiliser ce qui a déjà été fait très simplement La nouvelle classe (fille) hérite d une classe existante (père) Elle possède les mêmes champs et les mêmes méthodes On peut ajouter de nouveaux champs et de nouvelles méthodes L héritage est récursif : une classe dérivée peut devenir classe de base Les liens hiérarchiques forment un arbre : l arbre d héritage Héritage : Augmenter les capacités Héritage : Spécialiser l objet Augmenter les capacités d un point Exemple : Ajout de la gestion de la couleur d un point : class Point { private double x, y; public void translate(double a,double b) {setx(x+a); sety(y+b); class PointCouleur extends Point { /* Definition des champs d'un point couleur ; on a déjà x et y */ private int couleur; public PointCouleur () { // Par defaut, x et y sont nuls super(); // ATENTTION : x=0; y=0; est interdit couleur=0; public PointCouleur (double a, double b, int c) { super(a,b); couleur=c; public String tostring(){return (super.tostring() + "couleur"+integer.tostring(couleur)); ; Spécialiser les capacités d un point Exemple : Uniquement les points positifs : class Pointpositif extends Point { // on autorise que les nombres positifs public void setx (double a) { if (a>=0) super.setx(a); else System.out.println("Erreur "+a); ; public void sety (double a) { if (a>=0) super.sety(a); else System.out.println("Erreur "+a); ; ; public class Ex16 { public static void main (String []arg) {PointCouleur a,b,c ; Pointpositif d; a=new PointCouleur(1,2,0); b=new PointCouleur(4,5,255); c=new PointCouleur(8,9,65535); System.out.println("a "+a); System.out.println("b "+b); a.translate(2,3); System.out.println("a "+a); //c = b.multcste(5); System.out.println("c "+c); d =new Pointpositif(1,2); System.out.println("d "+d); d.translate(1,1); System.out.println("d "+d); d.translate(-3,0);

18 Héritage : Mettre en commun Héritage : Mettre en commun Faire des classes permettant de manipuler les cercles et les rectangles Créer Calculer la surface Translater Les cercles et les rectangles ont des points communs Le cdg La creation On fait donc une classe «pere» qui reroupe les parties communes des cercles et des rectangles On peut faire encore plus!! Héritage : intérêt Définir explicitement les liens entre les classes Une classe augmente ou étend les possibilités d une autre classe : on ajoute la notion de couleur Une classe spécialise une autre classe : le point positif est un point du quart de plan x>0 y>0 Une classe adapte le comportement d une autre classe à un besoin concret A l inverse, une classe mère regroupe des comportements communs (voir la classe forme ci dessous) Un mélange des trois raisons précédentes Exploiter les classes existantes Sans écrire de code Sans connaître le code Génie logiciel : organisation du développement logiciel Regrouper les aspects (ici, champs ou methodes) communs Définir les accès et les protections des structures de données Mieux conceptualiser les développements Comment? Trouver les relations de type «est-un» : classe dérivée Trouver les points communs et les regrouper : classe mère Héritage : ne pas confondre avec l association Relation structurelle d agrégation Composition d un objet par un ou plusieurs composants ou objets appartenant uniquement à cet objet Ex : Ordi possède un écran et clavier Relation structurelle d association Relation existant entre deux objets, moins forte que la précédente (non exclusive) Ex : une entreprise emploie une personne mais les objets représentant la personne et l entreprise existe séparément. Relation de spécialisation/généralisation Spécialisation d une classe par rapport à un modèle de base : héritage Ex : le lien Ecran-Périphérique Le graphe complet pour un ordi

19 Champs hérités : Champs hérités privés : Un objet possède tous les champs de sa classe et de sa classe mère, de grand-mère Le nom est comme précédemment : objet.nom_du_champ Le nom de la classe mère n apparaît pas : si a est un PointCouleur : on écrit a.couleur, a.x, a.y Mais Les protections s appliquent : les champs privés ne sont accessibles que par les méthodes de la classe où ils sont définis. Les champs x et y de Point sont privés Un objet de la classe PointCouleur accède au champ couleur mais pas aux champs x et y s ils sont private. Important quand vous définissez une hiérarchie de classes utilisées par d autres!!!! Trop lourd lorsque c est un ensemble de classes cohérentes comme les Point, PointCouleur Donc Le mot clé protected permet l accès aux champs pour toutes les classes dérivées Le mot clé final interdit à une classe d etre superclasse, à une méthode d etre redéfinie. class Point { private double x, double y;. class PointCouleur extends Point { private int couleur; /* Les nouveaux constructeurs */ public PointCouleur () { x=y=0; couleur=0; // INTERDIT car x et y privé public PointCouleur (double a, double b, int c) { super(a,b); couleur=c; public String tostring(){ return (super.tostring()+ "couleur "+Integer.toString(couleur)); ; public class Ex17a { public static void main (String []arg) { PointCouleur a,b; a=new PointCouleur(1,2,0); b=new PointCouleur(4,5,255); System.out.println("a "+a); System.out.println("b "+b); a.translate(2.,3.); System.out.println("a "+a); a.x=56; INETRDIT, car main n est pas une méthode de PointCouleur Impossible d utiliser les parties privées x et y d un point couleur sans mutateur Parfois lourd à programmer Champs hérités protected : Utilisation directe des parties protected x et y d un point class Point { Attention à la protection qui peut etre détournée protected double x, double y; On suppose que Point et PointCouleur sont écrites et on ne. dispose pas du source Truand hacke la classe Point par héritage class PointCouleur extends Point { /* Definition des champs d'un point couleur ; on a déjà x et y */ protected int couleur; /* Les nouveaux constructeurs */ public PointCouleur () { x=y=0; couleur=0; // ATENTION : on peut modifier x et y public PointCouleur (double a, double b, int c) { super(a,b); couleur=c; public String tostring(){ return (super.tostring()+ "couleur "+Integer.toString(couleur)); // super, c est la classe mere ; class Truand extends PointCouleur { public void setx(double a) { x=a; // Je modifie x, meme si je n ai pas le code PointCouleur: contraire à la POO public class Ex17 { public static void main (String []arg) {PointCouleur a,b; Truand c; a=new PointCouleur(1,2,0); b=new PointCouleur(4,5,255); System.out.println("a "+a); System.out.println("b "+b); a.translate(2,3); System.out.println("a "+a); //a.x=56; A Eviter, car main n est pas une méthode de PointCouleur c = new Truand(); System.out.println(c); //Vraiment pas recommandé; il suffit de déclarer PointCouleur comme classe finale pout etre tranquille c.setx(8); System.out.println(c); Champs hérités : conserver la protection Pour empecher n importe quel utilisateur de modifier les champs protected, il faut interdire l héritage La classe truand ne peut plus hériter de PointCouleur class Point { protected double x, double y;. final class PointCouleur extends Point { /* Definition des champs d'un point couleur ; on a déjà x et y */ protected int couleur;. ; class Truand extends PointCouleur { // Interdit car classe PointCouleur est final public void setx(double a) { x=a; public class Ex17b { public static void main (String []arg) {PointCouleur a,b; Truand c;.

20 Méthodes héritées : comment s y retrouver Méthodes redéfinies et surchargées : Un objet possède toutes les méthodes de sa classe et de sa classe mère, de grand-mère L appel est comme précédemment : objet.nom_de_methode(parametres); Le nom de la classe mère n apparaît pas : si a est un PointCouleur : a.translate(2,3); Comment trouve t on la bonne méthode? On cherche dans la classe de l objet a : si la méthode est ici (meme nom, meme nombre et type de paramètres), on l execute Sinon On cherche dans la classe mère de a, puis dans la classe grandmère. Mot clé super : désigne la classe mère de l objet ou de la classe. Permet d'exécuter les méthodes dont on hérite exemple : méthode tostring dans la classe PointCouleur Attention au vocabulaire Une méthode est redéfinie dans une hiérarchie lorsqu elle a le même nom et les mêmes types de paramètre Une méthode est surchargée lorsqu elle a le même nom et des types différents de paramètres class Point {.. public void translate(double a,double b) { System.out.println("Methode translate de point"); x += a; y+= b; class PointCouleur extends Point { /* Definition des champs d'un point couleur ; on a deja x et y */ protected int couleur; /* Les nouveaux constructeurs */ public PointCouleur () { super(); couleur=0; public PointCouleur (double a, double b, int c) { super(a,b); couleur=c; public String tostring(){ return ("redefinie : "+super.tostring()+"couleur " +Integer.toString(couleur)); public void translate(double a,double b, int c) { // SURCHARGE : c System.out.println(" Surcharge methode translate "); super.translate(a,b); couleur += c; ; public class Ex18 { public static void main (String []arg) {PointCouleur a,b; a=new PointCouleur(1,2,0); b=new PointCouleur(4,5,255); System.out.println("a "+a); System.out.println("b "+b); a.translate(2,3); System.out.println("a "+a); b.translate(4,8,-1); System.out.println("b "+b); Cas particulier des constructeurs Cas particulier des constructeurs (2) La classe PointCouleur dérive de Point. Donc, lors de la construction d un PointCouleur, il faut qu un constructeur de Point soit appelé, car seul Point est responsable de la construction d un point Donc, un constructeur de PointCouleur appelle toujours un constructeur de Point Soit explicitement super(parametres) : appel explicite en PREMIERE instruction à un constructeur de Point this(parametres) : appel explicite en PREMIERE instruction à un constructeur de PointCouleur Soit implicitement Aucun appel explicite: le compilateur ajoute un appel à super() en tete de constructeur. S il n y a pas de constructeur Point(), erreur d execution import java.util.*; class Point { protected double x,y; public Point (double a, double b) { System.out.println("Point : Constructeur 1"); x = a; y = b; public Point () { System.out.println("Point : Constructeur 2"); x = 0; y = 0; public Point (Point a) { System.out.println("Point : Constructeur 3"); x = a.x; y = a.y; ; class PointCouleur extends Point { protected int couleur; public PointCouleur (double a, double b, int c) { super(a,b); couleur=c; System.out.println("PointCouleur : Constructeur 1"); public PointCouleur () { System.out.println("PointCouleur : Constructeur 2"); couleur=0; public PointCouleur (PointCouleur a) { this(a.x,a.y,a.couleur); System.out.println("PointCouleur : Constructeur 3"); public class Ex19 { public static void main (String []arg) { PointCouleur a,b,c; Scanner clavier = new Scanner(System.in); System.out.printf("Construction a"); a = new PointCouleur(1,2,3); System.out.printf("Construction b"); b = new PointCouleur(a); System.out.printf("Construction c"); c = new PointCouleur();

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

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

Mise à niveau en Java

Mise à niveau en Java Mise à niveau en Java Cours 1 Stéphane Airiau Université Paris-Dauphine Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 1 Aujourd hui Eléments de base Variables, opérateurs, type d une expression

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

1.Programmation en Java : notions de base, orienté objet et héritage

1.Programmation en Java : notions de base, orienté objet et héritage Travaux pratique de Méthodologie et Langage de Programmation,, TP1 1 1.Programmation en Java : notions de base, orienté objet et héritage Cette séance de TP a pour objectif d'introduire à la programmation

Plus en détail

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis Anne Tasso Un best-seller qui a déjà conquis des milliers d'étudiants! Java Le livre Java Le livrede de premier premier langage langage Avec 80 exercices corrigés Avec 80 exercices corrigés 5 e édition

Plus en détail

PARADIGME ORIENTÉ-OBJET

PARADIGME ORIENTÉ-OBJET PARADIGME ORIENTÉ-OBJET A programming paradigm that uses objects to design systems. Sébastien Adam Une introduction des concepts de base 2 Principes fondamentaux Modularité : vise à répartir les opérations

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Plus en détail

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

Programmation Orientée Objet

Programmation Orientée Objet Programmation Orientée Objet Initiation à Java Saber HENI saber.heni02@univ-paris8.fr http://handiman.univ-paris8.fr/~saber/ Plan du cours Chapitre 1 : Introduction au langage Java Chapitre 2 : Classes

Plus en détail

Java Licence professionnelle CISII, 2009-2010

Java Licence professionnelle CISII, 2009-2010 Java Licence professionnelle CISII, 2009-2010 Cours 5 : l héritage Cours inspiré des cours de Richard Grin, Antoine Tabbone et Hazel Everett Héritage Introduction - Pour raccourcir les temps d écriture

Plus en détail

Programmation objet. Objectifs - maitriser le paradigme de Programmation Orientée Objet - savoir utiliser efficacement et pleinement le langage Java

Programmation objet. Objectifs - maitriser le paradigme de Programmation Orientée Objet - savoir utiliser efficacement et pleinement le langage Java Programmation objet Objectifs - maitriser le paradigme de Programmation Orientée Objet - savoir utiliser efficacement et pleinement le langage Java - notions de bases d'algorithmique - bases syntaxiques

Plus en détail

Les tableaux ne sont pas ni des objets ni des types simples.

Les tableaux ne sont pas ni des objets ni des types simples. Cours 5 Tableaux Tableaux à 2 dimensions Tableaux d objets POO 1 Les tableaux ne sont pas ni des objets ni des types simples. Un tableau se rapproche d un objet Il est manipulé par référence (adresse)

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

Le Langage Java et le Monde des Objets

Le Langage Java et le Monde des Objets . p.1 Le Langage Java et le Monde des Objets Les principes de la modélisation Orientée Objet. Qu est-ce qu une classe?. Les types de base. Utiliser les classes. Les tentacules de Java. . p.2 Bibliographie

Plus en détail

INF421-a Bases de la programmation et de l algorithmique. (Bloc 1 / 9) Philippe Baptiste. CNRS LIX, École Polytechnique

INF421-a Bases de la programmation et de l algorithmique. (Bloc 1 / 9) Philippe Baptiste. CNRS LIX, École Polytechnique INF421-a Bases de la programmation et de l algorithmique (Bloc 1 / 9) Philippe Baptiste 26 août Philippe Baptiste: INF421-a, Bloc 1, 1/ 54 Organisation du cours 9 blocs, soit 9 vendredis : Amphi de 10h30

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

Une introduction au langage C++ Marc Jachym, Lurpa

Une introduction au langage C++ Marc Jachym, Lurpa Une introduction au langage C++ Marc Jachym, Lurpa Janvier 2008 À l origine, le langage C Langage procédural créé dans les années 1970 aux laboratoires Bell (ATT : télécoms américains) en vue d écrire

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

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

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

Résumé Introduction Programmation Java

Résumé Introduction Programmation Java Résumé Introduction Programmation Java Concepts Un programme : séquence, test conditionnel, boucles. Objets : Les objets Java modélisent les objets d un problème donné Classe : Les objets sont crées à

Plus en détail

Programmation PHP Septembre 2010

Programmation PHP Septembre 2010 IFT1147 Programmation Serveur Web avec PHP Plan La POO en PHP Lecture du chapitre 20. Programmation par objets Introduction à la POO Objets et classes Propriétés Méthodes Private Héritage Polymorphisme

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

Cours 1 : Introduction Générale + Objet I

Cours 1 : Introduction Générale + Objet I Organisation du cours Équipe pédagogique DUT Informatique S3 - Programmation Java Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet I Jean-Claude MARTIN (Responsable, Cours, TD

Plus en détail

Introduction au langage Java

Introduction au langage Java Introduction au langage Java Nicolas Dumoulin nicolas.dumoulin@cemagref.fr Cemagref Laboratoire d ingénierie pour les systèmes complexes 2010 Notes aux lecteurs Ce document est un support de cours qui

Plus en détail

Cours de Java. Benjamin FAUCHER Cubis-Helios Consulting

Cours de Java. Benjamin FAUCHER Cubis-Helios Consulting Cours de Java Benjamin FAUCHER Cubis-Helios Consulting Cours 1 : Les bases du Langage Java 1/2 I. Introduction II. Compilation III. Rappel sur la POO IV. Les classes Java V. Syntaxe de base du Java Langage

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

POO 1/3 - Introduction à la Programmation Orientée Objet. Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2.

POO 1/3 - Introduction à la Programmation Orientée Objet. Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2. POO 1/3 - Introduction à la Programmation Orientée Objet Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2.fr Sommaire Les Langages de Programmation Premier Programme Les Objets Objets

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

Plan Général Cours 1

Plan Général Cours 1 Programmation Orientée Objet & le langage JAVA Sébastien IKSAL IUT de Laval Dépt. SRC 1 2 Intervenants Organisation Anne-Marie.Puizillout@univ-lemans.fr (TD & TP) Noa.Randriamalaka@univ-lemans.fr (TD &

Plus en détail

Programmation en Java IUT GEII (MC-II1) 1

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)

Plus en détail

Le langage Java - Syntaxe

Le langage Java - Syntaxe Le langage Java - Syntaxe CLASSES, INSTANCE,MÉTHODES,... CLASSE EN JAVA, PAS À PAS UTILISER DES CLASSES: C O=NEW C() UTILISER LES MÉTHODES: O.M() UNE CLASSE AVEC PLUSIEURS CONSTRUCTEURS LA SURCHARGE DES

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

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

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

Programmation en Java - TD4 M1 ISIFAR 2008 2009 Révisions et héritage

Programmation en Java - TD4 M1 ISIFAR 2008 2009 Révisions et héritage Programmation en Java - TD4 M1 ISIFAR 2008 2009 Révisions et héritage Exercice 1. Toute réponse doit être justifiée. Vous proposerez une correction lorsque le code n est pas correct. 1. Le code suivant

Plus en détail

Java - Historique. Une introduction à Java. Premier exemple. Aperçu de Java. Processus d obtention d un exécutable. Compilation/interprétation

Java - Historique. Une introduction à Java. Premier exemple. Aperçu de Java. Processus d obtention d un exécutable. Compilation/interprétation Java - Historique Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)

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

Cours 1. Contenu du cours : " Premières applications. " Compilation, Exécution, Chemin. " Affichage et saisie. " Types de données. " Flux de contrôle

Cours 1. Contenu du cours :  Premières applications.  Compilation, Exécution, Chemin.  Affichage et saisie.  Types de données.  Flux de contrôle Cours 1 1 Contenu du cours : " Premières applications " Compilation, Exécution, Chemin " Affichage et saisie " Types de données " Flux de contrôle " Applets " Arrays " OO de base Edition Le fichier texte

Plus en détail

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar Programmation - Java - Fiches du Langage Marie Beurton-Aimar Fiche Numéro 1 1.1 Structure d un programme Java Toutes les instructions se terminent par un ; Le nom du fichier qui contient une classe doit

Plus en détail

Modélisation Objet. Introduction à JAVA. Georges Linares IUP GMI Université d Avignon et des Pays de Vaucluse

Modélisation Objet. Introduction à JAVA. Georges Linares IUP GMI Université d Avignon et des Pays de Vaucluse Modélisation Objet Introduction à JAVA Historique Les langages objets Simula 67 (trop tôt) Smalltalk 80 : purement objet Objective C : extension du C, esprit Smalltalk C++ : extension du c; le plus utilisé

Plus en détail

Cours 1 : Introduction Générale + Objet

Cours 1 : Introduction Générale + Objet Organisation du cours Équipe pédagogique L2 S4 2009 : 2010 Programmation Objet Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet 10 cours de 1h30 o Jean-Claude MARTIN (MARTIN@LIMSI.FR)

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

TD : Compilation d exercices et d extraits d examens

TD : Compilation d exercices et d extraits d examens TD : Compilation d exercices et d extraits d examens 1. Classes et visibilité a. Parmi les appels suivant indiquez ceux qui sont corrects et ceux qui ne le sont pas public class A { public int i ; private

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

Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION

Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION EILCO ING 1 - POO Java Contrôle 2014/2015 Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION Dans ces exercices, nous allons définir une classe Personne qui permettra de gérer

Plus en détail

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet CNAM UV 19357 Année 2003-2004 David Delahaye David.Delahaye@cnam.fr Conception et Développement Orientés Objets Cours 1 : Introduction 1 Présentation de la valeur Ce cours s adresse à toute personne ayant

Plus en détail

Programmation orientée objet et événementielle en JavaScript. Département SRC Pôle Universitaire de Vichy Bruno Bachelet

Programmation orientée objet et événementielle en JavaScript. Département SRC Pôle Universitaire de Vichy Bruno Bachelet Programmation orientée objet et événementielle en JavaScript Département SRC Pôle Universitaire de Vichy Bruno Bachelet «PARTIE IV Introduction au paradigme objet Programmation objet et événementielle

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

Algorithmique et initiation à la programmation java

Algorithmique et initiation à la programmation java L3 Monnaie - Finance Algorithmique et initiation à la programmation java Première partie O. Auzende 2012-2013 1 Modalités Cours en amphithéâtre : les lundis de 12 h à 13 h 30 (amphi 3) o Deux fascicules

Plus en détail

Une classe est une sorte de type de données définie par le programmeur Variables peuvent être de type classe

Une classe est une sorte de type de données définie par le programmeur Variables peuvent être de type classe Classe, Objet Variables locales Niveaux de visibilité (Encapsulation) Attributs et Méthodes Statiques Surcharge des Méthodes Transmission des Paramètres Paquetage Classes pour les types de base POO 1 Une

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 +Cours 2 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

Plus en détail

Licence Informatique Année 2005-2006

Licence Informatique Année 2005-2006 Université Paris 7 Java Licence Informatique Année 2005-2006 TD n 6 - Correction Héritage Exercice 1 On modélise une application devant servir à l inventaire d une bibliothèque. Elle devra traiter des

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

EXAMEN DE JAVA 2010-2011

EXAMEN DE JAVA 2010-2011 NOM : PRÉNOM : TP : G TP EXAMEN DE JAVA 2010-2011 Consignes : avec documents, mais sans téléphone, ordinateur ou autre moyen de communication. Durée : 2h Recommandations : Le code doit être écrit en JAVA

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

INITIATION A LA PROGRAMMATION ORIENTEE OBJET (POO)

INITIATION A LA PROGRAMMATION ORIENTEE OBJET (POO) Objectifs INITIATION A LA PROGRAMMATION ORIENTEE OBJET (POO) Bertrand Vandeportaele IUT GEII TOULOUSE 2015 Objectifs Connaître les possibilités offertes par la POO Comprendre les concepts Savoir utiliser

Plus en détail

Cours1 +Cours 2. Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1

Cours1 +Cours 2. Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Cours1 +Cours 2 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

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

Listes et arbres binaires

Listes et arbres binaires Des structures de données dynamiques Listes, Listes ordonnées Arbres binaires, arbre binaires de recherche Listes chaînées Utile si le nombre d éléments n est pas connu à l avance et évolue beaucoup. Permet

Plus en détail

Notion d indirection (1) 1

Notion d indirection (1) 1 Notion d indirection (1) 1 Illustration 1: Pourquoi garder une copie des fichiers postscript du cours dans mon répertoire, si je sais où se trouve l original sur le web? pour accéder à l original au cas

Plus en détail

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

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

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

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

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012 Université Mohammed Premier Année universitaire 2011-2012 Faculté des Sciences Filière SMI Département de Mathématiques Module : POO Java et d Informatique Semestre : S5 Correction de l examen écrit de

Plus en détail

6.1 Une classe simple pour représenter des comptes bancaires

6.1 Une classe simple pour représenter des comptes bancaires Chapitre 6 Héritage Ce chapitre du cours traite de concepts relatifs à la programmation objet (hiérarchie de classe, héritage, extension, masquage) et sera illustré par un exemple de représentation de

Plus en détail

Introduction à la Programmation Orientée Objet

Introduction à la Programmation Orientée Objet Licence Sciences, Technologies, Santé Université de Perpignan Via Domitia Semestre 5 (L3) - Mention Mathématiques, Informatique Année universitaire 2011/2012 Programmation Orientée Objet Introduction à

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Chapitre 6 Héritage en Java

Chapitre 6 Héritage en Java Chapitre 6: Héritage 1/12 Chapitre 6 Héritage en Java Chapitre 6: Héritage 2/12 1. Généralités L'héritage est le troisième des paradigmes de la programmation orientée objet (le 1 er étant l'encapsulation,

Plus en détail

Programmation orientée objets

Programmation orientée objets POO : mais pourquoi? La Programmation Orientée Objets (POO) a pour but final de faciliter le débogage, la maintenance et la mise à jour d'applications complexes. C++, Java et Scala sont des exemples de

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

Cours 13. Les classes abstraites Les méthodes abstraites Les interfaces. F. Gayral 1

Cours 13. Les classes abstraites Les méthodes abstraites Les interfaces. F. Gayral 1 Cours 13 Les classes abstraites Les méthodes abstraites Les interfaces F. Gayral 1 Un exemple pour mieux comprendre Pas d'instanciation d'un humain : un humain, c'est - soit un homme - soit une femme Humain

Plus en détail

CSC4002 : Contrôle Final Session 1. Date : jeudi 26 janvier 2012 Durée : 1H30. Coordonnateurs : Christian Bac et Denis Conan

CSC4002 : Contrôle Final Session 1. Date : jeudi 26 janvier 2012 Durée : 1H30. Coordonnateurs : Christian Bac et Denis Conan Corrigé et Barème Contrôle de connaissances 2011/2012 des étudiants de 2 è année (EI2) CSC4002 : Contrôle Final Session 1 Date : jeudi 26 janvier 2012 Durée : 1H30 Coordonnateurs : Christian Bac et Denis

Plus en détail

Programmation Orientée Objets en JAVA

Programmation Orientée Objets en JAVA DI GALLO Frédéric Programmation Orientée Objets en JAVA Cours du Cycle d Approfondissement class { public private Cours dispensé par B. Chaulet CNAM ANGOULEME 2000-2001 DI GALLO Frédéric Page 1 09/03/01

Plus en détail

Université Mohammed Premier Année universitaire 2011-2012. Complément d exercices avec correction

Université Mohammed Premier Année universitaire 2011-2012. Complément d exercices avec correction Université Mohammed Premier Année universitaire 2011-2012 Faculté des Sciences Filière SMI Département de Mathématiques et d Informatique Module : POO Java Semestre : S5 Complément d exercices avec correction

Plus en détail

} 7 Variables (composantes)

} 7 Variables (composantes) Chapitre 4 Tableaux Jusqu ici, nous avons employé les variables pour stocker les valeurs individuelles de types primitifs : une variable de type int pour stocker un entier, une variable de type boolean

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

PPOOGL. Florent de Dinechin. Java pour les nuls

PPOOGL. Florent de Dinechin. Java pour les nuls PPOOGL Florent de Dinechin Java pour les nuls Java en 30 minutes Introduction Grands principes Pour en finir avec l organisation Types de base et objets Le reste est dans le manuel PPOOGL 1 Introduction

Plus en détail

Éléments de base en Java (suite et fin)

Éléments de base en Java (suite et fin) Éléments de base en Java (suite et fin) P.O.O. LMI 2 Semestre 4 Option Info Année 2008-09 1/33 Éléments de base en Java (suite et fin) Année 2008-09 Plan du cours Les chaînes de caractères Retour vers

Plus en détail

Concept de classes (1) Classes et objets en Java Master Informatique 1 ère année. Concept de classes (2) Concept de classes (3)

Concept de classes (1) Classes et objets en Java Master Informatique 1 ère année. Concept de classes (2) Concept de classes (3) Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Classes et objets en Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

3 ElementsdeprogrammationJava 15 3.1 Premierspas... 15

3 ElementsdeprogrammationJava 15 3.1 Premierspas... 15 Tabledesmatières 1 IntroductionaulangageJava 1 1.1 EnvironnementJava... 1 1.1.1 Compilation... 2 1.1.2 Interprétation... 2 1.2 Programmationorientée-objet... 2 1.2.1 Classe... 3 1.2.2 Objet... 4 2 Syntaxedulangage

Plus en détail

Programmation Orientée Objet. Introduction à Java. Frédéric Mallet. http://deptinfo.unice.fr/~fmallet/

Programmation Orientée Objet. Introduction à Java. Frédéric Mallet. http://deptinfo.unice.fr/~fmallet/ Introduction à Java Frédéric Mallet http://deptinfo.unice.fr/~fmallet/ 2013-2014 F. Mallet -POO 1 Volume Horaire Programmation Orientée Objet Organisation du cours 12*1h30 de cours 12*1h30 de TD machine

Plus en détail

Programmation objet en Java.

Programmation objet en Java. Programmation objet en Java. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/7/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/7/ Cours Exercices Slide 1 1. Classes,

Plus en détail

Syntaxe du langage JAVA. Philippe Roose (IUT Bayonne) Olivier Dedieu (INRIA)

Syntaxe du langage JAVA. Philippe Roose (IUT Bayonne) Olivier Dedieu (INRIA) Syntaxe du langage JAVA Philippe Roose (IUT Bayonne) Olivier Dedieu (INRIA) Structure du langage Les types primitifs boolean(true/false), byte (1 octet), char (2 octets), short (2 octets), int (4 octets),

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

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

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

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

Support de Cours Christophe Dony Université Montpellier-II

Support de Cours Christophe Dony Université Montpellier-II Cours de base d Ingéniérie des applications objet. Généralités sur le langage Java - Modèle d exécution - Syntaxe Support de Cours Christophe Dony Université Montpellier-II 1 Le langage Java 1.1 Langage

Plus en détail

LES CONCEPTS ORIENTES OBJETS EN JAVA

LES CONCEPTS ORIENTES OBJETS EN JAVA CHAPITRE 2 : LES CONCEPTS ORIENTES OBJETS EN JAVA Objectifs spécifiques 1. Introduire le concept de classe et sa notation (1/2 heure) 2. Maîtriser la définition des attributs et méthodes d une classe (1

Plus en détail

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\ Exercices corrigés de programmation OO Java Préparés par : Mlle Imene Sghaier Année Académique : 2006-2007 Premiers Pas I. Avant de programmer en Java Le JDK de Sun (Java Development Kit) est l outil essentiel

Plus en détail

1. Introduction Ce document doit, à terme, être un polycopié Java pour les étudiants de MIAIF2, DESS, MASS, MST2.

1. Introduction Ce document doit, à terme, être un polycopié Java pour les étudiants de MIAIF2, DESS, MASS, MST2. POLYCOPIE DE JAVA 1. Introduction Ce document doit, à terme, être un polycopié Java pour les étudiants de MIAIF2, DESS, MASS, MST2. Plan du cours 2. Présentation générale 3. Le minimum sur les entrées

Plus en détail

Précis de vocabulaire Orienté Objet

Précis de vocabulaire Orienté Objet Dernière Mise à jour : Mars 2007 Précis de vocabulaire Orienté Objet 1 Questions Expliquer et donner un exemple pour chacun des concepts suivants 1. Qu'est-ce qu'un objet? 2. Qu'est-ce qu'une classe? 3.

Plus en détail

Rappels sur l objet. Yannick Prié Département Informatique - UFR Sciences et Techniques Université Claude Bernard Lyon 1 2011-2012

Rappels sur l objet. Yannick Prié Département Informatique - UFR Sciences et Techniques Université Claude Bernard Lyon 1 2011-2012 Rappels sur l objet Yannick Prié Département Informatique - UFR Sciences et Techniques Université Claude Bernard Lyon 1 2011-2012 Objectifs de ce cours 2 Rappels sur les concepts fondamentaux liés à la

Plus en détail

Introduction aux méthodes Orientées Objets Troisième partie

Introduction aux méthodes Orientées Objets Troisième partie Introduction aux méthodes Orientées Objets Troisième partie Modélisation avec UML 2.0 Programmation orientée objet en C++ Pré-requis: maitrise des bases algorithmiques (cf. 1 ier cycle), maitrise du C

Plus en détail

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

HMIN111M Programmation en Java. Un aperçu des classes

HMIN111M Programmation en Java. Un aperçu des classes HMIN111M Programmation en Java Un aperçu des classes 1. Limites des types primitifs Programme de gestion des comptes bancaires 2 comptes par exemple (on ne connait pas les tableaux) Une classe Banque qui

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

Algorithmique Programmation

Algorithmique Programmation Algorithmique Programmation 2ème partie DUT en alternance CNAM 2007-2008 2 Table des matières 1 Premiers Pas en Programmation Objet : les Classes et les Objets 7 1.1 Définir une Classe........................................

Plus en détail