Übungen zum Klassendiagramm

Wir betrachten eine Bank und ihre Kunden. Eine Person wird Kunde, wenn sie ein Konto eröffnet. Ein Kunde kann beliebig viele weitere Konten eröffnen. Für jeden neuen Kunden werden Name, Adresse und Datum der ersten Kontoeröffnung erfaßt. Bei Kontoeröffnung muß der Kunde gleich eine erste Einzahlung vornehmen. Wir unterscheiden Girokonten und Sparkonten. Girokonten dürfen bis zu einem bestimmten Betrag überzogen werden. Für jedes Konto wird ein indiv. Habenzins, für Girokonten auch ein indiv. Sollzins festgelegt. Jedes Konto besitzt eine eindeutige Kontonummer. Für jedes Konto wird die Art des Sparens - z.B. Festgeld - gespeichert. Ein Kunde kann Beträge einzahlen und abheben. Habenzinsen werden gutgeschrieben, Überziehungszinsen vom Girokonto abgebucht. Um Zinsen zu berechnen, muß für jede Kontobewegung das Datum und der Betrag notiert werden. Die Gutschrift/Abbuchung der Zinsen erfolgt bei den Sparkonten jährlich und bei den Girokonten quartalsweise. Ein Kunde kann jedes seiner Konten wieder auflösen. Bei der Auflösung des letzten Kontos hört er auf, Kunde zu sein.

Lösung


In [1]:
import iplantuml

In [2]:
%%plantuml

@startuml

skinparam class {
    BackgroundColor PaleGreen
    ArrowColor SeaGreen
    BorderColor SpringGreen
    classAttributeIconSize 0
    BackgroundColor Yellow
}


class Kunde
abstract class Konto
class Kontobewegung

class Girokonto
class Sparkonto


Kunde "1" - "1..*" Konto
Konto <|-- Girokonto
Konto <|-- Sparkonto
Konto "1" o- "1.*" Kontobewegung


abstract class Konto {
    # KontoNr : int
    
    + Konto(double Betrag)
    + void einzahlen(double Betrag)
    + {abstract} double abheben(double Betrag)
    
}

class Kunde {
  Name
  Kunde()
  
}

class Kontobewegung {
  - Datum
  - Betrag
  + Konto(Datum: DateTime, double Betrag )
  
}


class Girokonto {
  - Dispo : double
  - Sollzins : double
  + double abheben(double Betrag)
  
}

class Sparkonto {
  + double abheben(double Betrag)

}


@enduml


Out[2]:
KundeNameKunde()KontoKontoNr : intKonto(double Betrag)void einzahlen(double Betrag)double abheben(double Betrag)KontobewegungDatumBetragKonto(Datum: DateTime, double Betrag )GirokontoDispo : doubleSollzins : doubledouble abheben(double Betrag)Sparkontodouble abheben(double Betrag)11..*11.*

New heading

New heading

Tutorium

wefew jewjjrew ewjewjrwlker


In [ ]:
import plantuml

In [3]:
%%plantuml

@startuml

skinparam class {
	BackgroundColor PaleGreen
	ArrowColor SeaGreen
	BorderColor SpringGreen
}
skinparam stereotypeCBackgroundColor YellowGreen classAttributeIconSize 0

    class Kunde
    abstract class Konto
    class Kontobewegung

class Girokonto
class Sparkonto


Kunde - Konto
Konto <|-- Girokonto
Konto <|-- Sparkonto
Konto "1" o- "1.*" Kontobewegung

@enduml


Out[3]:
KundeKontoKontobewegungGirokontoSparkonto11.*