Architektureller Proof of Concept - oliverbra/Projekt1_HCI_TeamCMTO GitHub Wiki
Für jedes Attribut einer Klasse werden die get() und set() Methoden sowie jegliche Listenfunktionen vorrausgesetzt und daher nicht expilizit im UML-Klassendiagramm dargestellt. Weitere Funktionen wurden aus den Actions der Task Object Tabelle abgeleitet.
Das UML-Klassendiagramm stellt die Klassen, deren Attribute und Funktionen, sowie die Beziehungen zwischen den Klassen dar. Somit dient es als Implementierungsgrundlage für das Projekt II. Im Folgenden werden Anpassungen in Betracht auf das Content Model und die relevantesten Entscheidungen zur Gestaltung des UML-Klassendiagramms erläutert.
Informative Attribute eines GrowSpace
Im Content Model wurden die Eigenschaften eines GS zur verbesserten Übersicht und Differenzierung in individuelle und realitätsnahe Informationen unterteilt. Um Redundanzen zu vermeiden, ist diese objektorientierte Unterteilung im UML-Klassendiagramm in dieser Form nicht mehr vorhanden, dient aber des Weiteren zur Spezifizierung der Attribute eines GS. Die Attribute der Klasse GrowSpace wurden anhand des UML-Klassendiagramms der Domänensicht und den Nutzungsanforderungen spezifiziert:
Die Attribute name, goal, description und problems stellen hierbei die individualisierbaren Informationen dar. Realitätsnahe Informationen umfassen category, picture, size, location, soilCondition und environmentalCondition.
Generalisierung (Plant, Insect):Species
Bereits im Content Model wurde ersichtlich, dass Pflanzen- und Insektenarten eine Teilmenge gleicher Attribute haben. Daher wird eine Generalisierung der Klassen Plant und Insect zu der Eltern-Klasse Species realisiert.
Generalisierung Expert:User
Wie bereits bei den Erfordernissen und der Stakeholdermap ausgearbeitet wurde, ist ein Experte ebenfalls ein Hobbygärtner bzw. User. Daher erbt die Klasse Expert von der Eltern-Klasse User und erweitert diese um Attribute, wie das expertMark, und Funktionen, wie beispielsweise recommendGS().
Generalisierung ExpertComment:Comment
Eine weitere Generalisierung besteht bei den Klassen Comment und ExpertcCmment. Zum einen wird dadurch die Klasse Comment um einen Experten als Autor für die Klasse ExpertComment erweitert. Zum anderen kann dadurch realisiert werden, dass lediglich die Klasse Expert in der Lage ist einen Kommentar außerhalb einer Bewertung (Klasse Review) zu schreiben. Dadurch soll angestrebt werden, dass möglichst qualitativ hochwertige Tipps, Hilfestellungen und Anregungen in den Kommentaren eines GrowSpaces zu finden sind.
Klasse Mark
Da wir im Content Model verschiedene Markierungen identifiziert haben, haben wir uns dazu entschlossen diese in einer Klasse Mark zusammenzufassen. Die verfügbaren Instanzen der Klasse Mark werden in einer Datenbank hinterlegt und anhand des Attributs scope einem passendem Objekt zu geordnet.
Klasse Review: calculateRating()
Die Klasse Review hat das Attribut rating. Dieses wird durch die Funktion calculateRating() anhand einer Addition und Division berechnet:
SUMME(Werte aller Bewertungskriterien) : Anzahl der Bewertungskriterien
Klasse Review: criteria list
Eine Review kann mehrere Bewertungskriterien haben. Diese sind nicht von Anfang an für einen User verfügbar, sondern erweitern sich mit dem steigenden Wissenstand.