Programmation avec des objets : Cours 7. Menu du jour



Documents pareils
Java Licence Professionnelle CISII,

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Projet de programmation (IK3) : TP n 1 Correction

Programmer en JAVA. par Tama

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

Un ordonnanceur stupide

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

Chapitre 10. Les interfaces Comparable et Comparator 1

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

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Corrigé des exercices sur les références

Cours 1: Java et les objets

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

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

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

as Architecture des Systèmes d Information

Programme Compte bancaire (code)

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

Corrigés des premiers exercices sur les classes

2. Comprendre les définitions de classes

Programmation Par Objets

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

Programmation par les Objets en Java

Plan du cours. Historique du langage Nouveautés de Java 7

Création d objet imbriqué sous PowerShell.

Corrigé des exercices avancés sur les structures récursives

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

Package Java.util Classe générique

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

TP, première séquence d exercices.

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Une introduction à Java

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

Programmation Objet I

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

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Utilisation d objets : String et ArrayList

Auto-évaluation Programmation en Java

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Arbres binaires de recherche

Programmation Orientée Objet Java

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TD/TP PAC - Programmation n 3

Chapitre 2. Classes et objets

Programmation Objet Java Correction

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

Classe Interne, Anonyme & Enumération

Java c est quoi? Java pourquoi?

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

Généricité. en Java. (polymorphisme paramétrique) Philippe GENOUD UJF Janvier

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

PROGRAMMATION PAR OBJETS

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Développement Logiciel

Généralités sur le Langage Java et éléments syntaxiques.

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

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

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

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

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

Chapitre VI- La validation de la composition.

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

INITIATION AU LANGAGE JAVA

Langage Java. Classe de première SI

STAGE IREM 0- Premiers pas en Python

Solutions du chapitre 4

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

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

Recherche dans un tableau

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

TP1 : Initiation à Java et Eclipse

Les structures de données. Rajae El Ouazzani

Exercices sur les interfaces

ACTIVITÉ DE PROGRAMMATION

Programmation Orientée Objet

Introduction à JDBC. Accès aux bases de données en Java

Threads. Threads. USTL routier 1

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

Design patterns. Design patterns - définition. Design patterns - avantages

Apprendre Java en 154 minutes

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Structures dynamiques Listes chaînées

Notions fondamentales du langage C# Version 1.0

Introduction au langage Java

Dis papa, c est quoi un bus logiciel réparti?

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

Introduction : les processus. Introduction : les threads. Plan

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

Programmation en Java IUT GEII (MC-II1) 1

Cours 14 Les fichiers

INF 321 : mémento de la syntaxe de Java

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Synchro et Threads Java TM

Transcription:

1 Programmation avec des objets : Cours 7 Menu du jour 1. Retour sur la classe Liste 2. Précisions sur l interface 3. Difficultés dans le cas d erreurs 4. Soulever des exceptions 5. Utilisation des Listes

2 Opérations souhaitées sur les listes Constructeurs: liste vide, liste contenant un élément valeur(), reste(), estvide() Ajout au début, à la fin Supprimer Calculer la longueur, vérifier si un entier appartient à la liste,

3 Principe de la conception/utilisation On donne les spécifications précises de chaque méthode ou fonction publique L utilisateur de la classe liste ne doit pas connaître les détails de l implantation Le concepteur de la classe doit satisfaire les spécifications Problème avec les mauvaises utilisations de la classe

4 Constructeurs de listes Construire une liste vide Construire une liste qui ne contient qu un entier

5 Tester si une liste est vide Une méthode (non statique) appelée par x.extvide() Une fonction statique appelée par estvide(x)

6 Valeur et reste La valeur d une liste est le premier élément. La méthode reste() donne comme résultat une liste obtenue en supprimant le premier élément, elle ne doit pas recopier car doit fonctionner en peu d opérations (indépendant de la taille) Les deux méthodes ne doivent pas altérer la liste valeur(), reste() sont des méthodes non statiques La liste vide n a ni valeur ni reste, un utilisateur doit veiller à ne pas appeler ces méthodes sur la liste vide

7 Ajouter, supprimer un entier On peut ajouter soit au début soit à la fin d une liste La suppression d un élément ne s effectue que si l élément est présent dans la liste, si tel n est pas le cas la liste est inchangée. Les trois méthodes: ajoutdebut(int a), ajoutfin(int a), supprimer(int a) donnent un résultat de type void sont non statiques et opèrent par effet de bord

8 Longueur, appartient La longueur d une liste est son nombre d éléments, donnée par une méthode non statique int longueur() qui peut s appliquer à la liste vide. Vérifier si un entier appartient à une liste s effectue à l aide d une méthode non statique boolean appartient(int a). Les deux méthodes: longueur(), appartient(int a) pas les listes qui les appellent ne modifient

9 Afficher une liste Une liste s affiche en la transformant en chaîne de caratères On utilise pour cela la méthode String tostring() qui permet d utiliser par la suite la fonction usuelle d affichage: System.out.println()

10 Les listes vues par l utilisateur: une interface public class Liste{ Liste () // construit la liste vide Liste (int a) // construit la liste ne contenant que a public boolean estvide() // verifie si la liste est vide public static boolean estvide(liste x) // la meme en statique public int valeur() // donne le premier element, // ne pas appliquer a la liste vide public Liste reste() // donne la liste obtenue en supprimant le // premier element // ne pas appliquer a la liste vide

11 } public void ajoutdebut(int a) // ajoute au debut // sans modifier la reference au premier public void ajoutfin (int a) // ajoute a la fin // sans modifier la reference au premier public void supprimer (int a) // supprime si appartient // sans modifier la reference au premier public int longueur() // donne le nombre d elements public boolean appartient (int a) // vrai si a appartient a la liste d appel public String tostring() // transforme en chaine de caracteres affichable

12 Les liste vues par l implanteur Faire que l on puisse appliquer des méthodes à la liste vide Bien gérer les effets de bord Attention à la valeur et le reste sur une liste vide

13 Les liste vues par l implanteur: champs, constructeurs public class Liste{ private int val; private Liste suiv; Liste (){ val = 0; suiv = null;} Liste (int a) { Liste x = new Liste(a, null); val = 0; suiv = x;} private Liste (int a, Liste x){ val = a; suiv = x; } public boolean estvide(){ return suiv == null;} static boolean estvide(liste x){ return (x.suiv == null);}

14 Les liste vues par l implanteur: exceptions sur listes vides public int valeur() { if (estvide()) throw new RuntimeException("Valeur pour une liste vide"); return suiv.val; } public Liste reste(){ if (estvide()) throw new RuntimeException("Reste pour une liste vide"); return suiv; }

15 Les liste vues par l implanteur: la suite public void ajoutdebut(int a){ Liste x = new Liste(a, suiv); this.suiv = x;} public void ajoutfin (int a){ if (estvide()) ajoutdebut(a); else reste().ajoutfin(a);} public void supprimer (int a){ Liste x = this; boolean trouve = false; while (!trouve && x.suiv!= null ){ if (x.suiv.val == a) { trouve = true; x.suiv = x.suiv.suiv; } x = x.suiv;}}

16 Fonctions sur les listes static Liste reverse (Liste x){ if (x.estvide()) return new Liste(); else { Liste u = reverse(x.reste()); int a = x.valeur(); u.ajoutfin(a); return u;}} static Liste reverseaux(liste u, Liste v){ if (u.estvide()) return v; else {v.ajoutdebut(u.valeur()); return reverseaux(u.reste(), v);} } static Liste reverse1(liste u) { Liste v = new Liste(); return reverseaux(u, v);} }

17 Remarques sur les listes Attention aux effets de bords Liste d appel modifiée ou conservée? Fonction sur la liste vide déclanche une exception Destructif ou pas Pas besoin de libérer de la place le glaneur de cellules (garbage collector) le fera Attention à ne jamais effectuer: null.valeur ou null.reste()...

18 Classes abstraites Une classe abstraite est une classe qui contient une ou plusieurs méthodes abstraites Une méthode est abstraite si on ne définit que sa signature Une classe réalise une classe abstraite si c est une sous-classe qui contient le corps de toutes les méthodes abstraites Obligation pour le programmeur de remplir toutes les spécifications demandées

19 Programmation avec des classes abstraites Une classe abstraite contient des fonctions avec seulement une déclaration Il faut les préciser dans les classes qui en héritent Lors de l exécution le type de l objet détermine la méthode utilisée Pour les listes : Une classe abstraite Liste etdes classes qui en héritent: