(Section 1.4.1. du cours) TD – Exemples d'organisation de types de concepts
FL-DF: FL:
Person_from_a_legal_aspect Person_from_a_legal_aspect
Man↙s £ s↘ Woman subtype: Woman
↓i ( Man instance: James_Bond,
James_Bond exclusion: Woman ).
Legend. "-s→": subtype; "-i→": instance; "£": exclusion
Dans votre préparation de ce TD,
ne passez pas plus de 10 minutes en tout sur les 4 questions ci-dessous
car il s'agit juste d'un 1er contact
(les questions sont approndies dans les pages suivantes) :
- La RC ci-dessus vous paraît-elle correcte ?
- L'utiliseriez-vous dans un(e) programme/BdD orienté(e)-objet ?
- Pensez-vous que cette organisation passerait à l'échelle, i.e.,
pensez-vous que quelque soit les types ou instances que vous souhaitiez ajouter
vous n'ayez pas à corriger certaines relations ?
- Si non, quelles relations sont à corriger ?
(Section 1.4.1. du cours) TD – Exemples d'organisation de types de concepts
Pour répondre aux questions précédentes
(et donc pour décider d'une hiérarchie dans un(e) programme/BdD orienté(e)-objet),
il faut généraliser.
Faisons-le. En supposant que les termes suivants de la liste ci-dessous
sont des termes formels qui
réfèrent au sens le plus commun que ces mots ont en anglais,
veuillez les organiser
– en FL-DF (FL Display Form) ou
FL (in its default Linear Form),
en faisant bien attention à la syntaxe et à l'indentation (vous allez voir que plus il y a de
termes, plus l'usage de FL-DF est compliqué !) –
via toutes les relations possibles de type
- subtype/supertype, type/instance, exclusion, ainsi que
- actor (dans le sens de "a pour acteur" :
celui/celle qui "joue ce rôle").
Voici la liste (déjà organisée par blocs de termes ayant certains points communs,
pour vous faciliter la tâche; placez les termes un par un dans la hiérarchie de
sous-types, en commençant par le début; ensuite, occupez-vous des autres relations):
- Thing ("Chose"), Physical_thing (chose ayant une masse),
Animal, Dog,
Human_being (un animal bipède actuellement très répandu), Man, Woman
-
Person (au sens légal|juridique ou au sens commun, ce dernier sens référant à un
être social doué d'une raison et d'une conscience),
Legal_person|entity,
Natural|Physical_person_from_a_legal_aspect,
Natural|Physical_human-person
(attention, c'est encore une notion juridique),
Human_person (un être humain qui est aussi une personne),
- Movie_character (i.e. "personnage de film"),
Android_character (i.e. personnage d'androïde|robot), Human_character, Dog_character,
- James_Bond, Sean_Connery (un des acteurs ayant joué James_Bond),
Data_the_android, Brent_Spinner (un acteur ayant joué le rôle de Data_the_android),
Diesel_the_dog (un chien ayant joué divers rôles, dont celui d'un de ses ancêtres ici
identifié par le terme The_most_famous_dog_named_Togo),
The_most_famous_dog_named_Togo, The_character_of_the_most_famous_dog_named_Togo.
Note: vous pouvez abrévier "subtype: " par "\." ou ">".
Aidez vous des conseils de la page suivante puis, une fois cet exercice terminé,
répondez aux questions de la page précédente.
Solutions.
(Section 1.4.1. du cours) TD – Exemples d'organisation de types de concepts
Modélisez - initialement dans le language que vous souhaitez (UML, XML, C++, ...) -
le schéma d'une BDD (ou document) devant contenir seulement les types d'objets
suivants
(les noms - à utiliser - des types de concept commencent par une majuscule,
ceux des
types de relations sont en italique) :
- any Company has for employee at least one Employee
- any Person may be a Man, Woman, ... and may be an Employee
- any Employee has for id an ID and for photo a Photo.
Citez 4 problèmes conceptuels de cette modélisation en C++
et résolvez-les en C++ (ou autre langage statique et typé)
(attention, cet exercice n'a pas de rapport avec celui ci-dessus) :
class HumanBeing { bool isMale ; }
class Person : HumanBeing ;
class Employee : Person ;
class Company { Employee employee; }
Solutions.
Ce TD est poursuivi par ce TP sur organisation de types de concepts.