Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match_all(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 717

Warning: Invalid argument supplied for foreach() in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 718

Warning: preg_replace(): Compilation failed: group name must start with a non-digit at offset 4 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 722

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739

Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739
Optimaler Entscheidungsbaum: Systemarchitektur – It2010-g1

Optimaler Entscheidungsbaum: Systemarchitektur


Warning: preg_match(): Compilation failed: group name must start with a non-digit at offset 8 in /www/htdocs/w0102873/mediawiki/includes/MagicWord.php on line 739
Aus It2010-g1
Wechseln zu: Navigation, Suche
(Klassendiagramm)
(View)
 
Zeile 1: Zeile 1:
== Klassendiagramm ==
+
Die Architektur verwendet unter anderem das technische Konzept des [[Technische Konzepte: Observer Pattern | Observer Patterns]].
 +
 
 +
== Observer Pattern ==
 +
Der [[Technische Konzepte: Observer Pattern | Observer Pattern]] besitzt eine abstrakte Klasse '''"Subject"''' und ein Interface '''"Observer"'''.
 +
 
 +
=== Subjekt ===
 +
Das Subjekt stellt das zu beobachtende Objekt dar und besitzt folgende grundlegende Methoden:
 +
* '''addObserver(Observer pObserver)''' um einen Observer (Beobachter) aufzunehmen
 +
* '''removeObserver(Observer pObserver)''' um einen Observer wieder zu entfernen
 +
Weiter existieren spezielle, für dieses Projekt spezifische Methoden:
 +
* '''updateAllTable(TableData pTableData)''' ruft für jeden eigenen Observer jeweils die Methode ''updateAllTable(pTableData)'' auf
 +
* '''updatetAllTree(TreeNode pTree)''' ruft für jeden eigenen Observer jeweils die Methode ''updateTree(pTree)'' auf
 +
* '''updateAllInteractiveTree(TreeNode pTree)''' ruft für jeden eigenen Observer jeweils die Methode ''updateAllInteractiveTree(pTree)'' auf
 +
* '''updateAllAutomaticTree(TreeNode pTree)''' ruft für jeden eigenen Observer jeweils die Methode ''updateAllAutomaticTree(pTree)'' auf
 +
 
 +
=== Observer ===
 +
Der Observer stellt den Beobachter eines Subjekts dar und besitzt die Methoden, die vom Subjekt aufgerufen werden:
 +
* updateAllTable(TableData pTableData)
 +
* updateTree(TreeNode pTree)
 +
* updateAllInteractiveTree(TreeNode pTree)
 +
* updateAllAutomaticTree(TreeNode pTree)
 +
 
 +
=== Aktivitätsdiagramm ===
 +
Das folgende Aktivitätsdiagramm zeigt die grundlegende Struktur der Verwendung des Observer Patterns in diesem Projekt.<br>
 +
Die Aktivitäten des Diagramms haben immer folgenden Aufbau: '''Subjekt''' informiert '''Observer'''.
 +
 
 +
[[Datei:Aktivitätsdiagramm Observer.png]]
 +
 
 +
== Architektur ==
  
 
Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen.
 
Das folgende Klassendiagramm zeigt, in vereinfachter Weise, die komplette Systemarchitektur. Es wurde das Observer-Pattern benutzt. Verschiedene statische und view-Klassen wurden weggelassen.
  
[[Datei:Klassendiagramm_Systemarchitektur.png]]
+
[[Datei:Klassendiagramm_Systemarchitektur.png | 1150px]]
 +
 
 +
Die wichtigsten Elemente der Architektur sind:
 +
* die '''View''',
 +
* das '''Model''',
 +
* und der '''Controller'''.
 +
 
 +
=== View ===
 +
Die Schnittstelle zwischen dem Programm und dem Nutzer wird von der View gestellt<br>
 +
Die View/GUI ist zur grfischen Darstellung und zur dierekten interaktion mit dem Nutzer verantwortlich. Neben der
 +
* Hauptklasse '''"View"'''
 +
gehören noch die Klasse
 +
* '''"TableView"''' (die Tabellenansicht),
 +
* '''"TreeView"'''' (die Baumansichten),
 +
** '''"TreeZoomView"''' (der Zoom eines Bäume),
 +
*** '''"TreePainter"''' (die gezeichnete darstellung eines Baumes)
 +
** '''"TreeDetails"''' (die Informationen eines Ausgewählten Knotens, die neben dem Baum dargestellt werden)
 +
* '''"FullScreenTreeView"''' (die Baumansicht für den Presentationsmodus)
 +
dazu.<br>
 +
Die Klassen View, TableView und  TreeView beobachten jeweils als Observer das [[Optimaler_Entscheidungsbaum:_Systemarchitektur#Model | Model]].
 +
 
 +
=== Model ===
 +
Das Model besitzt die Tabelle, den interaktiven Baum und den automatischen Baum. Es beobachtet als Observer die Tabelle und die Bäume und wird als Subject vom [[Optimaler_Entscheidungsbaum:_Systemarchitektur#Controller | Controller]] und von mehreren Klassen der [[Optimaler_Entscheidungsbaum:_Systemarchitektur#View| View]] beobachtet.<br>
 +
Es dient somit als Schnittstelle zwischen dem [[Optimaler_Entscheidungsbaum:_Systemarchitektur#Controller | Controller]] und den Daten (Tabelle und Bäume).
 +
 
 +
=== Controller ===
 +
Der Controller ist eine Klasse, die die Schnittstelle zwischen GUI und Funktionalität herstellt, damit diese beiden Bereiche nicht vermischt werden. Dabei stellt der Controller selbst auch einen Teil der Funktionalität dar.<br>
 +
Er beobachtet als Observer das [[Optimaler_Entscheidungsbaum:_Systemarchitektur#Model | Model]].<br>
 +
Die [[Optimaler_Entscheidungsbaum:_Systemarchitektur#View| View]] spricht den Controller an, wenn die Tabelle bearbeitet, eine Tabelle oder ein Baum geladen oder eine Tabelle oder ein Baum gesteichert werden soll. Der Controller greift dann auf die zuständigen Klassen zu. Somit muss die [[Optimaler_Entscheidungsbaum:_Systemarchitektur#View| View]] immer nur auf dne Controller zugreifen und wird nicht weiter mit der Funktionalität des Programmes verstrickt.

Aktuelle Version vom 25. Mai 2012, 10:06 Uhr

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Projekte
Werkzeuge