Langage et Concepts de Programmation Orientée-Objet Pôle Informatique 2007/2008 École Nationale Supérieure des Mines de Saint-Étienne Laurent Vercouter.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la programmation objet Langage Java
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Introduction à la Programmation Orientée Objet Langage Java
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Introduction à Java - les paquetages -
Programmer en JAVA par Tama
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
IJA - TD 2 Bases du langage
Introduction à la POO: Les classes vs les objets
Algorithme et programmation
Principes de programmation (suite)
Programmation orientée objet
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Les exceptions. Quest ce quune exception ? Une erreur dans le programme Due à un bug ou un cas « anormal » Gestion complète en java : JVM Dans dautre.
Principes de programmation (suite)
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
POO : Objets et classes (Rappels)
Introduction à la programmation (Java)
Langage Oriente Objet Cours 2.
Structures de données IFT-2000
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Une nouvelle structure de données : les tableaux
Introduction à la programmation objet Langage Java
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Introduction au paradigme orienté-objet (suite)
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
4 Introduction des objets. Les chaînes et tableaux
La notion de type revisitée en POO
Propriétés. Propriétés ► Les propriétés peuvent être visibles dans les environnements de scripts ► Les propriétés peuvent être accédées par programmation.
Créer des packages.
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 1 – Objets et Classes Master 1 SIGLIS1Java Lecteur - Chapitre 1 Objets et classes.
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 3 – Classes et objets en Java Master 1 SIGLIS1 Java Lecteur - Chapitre 3 Classes et objets en Java.
Strings et Tableaux en Java
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
C# de plus près.  Ce sont globalement les mêmes que Java : ◦ Int(int16, int32), float, double, bool,…  Les classe « communes » sont également les mêmes.
Cours du 5 novembre.
6ième Classe (Mercredi, 17 novembre) CSI2572
Héritage Conception par Objet et programmation Java
Classes abstraites, interface Classe interne Classes enveloppes
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Langage de Programmation Orientée Objet : C++
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Exception Handling "Unfortunately, it's almost accepted practice to ignore error conditions, as if we're in a state of denial about errors." Bruce Eckel.
Philippe Gandy - 15 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
LES CLASSES ET LES OBJETS
Transcription de la présentation:

Langage et Concepts de Programmation Orientée-Objet Pôle Informatique 2007/2008 École Nationale Supérieure des Mines de Saint-Étienne Laurent Vercouter

Déroulement du cours – 2 TP à envoyer à la fin des séances (24/1 et 7/2) – Évaluation sur un de ces 2 TPs et l'examen écrit note = 0,5*examen + 0,5*TP 8h159h4510h11h30 COURSTD TP 9 janvier 10 janvier 17 janvier 23 janvier 30 janvier 6 février 24 janvier 7 février TP TD TP TD TP TD TP EXAMEN

Modèle en cascade pour le développement logiciel Analyse Conception Implémentation Tests Maintenance SADT, SA-RT, MERISE, OMT, UML, … Fortran, Cobol, C, SmallTalk, Ada, C++, Java, …

Langages procéduraux et fonctionnels Traitement 1 Données Traitement 2 Traitement 3 Un programme est composé de plusieurs procédures (ou fonctions) :  qui effectuent un traitement sur des données (procédure)  qui retournent une valeur après leur invocation (fonction) Certains langages ne distinguent pas procédures et fonctions. Exemples de langages procéduraux ou fonctionnels : Fortran, Lisp, C, …

Langages Orientés-Objet D D D D D T T T T T Un programme est composé de plusieurs objets qui contiennent :  des données "internes"  des traitements manipulant ces données internes ou d'autres données Les données d'un objet sont appelés ses attributs et ses traitements sont ses méthodes (ou opérations). Exemples de langages orientés-objet : SmallTalk, C++, Java, …

UML & Java Analyse Conception Implémentation Tests Maintenance Unified Modeling Language (UML) :  notation standard pour l'analyse et la conception  construite par l'Object Management Group  Première version standard en 1997 Java :  pas un standard mais un langage très largement utilisé  développé par SUN microsystems en 1995  dernière version stable : JDK 1.5.0

Objet  Approche procédurale : "Que doit faire mon programme ?"  Approche orientée-objet : "De quoi doit être composé mon programme ?"  Cette composition est conséquence d'un choix de modélisation fait pendant la conception Exemple: Gestion d'une bibliothèque Le seigneur des anneaux J.R.R.Tolkien Germinal E. Zola Le MondeAlice Dupont Directrice Michel Martin Bibliothécaire Anne Durand Lectrice Arsène Deschamps Lecteur

Classe Des objets similaires peuvent être informatiquement décrits par une même abstraction : une classe  même structure de données et méthodes de traitement  valeurs différentes pour chaque objet Le seigneur des anneaux J.R.R.Tolkien Germinal E. Zola Le MondeAlice Dupont Directrice Michel Martin Bibliothécaire Anne Durand Lectrice Arsène Deschamps Lecteur Classe Livre -titre, auteur Classe Journal -titre Classe Employé -nom, prénom, statut Classe Lecteur -nom, prénom

Contenu d'une classe Une classe est composée de plusieurs membres dont chacun est soit :  un attribut : variable typée  une méthode (ou opération) : ensemble d'instructions de traitement class CompteBancaire { String proprietaire; double solde; double getSolde() { return solde; } void credite(double val) { solde = solde + val; } Attributs Méthodes

Encapsulation L'encapsulation est la pratique consistant à regrouper des attributs au sein d'une même classe. Exemple : la classe Livre encapsule les attributs titre et emprunteur  Pour améliorer la lisibilité des programmes, les attributs encapsulés sont souvent privés (inaccessibles aux autres classes).  Les données et méthodes accessibles sont dites publiques.

Syntaxe Java Le code source d'un programme Java est contenu dans plusieurs fichiers d'extension.java  Une seule classe publique par fichier;  Le nom du fichier doit être le même que celui de la classe;  Par convention, le nom d'une classe commence toujours par une majuscule. Le code source d'une classe commence par le mot-clé class suivi de son contenu : class { }

Types primitifs de données Même types qu'en C:  int  float  double  short  long  char  void Plus deux nouveaux types :  boolean  byte Plus la classe :  String Déclaration : int monEntier; String chaine; boolean test;

Écriture des méthodes La signature d'une méthode contient notamment :  un nom de méthode;  un type de données de retour;  des types de données pour ses arguments;  … Par convention le nom des méthodes et attributs commencent toujours par une minuscule. Une méthode est composée de sa signature et d'un traitement associé. ( * ) { }

Exemple : classe Livre class Livre { String titre; Lecteur emprunteur; void setTitre(String t) { titre = t; } String getTitre() { return titre; } Date emprunte(Lecteur lec) { if (emprunteur = = null) { emprunteur = lec; return new Date(); } else return null; } Méthodes Attributs

Portée d'une variable public class Portee { int a; public void test(int b) { if (a > b) { int c = b; b = a; a = b; } afficher(b); } l'entier a est visible dans toute la classe

Portée d'une variable public class Portee { int a; public void test(int b) { if (a > b) { int c = b; b = a; a = b; } afficher(b); } l'entier b est visible à l'intérieur de la méthode test

Portée d'une variable public class Portee { int a; public void test(int b) { if (a > b) { int c = b; b = a; a = b; } afficher(b); } l'entier c est visible dans le bloc du if

Instanciation L'instanciation est l'opération qui consiste à créer un objet à partir d'une classe. En Java, le mot-clé new provoque une instanciation en faisant appel à un constructeur de la classe instanciée.  Un constructeur est une méthode qui a le même nom que la classe  Un constructeur n'a pas de valeur de retour  Plusieurs constructeurs peuvent exister dans une même classe (avec des arguments différents)  Il faut au moins un constructeur dans une classe pour en instancier des objets

Constructeur de la classe Livre class Livre { String titre; Lecteur emprunteur; Livre(String t) { titre = t; emprunteur = null; } void setTitre(String t) { titre = t;} String getTitre() { return titre;} Date emprunte(Lecteur lec) { … } Constructeur

Instanciation de la classe Livre class InterfaceBibliothecaire { void enregistreLivre(String nom) { Livre nouveauLivre; nouveauLivre = new Livre(nom); ajouteEnBibliotheque(nouveauLivre); } void ajouteEnBibliotheque(Livre li) { … }

Invocation de méthodes En Java, une méthode ne peut pas être invoquée seule, elle est toujours appelée sur un objet. Un point. sépare le nom de la méthode de l'objet sur lequel elle est invoquée. … Livre monLivre = new Livre("Germinal"); String titreDuLivre = monLivre.getTitre(); … Le mot-clé this désigne, en cours d'exécution d'une méthode, l'objet sur lequel elle est appelée. La syntaxe pour accéder aux attributs d'un objet est la même.

Exemple class Livre { String titre; Lecteur emprunteur; … boolean estEmprunte() { if (emprunteur == null) return false; else return true; } Date emprunte(Lecteur lec) { if ( this.estEmprunte() == true) return null; if ( lec.empruntPossible() ) { emprunteur = lec; lec.ajouteEmprunt( this ); return new Date(); } else return null; } class Lecteur { Livre[ ] emprunts; int nbEmprunts; … boolean empruntePossible() { if (nbEmprunts < 5) return true; else return false; } void ajouteEmprunt(Livre liv) { emprunts[nbEmprunts] = liv; nbEmprunts ++; }

Visibilité des membres La visibilité d'une classe et de ses membres définit quelles autres classes y ont accès. Ces contraintes portent sur :  la référence fait à une classe  l'invocation d'une méthode sur un objet  l'accès en lecture et écriture à un attribut d'un objet 4 niveaux de visibilité en Java :  public : visible tous les objets  private : uniquement visible par les instances de la classe  protected : expliqué ultérieurement  par défaut : expliqué ultérieurement

Exemple de visibilité public class Livre { private String titre; private Lecteur emprunteur; … private boolean estEmprunte() { if (emprunteur == null) return false; else return true; } public Date emprunte(Lecteur lec) { if ( this.estEmprunte() == true) return null; if ( lec.empruntPossible() ) { emprunteur = lec; lec.ajouteEmprunt( this ); return new Date(); } else return null; } public class Lecteur { private Livre[ ] emprunts; private int nbEmprunts; … public boolean empruntePossible() { if (nbEmprunts < 5) return true; else return false; } public void ajouteEmprunt(Livre liv) { emprunts[nbEmprunts] = liv; nbEmprunts ++; }

Exceptions En Java, les erreurs se produisent lors d'une exécution sous la forme d'exceptions. Une exception :  est un objet, instance d'une classe d'exceptions.  peut provoquer la sortie d'une méthode  correspond à un type d'erreur  contient des informations sur cette erreur

Déclaration des exceptions possibles Une méthode déclare, par le mot-clé throws, dans sa signature les classes d'exception qu'elle peut envoyer. Exemple de la méthode substring de la classe String: public class String { … public String substring( int beginIndex, int endIndex ) throws IndexOutOfBoundsException { … } … }

Traitement des exceptions Il y a deux manières de traiter une exception reçue : Propagation public String initialesAuteur(Livre l) throws IndexOutOfBoundsException { String titre, initiales; titre = l.getTitre(); initiales = titre.substring(0,2); return initiales; } L'exception est renvoyée à la méthode ayant invoquée initialesAuteur Interception public String initialesAuteur(Livre l) { String titre, initiales; try { titre = l.getTitre(); initiales = titre.substring(0,2); return initiales; } catch (IndexOutOfBoundsException ex) { return new String("???"); } L'exception est traitée dans la méthode initialesAuteur et "disparaît"

Émission & création d'exceptions Vous devez prévoir tous les cas d'erreurs des méthodes que vous écrivez en émettant les exceptions appropriées: 1.Créer un objet d'une classe d'exception 2.Émettre l'exception public Date emprunte(Lecteur lec) throws Exception { if ( this.estEmprunte() = = true) { Exception excep = new Exception("Livre deja emprunte"); throw excep; } if ( lec.empruntPossible() ) { emprunteur = lec; lec.ajouteEmprunt( this ); return new Date(); } else { throw new Exception("Le lecteur a trop d'emprunts"); }

Compléments de syntaxe Instruction conditionnelle if {bloc_si_vrai} else {bloc_si_faux} Exemple : if ( emprunteur.getStatut() = = "employe") { unLivre.setDateRetour(30); } else { unLivre.setDateRetour(15); }

Compléments de syntaxe Instruction itérative while {bloc} Exemple : while ( i < biblio.nbLivres() ) { Livre l = biblio.getLivre(i); l.setDisponible(true); i++; }

Compléments de syntaxe Instruction itérative for ( ; ; ) {bloc} Exemple : for (int i = 0; i < biblio.nbLivres(); i++ ) { Livre l = biblio.getLivre(i); l.setDisponible(true); }

Compléments de syntaxe Instruction de choix multiple switch ( ) { case : … default: } Exemple : switch (l.getCategorie()) { case 1: l.setDuree(15); break; case 2: l.setDuree(20); break; default: l.setDuree(30); }

Autres particularités de syntaxe  On peut utiliser l'opérateur + sur les objets de classe String String s1 = "hello ", s2 = "world"; String s3 = s1 + s2;  s3 vaut "hello world"  La variable length donne la taille d'un tableau; char[] tab = new char[25]; int a = tab.length;  a vaut 25