Java et la POO avancée - · PDF filePlan Les exceptions Les flux d'entrée...

Preview:

Citation preview

Java et la POOavancée

S. Rital

Plan● 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.

Les exceptions

Le bloc try { … } catch { … }

Les exceptions

Le bloc try { … } catch { … }

Les exceptions

Les exceptions

Les exceptions

Les exceptions

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

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

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 !

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.

Les énumérations

Les énumérations

Les énumérations

Les énumérations

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.

Les collections

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

Les collections

● Les objets List– Vector

– LinkedList

– ArrayList

● Les objets Map– Hashtable

– HashMap

● Les objets Set– HashSet

● ...

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.

La généricité

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

La généricité

WAW Super !

La généricité

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>

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 !

Java et la réflexivité

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

Java et la réflexivité

● Objet Class

Java et la réflexivité

Connaître la superclasse d'une

classe.

Java et la réflexivité

Connaître la liste des interfaces d'une

classes.

Java et la réflexivité

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

Java et la réflexivité

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

Java et la réflexivité

● Connaître la liste des constructeurs

Java et la réflexivité

● Instanciation dynamique

Java et la réflexivité

● Instanciation dynamique

Java et la réflexivité

● Instanciation dynamique

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.

Recommended