Skip to content

Commit

Permalink
Mermaid conversion exam exercises 2 (#61)
Browse files Browse the repository at this point in the history
* Update corner-shop.md

* Update dictionary.md

* Update library.md

* Update measurement-data.md

* Update planets.md

* Update space-station.md

* Update video-collection.md

* Create phone-store.md

* Update lego-brick.md

* Update dictionary.md

* Update human-resources.md

* Update planets.md

* Update phone-store.md

* Update lego-brick.md

* Update video-collection.md

* Update dictionary.md

* Update space-station.md

* Update job-offer.md

* Update dictionary.md

* Update lego-brick.md

* Update corner-shop.md

* Update shopping-portal.md

* Update corner-shop.md

* Update library.md

* Update corner-shop.md

* Update dictionary.md

* Update human-resources.md

* Update shopping-portal.md

* Update space-station.md
  • Loading branch information
appenmaier authored Oct 4, 2023
1 parent f5b73b3 commit 88c6fdc
Show file tree
Hide file tree
Showing 12 changed files with 499 additions and 54 deletions.
57 changes: 51 additions & 6 deletions docs/exam-exercises/exam-exercises-java2/corner-shop.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,59 @@
---
title: Tante-Emma-Laden
description: ''
tags: [inheritance, polymorphy, interfaces, comparators, exceptions, maps]
tags:
[inheritance, polymorphy, interfaces, comparators, exceptions, records, maps]
---

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse und/oder eine Testklasse.

## Klassendiagramm

![image](https://user-images.githubusercontent.com/47243617/212541930-5dc402f6-2162-4b64-8482-68a16c80684f.png)
```mermaid
classDiagram
Product <|-- Goods
CornerShop o-- Goods
Comparable~T~ <|.. Goods
Goods o-- ClassOfGoods
class Product {
<<abstract>>
-description String
-price double
-currency String
+Product(description String, price double, currency String)
}
class Goods {
-classOfGoods ClassOfGoods
-unit String
+Goods(description String, price double, currency String, classOfGoods ClassOfGoods, unit String)
+compareTo(other Goods) int
}
class Comparable~T~ {
<<interface>>
+compareTo(t T) int
}
class CornerShop {
<<record>>
-name String
-store Map~Goods&#44&#160Integer~
+getAmountByDescription(description String) Optional~Integer~
+buyGoods(goods Goods, amount int) void
+sellGoods(goods Goods, amount int) void
}
class ClassOfGoods {
<<enumeration>>
BAKERY_PRODUCTS = Backwaren
DAIRY_PRODUCTS = Milchprodukte
FRUITS = Obst
VEGETABLES = Gemüse
-description String
}
```

## Allgemeine Hinweise

Expand All @@ -17,11 +62,11 @@ Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine

## Hinweis zur Klasse Goods

Die Methode `int compareTo(other: Goods)` soll so implementiert werden, dass damit Waren aufsteigend nach ihrer Beschreibung sortiert werden können.
Die Methode `int compareTo(other Goods)` soll so implementiert werden, dass damit Waren aufsteigend nach ihrer Beschreibung sortiert werden können.

## Hinweise zur Klasse CornerShop

- Die Methode `Entry<Goods, Integer> getEntryByDescription(description: String)` soll die Anzahl Waren zur eingehenden Warenbeschreibung zurückgeben
- Die Methode `void buyGoods(goods: Goods, amount: int)` soll die eingehende Ware im Lager (`store`) um die eingehende Anzahl erhöhen
- Die Methode `void sellGoods(goods: Goods, amount: int)` soll die eingehende Ware im Lager (`store`) um die eingehende Anzahl reduzieren. Für den Fall, dass keine
- Die Methode `Optional<Integer> getAmountByDescription(description String)` soll die Anzahl Waren zur eingehenden Warenbeschreibung als Optional zurückgeben
- Die Methode `void buyGoods(goods Goods, amount int)` soll die eingehende Ware im Lager (`store`) um die eingehende Anzahl erhöhen
- Die Methode `void sellGoods(goods Goods, amount int)` soll die eingehende Ware im Lager (`store`) um die eingehende Anzahl reduzieren. Für den Fall, dass keine
ausreichende Anzahl an Waren vorhanden ist, soll die Ausnahme `OutOfStockException` ausgelöst werden
54 changes: 45 additions & 9 deletions docs/exam-exercises/exam-exercises-java2/dictionary.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,51 @@
---
title: Wörterbuch
description: ''
tags: [interfaces, comparators, exceptions, records, maps, io-streams]
tags:
[interfaces, comparators, exceptions, records, maps, optionals, io-streams]
---

Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine ausführbare Klasse und/oder eine Testklasse.

## Klassendiagramm

![image](https://user-images.githubusercontent.com/47243617/212249317-7fdb4952-658d-4c10-b171-2466f102def1.png)
```mermaid
classDiagram
Comparable~T~ <|.. Word
Word o-- Language
Dictionary o-- Word
Dictionary o-- Language
class Word {
<<record>>
-value String
-language Language
+compareTo(other Word) int
}
class Comparable~T~ {
<<interface>>
+compareTo(t T) int
}
class Language {
<<enumeration>>
DE = DE, Deutsch
EN = EN, Englisch
-code String
-description String
}
class Dictionary {
<<record>>
-sourceLanguage Language
-targetLanguage Language
-entries TreeMap~Word&#44&#160Word~
+addEntry(sourceWord Word, targetWord Word) void
+importEntries(file File) void
+getTranslation(word String) Optional~String~
}
```

## Allgemeine Hinweise

Expand All @@ -17,17 +54,16 @@ Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine

## Hinweis zur Klasse Word

Die Methode `int compareTo(other: Word)` soll so implementiert werden, dass damit Wörter aufsteigend nach ihrem Wert sortiert werden können.
Die Methode `int compareTo(other Word)` soll so implementiert werden, dass damit Wörter aufsteigend nach ihrem Wert sortiert werden können.

## Hinweise zur Klasse Dictionary

- Die Methode `void addEntry(sourceWord: Word, targetWord: Word)` soll den Einträgen des Wörterbuches (`entries`) die eingehenden Wörter als Eintrag hinzufügen. Für den
Fall, dass die Sprache des ersten eingehenden Wortes nicht der Quellsprache (`sourceLanguage`) entspricht, oder die Sprache des zweiten eingehenden Wortes nicht der
Zielsprache (`targetLanguage`) entspricht, soll die Ausnahme `InvalidLanguageException` ausgelöst werden
- Die Methode `void importEntries(file: File)` soll den Einträgen des Wörterbuches (`entries`) die Wörter der eingehenden Datei als Einträge hinzufügen. Die Ausnahme
- Die Methode `void addEntry(sourceWord Word, targetWord Word)` soll den Einträgen des Wörterbuches (`entries`) die eingehenden Wörter als Eintrag hinzufügen. Für
den Fall, dass die Sprache des ersten eingehenden Wortes nicht der Quellsprache (`sourceLanguage`) entspricht, oder die Sprache des zweiten eingehenden Wortes
nicht der Zielsprache (`targetLanguage`) entspricht, soll die Ausnahme `InvalidLanguageException` ausgelöst werden
- Die Methode `void importEntries(file File)` soll den Einträgen des Wörterbuches (`entries`) die Wörter der eingehenden Datei als Einträge hinzufügen. Die Ausnahme
`FileNotFoundException` soll dabei weitergeleitet werden
- Die Methode `String getTranslation(word: String)` soll die Übersetzung zur eingehenden Zeichenkette zurückgeben. Für den Fall, dass keine Übersetzung vorhanden ist,
soll der Wert `null` zurückgegeben werden
- Die Methode `Optional<String> getTranslation(word String)` soll die Übersetzung zur eingehenden Zeichenkette als Optional zurückgeben

## Beispielhafter Aufbau der Wörterdatei

Expand Down
34 changes: 29 additions & 5 deletions docs/exam-exercises/exam-exercises-java2/human-resources.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,31 @@ Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine

## Klassendiagramm

![image](https://user-images.githubusercontent.com/47243617/212029467-d88f9b15-2314-49e5-a6f2-2027cefbd5d7.png)
```mermaid
classDiagram
HumanResources o-- Person
HumanResources o-- TelephoneNumber
class HumanResources {
<<record>>
+telephoneBook Map~TelephoneNumber&#44&#160Person~
+staff List~Person~
+addTelephoneNumber(telephoneNumber TelephoneNumber, person Person) void
+addStaff(person Person) void
+getTelephoneNumbersByPersonId(id int) List~TelephoneNumber~
}
class Person {
<<record>>
-id int
-name String
}
class TelephoneNumber {
<<record>>
-digits int[*]
}
```

## Allgemeine Hinweise

Expand All @@ -17,8 +41,8 @@ Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine

## Hinweise zur Klasse HumanResources

- Die Methode `void addTelephoneNumber(telephoneNumber: TelephoneNumber, person: Person)` soll dem Telefonbuch (`telephoneBook`) die eingehende Telefonnummer als Schlüssel
sowie die eingehende Person als Wert hinzufügen
- Die Methode `void addStaff(person: Person)` soll der Personalliste (`staff`) die eingehende Person hinzufügen. Für den Fall, dass diese Person bereits in der
- Die Methode `void addTelephoneNumber(telephoneNumber TelephoneNumber, person Person)` soll dem Telefonbuch (`telephoneBook`) die eingehende Telefonnummer als
Schlüssel sowie die eingehende Person als Wert hinzufügen
- Die Methode `void addStaff(person Person)` soll der Personalliste (`staff`) die eingehende Person hinzufügen. Für den Fall, dass diese Person bereits in der
Personalliste vorhanden ist, soll die Ausnahme `DuplicateException` ausgelöst werden
- Die Methode `ArrayList<TelephoneNumber> getTelephoneNumbersByPersonId(id: int)` soll alle Telefonnummern zur eingehenden Personennummer zurückgeben
- Die Methode `List<TelephoneNumber> getTelephoneNumbersByPersonId(id int)` soll alle Telefonnummern zur eingehenden Personennummer zurückgeben
53 changes: 49 additions & 4 deletions docs/exam-exercises/exam-exercises-java2/job-offer.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,52 @@ Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine

## Klassendiagramm

![image](https://github.com/jappuccini/java-docs/assets/47243617/ec340eee-89de-4afe-ae4a-b9a1660e912c)
```mermaid
classDiagram
Person <|-- Recruiter
Person <|-- Applicant
JobOffer o-- Recruiter
JobOffer o-- Applicant
Applicant o-- ApplicationDocument
class JobOffer {
<<record>>
-id int
-title String
-recruiter Recruiter
-applicants List~Applicant~
+addApplicant(applicant Applicant) void
}
class Person {
<<abstract>>
-name String
-birthdateTimeStamp long
+Person(name String, birthdateTimeStamp long)
}
class Applicant {
-applicantId int
-applicationDocuments List~ApplicationDocument~
+Applicant(name String, birthdateTimeStamp long, applicantId int)
+addApplicationDocument(applicationDocument ApplicationDocument) void
}
class Recruiter {
+Recruiter(name String, birthdateTimeStamp long)
}
class ApplicationDocument {
<<record>>
-description String
-type String
-document File
}
class JobOfferReader {
+getJobOffers(file File)$ List~JobOffer~
}
```

## Allgemeine Hinweise

Expand All @@ -17,15 +62,15 @@ Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine

## Hinweis zur Klasse Applicant

Die Methode `void addApplicationDocument(applicationDocument: ApplicationDocument)` soll den Bewerbungsunterlagen (`applicationDocuments`) das eingehende Dokument hinzufügen.
Die Methode `void addApplicationDocument(applicationDocument ApplicationDocument)` soll den Bewerbungsunterlagen (`applicationDocuments`) das eingehende Dokument hinzufügen.

## Hinweis zur Klasse JobOffer

Die Methode `void addApplicant(applicant: Applicant)` soll der Bewerberliste (`applicants`) den eingehenden Bewerber hinzufügen.
Die Methode `void addApplicant(applicant Applicant)` soll der Bewerberliste (`applicants`) den eingehenden Bewerber hinzufügen.

## Hinweis zur Klasse JobOfferReader

Die statische Methode `ArrayList<JobOffer> getJobOffers(file: File)` soll die Stellenangebote der eingehenden Datei zurückgeben. Die Ausnahme `FileNotFoundException` soll dabei weitergeleitet werden.
Die statische Methode `List<JobOffer> getJobOffers(file File)` soll die Stellenangebote der eingehenden Datei zurückgeben. Die Ausnahme `FileNotFoundException` soll dabei weitergeleitet werden.

## Beispielhafter Aufbau der Stellenangebotsdatei

Expand Down
40 changes: 38 additions & 2 deletions docs/exam-exercises/exam-exercises-java2/lego-brick.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,43 @@ Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine

## Klassendiagramm

![image](https://user-images.githubusercontent.com/47243617/212029643-3c811cad-8f71-482b-88b1-547e3983a944.png)
```mermaid
classDiagram
Lego <|-- LegoBrick
LegoBrick <|-- LegoBrick2x2x2
LegoBrick <|-- LegoBrick4x2x1
Comparator~T~ <|.. LegoBrickVolumeComparator
class Lego {
<<abstract>>
-id int
+Lego(id int)
}
class LegoBrick {
<<abstract>>
-dimensions int[3]
-color String
+LegoBrick(id int, dimensions int[3] color String)
}
class LegoBrick2x2x2 {
+LegoBrick2x2x2(id int, color String)
}
class LegoBrick4x2x1 {
+LegoBrick4x2x1(id int, color String)
}
class Comparator~T~ {
<<interface>>
+compare(o1 T, o2 T) int
}
class LegoBrickVolumeComparator {
+compare(legoBrick1 LegoBrick, legoBrick2 LegoBrick) int
}
```

## Allgemeine Hinweise

Expand All @@ -17,4 +53,4 @@ Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine

## Hinweis zur Klasse LegoBrickVolumeComparator

Die Methode `int compare(legoBrick1: LegoBrick, legoBrick2: LegoBrick)` soll so implementiert werden, dass damit Lego-Bausteine aufsteigend nach ihrem Volumen sortiert werden können.
Die Methode `int compare(legoBrick1 LegoBrick, legoBrick2 LegoBrick)` soll so implementiert werden, dass damit Lego-Bausteine aufsteigend nach ihrem Volumen sortiert werden können.
Loading

0 comments on commit 88c6fdc

Please sign in to comment.