1 / 67

ECGE1215 Informatique en économie et gestion

ECGE1215 Informatique en économie et gestion. Jean Vanderdonckt Université catholique de Louvain (UCL) Institut d’Administration et de Gestion (IAG) Unité de Systèmes d’Information (ISYS) Laboratoire Belge d’Interaction Homme-Machine (BCHI) Place des Doyens, 1 B-1348 Louvain-la-Neuve

grace
Download Presentation

ECGE1215 Informatique en économie et gestion

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ECGE1215 Informatique en économie et gestion Jean Vanderdonckt Université catholique de Louvain (UCL) Institut d’Administration et de Gestion (IAG) Unité de Systèmes d’Information (ISYS) Laboratoire Belge d’Interaction Homme-Machine (BCHI) Place des Doyens, 1 B-1348 Louvain-la-Neuve Belgium Jean.vanderdonckt@uclouvain.be

  2. Table des matières • Chapitre 2. Le modèle objet • 2.1 Introduction au modèle du domaine • 2.2 Identification des classes • 2.2.1 Définition • 2.2.2 Règles d’identification des classes et exemples • 2.2.3 Recommandations pour l’identification des classes • 2.3 Identification des attributs • 2.3.1 Définition • 2.3.2 Règles d’identification des attributs et exemples • 2.3.3 Recommandations pour l’identification des classes • 2.4 Identification des services • 2.4.1 Définition • 2.4.2 Règles d’identification des méthodes et exemples • 2.5 Identification des associations • 2.5.1 Définition • 2.5.2 Règles d’identification des associations et exemples • 2.5.3 Catalogue des associations typiques • 2.6 Identification des contraintes d’intégrité • 2.7 Résumé synoptique du modèle objet

  3. 2.1 Introduction au modèle objet • Le modèle objet est un modèle du domaine • Modèle du domaine= diagramme de classe UML • Histoire • Fin des années 80 : compétition des méthodes d’analyse et de conception OO • Booch : particulièrement adaptée au design et à l’implémentation • OOSE (Jacobson) : expression des besoins • OMT-2 (Rumbaugh) : analyse et applications orientées-données • 1994 : Rumbaugh rejoint Booch chez Rational • 1995 : Jacobson rejoint Rational • 14 novembre 1997 : UML adopté par l’OMG

  4. 2.1 Introduction au modèle objet • Qu’est-ce que UML? • « UML est un langage pour visualiser, spécifier, concevoir et documenter les artefacts d’un système à base logicielle » • Langage : lexique (graphique), syntaxe (diagrammes), sémantique • Visualiser : représentation graphique • Spécification : précis, complet, non-ambigu • Construction : translation vers des langages de programmation • Documentation : des besoins aux tests

  5. 2.1 Introduction au modèle objet • Langage = syntaxe + sémantique • Syntaxe = Règles par lesquelles les éléments du lexique (e.g., mots) sont assemblées en expressions (e.g., phrases, clauses) • Sémantique = Règles par lesquelles on donne un sens aux expressions syntaxiques • UML Notation Guide – définit la syntaxe graphique d'UML • UML Semantics – définit la sémantique d'UML

  6. 2.1 Introduction au modèle objet • Dans UML, il y a • des diagrammes prescriptifs : décrivent le système tel qu’il doit être ou se comporter à tout moment • Classe, StateCharts, Use Cases, Activités, Composants, Déploiement • des diagrammes descriptifs : illustrent un état ou un comportement possible et typique du système • Objet, Séquence, Collaboration

  7. 2.1 Introduction au modèle objet • Exemple de modèle des données unit Enregistrement; interface uses MickeyServe, MKW; type Client = record of Num_Cli : integer; (* Label=‘Numéro de client’ *) Lastname : string [30]; (* Label=‘Nom du client’ *) Firstname : string [20]; (* Label=‘Prénom du client’ *) Adresse = record of Street : string [20]; (* Label=‘Rue du client’ *) ZipCode: integer; (* Label=‘Code postal’ *) City : string [20]; (* Label=‘Localité’ *) end; end; ... procedure Search_cust_id(cust,id,result); (* Menu=‘Customer’ Item=‘Search by ID’*) procedure Seach_cust_by_name(cust,last first,result); (* Menu=‘Customer’ Item=‘Search by lastname, firstname’*) Pas de lien entre les différentes données autres que la structuration

  8. Modèle du domaine Modèle données 2.1 Introduction au modèle objet • Le modèle objet est • Un modèle du domaine • Un modèle qui définit les objets que l’utilisateur final peut voir, accéder et manipuler à travers le système avec les relations entre ces objets • Un modèle structurel • Une vue d'un système qui met l'accent sur la structure des objets, avec leurs classificateurs, leurs relations, leurs attributs et leursopérations • Un modèle du domaine est plusqu’un modèle des données

  9. 2.1 Introduction au modèle objet • Pour obtenir un modèle objet, il faudra successivement • Identifier les classes avec leurs attributs et leurs services • Relier les classes entre elles au moyen de relations • Identifier les contraintes d’intégrité • Spécifier quels sont les agents autorisés à déclencher les services des classes

  10. 2.2 Identification des classes • Comment classer ces objets?

  11. 2.2 Identification des classes • Comment classer ces objets?

  12. 2.2 Identification des classes • Comment classer ces objets?

  13. 2.2 Identification des classes • Classe • Description d’un ensemble d’objets qui ont même • Sémantique • Structure • Nom: p. ex. Voiture • Attribut: p. ex. Plaque d’immatriculation • Service: p. ex. Age de la voiture • Relation: p. ex. Propriétaire • Responsabilités: p. ex. Gestion des immatriculations • Une classe constitue un canevas de sémantique et de structure à partir duquel des objets individuels peuvent être instantiés • Classe: Voiture • Objets: Ma propre voiture, la voiture du voisin

  14. Implémentation 1 Objets du domaine d’intérêt Implémentation 2 Implémentation 3 2.2 Identification des classes • Objet = une abstraction de quelque chose présent dans le domaine d’intérêt qui doit refléter une capacité du système d’information à maintenir cette information et à interagir avec elle • Classe = description d’un ou de plusieurs objets de manière uniformisée, avec moyens de gérer les objets de cette classe • Modèle objet=moyen de décrire les classes en vue de leur implémentation Modèle objet

  15. Responsabilités de la classe 2.2 Identification des classes • Classe: notation et exemples • Règles pour identifier des objets et classes • Rôles joués dans l’organisation: p. ex. Client de la banque • Choses ou événements à conserver: p. ex. connexion à un site Web • Appareils physiques: p. ex. ordinateur personnel • Règles de gestion: p. ex. calcul du taux d’intérêt • Sites physiques: p. ex. chantiers versus siège Exprimés de façonstructurée Nom de la classe Attributs de la classe Relations de la classe avec d’autres classes Services de la classe Les personnes enregistrées dans cette classe sont les membres du personnel de l’organisation Exprimés de façonlibre Responsabilités de la classe Les compartiments pour les attributs et les méthodes peuvent rester vides en fonction de la perspective de modélisation

  16. 2.2 Identification des classes • Le modèle objet • Est le modèle le plus fréquent • Fournit les fondements nécessaires pour les liens avec les autres modèles • Ne décrit que la partie structurelle, statique • 3 perspectives de Fowler • Conceptuelle: le diagramme représente le domaine étudié indépendamment de tout système • Spécification: quelles sont les conditions, l’interface offerte avec l’extérieur • Implémentation: chaque classe est implémentée directement

  17. triangle: Polygon center = (0,0) vertices = ((0,0),(4,0),(4,3)) borderColor = black fillColor = white triangle: Polygon 2.2 Identification des classes • Objet et classe: diagramme d’objet vs de classe • Notation et exemples :Polygon triangle

  18. 2.2 Identification des classes • Classe: exemples

  19. 2.2 Identification des classes • Rôle de l’utilisateur final • Utilisateur qui interagit avec le SI: p. ex. employé • Personne qui n’interagit pas directement avec le SI, mais à propos de laquelle on tient de l’information à jour: p. ex. fidélité d’un client dans une banque • Autres rôles • Rôles joués par les différents intervenants du SI: DHL Express: client, centre de routage, points de triage, achemineurs, DHL lui-même • Comment nommer une classe? • Utiliser un nom, un substantif singulier: p. ex. Client • Eventuellement qualifié par un adjectif: p. ex. Client Entreprise, Client particulier • Le nom doit décrire une seule catégorie d’objets à la fois • Adhérer au standard terminologique du domaine • Eviter le jargon informatique

  20. 2.2 Identification des classes • Comment trouver les classes? • Observer les pratiques et comportements • Interviewer les intervenants • Consigner dans un scénario textuel • Vérifier avec les classes préalablement identifiées • En vue de préserver la cohérence • En vue de maximiser la réutilisabilité • En vue d’optimiser la structuration • Considérer d’autres SI • Lire les manuels et règles de gestion • Prototyper le système

  21. 2.3 Identification des attributs • Attribut • = propriété commune des objets d’une classe • = toute donnée d’un objet possédant sa propre valeur • Tout attribut possède • Un nom unique • Un type • Constant : ssi la valeur de l’attribut ne change pas depuis sa création • Variable : ssi la valeur de l’attribut peut changer au cours de sa vie • Dérivé : ssi la valeur de l’attribut est calculée à partir de valeurs d’autres attributs de la classe • Dans ce cas, on spécifie une paire <condition, effet> où • La condition consiste en une formule bien formée • L’effet consiste en une formule bien formée exprimant la valeur de l’attribut • Exemples

  22. 2.3 Identification des attributs • Tout attribut possède • Un booléen spécifiant si l’attribut est identifiant ou non • Identifiant : ssi la valeur de l’attribut est unique pour toute la classe • Non identifiant : ssi la valeur de l’attribut peut exister plusieurs fois dans la classe • Un type de données • Boolean : représente une valeur de vérité (oui/non, vrai/faux, 0/1) • Hour : représente une heure • Date : représente une date • Natural : représente un nombre naturel (N) • Integer : représente un entier (Z) • Autonumeric : représente un entier attribué par incrémentation/compostage • Real : représente un nombre réel • String : représente une chaîne de caractères

  23. 2.3 Identification des attributs • Tout attribut possède • Une taille, surtout pour les attributs de type « String » • Un booléen indiquant si l’attribut est obligatoire ou facultatif • Obligatoire : ssi l’attribut doit avoir obligatoirement une valeur lors de sa création • Facultatif : ssi l’attribut ne doit pas nécessairement prendre une valeur lors de sa création. Autrement, la valeur peut rester vide • Un booléen indiquant si l’attribut peut accepter une valeur nulle ou non • Valeur nulle permise : ssi l’attribut peut recevoir une valeur vide (<>0) • Valeur nulle non permise : ssi l’attribut ne peut pas recevoir une valeur vide • Une valeur par défaut : éventuellement une valeur à assigner lors de la création de l’objet • Peut arriver pour tout type de donnée • P. ex. « Célibataire » pour l’état civil au début • Tout attribut peut également posséder • Un alias : nom alternatif utilisé comme référence supplémentaire • Un commentaire : petit texte définissant l’attribut • Un message d’aide : petit message permettant la saisie de l’attribut

  24. 2.3 Identification des attributs • Visibilité des attributs • Public (+): visible et utilisable par toute autre classe (utilisation très limitée) • Protégé (#): visible et utilisable par toute spécialisation de la classe • Privé (-): visible uniquement par la classe elle-même • Dérivé (/): calculé à partir d’autres attributs • Autre (?): inconnu • On utilisera la sémantique de java (package) • Non spécifié (): indéterminée

  25. 2.3 Identification des attributs • Exemples • Voiture: marque, modèle, cylindrée, année constr. • Département: code, adresse, président, secrétaire académique, secrétaire administratif, …. • Cours: code, titre, semestre, jour, heure, nombre d'heures, auditoire, date début, date fin, …. • Professeur: Nom, prénom, titre, téléphone, adresse, … • Etudiant: nom, prénom, téléphone, adresse, date de naissance, …. • Bureau: numéro, bâtiment, téléphone, …

  26. 2.3 Identification des attributs • Recommandations d’identification • Questions anthromoporphiques • Comment suis-je décrit en général? • Comment suis-je décrit dans le domaine d’intérêt? • Comment suis-je décrit vis-à-vis des responsabilités assignées au SI? • Questions de responsabilités • Que dois-je savoir? • Quel état dois-je sauvegarder dans le temps? • Exemple: système de tolérance aux pannes • Quels sont les états significatifs? • Exemple: états d’une fenêtre Windows

  27. 2.3 Identification des attributs • Attribut • doit représenter un concept tangible, concret, atomique avec une valeur, un ensemble de valeurs • Bons exemples: nom, prénom, adresse • Mauvais exemples: esthétique, ce qu’on fait dans la journée • Doit être placé dans la classe qui lui correspond, qui la décrit au mieux • Température associée à un corps humain, pas à un thermomètre • Dans une structure d’héritage, les attributs partagés par un certain nombre de sous-classes doivent être logés au niveau d’une super-classe • Les attributs génériques dans la super-classe • Les attributs spécifiques dans la sous-classe

  28. 2.3 Identification des attributs • Déclaration d’un attribut • [visibilité] nom [card] [ : type ] [ = valeur-initiale ] [ { props... } ] • Exemples: • age • + age : Integer • - age : Integer = 0 • # age [0..1] : Integer (att. facultatif) • # numSecurité : Integer {frozen} • # motsClés [*] : String {addOnly}

  29. Etudiant Noma Voiture Personne NoChassis PlaqueIm Nom Prénoms Localité 2.3 Identification des attributs • Identification d’une classe • Identifiant: moyen de désigner de manière univoque n’importe quel objet d’une classe • Aucune paire d’objets d’une même classe ne partage le même identifiant • Attribut simple • Noma, NoChassis, Code, Référence • Attributs multiples • NoChassis, PlaqueImmatriculation • Attributs groupés • Nom+Prénoms+Localité

  30. Etudiant Etudiant Noma «Id» Noma: Integer [8] Voiture Personne Voiture Personne NoChassis PlaqueIm Nom Prénoms Localité «Id» NoChassis: String [14] «Id» PlaqueIm: String [6] «Id» Nom: String [30] «Id» Prénoms: String [20] «Id» Localité 2.3 Identification des attributs • Identification d’une classe • Notation de l’identifiant • Soit souligné dans le dessin • Soit précédé de « Id »

  31. 2.4 Identification des services • Un service • Exprime un comportement particulier dont une classe peut faire preuve • Un serveur web autorise un accès à un site • La voiture de X se déplace en avant ou en arrière • Exprime ce qu’une classe peut faire en offrant une série de services à l’extérieur, pour les autres classes • Synonymes: fonction, opération, méthode,… • Autorise un changement d’état de tout objet par appel de méthode • Un état • Est représenté par les valeurs collectives d’un ensemble d’attributs d’une classe d’objets • Tout changement résulte d’une invocation de méthode

  32. 2.4 Identification des services • Services simples • Services CRUD • C)reate: crée et initialise un nouvel objet • R)ead: accède, obtient la valeur d’un attribut quelconque d’un objet • U)pdate: assigne une valeur à un attribut quelconque d’un objet • D)elete: déconnecte, rend à nouveau disponible un objet • Le pattern CRUD • devrait être toujours présent pour chaque classe, • doit être décliné suivant le nom de la classe: • KO: Create(), Read() • OK: CreateClient(), ReadClient(), etc.

  33. 2.4 Identification des services • Services simples • Services CRUD: notation basée sur les événements • New: événement généré lors de la création • «new» NewClient() ou bien «new» CreateClient() • «new» NouveauClient() ou «new» CréerClient() • Destroy: événement généré lors de la destruction d’un objet d’une classe • «destroy» DeleteClient(), «destroy» RemoveClient() • «destroy» SupprimerClient() • Evénements propres, en fonction de l’état de l’objet • «Marié» EnregistrerMariage() • «Divorcé» RetirerMariage()

  34. 2.4 Identification des services • Services simples • Services CRUD: notation basée sur les événements • Evénements partagés: événement qui affecte l’état de plusieurs objets en même temps • Client et Véhicule partagent Rent(), Return() • Connect: appelle un service d’un autre objet

  35. 2.4 Identification des services • Services complexes • Calculate: calcule un résultat à partir des valeurs des attributs d’un objet • Monitor: surveille l’état d’un système ou appareil extérieur • Est approprié pour tous les appareils d’acquisition et de restitution des données connectés au SI • Est approprié pour tous les systèmes de contrôle • Est souvent complété par • Initialise: initialise le système de surveillance • Terminate: clôture le système de surveillance • Listen: écoute les événements qui y surviennent • Re-initialise: réinitialise le système suite à un problème

  36. 2.4 Identification des services • 2 stratégies d’identification • Introspection: on observe comment les objets changent au cours du temps • Interconnexion: on regarde comment un objet est connecté à d’autres objets durant sa durée de vie • Exemples: messages, scénarios, fenêtre d’un environnement graphique Windows

  37. 2.4 Identification des services • Arguments d’un service • Argument en entrée ou en sortie • Caractérisé par • un nom unique • Un type de données • Une taille (surtout pour « String ») • Une valeur par défaut • Un booléen indiquant l’admission de valeur nulle • Un alias • Un message d’aide • Des commentaires • Une précondition: p. ex. Kilometres > 50.000

  38. 2.4 Identification des services • Déclaration d’un service • [ visibilité] nom [ (params ) ] [ : type ] [ { props... } ] • params := [ in | out| inout ] nom [ : type] [ =defaut ] [{ props... } ] • Exemples: • getAge() • + getAge() : Integer • - updateAge( in date : Date ) : Boolean • + getAge() : Integer {isQuery}

  39. Personne Voiture * = plusieurs 0..1 0..* 2.5 Identification des relations • Comment relier les classes entre elles? Personnes Voitures

  40. Personne Voiture Personne Voiture Personne Voiture 2.5 Identification des relations • Différentes notations possibles • Diagramme de classe UML • Schéma entité-association ERA • Schéma orienté-objet OO 0..1 0..* Possession 0..n 0..1 possède est possédée par

  41. Compagnie Personne 2.5 Identification des relations • Notation des relations • En principe, une association est implicitement bidirectionnelle, mais on peut la diriger • Notation sans direction (bidirectionnelle) • Notation avec direction (pour navigation) 0..1 0..* est employée dans emploie

  42. Personne Personne Personne Personne Personne 1..* 5 * 1..40 emploie emploie emploie emploie 2.5 Identification des relations • Multiplicité des relations = [min][..][max] • Zéro ou plus (plusieurs) • Un à quarante • Un ou plus • Exactement 5 0..* emploie ou

  43. NoPers Noma 1 0..2 appar- tient à est cons- tituée de Voiture Personne Famille Enfant Etudiant Programme Etudiant Personne 1 0..* NoPers NoChassis est pos- sédée par possède 1..n 1..1 NoPers NoProg est suivi par suit 1 0..1 est une est un 2.5 Identification des relations • Multiplicité des relations • 0..0: n’a pas de sens • 0..1: équivalente à un booléen • 0..2: 0, 1 ou 2 • 0..* ou *: d’aucune à autant qu’on veut • 1..1 ou 1: exactement 1, possible mais peu intéressant

  44. Match Joueur Bureau Prise Rés. Cours Professeur 1 1..2 NoBureau Adresse équipe est équi- pé de 1..* 1..* 1..* 2..4 Matricule Code cours NoMatch NoJoueur est donné par donne jouedans est joué par 2.5 Identification des relations • Multiplicité des relations • 1..2: 1 ou 2 • 1..*: de 1 à plusieurs • 2..4 : 2, 3 ou 4 • m..n: cas le plus général où m≤n

  45. 2.5 Identification des relations • 5 types fondamentaux de relations • Relation d’agent: pour exprimer les accès • Dépendance: pour exprimer une dépendance fonctionnelle entre deux classes • Généralisation: pour exprimer l’héritage d’une classe à l’autre • Association: pour exprimer les relations proprement dites, au sens large • Aggrégation: pour exprimer le lien tout-partie

  46. 2.5 Identification des relations • Relation d’agent • Une relation d’agent exprime les droits d’accès aux autres classes d’un modèle

  47. 2.5 Identification des relations • Relation de dépendance • Une dépendance exprime qu’une classe en utilise une autre • Tout changement dans une classe affecte l’autre

  48. 2.5 Identification des relations • Relation de généralisation • Se traduit par une relation d’héritage • Définit une relation « est-un » entre classes • Une classe peut hériter des attributs et/ou des méthodes de l’autre classe • L’oiseau chante • Le pingouin chante et nage • Le pingouin est un oiseau • La généralisation implique lapossibilité de substitution

  49. Oiseau Pingouin Personne Client 2.5 Identification des relations • Relation de généralisation/spécialisation • Personne = super-classe • Client = sous-classe • Client est une spécialisation de Personne • Personne est une généralisationde Client • La pointe du triangle indique • La direction de la généralisation • Personne est le parent de la relation • Client est l’enfant de la relation • Exemple: • Tout oiseau possède un bec et chante • Tout pingouin a une couleur de robe et nage • Tout pingouin est un oiseau • L’héritage est une relation de généralisation/spécialisation Longueur de bec Chante() Couleur de robe Nage()

  50. 2.5 Identification des relations • Héritage • Constitue une hiérarchie de classes dont les nouvelles classes forment des spécialisations de classes déjà existantes • Permet une meilleure structuration et compréhension des classes • Améliore la réutilisabilité et l’extensibilité

More Related