Commit 0843ec73 authored by Andreas Zwinkau's avatar Andreas Zwinkau

Klassendiagrammbeispiel

parent 8014c1c5
build/
example_class_diagram.png
tipps.pdf
......@@ -18,3 +18,6 @@ show: $(BASE).pdf
clean:
rm -rf build
%.png : %.plantuml
plantuml $<
@startuml
package "some web framework" {
abstract class HTMLPage {
+{abstract} Response render(Request r)
}
abstract class Session {
+{static} Session getCurrent()
}
class Request {
}
class Response {
}
Request --- HTMLPage
Response --- HTMLPage
}
package "Model" #ffdddd {
class URL {
-String short
-String full
}
class User {
-String email
}
class FacebookId {
-String id
}
class GithubId {
-String id
}
User "1" o--o "1" FacebookId
User "1" o--o "1" GithubId
URL --* "1" User : creator
abstract class ShortURLCreation {
+{abstract} String getShortURL(String fullURL)
}
class RandomURL extends ShortURLCreation {
+String getShortURL(String fullURL)
}
class HashingURL extends ShortURLCreation {
+String getShortURL(String fullURL)
}
}
package "View" #ddffdd {
package "HTML" #ffffff {
class LoginPage extends HTMLPage {
+Response render(Request r)
}
class CreatePage extends HTMLPage {
+Response render(Request r)
}
class ShowPage extends HTMLPage {
+Response render(Request r)
}
}
LoginPage --- User
CreatePage --- URL
ShowPage --- URL
package "CommandLine" #ffffff {
class ColoredPrint {
+void printURL(URL u) {}
}
}
ColoredPrint --- URL
}
package "Controller" #ddddff {
abstract class BaseController {
~{static} ShortURLCreation getURLCreator()
}
BaseController --> "1" RandomURL
BaseController --> "1" HashingURL
class ArgumentController extends BaseController {
+{static} addURL(String url)
+{static} listURLs()
}
ArgumentController --- ColoredPrint
class WebController extends BaseController {
+void addURL(String url)
+String getShortURL(String full)
}
WebController --- Session
WebController --- LoginPage
WebController --- ShowPage
WebController --- CreatePage
}
@enduml
......@@ -360,6 +360,7 @@ Design is the art of separation, grouping, abstraction, and hiding. The fulcrum
Assoziationen zwischen Klassen dabei bitte
mit entsprechenden Pfeilen darstellen,
statt nur durch Feldtypen.
Ein kleines Beispiel ist in \autoref{fig:example_class_diagram} gezeigt.
\item Identifikation von Entwurfsmustern
um Struktur gröber zu beschreiben.
\item Erfahrungsgemäßer Umfang:
......@@ -371,6 +372,16 @@ Design is the art of separation, grouping, abstraction, and hiding. The fulcrum
\item Formale Spezifikation von Kernkomponenten?
\end{itemize}
\begin{figure}[hbp]
\includegraphics[width=\textwidth]{example_class_diagram.png}
\caption{\label{fig:example_class_diagram}
Klassendiagrammbeispiel:
Grobe Paketstruktur farblich hervorgehoben.
Ausgewählte Verwendungen als Assoziation eingetragen,
um auch Beziehungen durch Parameter oder lokale Variablen zu verdeutlichen.
}
\end{figure}
Unserer Erfahrung nach ist die Entwurfsphase die schwierigste,
da Studenten hier so gut wie keine Erfahrung haben
(im Gegensatz zur Implementierungsphase).
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment