From d212d9d608eecbc57b9bb542a4d5e4080d747d0c Mon Sep 17 00:00:00 2001 From: appenmaier <47243617+appenmaier@users.noreply.github.com> Date: Fri, 10 Nov 2023 12:58:26 +0100 Subject: [PATCH] New exam exercises (#82) * new exam exercises tank and team * update java stream api exercises * add final-property, delete private-visibilities for records * add final-property * update sample exams (#81) --- .../daniel-java1/sample-exam.md | 52 +++++------ .../daniel-java2/sample-exam.md | 42 ++++----- .../exam-exercises-java1/cards-dealer.md | 12 +-- .../exam-exercises-java1/cashier-system.md | 22 ++--- .../exam-exercises-java1/christmas-tree.md | 8 +- .../exam-exercises-java1/cookie-jar.md | 14 +-- .../exam-exercises-java1/creature.md | 6 +- .../exam-exercises-java1/dice-games.md | 10 +- .../exam-exercises-java1/fast-food.md | 18 ++-- .../exam-exercises-java1/gift-bag.md | 16 ++-- .../exam-exercises-java1/parking-garage.md | 18 ++-- .../exam-exercises-java1/shape.md | 8 +- .../exam-exercises-java1/student-course.md | 22 ++--- .../exam-exercises-java1/zoo.md | 10 +- .../exam-exercises-java2/corner-shop.md | 12 +-- .../exam-exercises-java2/dictionary.md | 8 +- .../exam-exercises-java2/human-resources.md | 10 +- .../exam-exercises-java2/job-offer.md | 22 ++--- .../exam-exercises-java2/lego-brick.md | 6 +- .../exam-exercises-java2/library.md | 24 ++--- .../exam-exercises-java2/phone-store.md | 24 ++--- .../exam-exercises-java2/planets.md | 19 +--- .../exam-exercises-java2/shopping-portal.md | 14 +-- .../exam-exercises-java2/space-station.md | 10 +- .../exam-exercises-java2/tanks.md | 77 ++++++++++++++++ .../exam-exercises-java2/team.md | 91 +++++++++++++++++++ .../exam-exercises-java2/video-collection.md | 16 ++-- 27 files changed, 373 insertions(+), 218 deletions(-) create mode 100644 docs/exam-exercises/exam-exercises-java2/tanks.md create mode 100644 docs/exam-exercises/exam-exercises-java2/team.md diff --git a/docs/additional-material/daniel-java1/sample-exam.md b/docs/additional-material/daniel-java1/sample-exam.md index 3b365ef785..945fbe2df7 100644 --- a/docs/additional-material/daniel-java1/sample-exam.md +++ b/docs/additional-material/daniel-java1/sample-exam.md @@ -120,10 +120,10 @@ classDiagram Class o-- CourseOfStudies class Class { - -description: String - -courseOfStudies: CourseOfStudies - -lectures: List~Lecture~ - -students: List~Student~ + -description: String {final} + -courseOfStudies: CourseOfStudies {final} + -lectures: List~Lecture~ {final} + -students: List~Student~ {final} +Class(description: String, courseOfStudies: CourseOfStudies) +description() String +courseOfStudies() CourseOfStudies @@ -136,8 +136,8 @@ classDiagram } class Student { - -matriculationNumber: String - -name: String + -matriculationNumber: String {final} + -name: String {final} +Student(matriculationNumber: String, name: String) +matriculationNumber() String +name() String @@ -145,8 +145,8 @@ classDiagram } class Lecture { - -description: String - -creditPoints: int + -description: String {final} + -creditPoints: int {final} +Lecture(description: String, creditPoints: int) +description() String +creditPoints() int @@ -158,7 +158,7 @@ classDiagram WI = Wirtschaftsinformatik INF = Informatik BWL = Betriebswirtschaftslehre - -description: String + -description: String {final} } class ExamTask02 { @@ -185,10 +185,10 @@ classDiagram ```java title="Class.java" showLineNumbers public class Class { // 0,5 - private String description; // 0,25 - private CourseOfStudies courseOfStudies; // 0,25 - private List lectures; // 0,25 - private List students; // 0,25 + private final String description; // 0,25 + private final CourseOfStudies courseOfStudies; // 0,25 + private final List lectures; // 0,25 + private final List students; // 0,25 public Class(String description, CourseOfStudies courseOfStudies) { // 0,5 this.description = description; // 0,25 @@ -381,9 +381,9 @@ classDiagram } class Player { - -name: String + -name: String {final} -healthPoints: int - -dice: Dice + -dice: Dice {final} +Player(name: String) +name() String +getHealthPoints() int @@ -433,9 +433,9 @@ Hans gewinnt ```java title="Player.java" showLineNumbers public class Player { // 0,5 - private String name; // 0,25 + private final String name; // 0,25 private int healthPoints; // 0,25 - private Dice dice; // 0,25 + private final Dice dice; // 0,25 public Player(String name) { // 0,5 this.name = name; // 0,25 @@ -528,34 +528,34 @@ classDiagram Recipe o-- Ingredient class CookieJar { - -cookies: List~Cookie~ + -cookies: List~Cookie~ {final} +CookieJar() +addCookie(cookie: Cookie) void +getStuffedCookie() StuffedCookie } class Cookie { - -name: String - -dough: Recipe + -name: String {final} + -dough: Recipe {final} +Cookie(name: String, dough: Recipe) +getIngredients() List~Ingredient~ } class StuffedCookie { - -jam: Recipe + -jam: Recipe {final} +StuffedCookie(name: String, dough: Recipe, jam: Recipe) +getIngredients() List~Ingredient~ } class Recipe { - -name: String - -ingredients: List~Ingredient~ + -name: String {final} + -ingredients: List~Ingredient~ {final} +Recipe(name: String) +addIngredient(ingredient: Ingredient) void } class Ingredient { - -name: String + -name: String {final} +Ingredient(name: String) } @@ -597,7 +597,7 @@ Zucker ```java title="StuffedCookie.java" showLineNumbers public class StuffedCookie extends Cookie { // 1 - private Recipe jam; // 0,25 + private final Recipe jam; // 0,25 public StuffedCookie(String name, Recipe dough, Recipe jam) { // 0,5 super(name, dough); // 1 @@ -622,7 +622,7 @@ public class StuffedCookie extends Cookie { // 1 ```java title="CookieJar.java" showLineNumbers public class CookieJar { // 0,5 - private List cookies; // 0,25 + private final List cookies; // 0,25 public CookieJar() { // 0,5 cookies = new ArrayList<>(); // 0,25 diff --git a/docs/additional-material/daniel-java2/sample-exam.md b/docs/additional-material/daniel-java2/sample-exam.md index 6326bf73fb..aa0d30eecb 100644 --- a/docs/additional-material/daniel-java2/sample-exam.md +++ b/docs/additional-material/daniel-java2/sample-exam.md @@ -40,9 +40,9 @@ classDiagram class SuperHuman { <> - -name: String - -universe: Universe - -power: int + -name: String {final} + -universe: Universe {final} + -power: int {final} +SuperHuman(name: String, universe: Universe, power: int) +name() String +universe() Universe @@ -65,9 +65,9 @@ classDiagram class SuperLeague~T extends SuperHuman~ { <> - -name: String - -universe: Universe - -members: Map~T, Boolean~ + name: String + universe: Universe + members: Map~T, Boolean~ +addSuperHuman(t: T) void +getMostPowerfulSuperHuman() Optional~T~ +getAllAvailableSuperHumans() List~T~ @@ -169,9 +169,9 @@ classDiagram class SuperHuman { <> - -name: String - -universe: Universe - -power: int + -name: String {final} + -universe: Universe {final} + -power: int {final} +SuperHuman(name: String, universe: Universe, power: int) +name() String +universe() Universe @@ -194,9 +194,9 @@ classDiagram class SuperLeague~T extends SuperHuman~ { <> - -name: String - -universe: Universe - -members: Map~T, Boolean~ + name: String + universe: Universe + members: Map~T, Boolean~ +addSuperHuman(t: T) void +getMostPowerfulSuperHuman() Optional~T~ +getAllAvailableSuperHumans() List~T~ @@ -277,18 +277,18 @@ classDiagram class Single { <> - -name: String - -artist: Artist - -salesInMillions: int - -publishingYear: String + name: String + artist: Artist + salesInMillions: int + publishingYear: String } class Artist { <> - -name: String - -country: Country - -birthdate: LocalDate - -isAlive: boolean + name: String + country: Country + birthdate: LocalDate + isAlive: boolean } class Country { @@ -304,7 +304,7 @@ classDiagram class SingleQueries { <> - -singles: List~Single~ + singles: List~Single~ +printAllSinglesWithMoreThan25MillionSalesPerCountry() void +printAverageBirthYearOfAllDeceasedArtists() void +isAnySingleFromChinaWithMoreThan10MillionSales() boolean diff --git a/docs/exam-exercises/exam-exercises-java1/cards-dealer.md b/docs/exam-exercises/exam-exercises-java1/cards-dealer.md index 7aba44d5a4..1b16b5e081 100644 --- a/docs/exam-exercises/exam-exercises-java1/cards-dealer.md +++ b/docs/exam-exercises/exam-exercises-java1/cards-dealer.md @@ -16,7 +16,7 @@ classDiagram Player o-- Card class Player { - -cards: List~Card~ + -cards: List~Card~ {final} +Player(cards: List~Card~) +addCard(card: Card) void +getCardWithHighestValue() Card @@ -24,16 +24,16 @@ classDiagram } class CardDealer { - -deck: List~Card~ - -player1: Player - -player2: Player + -deck: List~Card~ {final} + -player1: Player {final} + -player2: Player {final} +CardsDealer(deck: List~Card~, player1: Player, player2: Player ) +dealCards(amount: int) void } class Card { - -colour: String - -value: int + -colour: String {final} + -value: int {final} +Card(colour: String, value: int) } diff --git a/docs/exam-exercises/exam-exercises-java1/cashier-system.md b/docs/exam-exercises/exam-exercises-java1/cashier-system.md index 7200f5c349..72207bf14f 100644 --- a/docs/exam-exercises/exam-exercises-java1/cashier-system.md +++ b/docs/exam-exercises/exam-exercises-java1/cashier-system.md @@ -20,8 +20,8 @@ classDiagram CashierSystem o-- ShoppingCart class Product { - -id: int - -description: String + -id: int {final} + -description: String {final} -unit: String -priceInEuro: double +Product(id: int, description: String, unit: String, priceInEuro: double) @@ -29,12 +29,12 @@ classDiagram } class Goods { - -classOfGoods: ClassOfGoods + -classOfGoods: ClassOfGoods {final} +Goods(id: int, description: String, unit: String, priceInEuro: double, classOfGoods: ClassOfGoods) } class Item { - -goods: Goods + -goods: Goods {final} -amount: int +Item(goods: Goods, amount: int) +setAmount(amount: int) void @@ -42,7 +42,7 @@ classDiagram } class ShoppingCart { - -items: List~Item~ + -items: List~Item~ {final} +ShoppingCart() +createItem(goods: Goods, amount: int) void +getTotalInEuro() double @@ -53,13 +53,13 @@ classDiagram DAIRY_PRODUCTS = Milchprodukte FRUITS = Obst VEGETABLES = Gemüse - -description: String + -description: String {final} } class CashierSystem { - -name: String - -goods: List~Goods~ - -cashiers: List~Cashier~ + -name: String {final} + -goods: List~Goods~ {final} + -cashiers: List~Cashier~ {final} -shoppingCart: ShoppingCart -cashier: Cashier +CashierSystem(name: String) @@ -72,8 +72,8 @@ classDiagram } class Cashier { - -id: int - -name: String + -id: int {final} + -name: String {final} +Cashier(name: String, id: int) } ``` diff --git a/docs/exam-exercises/exam-exercises-java1/christmas-tree.md b/docs/exam-exercises/exam-exercises-java1/christmas-tree.md index a738c39f87..f1f9c3ad6c 100644 --- a/docs/exam-exercises/exam-exercises-java1/christmas-tree.md +++ b/docs/exam-exercises/exam-exercises-java1/christmas-tree.md @@ -15,9 +15,9 @@ classDiagram ChristmasTree o-- Candle class ChristmasTree { - -type: String - -sizeInM: double - -candles: List~Candle~ + -type: String {final} + -sizeInM: double {final} + -candles: List~Candle~ {final} +ChristmasTree(type: String, sizeInM: double) +addCandle(candle: Candle) void +lightChristmasTree() void @@ -27,7 +27,7 @@ classDiagram class Candle { #isBurning: boolean - -colour: String + -colour: String {final} +Candle(colour: String) +lightACandle() void +turnOffACandle() void diff --git a/docs/exam-exercises/exam-exercises-java1/cookie-jar.md b/docs/exam-exercises/exam-exercises-java1/cookie-jar.md index 69f7cd1f9d..a15609c41a 100644 --- a/docs/exam-exercises/exam-exercises-java1/cookie-jar.md +++ b/docs/exam-exercises/exam-exercises-java1/cookie-jar.md @@ -18,7 +18,7 @@ classDiagram Recipe o-- Ingredient class CookieJar { - -cookies: List~Cookie~ + -cookies: List~Cookie~ {final} +CookieJar() +addCookie(cookie: Cookie) void +getStuffedCookie() StuffedCookie @@ -26,27 +26,27 @@ classDiagram } class Cookie { - -name: String - -dough: Recipe + -name: String {final} + -dough: Recipe {final} +Cookie(name: String, dough: Recipe) +getIngredients() List~Ingredient~ } class StuffedCookie { - -jam: Recipe + -jam: Recipe {final} +StuffedCookie(name: String, dough: Recipe, jam: Recipe) +getIngredients() List~Ingredient~ } class Recipe { - -name: String - -ingredients: List~Ingredient~ + -name: String {final} + -ingredients: List~Ingredient~ {final} +Recipe(name: String) +addIngredient(ingredient: Ingredient) void } class Ingredient { - -name: String + -name: String {final} +Ingredient(name: String) } diff --git a/docs/exam-exercises/exam-exercises-java1/creature.md b/docs/exam-exercises/exam-exercises-java1/creature.md index 62ca6b8223..494d30a757 100644 --- a/docs/exam-exercises/exam-exercises-java1/creature.md +++ b/docs/exam-exercises/exam-exercises-java1/creature.md @@ -15,9 +15,9 @@ classDiagram Creature o-- Type class Creature { - -name: String - -position: Position - -type: Type + -name: String {final} + -position: Position {final} + -type: Type {final} +Creature(name: String, position: Position, type: Type) +moveUp() void +moveDown() void diff --git a/docs/exam-exercises/exam-exercises-java1/dice-games.md b/docs/exam-exercises/exam-exercises-java1/dice-games.md index cf248d0e80..37cbe0c92d 100644 --- a/docs/exam-exercises/exam-exercises-java1/dice-games.md +++ b/docs/exam-exercises/exam-exercises-java1/dice-games.md @@ -18,7 +18,7 @@ classDiagram ShapeSymbolDice o-- ShapeSymbol class Player { - -name: String + -name: String {final} -points: int +Player(name: String, points: int) +addPoints(points: int) void @@ -30,7 +30,7 @@ classDiagram } class CardColorDice { - -cardColor: CardColor + -cardColor: CardColor {final} +rollTheDice() void } @@ -50,8 +50,8 @@ classDiagram SPADE = Pik, 2 HEARTS = Herz, 3 DIAMONDS = Karo, 4 - -description: String - -priority: int + -description: String {final} + -priority: int {final} } class ShapeSymbol { @@ -59,7 +59,7 @@ classDiagram CIRCLE = 0 SQUARE = 4 TRIANGLE = 3 - -corners: int + -corners: int {final} } ``` diff --git a/docs/exam-exercises/exam-exercises-java1/fast-food.md b/docs/exam-exercises/exam-exercises-java1/fast-food.md index bea1ec7305..0c8cd7bd8e 100644 --- a/docs/exam-exercises/exam-exercises-java1/fast-food.md +++ b/docs/exam-exercises/exam-exercises-java1/fast-food.md @@ -29,20 +29,20 @@ classDiagram EGGS = Eier, 4 FATS_AND_OILS = Fette und Öle, 5 SWEETS = Süßigkeiten, 6 - -description: String - -points: int + -description: String {final} + -points: int {final} } class Food { - -name: String - -foodCategory: FoodCategory - -calorificValueInKcal: double + -name: String {final} + -foodCategory: FoodCategory {final} + -calorificValueInKcal: double {final} +Food(name: String, foodCategory: FoodCategory, calorificValueInKcal: double) } class FastFood { - -isVegetarian: boolean - -ratings: List~Integer~ + -isVegetarian: boolean {final} + -ratings: List~Integer~ {final} +FastFood(name: String, foodCategory: FoodCategory, calorificValueInKcal: double, isVegetarian: boolean) +addRating(rating: int) void +getAverageRating() double @@ -53,8 +53,8 @@ classDiagram } class FastFoodShop { - -name: String - -fastFood: List~FastFood~ + -name: String {final} + -fastFood: List~FastFood~ {final} +FastFoodShop(name: String) +addFastFood(fastFood: FastFood) void +rateFastFood(fastFood: FastFood, rating: int) void diff --git a/docs/exam-exercises/exam-exercises-java1/gift-bag.md b/docs/exam-exercises/exam-exercises-java1/gift-bag.md index d86192ec29..4b5ea01085 100644 --- a/docs/exam-exercises/exam-exercises-java1/gift-bag.md +++ b/docs/exam-exercises/exam-exercises-java1/gift-bag.md @@ -15,24 +15,24 @@ classDiagram Present o-- Person class GiftBag { - -presents: List~Present~ + -presents: List~Present~ {final} +GiftBag() +addPresent(present: Present) void +getMostExpensivePresent() Present } class Present { - -description: String - -priceInEuro: double - -sender: Person - -recipient: Person + -description: String {final} + -priceInEuro: double {final} + -sender: Person {final} + -recipient: Person {final} +Present(description: String, priceInEuro: double, sender: Person, recipient: Person) } class Person { - -name: String - -age: int - -gender: char + -name: String {final} + -age: int {final} + -gender: char {final} +Player(name: String, age: int, gender: char ) } ``` diff --git a/docs/exam-exercises/exam-exercises-java1/parking-garage.md b/docs/exam-exercises/exam-exercises-java1/parking-garage.md index a26f314ac0..95b501b3dc 100644 --- a/docs/exam-exercises/exam-exercises-java1/parking-garage.md +++ b/docs/exam-exercises/exam-exercises-java1/parking-garage.md @@ -17,18 +17,18 @@ classDiagram Vehicle <|-- Bus class ParkingSpot { - -vehicle: Vehicle - -lengthInM: double - -heightInM: double - -isForBusesOnly: boolean + -vehicle: Vehicle {final} + -lengthInM: double {final} + -heightInM: double {final} + -isForBusesOnly: boolean {final} +ParkingSpot(lengthInM: double, heightInM: double, isForBusesOnly: boolean) } class Vehicle { - -make: String - -model: String - -lengthInM: double - -heightInM: double + -make: String {final} + -model: String {final} + -lengthInM: double {final} + -heightInM: double {final} +Vehicle(make: String, model: String, lengthInM: double, heightInM: double) } @@ -41,7 +41,7 @@ classDiagram } class ParkingGarage { - -parkingSpots: ParkingSpot[] + -parkingSpots: ParkingSpot[] {final} +ParkingGarage(numberOfParkingSpots: int) +parkIn(car: Car, parkingSpotNumber: int) String +parkOut(car: Car) String diff --git a/docs/exam-exercises/exam-exercises-java1/shape.md b/docs/exam-exercises/exam-exercises-java1/shape.md index 40f9a88bf9..a7d1443f56 100644 --- a/docs/exam-exercises/exam-exercises-java1/shape.md +++ b/docs/exam-exercises/exam-exercises-java1/shape.md @@ -17,7 +17,7 @@ classDiagram Rectangle <|-- Square class ShapeReader { - -shapes: List~Shape~ + -shapes: List~Shape~ {final} +ShapeReader(file: File) +getCircles() List~Circle~ +getShapesWithMinArea(minAreaInCm2: double) List~Shape~ @@ -29,15 +29,15 @@ classDiagram } class Circle { - -rInCm: double + -rInCm: double {final} +Circle(rInCm: double) +getAreaInCm2() double +getCircumferenceInCm() double } class Rectangle { - -aInCm: double - -bInCm: double + -aInCm: double {final} + -bInCm: double {final} +Rectangle(aInCm: double, bInCm: double) +getAreaInCm2() double +getCircumferenceInCm() double diff --git a/docs/exam-exercises/exam-exercises-java1/student-course.md b/docs/exam-exercises/exam-exercises-java1/student-course.md index d099eb4d57..650a67ab5e 100644 --- a/docs/exam-exercises/exam-exercises-java1/student-course.md +++ b/docs/exam-exercises/exam-exercises-java1/student-course.md @@ -17,28 +17,28 @@ classDiagram Student o-- MatriculationNumber class MatriculationNumber { - -digits: int[] + -digits: int[] {final} +MatriculationNumber(digit1: int, digit2: int, digit3: int, digit4: int, digit5: int, digit6: int, digit7: int) } class Student { - -matriculationNumber: MatriculationNumber - -name: String + -matriculationNumber: MatriculationNumber {final} + -name: String {final} +Student(matriculationNumber: int[7], name: String) } class Lecture { - -code: String - -description: String - -creditPoints: int + -code: String {final} + -description: String {final} + -creditPoints: int {final} +Lecture(code: String, description: String, creditPoints: int) } class StudyCourse { - -description: String - -courseOfStudies: CourseOfStudies - -lectures: List~Lecture~ - -students: List~Student~ + -description: String {final} + -courseOfStudies: CourseOfStudies {final} + -lectures: List~Lecture~ {final} + -students: List~Student~ {final} +StudyCourse(description: String, courseOfStudies: CourseOfStudies) +addStudent(student: Student) void +addLecture(lecture: Lecture) void @@ -50,7 +50,7 @@ classDiagram WI = Wirtschaftsinformatik INF = Informatik BWL = BWL - -description: String + -description: String {final} } ``` diff --git a/docs/exam-exercises/exam-exercises-java1/zoo.md b/docs/exam-exercises/exam-exercises-java1/zoo.md index 9cabf5d24d..25b98713d5 100644 --- a/docs/exam-exercises/exam-exercises-java1/zoo.md +++ b/docs/exam-exercises/exam-exercises-java1/zoo.md @@ -16,8 +16,8 @@ classDiagram Animal <|-- Fish class Zoo { - -name: String - -animals: List~Animal~ + -name: String {final} + -animals: List~Animal~ {final} +Zoo(name: String, animals: List~Animal~) +addAnimal(animal: Animal) void +getBiggestAnimal() Animal @@ -25,9 +25,9 @@ classDiagram } class Animal { - -description: String - -sizeInM: double - -weigthInKg: double + -description: String {final} + -sizeInM: double {final} + -weigthInKg: double {final} +Animal(description: String, sizeInM: double, weigthInKg: double) } diff --git a/docs/exam-exercises/exam-exercises-java2/corner-shop.md b/docs/exam-exercises/exam-exercises-java2/corner-shop.md index 9dfeb2a649..6213759420 100644 --- a/docs/exam-exercises/exam-exercises-java2/corner-shop.md +++ b/docs/exam-exercises/exam-exercises-java2/corner-shop.md @@ -19,15 +19,15 @@ classDiagram class Product { <> - -description: String + -description: String {final} -price: double -currency: String +Product(description: String, price: double, currency: String) } class Goods { - -classOfGoods: ClassOfGoods - -unit: String + -classOfGoods: ClassOfGoods {final} + -unit: String {final} +Goods(description: String, price: double, currency: String, classOfGoods: ClassOfGoods, unit: String) +compareTo(other: Goods) int } @@ -39,8 +39,8 @@ classDiagram class CornerShop { <> - -name: String - -store: Map~Goods, Integer~ + name: String + store: Map~Goods, Integer~ +getAmountByDescription(description: String) Optional~Integer~ +buyGoods(goods: Goods, amount: int) void +sellGoods(goods: Goods, amount: int) void @@ -52,7 +52,7 @@ classDiagram DAIRY_PRODUCTS = Milchprodukte FRUITS = Obst VEGETABLES = Gemüse - -description: String + -description: String {final} } ``` diff --git a/docs/exam-exercises/exam-exercises-java2/dictionary.md b/docs/exam-exercises/exam-exercises-java2/dictionary.md index 9813b9a17d..ad8d736d54 100644 --- a/docs/exam-exercises/exam-exercises-java2/dictionary.md +++ b/docs/exam-exercises/exam-exercises-java2/dictionary.md @@ -19,8 +19,8 @@ classDiagram class Word { <> - -value: String - -language: Language + value: String + language: Language +compareTo(other: Word) int } @@ -33,8 +33,8 @@ classDiagram <> DE = DE, Deutsch EN = EN, Englisch - -code: String - -description: String + -code: String {final} + -description: String {final} } class Dictionary { diff --git a/docs/exam-exercises/exam-exercises-java2/human-resources.md b/docs/exam-exercises/exam-exercises-java2/human-resources.md index a14422c427..ce263f5beb 100644 --- a/docs/exam-exercises/exam-exercises-java2/human-resources.md +++ b/docs/exam-exercises/exam-exercises-java2/human-resources.md @@ -16,8 +16,8 @@ classDiagram class HumanResources { <> - -telephoneBook: Map~TelephoneNumber, Person~ - -staff: List~Person~ + telephoneBook: Map~TelephoneNumber, Person~ + staff: List~Person~ +addTelephoneNumber(telephoneNumber: TelephoneNumber, person: Person) void +addStaff(person: Person) void +getTelephoneNumbersByPersonId(id: int) List~TelephoneNumber~ @@ -25,13 +25,13 @@ classDiagram class Person { <> - -id: int - -name: String + id: int + name: String } class TelephoneNumber { <> - -digits: int[*] + digits: int[*] } ``` diff --git a/docs/exam-exercises/exam-exercises-java2/job-offer.md b/docs/exam-exercises/exam-exercises-java2/job-offer.md index 295613a680..ce4320b61d 100644 --- a/docs/exam-exercises/exam-exercises-java2/job-offer.md +++ b/docs/exam-exercises/exam-exercises-java2/job-offer.md @@ -19,23 +19,23 @@ classDiagram class JobOffer { <> - -id: int - -title: String - -recruiter: Recruiter - -applicants: List~Applicant~ + id: int + title: String + recruiter: Recruiter + applicants: List~Applicant~ +addApplicant(applicant: Applicant) void } class Person { <> - -name: String - -birthdateTimeStamp: long + -name: String {final} + -birthdateTimeStamp: long {final} +Person(name: String, birthdateTimeStamp: long) } class Applicant { - -applicantId: int - -applicationDocuments: List~ApplicationDocument~ + -applicantId: int {final} + -applicationDocuments: List~ApplicationDocument~ {final} +Applicant(name: String, birthdateTimeStamp: long, applicantId: int) +addApplicationDocument(applicationDocument: ApplicationDocument) void } @@ -46,9 +46,9 @@ classDiagram class ApplicationDocument { <> - -description: String - -type: String - -document: File + description: String + type: String + document: File } class JobOfferReader { diff --git a/docs/exam-exercises/exam-exercises-java2/lego-brick.md b/docs/exam-exercises/exam-exercises-java2/lego-brick.md index a630840e73..969ecd996c 100644 --- a/docs/exam-exercises/exam-exercises-java2/lego-brick.md +++ b/docs/exam-exercises/exam-exercises-java2/lego-brick.md @@ -18,14 +18,14 @@ classDiagram class Lego { <> - -id: int + -id: int {final} +Lego(id: int) } class LegoBrick { <> - -dimensions: int[3] - -color: String + -dimensions: int[3] {final} + -color: String {final} +LegoBrick(id: int, dimensions: int[3], color: String) } diff --git a/docs/exam-exercises/exam-exercises-java2/library.md b/docs/exam-exercises/exam-exercises-java2/library.md index 6fb1e230ae..b90c3b1993 100644 --- a/docs/exam-exercises/exam-exercises-java2/library.md +++ b/docs/exam-exercises/exam-exercises-java2/library.md @@ -20,8 +20,8 @@ classDiagram class Library { <> - -name: String - -books: Map~Book, Status~ + name: String {final} + books: Map~Book, Status~ {final} +addBook(book: Book) void +getBookByTitle(title: String) Optional~Book~ +getPaperBooksByStatus(status: Status) List~PaperBook~ @@ -31,32 +31,32 @@ classDiagram <> AVAILABLE = verfügbar LENT = verliehen - -description: String + -description: String {final} } class Book { <> - -id: UUID - -author: Author - -title: String + -id: UUID {final} + -author: Author {final} + -title: String {final} +Book(author: Author, title: String) } class EBook { - -fileFormat: FileFormat - -fileSizeInKb: int + -fileFormat: FileFormat {final} + -fileSizeInKb: int {final} +EBook(author: Author, title: String, fileFormat: FileFormat, fileSizeInKb: int) } class PaperBook { - -pages: int + -pages: int {final} +PaperBook(author: Author, title: String, pages: int) } class Author { <> - -name: String - -nationality: String + name: String + nationality: String } class FileFormat { @@ -64,7 +64,7 @@ classDiagram AZW = Amazon Kindle EPUB = Electronic Publication LRF = Portable Reader File - -description: String + -description: String {final} } ``` diff --git a/docs/exam-exercises/exam-exercises-java2/phone-store.md b/docs/exam-exercises/exam-exercises-java2/phone-store.md index 62fa05f2de..5413c4809e 100644 --- a/docs/exam-exercises/exam-exercises-java2/phone-store.md +++ b/docs/exam-exercises/exam-exercises-java2/phone-store.md @@ -20,8 +20,8 @@ classDiagram USB_C = USB C, true USB_MICRO = USB Micro, false THUNDERBOLT = Thunderbolt, true - -description: String - -isModern: boolean + -description: String {final} + -isModern: boolean {final} } class Brand { @@ -33,22 +33,18 @@ classDiagram class Phone { <> - -description: String - -brand: Brand - -conncetionType: ConnectionType - -numberOfCameras: int - -batteryCapacityInMAh: int - -cpuPowerInGHz: double - -priceInEuro: double - } - - class DataProvider { - +getPhones()$ List~Phone~ + description: String + brand: Brand + conncetionType: ConnectionType + numberOfCameras: int + batteryCapacityInMAh: int + cpuPowerInGHz: double + priceInEuro: double } class PhoneStore { <> - -phones: List~Phone~ + phones: List~Phone~ +query1() List~Phone~ +query2() OptionalDouble +query3(maxPriceInEuro: double) List~Phone~ diff --git a/docs/exam-exercises/exam-exercises-java2/planets.md b/docs/exam-exercises/exam-exercises-java2/planets.md index 60e291f371..fda1538e88 100644 --- a/docs/exam-exercises/exam-exercises-java2/planets.md +++ b/docs/exam-exercises/exam-exercises-java2/planets.md @@ -21,11 +21,11 @@ classDiagram class Planet { <> - -name: String - -diameterInKm: double - -massInE24Kg: double - -moons: int - -type: Type + name: String + diameterInKm: double + massInE24Kg: double + moons: int + type: Type } class Type { @@ -34,10 +34,6 @@ classDiagram TERRESTRIAL_PLANET DWARF_PLANET } - - class Planets { - +getPlanets()$ List~Planet~ - } ``` ## Allgemeine Hinweise @@ -46,8 +42,3 @@ classDiagram Object-Methoden dargestellt - So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden - -## Hinweis zur Klasse _Planets_ - -Die Methode `List getPlanets()` soll alle Planeten des Sonnensystems -zurückgeben. diff --git a/docs/exam-exercises/exam-exercises-java2/shopping-portal.md b/docs/exam-exercises/exam-exercises-java2/shopping-portal.md index ecfcd4b013..159bf60772 100644 --- a/docs/exam-exercises/exam-exercises-java2/shopping-portal.md +++ b/docs/exam-exercises/exam-exercises-java2/shopping-portal.md @@ -16,7 +16,7 @@ classDiagram ShoppingCart *-- Item class ShoppingCart~T extends Sellable~ { - -items: List~Item~ + -items: List~Item~ {final} +ShoppingCart() +addItem(sellable: T, amount: int) void +removeItem(sellable: T) void @@ -24,8 +24,8 @@ classDiagram } class Item { - -sellable: T - -amount: int + -sellable: T {final} + -amount: int {final} -Item(sellable: T, amount: int) +getSubTotalInEuro() double } @@ -37,14 +37,14 @@ classDiagram class Product { <> - -description: String - -priceInEuro: double + description: String + priceInEuro: double } class ShoppingPortal { <> - -user: String - -shoppingCart: ShoppingCart~Product~ + user: String + shoppingCart: ShoppingCart~Product~ +addProductToShoppingCart(product: Product, amount: int) void +removeProductFromShoppingCart(product: Product) void +clearShoppingCart() void diff --git a/docs/exam-exercises/exam-exercises-java2/space-station.md b/docs/exam-exercises/exam-exercises-java2/space-station.md index 73aec52147..42b275bf19 100644 --- a/docs/exam-exercises/exam-exercises-java2/space-station.md +++ b/docs/exam-exercises/exam-exercises-java2/space-station.md @@ -16,16 +16,16 @@ classDiagram class SpaceStation { <> - -name: String - -bays: Map~Integer, SpaceFighter~ + name: String + bays: Map~Integer, SpaceFighter~ +land(bayNumber: Integer, spaceFighter: SpaceFighter) void +getFastestSpaceFighter() Optional~SpaceFighter~ } class SpaceFighter { <> - -id: String - -type: Type + id: String + type: Type } class Type { @@ -35,7 +35,7 @@ classDiagram X_WING = 1050 Y_WING = 1000 TIE_FIGHTER = 1200 - -maxSpeedInKmh: int + -maxSpeedInKmh: int {final} } ``` diff --git a/docs/exam-exercises/exam-exercises-java2/tanks.md b/docs/exam-exercises/exam-exercises-java2/tanks.md new file mode 100644 index 0000000000..90d731bcaa --- /dev/null +++ b/docs/exam-exercises/exam-exercises-java2/tanks.md @@ -0,0 +1,77 @@ +--- +title: Panzer +description: '' +tags: [records, maps, optionals, java-stream-api] +--- + +Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine +ausführbare Klasse und/oder eine Testklasse. + +## Klassendiagramm + +```mermaid +classDiagram + Tank o-- Type + Tank o-- Nation + TankQueries o-- Tank + + class Tank { + <> + name: String + type: Type + nation: Nation + performanceInHorsePower: int + weightInTons: int + lengthInMeters :double + maxSpeedInKmh: int + } + + class Type { + <> + ARTILLERY_TANK + BATTLE_TANK + SHIELD_TANK + WORLD_WAR_II_TANK + } + + class Nation { + <> + CHN + FRA + GER + SWE + USA + } + + class TankQueries { + <> + tanks: List~Tank~ + +printAllTanksWithWeightBT25TonsByType() void + +getAveragePerformanceInHorsePower() OptionalDouble + +getAllNations() List~Nation~ + +isAllTanksMaxSpeedBE50Kmh() boolean + +printLongestTankFromGermany() void + } +``` + +## Allgemeine Hinweise + +- Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und + Object-Methoden dargestellt +- So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die + Object-Methoden wie gewohnt implementiert werden + +## Hinweise zur Klasse _TankQueries_ + +- Die Methode `void printAllTanksWithWeightBT25TonsByType()` soll alle Panzer + mit einem Gewicht von mehr als 25 Tonnen gruppiert nach dem Typ in der Form + _Tank.type: [Tank, Tank,...]_ ausgeben +- Die Methode `OptionalDouble getAveragePerformanceInHorsePower()` soll die + durchschnittliche Leistung in Pfer- destärken aller Panzer zurückgeben +- Die Methode `List getAllNations()` soll die Nationen aller Panzer + zurückgeben +- Die Methode `boolean isAllTanksMaxSpeedBE50KMH()` soll zurückgeben, ob alle + Kampfpanzer eine Höchstgeschwindigkeit von min. 50 km/h besitzen +- Die Methode `void printLongestTankFromGermany()` soll den Namen des längsten + Panzers aus Deutschland auf der Konsole aus- geben. Gibt es keinen Panzer aus + Deutschland, soll stattdessen der Wert `null` ausgegeben werden diff --git a/docs/exam-exercises/exam-exercises-java2/team.md b/docs/exam-exercises/exam-exercises-java2/team.md new file mode 100644 index 0000000000..2a61cd3aa7 --- /dev/null +++ b/docs/exam-exercises/exam-exercises-java2/team.md @@ -0,0 +1,91 @@ +--- +title: Team +description: '' +tags: + [ + inheritance, + polymorphy, + interfaces, + comparators, + exceptions, + records, + generics, + maps, + optionals, + ] +--- + +Setze das abgebildete Klassendiagramm vollständig um. Erstelle zum Testen eine +ausführbare Klasse und/oder eine Testklasse. + +## Klassendiagramm + +```mermaid +classDiagram + Sportsman <|-- Footballer + Team~T extends Sportsman~ o-- Position + Comparable~Footballer~ <|.. Sportsman + + class Footballer { + -numberOfGoals: int + -numberOfAssists: int + +Footballer(name: String, numberOfGoals: int, numberOfAssists: int) + +getScorerPoints() int + } + + class Position { + <> + DEFENDER + GOALKEEPER + MIDFIELDER + STRIKER + } + + class Sportsman { + <> + -name: String {final} + +Sportsman(name: String) + +getScorerPoints() int {abstrakt} + +compareTo(other: Sportsman) int + } + + class Team~T extends Sportsman~ { + <> + name: String + members: Map~T, Position~ + +addTeamMember(member: T, position: Position) void + +getBestScorer() Optional~T~ + +getAllTeamMembersByPosition(position: Position) List~T~ + } + + class Comparable~Sportsman~ { + <> + +compareTo(o: Sportsman) int + } +``` + +## Allgemeine Hinweise + +- Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und + Object-Methoden dargestellt +- So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die + Object-Methoden wie gewohnt implementiert werden + +## Hinweise zur Klasse _Sportsman_ + +- Der Konstruktor soll alle Attribute initialisieren +- Die Methode `int compareTo(other: Sportsman)` soll so implementiert werden, + dass Sportler absteigend nach ihren Scorer-Punkten sortiert werden können + +## Hinweise zur Klasse _Team_ + +- Der Assoziativspeicher `members` beinhaltet als Schlüssel alle Mitglieder der + Mannschaft sowie als Wert deren Position +- Die Methode `void addTeamMember(member: T, position: Position)` soll der + Mannschaft den eingehenden Sportler als Mitglied mit der eingehenden Position + hinzufügen. Für den Fall, dass der Sportler bereits Teil der Mannschaft ist, + soll die Ausnahme `DuplicateKeyException` ausgelöst werden +- Die Methode `Optional getBestScorer()` soll den Sportler mit den meisten + Scorer-Punkten als Optional zurückgeben +- Die Methode `List getAllTeamMembersByPosition(position: Position)` soll + alle Sportler zur eingehenden Position als Liste zurückgeben diff --git a/docs/exam-exercises/exam-exercises-java2/video-collection.md b/docs/exam-exercises/exam-exercises-java2/video-collection.md index e02e44da5c..c4b4940868 100644 --- a/docs/exam-exercises/exam-exercises-java2/video-collection.md +++ b/docs/exam-exercises/exam-exercises-java2/video-collection.md @@ -19,7 +19,7 @@ classDiagram class VideoCollection { <> - -videos: List~Video~ + videos: List~Video~ +addVideo(video: Video) void +importVideos(file: File) void +getVideoByMovieTitle(title: String) Optional~Video~ @@ -27,25 +27,25 @@ classDiagram class Video { <> - -movie: Movie + -movie: Movie {final} +Video(movie: Movie) } class VHS { - -isRewritable: boolean + -isRewritable: boolean {final} +VHS(movie: Movie, isRewritable: boolean) } class BluRay { - -capacityInGb: double + -capacityInGb: double {final} +BluRay(movie: Movie, capacityInGb: double) } class Movie { <> - -title: String - -genre: Genre - -publishingYear: short + title: String + genre: Genre + publishingYear: short } class Genre { @@ -54,7 +54,7 @@ classDiagram HORROR = Horror ACTION = Action COMEDY = Komödie - -description: String + -description: String {final} } ```