Cours programamtion-objet java

Cours programamtion-objet java

-

Documents
18 pages
Lire
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

???????????????Cours programmation-orientée objet en JavaLicence d’informatiqueHugues Fauconnierhf@liafa.jussieu.frPlan du coursIntroduction: programmation objet pourquoi? Comment? Un exemple en JavaClasses et objetsMéthode et variables, constructeurs, contrôle d’accèsExtension de classesHéritage, liaison dynamique et typage, classe Object, clonage, classes abstraites et interfaceClasses internes et emboîtéesExpressions, types, tableaux etc.GénéricitéTypes de donnéesString et expressions régulières, Collections, Conteneurs, itérationsEntrée-sortieThreadReflexionsDivers: annotations, package, documentation…POO-L3 H. Fauconnier 21???????BibliographieDe nombreux livres sur java (attention java 1.5)En ligne:http://mindview.net/Books/TIJ4Thinking in Java, 4th edition Bruce Eckelhttp://java.sun.com/docs/index.htmlLivre conseillé:The Java Programming language fourth edition AW Ken Arnold, James Gosling, David HolmesPOO-L3 H. Fauconnier 3Chapitre IIntroduction2??????????????A) GénéralitésProblème du logiciel:TailleCoût : développement et maintenanceFiabilitéSolutions :ModularitéRéutiliser le logicielCertification Comment?POO-L3 H. Fauconnier 5Typage…Histoire:Fonctions et procédures (60 Fortran)Typage des données (70) Pascal AlgolModules: données + fonctions regroupées (80) adaProgrammation objet: classes, objets et héritagePOO-L3 H. Fauconnier 63?????????B) Principes de base ...

Sujets

Informations

Publié par
Nombre de lectures 74
Langue Français
Signaler un problème
Cours programmation-orientée objet en Java
Licence dinformatique Hugues Fauconnier hf@liafa.jussieu.fr
Plan du cours † Introduction: „ programmation objet pourquoi? Comment? Un exemple en Java † Classes et objets „ Méthode et variables, constructeurs, contrôle daccès † Extension de classes „ aHbésrtitraaigtee, sl ieati sionnt edryfnaacmeique et typage, classe Object, clonage, classes † Classes internes et emboîtées † Expressions, types, tableaux etc. † Généricité † Types de données „ String et expressions régulières, Collections, Conteneurs, itérations † Entrée-sortie † Thread † Reflexions † Divers: annotations, package, documentation POO-L3 H. Fauconnier
2
1
Bibliographie
† De nombreux livres s (attention java 1.5) ur java † En ligne: „ http://mindview.net/Books/TIJ4 „ Thinking in Java, 4th edition Bruce Eckel „ http://java.sun.com/docs/index.html
† Livre conseillé: „ The Java Programming language fourth edition AW Ken Arnold , James Gosling , David Holmes
POO-L3 H. Fauconnier
Chapitre I
Introduction
2
A) Généralités † Problème du logiciel: „ Taille „ Coût : développement et maintenance „ Fiabilité † Solutions : „ Modularité „ Réutiliser le logiciel „ Certification
POO-L3 H. Fauconnier
„ Comment? 5
Typage † Histoire: „ Fonctions et procédures (60 Fortran) „ Typage des données (70) Pascal Algol „ Modules: données + fonctions regroupées (80) ada „ Programmation objet: classes, objets et héritage
POO-L3 H. Fauconnier
6
3
B) Principes de base de la POO † Objet et classe: „ Classe = données (variables) + fonctions (méthodes) „ Objet élément dune classe (instance) avec un état „ (une méthode ou une variable peut être de classe = commune à la classe ou dinstance = dépendant de linstance)
POO-L3 H. Fauconnier
7
Principes de bases (suite) † Encapsulation et séparation de la spécification et de limplémentation „ Séparer limplémentation de la spécification. † Ne doit être visible de lextérieur que ce doit lêtre, les détails dimplémentation sont « cachés » † Héritage: „ Une classe peut hériter des propriétés dune autre classe: un classe peut être une extension dune autre classe.
POO-L3 H. Fauconnier
8
4
Principes de bases de la POO † Mais surtout notion de polymorphisme: „ Si une classe A est une extension dune classe B, † A doit pouvoir redéfinir certaines méthodes (disons f()) † Un objet a de classe A doit pouvoir être considéré comme un objet de classe B † On doit donc accepter „ B b; „ b=a; (a a toutes les propriétés dun B) „ b.f() Cest le transtypage † Doit appeler la méthode redéfinie dans A! † (exemple: méthode paint des interfaces graphiques)
POO-L3 H. Fauconnier
9
Principes de bases † Polymorphisme: „ Ici lassociation entre le nom f() et le code (code ldee Aé ou code de b) a lieu dynamiquement (=à x cution) Liaison dynamique „ On peut aussi vouloir « paramétrer » une classe (ou une méthode) par une autre classe. Exemple: Pile dentier Dans ce cas aussi un nom peut correspondre à plusieurs codes, mais ici lassociation a lieu de façon statique POO-L3 H. Fauconnier
10
5
C) Comment assurer la réutilisation du logiciel? † Type de données abstrait s ication et † iImnptleérfmaecnet,a tipoéncif „ Une interface et une spécification (=les propriétés à assurer) pour définir un type „ dUen ed (oonun épelus siaebusrtsr)a iitmplémentation du type m mentations d la † sCpeés ciifipclaétionoivent vérifier 
POO-L3 H. Fauconnier
11
Comment assurer la réutilisation du logiciel? † Pour lutilisateur du type abstrait de données „ Accès uniquement à linterface (pas daccès à limplémentation) „ Utilise les propriétés du type abstrait telles que définies dans la spécification. „ Lutilisateur est lui-même un type abstrait avec une interface et une spécification
POO-L3 H. Fauconnier
12
6
Comment assurer la réutilisation du logiciel? † Mais utilisant un type abstrait lutilisateur ne connasîté pcas limplémen ification doit être vérifitéta elt iapoonu sré act iofpiuctaet iiomnp ldéum teynptea tion satisfaisan sp abstrait. † Pour la réalisation concrète, une implémentation particulière est choisie † Il y a naturellement polymorphisme POO-L3 H. Fauconnier
13
Notion de contrat (Eiffel) † Un client et un vendeur † Un contrat lie le vendeur et le client (spécification) † iLnet eclrifeanct ene peut utiliser lobjet que par son † La réalisation de lobjet est caché au client † Le contrat est conditionné r lutilisation correcte de lobjet (pré condition) pa e † càSoocnueds i qtruiéoes nle)orvbej edt ev léar ipfrécao nsdpition le vieonn d(epuors ts engag ie s écificat † vLéer ivfeinedeur peoiunt s dléel écgounetrr:a lt o(bhjéerti tdaégleé)guédoit r au m
POO-L3 H. Fauconnier
14
7
D) Un exemple † Pile abstraite et diverses implémentations
POO-L3 H. Fauconnier
Type abstrait de données
NOM pile[X] FONCTIONS vide : pile[X] -> Boolean nouvelle : -> pile[X]  empiler : X x pile[X] -> pile[X] dépiler : pile[X] -> X x pile[X] PRECONDITIONS dépiler(s: pile[X]) <=> (not vide(s)) AXIOMES forall x in X, s in pile[X] vide(nouvelle()) not vide(empiler(x,s)) dépiler(empiler(x,s))=(x,s)
POO-L3 H. Fauconnier
15
16
8
Remarques † Le type est paramétré par un autre type † Les axiomes correspondent aux pré conditions † Il ny pas de représentation † Il faudrait vérifier que cette définition caractérise bien un pile au sens usuel du terme (cest possible) POO-L3 H. Fauconnier 17
Pile abstraite en java package pile;
abstract class Pile <T>{ abstract public T empiler(T v); abstract public T dépiler(); abstract public Boolean estVide(); }
POO-L3 H. Fauconnier
18
9
Divers † Package: regroupement de diverses classes † Abstract signifie quil ny a pas dimplémentation † Public: accessible de lextérieur † La classe est paramétrée par un type (java 1.5)
POO-L3 H. Fauconnier
Implémentations † On va implémenter la pile: „ avec un objet de classe Vector (classe définie dans java.util.package) en fait il sagit dun ListArray „ Avec un objet de classe LinkedList „ Avec dInteger pour obtenir une pile dInteger
POO-L3 H. Fauconnier
19
20
10
Une implémentation package pile; import java.util.EmptyStackException; import java.util.Vector; public class MaPile<T> extends Pile<T>{ private Vector<T> items; // Vector devrait être remplacé par ArrayList public MaPile() { items =new Vector<T>(10); } public Boolean estVide(){ return items.size()==0; } public T empiler(T item){ items.addElement(item); return item; } //… POO-L3 H. Fauconnier
21
Suite //… public synchronized T dépiler(){ int len = items.size();   T item = null; if (len == 0) throw new EmptyStackException(); item = items.elementAt(len - 1); items.removeElementAt(len - 1); return item; } }
POO-L3 H. Fauconnier
22
11