```mermaid classDiagram class Person <<abstract>> Person Person : - name Person : - adress class Tourguide Tourguide : - certifiedAdventurePackages <AdventurePackage*> vector class Participant class AdventurePackage AdventurePackage : - title AdventurePackage : - description class Accommodation Accommodation : - name Accommodation : - adress class Trip Trip : - startingDate class Booking Booking : - payed Booking : - dateOfBooking Tourguide --|> Person Participant --|> Person Trip "1..*" o-- "1..*" AdventurePackage Trip "*" o-- "1" Accommodation Participant "1..*" -- "1..*" Trip: Booking Participant "1..*" .. Booking Booking "1..*" .. "1..*" Trip Tourguide "1" --o "*" Trip Tourguide "1..*" -- "1..*" AdventurePackage ``` ```mermaid sequenceDiagram actor Tom as Tom : Human participant LibGui as libGUI participant Lib as Lib participant CTom as Tom : Customer activate LibGui Tom -) LibGui: name = "HP1" LibGui ->>+ Lib: getEbook("HP1") create participant EBook as HP1 : EBook Lib -->>+ EBook: <<create>> EBook("HP1", 3.99) note right of EBook: Im Konstruktor von EBook fehlt<br/>die Zuweisung des Preise.<br/>Hier ergänzt EBook --)- Lib: return Lib --)- LibGui: return LibGui --)+ Tom: return Tom -)- LibGui: clickBorrowButton LibGui ->>+ Lib: getEbook("HP1") Lib ->>+ CTom: borrow("HP1") CTom ->>+ EBook: getPrice() EBook --)- CTom: return 3.99 CTom ->> CTom: charge(3.99) CTom --)- Lib: return Lib --)- LibGui: return LibGui ->>+ EBook: generateLink() EBook --)- LibGui: return link activate LibGui LibGui ->> LibGui: showLink() LibGui --)- LibGui: return LibGui --) Tom: return destroy EBook LibGui -x EBook: <<destroy>> destroy CTom LibGui -x CTom: <<destroy>> destroy Lib LibGui -x- Lib: <<destroy>> destroy LibGui Tom --x LibGui: <<destroy>> ``` ```mermaid classDiagram class Kreis{ <<abstract>> - radius : ft + setRadius() } class Ellipse{ - breite : ft - hoehe : ft + setBreite() + setHoehe() } Ellipse --|> Kreis ```