82
Java et la POO S. Rital

Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Java et la POO

S. Rital

Page 2: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Plan

● Pourquoi la POO ? Rappel.● Votre première classe● L'héritage● Modéliser avec UML● Les packages● Classe abstraite et Interface● Le pattern Strategy

Page 3: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Pourquoi la POO ? Rappel

● de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données et fonctions (les objets) facilitant la modélisation de concepts sophistiqués ;

● d’améliorer la sûreté des logiciels en proposant un mécanisme simple et flexible des données sensibles de chaque objet en ne les rendant accessibles que par le truchement de certaines fonctions associées à l’objet (encapsulation) afin que celles-ci ne soient pas accessibles à un programmeur inattentif ou malveillant.

● de simplifier la réutilisation de code en permettant l’extensibilité des objets existants (héritage) qui peuvent alors être manipulés avec les même fonctions (polymorphisme).

Page 4: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Votre première Classe

✗ Structure de base✗ Les constructeurs✗ Encapsulation✗ Accesseurs et mutateurs✗ Les variables de classes✗ Résumé

Page 5: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Structure de base

public class Test {

public static void main(String[] args) {

System.out.println("Hello tii !");

}

}

● public :la portée de la classe.

● public class xxxx et class xxxx sont équivalents.

● public → méthode X dans une classe Y signifie → la méthode X est accessible depuis partout dans le programme.

● private → méthode X → elle accessible que depuis la classe seulement (si on veux cacher une implémentation:=) ).

Page 6: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Structure de base

● Créer une classe Ville avec Eclipse.● Ajouter quelques propriétés :

– nomVille → String

– nomPays → String

– nbreHabitants → int

Page 7: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Structure de base

● nomVille, nomPays et nbreHabitants → variables de portées public

Page 8: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Structure de base

● Dans une classe, il existe trois types de variables :

– Variable de classe

– Variable d'instance

– Variable locale

● Dans la classe Ville, nbreHabitants, nomVille et nomPays sont des variables d'instances.

● Tout objet de la classe Ville possède ces propres variables nbreHabitants, nomVille et nomPays

Page 9: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Structure de base

Les variables d'instances de l'objet 'paris' sont :

● null pour – NomVille

– NomPays

● 0 pour – nbreHabitants

Comment initialiser les variables d'instances ?

Page 10: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Constructeurs

● Un constructeur est une méthode d'instance qui va se charger de créer un objet et, le cas échéant, d'initialiser ses variables de classe !

● Cette méthode a pour rôle de signaler à la JVM qu'il faut réserver de la mémoire pour notre futur objet et donc, par extension, d'en réserver pour toutes ses variables.

Page 11: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Constructeurs

Le mot clé 'thisthis' désigne l'objet courant.

Lorsque l'on développe une classe, on code le comportement que devra avoir l'objet lorsqu'il sera utilisé, si dans une méthode un objet doit s'utiliser lui même, alors il est nécessaire de connaître sa propre référence, qui nous ai donné par la valeur de this.

Page 12: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Constructeurs

● Un constructeur est une méthode de la classe● Le constructeur d'une classe doit porter le

même nom que la classe.● Un constructeur n'envoie rien même pas void● Un constructeur peut être surchargé.

Page 13: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Constructeurs

Page 14: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Constructeurs

● Surcharger un constructeur.Ville ville3 = new Ville("Marseille", 123456789, "France");

Page 15: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Constructeurs

Page 16: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Constructeurs

● Depuis la classe Test modifier le nom d'une ville.

● N'importe quel développeur peut changer le contenu de mes variables !!

Page 17: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Encapsulation

● Ajouter la porté private pour les attributs de votre classe Ville ! Et compiler à nouveau !

Page 18: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Encapsulation

Le premier avantage de la POO

Page 19: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Accesseurs et mutateurs

Page 20: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Accesseurs et mutateurs

● Un accesseur est une méthode qui va nous permettre d'accéder aux variables de nos objets en lecture, et un mutateur nous permettra d'en faire de même en écriture !

● Grâce aux accesseurs, vous pourrez afficher les variables de vos objets, et grâce aux mutateurs, vous pourrez les modifier.

● Porté public

Page 21: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Accesseurs et mutateurs

// ******************* Mutateurs ***********************

public void setNom(String pNom){

this.nomVille = pNom;

}

//******************* Accesseurs ***********************

public String getNom(){

return this.nomVille;

}

● Faite les autres !

● Créer deux villes v1,v2

– Marseille, 123456, France

– Rio, 321654, Brésil● Interchanger v1 et v2

● Changer leurs noms.

Page 22: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Accesseurs et mutateurs avec Eclipse

● Commencer par définir vos variables d'instances

● A l’intérieur de votre classe Ville, clique bouton droite de la souris, puis sélectionner source.

● Ensuite, choisissez « Generate getters & setters ».

● Sélectionner les variables, ainsi que les portées des méthodes : public

● OK

Page 23: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Accesseurs et mutateurs

Page 24: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Accesseurs et mutateurs

● Dans une classe– Les constructeurs

– Les accesseurs / mutateurs

– Les méthodes d'instance

● Gestion des objets (comportements)

Page 25: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Accesseurs et mutateurs

● A vous !– Système de catégorie des villes

● A → < 1000 , B → < 10000, ...

– Description de la ville

– Comparer deux villes (nbr d'habitants).

Page 26: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Accesseurs et mutateurs

//Définit la catégorie de la ville

private void setCategorie() {

int bornesSuperieures[] = {0, 1000, 10000, 100000, 500000, 1000000, 5000000, 10000000};

char categories[] = {'?', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'};

int i = 0;

while (i < bornesSuperieures.length &&

this.nbreHabitants >= bornesSuperieures[i])

i++;

this.categorie = categories[i];

}

Page 27: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Accesseurs et mutateurs

//Retourne la description de la ville

public String decrisToi(){

return "\t"+this.nomVille+" est une ville de "+this.nomPays+

", elle comporte : "+this.nbreHabitants+

" habitant(s) => elle est donc de catégorie : "+this.categorie;

}

//Retourne une chaîne de caractères selon le résultat de la comparaison

public String comparer(Ville v1){

String str = new String();

if (v1.getNombreHabitants() > this.nbreHabitants)

str = v1.getNom()+" est une ville plus peuplée que "+this.nomVille;

else

str = this.nomVille+" est une ville plus peuplée que "+v1.getNom();

return str;

}

Page 28: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les variables de classe

● Nous avons manipulés les variables d'instances

● Les variables de classes sont communes à toutes les instances d'une classe

● Compter le nbr d'instance de l'objet Ville● Un taux de TVA dans une classe pour calculer

le prix TTC.

Page 29: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les variables de classe

private static int nbreInstances

public static int getNombreInstances(){

return nbreInstances ;

}

Toute les méthodes n'utilisant que des variables de classe doivent être déclarées static

On les appelle des méthodes de classe.

Page 30: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les variables de classepublic class Ville {//Variables publiques qui comptent les instancespublic static int nbreInstances = 0;//Variable privée qui comptera aussi les instancesprivate static int nbreInstancesBis = 0;//Les autres variables n'ont pas changépublic Ville(){//On incrémente nos variables à chaque appel aux constructeursnbreInstances++;nbreInstancesBis++;//Le reste ne change pas.}public Ville(String pNom, int pNbre, String pPays){//On incrémente nos variables à chaque appel aux constructeursnbreInstances++;nbreInstancesBis++;//Le reste ne change pas}

public static int getNombreInstancesBis(){return nbreInstancesBis;}//Le reste du code est le même qu'avant}

Page 31: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Résumé

● Une classe permet de définir des objets. Ceux-ci ont des attributs (variables d'instance) et des méthodes (méthodes d’instance + accesseurs).

● Les objets permettent d'encapsuler du code et des données.

● Le ou les constructeurs d'une classe doivent porter le même nom que la classe et n'ont pas de type de retour.

● L'ordre des paramètres passés dans le constructeur doit être respecté.

● Il est recommandé de déclarer ses variables d'instance private, pour les protéger d'une mauvaise utilisation par le programmeur.

● On crée des accesseurs et mutateurs (méthodes getters et setters) pour permettre une modification sûre des variables d'instance.

● Dans une classe, on accède aux variables de celle-ci grâce au mot clé this.

● Une variable de classe est une variable devant être déclarée static.

● Les méthodes n'utilisant que des variables de classe doivent elles aussi être déclarées static.

● On instancie un nouvel objet grâce au mot clé new.

Page 32: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Héritage

✗ Pourquoi ?✗ Comment ?✗ Polymorphisme✗ Résumé

Page 33: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Pourquoi ?

RIO

RabatParis

Dijon

Lyon

Madrid

Genova

MarrakechSao Paulo

New York

Montreal

Chicago

Page 34: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Pourquoi ?

Rabat Paris Madrid

Ottawa Pékin Panama

Moscou

Classe Capitale → Nom Ville, Nombre d'habitants , Pays et Monuments

Duplication !

Page 35: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Pourquoi ?

Classe Capitale → Nom Ville, Nombre d'habitants , Pays et Monuments

Exploiter Classe Ville dans classe Exploiter Classe Ville dans classe Capitale → par héritage Capitale → par héritage

Une Capitale estest une Ville

Page 36: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Pourquoi ?

Exploiter Classe Ville dans classe Exploiter Classe Ville dans classe Capitale → par héritage Capitale → par héritage

Ville

Capitale

Classe mère

Classe dérivée

UneAutreClasse

EncoreUneClasse

Pas d'héritage multiplePas d'héritage multiple

Page 37: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Comment ?

public class Capitale extends Ville {}

Capitale cap = new Capitale() ;

System.out.println(cap.decrisToi()) ;

cap possède les propriétés de la classe Ville

Page 38: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Comment ?

public class Capitale extends Ville {

public Capitale(){

this.nomVille = "toto";

}

}

Page 39: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Comment ?

public class Ville {

protected String nomVille ;

...

}

Page 40: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Comment ?

public class Capitale extends Ville {

private String monument;

public Capitale()

{

supersuper();();

this.monuments = "aucun";

}

}

public class Capitale extends Ville {

private String monument;

public Capitale( parametres )

{

supersuper( parametres );( parametres );

this.monuments = "aucun";

}

}

super() le constructeur de la classe mère. Utilisation d'un constructeur de la classe mère

Page 41: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Comment ?public class Capitale extends Ville {

private String monument;

public Capitale(){

super();

this.monument = "aucun";

}

public Capitale(String nom, int hab, String pays, String monument){

super(nom,hab,pays);

this.monument = monument;

}

public String decrisToi(){

String str = super.decrisToi() + "\n \t ==>> " + this.monument + "en est un monument";

return str;

}

}

Redéfinition des méthodes héritées

Page 42: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Comment ?

Page 43: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Polymorphisme

● Toute classe hérite de la classe Object● Nous pouvons redéfinir l'ensemble des

méthodes de la classe Object.● toString() ?● System.out.println(v) ↔ System.out.println(v.toString())

for(Object v : Ville )

System.out.println(v.decrisToi()) ;

Page 44: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Polymorphisme

Redéfinition de méthodes dans les sous-classes : POLYMORPHISME

Page 45: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Polymorphisme

● hashCode() et equals()– public boolean equals() permet de vérifier si un

objet est égal à un autre.

– public hashCode() attribue un code de hashage à un objet (un identifiant)

Ce n'est pas parce que deux objets on un même code de hashage qu'ils sont égaux.

Deux objets égaux ont forcément le même code de hashage !

Page 46: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Polymorphisme

public boolean equals(Ville v)

{

return (this.hashCode() == v.hashCode() && this.getNombreHabitants() == v.getNombreHabitants());

}

public int hashCode(){

return (this.nomVille.hashCode()+this.nomPays.hashCode());

}

Page 47: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Résumé

● Une classe hérite d'une autre classe par le biais du mot clé extends.

● Une classe ne peut hériter que d'une seule classe.

● Si aucun constructeur n'est défini dans une classe fille, la JVM en créera un et appellera automatiquement le constructeur de la classe mère.

● La classe fille hérite de toutes les propriétés et méthodes public et protected de la classe mère.

● Les méthodes et les propriétés private d'une classe mère ne sont pas accessibles dans la classe fille.

● On peut redéfinir une méthode héritée, c'est-à-dire qu'on peut changer tout son code.

● On peut utiliser le comportement d'une classe mère par le biais du mot clé super.

● Si une méthode d'une classe mère n'est pas redéfinie ou « polymorphée », à l'appel de cette méthode par le biais d'un objet enfant, c'est la méthode de la classe mère qui sera utilisée.

● Vous ne pouvez pas hériter d'une classe déclarée final.

● Une méthode déclarée final n'est pas redéfinissable.

Page 48: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Modéliser avec UML

✗ Exemple → Digramme de Classes JAdID✗ Pourquoi ?✗ Modéliser ses objets✗ Modéliser les liens entre les objets✗ Logiciels✗ Résumé

Page 49: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Exemple. Projet JAdID

Page 50: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Exemple. Projet JAdID

Page 51: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Pourquoi ?

● Pour des projets (à taille moyenne ou plus)● Pour des projets impliquant plusieurs

développeurs (>= 2)

Il faut impérativement un digramme de classe UMLqui représente les objets et les relations entre les objets.

Page 52: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Pourquoi ?

● UML ne se limite pas au Digramme de Classe mais ...

Page 53: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Modéliser ses objets

Page 54: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Modéliser les liens entre les objets

Page 55: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Modéliser les liens entre les objets

Page 56: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Logiciels

Page 57: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

ArgoUML & Eclipse

● Help → install new software

Page 58: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

ArgoUML & Eclipse

Page 59: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

ArgoUML & Eclipse

Page 60: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

ArgoUML & Eclipse

Page 61: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

ArgoUML & Eclipse

Page 62: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Résumé

● UML vous permet de représenter les liens entre vos classes.

● Vous pouvez y modéliser leurs attributs et leurs méthodes.

● Vous pouvez représenter l'héritage avec une flèche signifiant « est un ».

● Vous pouvez représenter l'appartenance avec une flèche signifiant « a un ».

● Vous pouvez représenter la composition avec une flèche signifiant « est composé de ».

Page 63: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les packages

✗ Pourquoi ?✗ Création d'un package✗ Droits d'accès entre les packages✗ Résumé

Page 64: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Pourquoi ?

● Structuration des codes en dossiers et sous dossiers.

Page 65: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Création d'un package

Page 66: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Création d'un package

Page 67: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Droits d'accès entre les packages

● Ajouter deux classes dans le package :– fr.learningjava.tp1

Eclipse est content

Page 68: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Droits d'accès entre les packages

● Ajouter deux classes dans le package :– fr.learningjava.tp1

Page 69: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les classes abstraites & les interfaces

✗ Les classes abstraites✗ Les interfaces✗ Exemple✗ Pattern Strategy✗ Résumé

Page 70: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les classes abstraites

● Une classe abstraite est quasiment identique à une classe normale.

● Une particularité : vous ne pouvez pas l'instancier !

● Pourquoi ?

Page 71: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les classes abstraites

Page 72: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les classes abstraites

● Je ne sais pas ce que mange un objet Animal. ● Toutes les classes ne sont pas bonnes à être

instanciées !● Ces classes servent à définir une

superclasse : servent essentiellement à créer un nouveau type d'objets.

Page 73: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les classes abstraites

abstract class Animal {}

abstract class Animal {

abstract void manger() ; // une méthode abstraite

}

Une méthode abstraite est composée de l'entête suivie par un point-virgule.

Une classe qui comporte au moins une méthode abstraite est une classe abstraite.

Les classes dérivées sont obligé d’implémenter les méthodes abstraites.

Page 74: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les classes abstraites

Polymorphisme

Correct ?

Non correct ! Pourquoi ?

Page 75: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les classes abstraites

● Réaliser ce projet.

Page 76: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les classes abstraites

Page 77: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les interfaces

Cher collègue. J'aimerai bien utiliser la classe chien.

Par contre, je veux que Tu m'ajoute certains comportement :

Le chien doit faire le beauFaire des câlins

….

Page 78: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les interfaces

● public interface I {}

Une interface est une classe 100 % classe abstraite.

Page 79: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Les interfaces

Page 80: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Exemple

Page 81: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Pattern Strategy

Page 82: Java et la POO - WordPress.com...Pourquoi la POO ? Rappel de concevoir l’organisation de grands projets informatiques autour d’entités précisément structurés, mêlant données

Résumé

● Une classe est définie comme abstraite avec le mot clé abstract.

● Les classes abstraites sont à utiliser lorsqu'une classe mère ne doit pas être instanciée.

● Une classe abstraite ne peut donc pas être instanciée.

● Une classe abstraite n'est pas obligée de contenir de méthode abstraite.

● Si une classe contient une méthode abstraite, cette classe doit alors être déclarée abstraite.

● Une méthode abstraite n'a pas de corps.

● Une interface est une classe 100 % abstraite.

● Aucune méthode d'une interface n'a de corps.

● Une interface sert à définir un supertype et à utiliser le polymorphisme.

● Une interface s'implémente dans une classe en utilisant le mot clé implements.

● Vous pouvez implémenter autant d'interfaces que vous voulez dans vos classes.

● Vous devez redéfinir toutes les méthodes de l'interface (ou des interfaces) dans votre classe.

● Le pattern strategy vous permet de rendre une hiérarchie de classes plus souple.

● Préférez encapsuler des comportements plutôt que de les mettre d'office dans l'objet concerné.