Développement d’applications interactives Cours 3
Plan Retour sur le TD Les exceptions UML Patrons de conception Modificateurs d’accès Ex: propriétés, private vs protected Javadoc Héritage, interfaces, classes abstraites, polymorphisme Les exceptions UML Patrons de conception
Une interface ou l’interface?
Les exceptions Erreurs se produisant à l’exécution, ne peuvent être décelées par le compilateur Les exceptions se propagent(remontent) la hiérarchie d’appel Try, catch, finally 2 types Vérifiées (Checked) Non-vérifiées (Unchecked) Documentation avec Javadoc! Seulement les non-vérifiées, @throws Celles que vous générez ou que vous attrapez pour les propager sous une autre forme Ex: Un paramètre reçu peut générer NullPointerException, mais vous retournez InvalidArgumentException(“Le paramètre X ne peut être null”)
Les exceptions vérifiées FileNotFound Les méthodes expriment explicitement si elles génèrent une exception: throws Le code appelant a la responsabilité d’attraper l’exception ou de la propager On peut attraper différentes exceptions, mais l’ordre des catch est important
Les exceptions non-vérifiées NullPointerException Ne sont pas exprimée explicitement Le code appelant ne doit pas nécessairement l’attraper
Les exceptions personnalisées Il est possible d’hériter de la classe Exception pour implémenter des exceptions personnalisées throw CustomException(“Context and description of the exception”) Si on crée une exception personnalisée suite au catch d’une autre exception, il faut privilégier le constructeur: new CustomException(“Message”, otherException) Permet de conserver le context initial
Les exceptions Piège à éviter:
Les exceptions https://drive.google.com/file/d/0B5JzS7iu5r_rLUVmOFVfM1lIbm8/view
Les exception: Exercice Ajouter des exceptions personnalisées dans le TD setName -> EmptyNameException setAge -> negativeAgeException
UML Unified Modeling Language 1995: Rumbaugh, Jacobson, Booch Standard pour la modélisation et représentation des composants et systèmes logiciels Géré par l’OMG, approuvé par ISO V2.5, http://www.omg.org/spec/UML/Current SysML Sous-ensemble d’UML spécialisé pour la conception système (processus, intéractions etc.)
UML La modélisation permet de concevoir le logiciel avant la codification, tout comme un architecte fait un plan avant de construire une maison Vue d’ensemble Planifier la robustesse, sécurité et maintenabilité Facilite les échanges Les modèles doivent être maintenus à jour Réduit le risque d’échec ou du moins sa portée...
UML Explique, documente, visualise le système/logiciel Indépendant de la technologie utilisée Supporte la modélisation orientée objet ou procédurale Possible de générer le code suite à la modélisation, mais les outils sont coûteux! Indépendant de la méthodologie/processus de développement Peut être intégré facilement dans un processus existant
Diagrammes UML Comportement Structure Ce doit doit se passer Processus opérationnel ou d’affaires Activity, State Machine, Use Case Interactions Interactions entre les objets/composants Sequence, Communication, Timing, Interaction Overview Structure Architecture du système Représente les éléments présents dans le système, sans relation avec le temps Class, Object, Component, Composite Structure, Package, Deployment
Diagrammes UML
Diagramme des cas d’utilisation (Use Case) Une unité de fonctionnalité Les besoins fonctionnels de système et leurs relations entre eux OU les acteurs (utilisateurs) Vue d’ensemble ou seulement d’un sous- ensemble des fonctionnalités Qui fait quoi ou ne fait pas quoi Vocabulaire Acteurs Use case: verbe, chronologie de haut en bas Extend: ajout de fonctionnalité Include: Réutilisation de fonctionnalité Héritage: relation est un, est comme
Diagramme de classes Structure et relations entre les entités Modèle du domaine: haut niveau Diagramme d’implémentation: classes logicielles
Diagramme de classes Relations: static est souligné abstract est italique <<interface>> sont annotées Classe contient: Nom Membres Méthodes Modificateurs d’accès +, public -, private #, protected ~, package (default en Java) /, dérivé Hiérarchie Multiplicités: