35
Java et la POO avancée S. Rital

Java et la POO avancée - · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

  • Upload
    lytu

  • View
    227

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Java et la POOavancée

S. Rital

Page 2: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Plan● Les exceptions

● Les flux d'entrée / sortie

● Les énumérations

● Les collections

● La généricité

● Java et la réflexivité

Page 3: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les exceptions

● Une exception est une erreur se produisant dans un programme qui conduit le plus souvent à l'arrêt de celui-ci.

Page 4: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les exceptions

Le bloc try { … } catch { … }

Page 5: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les exceptions

Le bloc try { … } catch { … }

Page 6: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les exceptions

Page 7: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les exceptions

Page 8: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les exceptions

Page 9: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les exceptions

Ensemble, nous allons intégrer plusieurs exceptions !!!!!

public Ville(String pNom, int pNbre, String pPays) throws NombreHabitantException, NomVilleException

Page 10: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Exceptions. Résumé

●Lorsqu'un événement que la JVM ne sait pas gérer apparaît, une exception est levée (exemple : division par zéro). Une exception correspond donc à une erreur.

●La superclasse qui gère les exceptions s'appelle Exception.

●Vous pouvez créer une classe d'exception personnalisée : faites-lui hériter de la classe Exception.

●L'instruction qui permet de capturer des exceptions est le bloc try{…}catch{}.

●Si une exception est levée dans le bloc try, les instructions figurant dans le bloc catch seront exécutées pour autant que celui-ci capture la bonne exception levée.

●Vous pouvez ajouter autant de blocs catch que vous le voulez à la suite d'un bloc try, mais respectez l'ordre : du plus pertinent au moins pertinent.

●Dans une classe objet, vous pouvez prévenir la JVM qu'une méthode est dite « à risque » grâce au mot clé throws.

●Vous pouvez définir plusieurs risques d'exceptions sur une même méthode. Il suffit de séparer les déclarations par une virgule.

●Dans cette méthode, vous pouvez définir les conditions d'instanciation d'une exception et lancer cette dernière grâce au mot clé throw suivi de l'instanciation.

●Une instanciation lancée par le biais de l'instruction throw doit être déclarée avec throws au préalable !

Page 11: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les flux d'entrée / sortie

● Exercice.– Lire / écrire dans un fichier

– Utiliser la classe java.io.File

– Lire la javadoc pour implémenter le TP.

Page 12: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les énumérations

Page 13: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les énumérations

Page 14: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les énumérations

Page 15: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les énumérations

Page 16: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les énumérations. Résumé

● Une énumération est une classe contenant une liste de sous-objets.

● Une énumération se construit grâce au mot clé enum.

● Les enum héritent de la classe java.lang.Enum.

● Chaque élément d'une énumération est un objet à part entière.

● Vous pouvez compléter les comportements des objets d'une énumération en ajoutant des méthodes.

Page 17: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les collections

● Une collection permet de stocker un nombre variable d'objets (équivalent à STL en C++).

Page 18: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les collections

● Les objets List– Vector

– LinkedList

– ArrayList

● Les objets Map– Hashtable

– HashMap

● Les objets Set– HashSet

● ...

Page 19: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Les collections. Résumé

● Une collection permet de stocker un nombre variable d'objets.

● Il y a principalement trois types de collection : les List, les Set et les Map.

● Chaque type a ses avantages et ses inconvénients.

● Les Collection stockent des objets alors que les Map stockent un couple clé - valeur.

● Si vous insérez fréquemment des données en milieu de liste, utilisez une LinkedList.

● Si vous voulez rechercher ou accéder à une valeur via une clé de recherche, optez pour une collection de type Map.

● Si vous avez une grande quantité de données à traiter, tournez-vous vers une liste de type Set.

Page 20: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

La généricité

Faite une classe qui traite tous type objet. A vous !

Page 21: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

La généricité

WAW Super !

Page 22: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

La généricité

Page 23: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Généricité

public class Duo<S,T>{

}

List<Float> listFloat = new ArrayList<Float>()

List<String> listStr = new ArrayList<String>

List<?>

List< ? extends Animal>

List< ? super Ville>

Page 24: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Généricité. Résumé

● La généricité est un concept très utile pour développer des objets travaillant avec plusieurs types de données.

● Vous passerez donc moins de temps à développer des classes traitant de façon identique des données différentes.

● La généricité permet de réutiliser sans risque le polymorphisme avec les collections.

● Cela confère plus de robustesse à votre code.● Vous pouvez coupler les collections avec la généricité !● Le wildcard (?) permet d'indiquer que n'importe quel type peut être traité et donc

accepté !● Dès que le wildcard (?) est utilisé, cela revient à rendre ladite collection en lecture

seule !● Vous pouvez élargir le champ d'acceptation d'une collection générique grâce au

mot-clé extends.● L'instruction ? extends MaClasse autorise toutes les collections de classes ayant

pour supertype MaClasse.● L'instruction ? super MaClasse autorise toutes les collections de classes ayant

pour type MaClasse et tous ses supertypes !● Pour ce genre de cas, les méthodes génériques sont particulièrement adaptées et

permettent d'utiliser le polymorphisme dans toute sa splendeur !

Page 25: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Java et la réflexivité

● La réflexivité (introspection) consiste à découvrir de façon dynamique des informations relatives à une classe ou à un objet.

Page 26: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Java et la réflexivité

● Objet Class

Page 27: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Java et la réflexivité

Connaître la superclasse d'une

classe.

Page 28: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Java et la réflexivité

Connaître la liste des interfaces d'une

classes.

Page 29: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Java et la réflexivité

● Connaître la liste des méthodes de la classe.

Page 30: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Java et la réflexivité

● Connaître la liste des champs (variable de la classe ou d'instance)

Page 31: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Java et la réflexivité

● Connaître la liste des constructeurs

Page 32: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Java et la réflexivité

● Instanciation dynamique

Page 33: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Java et la réflexivité

● Instanciation dynamique

Page 34: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Java et la réflexivité

● Instanciation dynamique

Page 35: Java et la POO avancée -   · PDF filePlan Les exceptions Les flux d'entrée / sortie Les énumérations Les collections La généricité Java et la réflexivité

Java et la réflexivité. Résumé

● Lorsque votre JVM interprète votre programme, elle crée automatiquement un objet Class pour chaque classe chargée.

● Avec un tel objet, vous pouvez connaître absolument tout sur votre classe.

● L'objet Class utilise des sous-objets tels que Method, Field et Constructor qui permettent de travailler avec vos différents objets ainsi qu'avec ceux présents dans Java.

● Grâce à cet objet, vous pouvez créer des instances de vos classes Java sans utiliser new.