Keine Cache-Version

Caching deaktiviert Standardeinstellung für diese Seite:aktiviert (code LNG204)
Wenn die Anzeige zu langsam ist, können Sie den Benutzermodus deaktivieren, um die zwischengespeicherte Version anzuzeigen.

GRASP

GRASP [“General Responsibility Assignment Software Patterns”1] est un ensemble de “patterns” (en français, « Modèles, patrons ») utilisés en orienté-objet qui nous aident pour l'assignation des responsabilités.

Dans le cadre des GRASP [“General Responsibility Assignment Software Patterns”1], les solutions proposées sont généralement intuitives, et tiennent plus du bon sens que d'une ligne de conduite forcée.

Rappel : Un “pattern” (en français, « Modèle, patron ») doit répondre à certains aspects essentiels :

  • Un “pattern”3 a un nom évocateur, qui représente bien l’essence même de son existence.
    Exemple : le “pattern”3 “Singleton” (en français, « Instance unique »).
  • Un “pattern”3 résout un problème.
    Exemple : une classe ne peut avoir qu’une et une seule instance.
  • Un “pattern”3 fourni une solution.
    Exemple : il faut créer une méthode statique de la classe qui retourne l’instance unique ou Singleton.


Les GRASP [“General Responsibility Assignment Software Patterns”1] sont répartis en 9 domaines (5 au départ, les 4 derniers ont été ajoutés par la suite) :
  1. “Information Expert” (en français, « expert en Information »)(plus d'information).
  2. “Creator” (en français, « Créateur »)(plus d'information).
  3. “Low Coupling” (en français, « faible couplage »)(plus d'information).
  4. “High Cohesion” (en français, « forte cohésion »)(plus d'information).
  5. “Controller” (en français, « contrôleur »)(plus d'information).
  6. “Polymorphism” (en français, « polymorphisme »)(plus d'information).
  7. “Indirection” (en français, « indirection »)(plus d'information).
  8. “Pure Fabrication” (en français, « fabrication pure »)(plus d'information).
  9. “Protected Variations” (en français, « variations protégées »)(plus d'information).

Inhaltsverzeichnis Haut

GRASP Expert

Problème :

A qui pouvons nous attribuer une responsabilité ?

Si les responsabilités sont mal réparties, les classes logicielles vont être difficilement maintenables , plus dure à comprendre, et avec une réutilisation des composants peu flexible.

Solution :

Affecter à une classe les responsabilités correspondants aux informations dont elle dispose.

Inhaltsverzeichnis Haut

GRASP Creator

Problème :

Qui peut avoir la responsabilité de créer une nouvelle instance de la classe ?

Solution :

Donner à la classe A la responsabilité de créer des instances de la classe B si :
  • Une classe A agrége des instances de la classe B
  • Une classe A contient des instances de la classe B
  • Une classe A utilise des instances d’une classe B
  • Une classe A possède les données nécessaires à l’initialisation des instance de classe B.

NB :

Une agrégation est une association entre un tout et ses parties.
Nous représenterons une agrégation par un trait terminé par un losange vide.

Une composition est une forme d’agrégation, mais pour laquelle la partie ne peut survivre sans son tout.
Nous représenterons une composition par un trait terminé par un losange plein.

Inhaltsverzeichnis Haut

GRASP Low Coupling

Problème :

Comment réduire les dépendances et augmenter la réutilisation ?

Solution :

Le couplage exprime la relation étroite qu’un élément (Classe, Système ou sous système) entretien avec un ou des autres éléments. Un élément faiblement couplé ne possède pas ou peu de dépendances vis a vis d’autres éléments.
Nous veillerons donc à assigner une responsabilité en gardant un niveau de couplage (de dépendance) bas.

Nous sommes souvent en présence du “Low Coupling”7 dans les situations suivantes :
  • Une classe A détient un attribut de la classe B
  • Une classe A implémente une méthode qui fait référence à la classe B
  • Une classe A est une sous-classe de la classe B
  • Une classe A utilise l'interface B.

Inhaltsverzeichnis Haut

GRASP High Cohesion

Problème :

Comment répartir les responsabilités et garder un niveau de complexité gérable ?

Solution :

La cohésion est le degré de spécialisation des responsabilités d’un composant, d'une classe. Nous devons veiller à augmenter la cohésion lors de l'assignation des responsabilités. Si une classe contient un nombre trop élevé de méthodes, nous devons vérifier si une collaboration avec d'autres objets ne nous permettrait pas d'avoir un petit nombre de méthodes qui ne doivent pas effectuer trop de tâches.
La multiplication des disciplines à responsabilité accroît exponentiellement le risque d’erreurs intrinsèques à cette classe.

Inhaltsverzeichnis Haut

GRASP Controller

Problème :

Qui détient les responsabilités de la gestion des événements système ?

Solution :

Nous devons affecter à une classe la responsabilité d’un message système.

Une classe Contrôleur doit être crée si elle répond à l’un des cas suivants :
  • La classe représente une contrôleur de façade, c’est à dire l’interface d’accès à l’ensemble d’un système.
  • La classe représente le scénario issu d’un “use case” (en français, « cas d’utilisation »)(?), nommé en général "Session", et qui est chargé de traiter tous les événements systèmes contenus dans un scénario de cas d’utilisation.

Inhaltsverzeichnis Haut

Deutsche Übersetzung

Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.

Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.

Vielen Dank im Voraus.

Dokument erstellt 22/05/2005, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/uml-grasp.html

Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.

Aufzeichnungen

  1. a,b,c,d,e,f General Responsibility Assignment Software Patterns : entspricht « Modèles généraux d'affectation des responsabilités » en français

  2. a,b,c GRASP : “General Responsibility Assignment Software Patterns” (en français, « Modèles généraux d'affectation des responsabilités »)

  3. a,b,c,d,e,f patterns : entspricht « Modèles, patrons » en français

  4.  Singleton : entspricht « Instance unique » en français

  5.  Information Expert : entspricht « expert en Information » en français

  6.  Creator : entspricht « Créateur » en français

  7. a,b Low Coupling : entspricht « faible couplage » en français

  8.  High Cohesion : entspricht « forte cohésion » en français

  9.  Controller : entspricht « contrôleur » en français

  10.  Polymorphism : entspricht « polymorphisme » en français

  11.  Indirection : entspricht « indirection » en français

  12.  Pure Fabrication : entspricht « fabrication pure » en français

  13.  Protected Variations : entspricht « variations protégées » en français

  14.  use case : entspricht « cas d’utilisation » en français

Inhaltsverzeichnis Haut

Referenzen

  1. Buch Sprache des Dokuments:uk Software Engineeging : ECIS, Assigning Responsabilities (2005)

Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.

Inhaltsverzeichnis Haut