Introduction à l'agilité numélink - 24 mai 2012 - #10 convergen
Design poo togo_jug_final
1. Principes de la conception objet L'enjeu du design Les Design Patterns Agnès CREPET @agnes_crepet Cyril LACÔTE @clacote 13 aout 2011 TogoJUG - Lomé
2.
3.
4.
5.
6.
7. Approche top-down Ouverture fichier Traitement fichier Fermeture fichier Tant qu ’il y a des enregistrements Traitement Facture Traitement Avoir Traitement du solde ReadCompte Calcul Solde UpdateCompte Traitement du solde ...
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27. Encapsulation : exemple SANS AVEC class Adresse { public String nom; … . } class Adresse { private String nom public setNom (String aNom) { nom = aNom; } // Saisie des livraisons Adresse adrLiv = new Adresse(); ... adrLiv.nom = « Dupond »; // Saisie des livraisons Adresse adrLiv = new Adresse(); ... adrLiv.setNom (« Dupond »); // Saisie de facturation Adresse adrFac = new Adresse(); ... adrFac.nom = « Dupond »; // Saisie de facturation Adresse adrFac = new Adresse(); ... adrFac.setNom (« Dupond »);
28. Encapsulation : exemple SANS AVEC class Adresse { public String nom; … . } class Adresse { private String nom public setNom (String aNom) { nom = aNom .toUpperCase() ; } // Saisie des livraisons Adresse adrLiv = new Adresse(); ... adrLiv.nom = « Dupond » .toUpperCase() ; // Saisie des livraisons Adresse adrLiv = new Adresse(); ... adrLiv.setNom (« Dupond »); // Saisie de facturation Adresse adrFac = new Adresse(); ... adrFac.nom = « Dupond ». toUpperCase() ; // Saisie de facturation Adresse adrFac = new Adresse(); ... adrFac.setNom (« Dupond »);
76. Exemples d'architecture applicative Application Java web Couches Applicatives (présentation, service, métier… HTML/ JavaScript HTTP … et persistance) JDBC Navigateur web Serveur d’application (ex : JBoss) Serveur de base de données (Ex: Oracle) Exterieur de l'application (Système d'information de l'entreprise ) ? SGBDR
77. Des couches logicielles Présentation Façade Service Persistance Page JSP Contrôleur Logique applicative Façades Services métier Objets du domaine Repository accès aux données Objets du domaine Http SGBDR
Dijkstra : « plus court chemin » dans un graphe, algorithme du banquier, sémaphore.
Polymorphisme d'héritage = Polymorphisme d'inclusion redéfinition/spécialisation de méthodes durant l'héritage (overriding) Polymorphisme paramétrable Les types génériques, introduits avec Java 5, donnent la possibilité de ne pas devoir contrôler le type d'une valeur lors de l'exécution, ils permettent de définir des comportements communs sur des objets sans devoir les typer Polymorphisme ad hoc = surcharge de méthodes (overloading) capacité de distinguer des opérations par la signature (avec types et arguments différents) plutôt que par le seul nom
une configuration par défaut (convention par règle de nommage) mais permettront aussi la substitution des valeurs par défaut via la configuration (à partir des fichiers ou une autre source de données).
Expliquer l’origine historique du concept : issu de l’architecture de bâtiments.
Creational patterns These patterns have to do with class instantiation. They can be further divided into class-creation patterns and object-creational patterns. While class-creation patterns use inheritance effectively in the instantiation process, object-creation patterns use delegation to get the job done. Abstract Factory groups object factories that have a common theme. Builder constructs complex objects by separating construction and representation. Factory Method creates objects without specifying the exact class to create. Prototype creates objects by cloning an existing object. Singleton restricts object creation for a class to only one instance.