Acetates1

345 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
345
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
2
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Acetates1

  1. 1. Présentation d’Articles Cours GEI 730- Conception par les objets Étudiant : Ramzi Maalej Professeur: Ruben Gonzalez-Rubio
  2. 2. Plan de la présentation <ul><li>« Using Metadata » écris par: Martin Fowler. </li></ul><ul><li>« How .Net’s Custom Attributes Affect Design » écris par: James Newkirk et Alexel A. Vorontsov. </li></ul><ul><li>« When to Make a Type » écris par Martin Fowler. </li></ul>
  3. 3. Using Metadata <ul><li>Ce sont des informations qui décrivent un contenu : des objets concrets ou abstraits </li></ul><ul><li>Ce sont des « étiquettes » qui permettent de retrouver des données </li></ul><ul><li>Les bibliothécaires utilisent déjà les Méta-données : nom de l’auteur, titre, etc. </li></ul>
  4. 4. Using Metadata (1/9) 2001 5 Fiesta Ford 2006 6 Grande Punto Fiat 2004 9 Passat VolksWagen 2000 4 206 Peugeot Année Puissance Type Marque
  5. 5. Using Metadata (2/9) <ul><li>Méthode intuitive </li></ul>Voiture Voiture.txt Lire L’entête Tant que (Non EOF) { Lire_Ligne; new Voiture(m, t, p, a); } Marque Type Puissance Année Peugeot 206 4 2000 Fiat Punto 6 2004 Ford Fiesta 5 2001 Algorithme de Lecture
  6. 6. Using Metadata (3/9) <ul><li>Avantages </li></ul><ul><ul><li>Facile </li></ul></ul><ul><ul><li>Explicite </li></ul></ul><ul><li>Inconvénients </li></ul><ul><ul><li>Limitée </li></ul></ul>
  7. 7. Using Metadata (4/9) Voiture.txt Lire L’entête Tant que (Non EOF) { Lire_Ligne; Pour chaque Hdr_elem list.ajouter(hdr_elem, value) } Marque Type Puissance Année nb_p Peugeot 206 4 2000 4 Fiat Punto 6 2004 4 Ford Fiesta 5 2001 2 Algorithme de Lecture 1 2 3 . . n
  8. 8. Using Metadata (5/9) <ul><li>Avantages </li></ul><ul><ul><li>Facile </li></ul></ul><ul><ul><li>Générique </li></ul></ul><ul><li>Inconvénients </li></ul><ul><ul><li>Implicite (Perte d’information) </li></ul></ul>
  9. 9. Using Metadata (6/9) <ul><li>Méthode réflective </li></ul>Voiture Voiture.txt Algorithme de Lecture Marque Type Puissance Année nb_p Peugeot 206 4 2000 4 Fiat Punto 6 2004 4 Ford Fiesta 5 2001 2 Objets Voiture, Personne, …
  10. 10. Using Metadata (7/9) <ul><li>Avantages </li></ul><ul><ul><li>Générique </li></ul></ul><ul><ul><li>Simple code </li></ul></ul><ul><li>Inconvénients </li></ul><ul><ul><li>Dépendante du langage de développement </li></ul></ul><ul><ul><li>Peut engendrer des conflits. </li></ul></ul><ul><ul><li>Moins rapide </li></ul></ul><ul><ul><li>Difficile a utiliser. </li></ul></ul>
  11. 11. Using Metadata (8/9) <ul><li>Génération </li></ul>Explicit Reader Voiture.txt Algorithme de génération Marque Type Puissance Année Peugeot 206 4 2000 Fiat Punto 6 2004 Ford Fiesta 5 2001 Class Voiture { String marque; Integer type; Integer puissance; Date annee; }
  12. 12. Using Metadata (9/9) <ul><li>Avantages </li></ul><ul><ul><li>Explicit Reader </li></ul></ul><ul><ul><li>Rapide </li></ul></ul><ul><li>Inconvénients </li></ul><ul><ul><li>Le code peut être affecté. </li></ul></ul><ul><ul><li>Nécessite un suivi. </li></ul></ul>
  13. 13. How .Net’s Custom Attributes Affect Design (1/6)
  14. 14. How .Net’s Custom Attributes Affect Design (2/6) <ul><li>Mécanismes d’utilisation des Méta-données </li></ul><ul><ul><li>Mots clés (public, static). </li></ul></ul><ul><ul><li>Interfaces marqueurs (Serializable, …) </li></ul></ul><ul><ul><li>Patrons de nommages (readResolve, …) </li></ul></ul><ul><ul><li>Attributs ([Serializable()], …) </li></ul></ul>
  15. 15. How .Net’s Custom Attributes Affect Design (3/6) <ul><li>Exemple : Écrire le code d’un objet qui sera sérialisé pendant l’exécution. </li></ul><ul><li>public class MaClasse implements Serializable { </li></ul><ul><li>} </li></ul><ul><li>[Serializable()] public class MaClasse { } </li></ul>
  16. 16. How .Net’s Custom Attributes Affect Design (4/6) <ul><li>public class MaClasse implements Serializable { private void writeObject(ObjectInputStream s) throws IOException { … } } </li></ul><ul><li>[Serializable()] public class MaClasse : ISerializable { public void GetObjectData(SerializationInfo info, StreamingContext context) { … } } </li></ul>
  17. 17. How .Net’s Custom Attributes Affect Design (5/6) <ul><li>public class MaClasse extends TestCase { public void testSuccess() { /* … */} } </li></ul><ul><li>[TestFixture] public class MaClasse extends TestCase { [Test] public void Success() { /* … */} } </li></ul>
  18. 18. How .Net’s Custom Attributes Affect Design (6/6) <ul><li>Conclusion </li></ul><ul><ul><li>Les Attributs : </li></ul></ul><ul><ul><ul><li>Favorisent la détection d’erreurs au moment de la compilation. </li></ul></ul></ul><ul><ul><ul><li>Étendent le langage de programmation. </li></ul></ul></ul><ul><ul><ul><li>Minimisent le code répétitif. </li></ul></ul></ul>
  19. 19. When to Make a Type (1/5) <ul><li>Qui est le responsable de la création des types : L’architecte ? Le concepteur ? </li></ul>
  20. 20. When to Make a Type (2/5) <ul><li>Pourquoi créer les types ? </li></ul><ul><ul><li>Structurer les données. </li></ul></ul><ul><ul><li>Faciliter la programmation. </li></ul></ul><ul><ul><li>Améliorer la communication. </li></ul></ul>
  21. 21. When to Make a Type (3/5) <ul><li>Public class App { public void static main (String[] args) { String nom; String prénom; Date dateNaissance; //lire le nom de la personne … //lire le prenom de la personne … //lire la date de naissance de la personne … // traitement … } } </li></ul>
  22. 22. When to Make a Type (4/5) <ul><li>Public class Personne { private String nom; private String prenom; private Age age; // getter and setter … } </li></ul><ul><li>Public class App { public void static main (String[] args) { private Personne personne = new Personne(); //lire le nom de la personne personne.setNom(IO.readLine()); //lire le prenom de la personne personne.setPrenom(IO.readLine()); //lire l age de la personne personne.setAge(new Date(IO.readLine())); // traitement if(age.get Years()>60) // traitement 1 else // traitement 2 } } </li></ul>
  23. 23. When to Make a Type (5/5) <ul><li>Quand il faut créer un type ? [1] </li></ul>
  24. 24. Questions
  25. 25. Références <ul><li>[1]:http://www-sop.inria.fr/axis/cbrtools/usermanual-eng/Icons/CompositeGraphic.gif </li></ul>

×