©
DHBW Ravensburg · V2026-03-25
Termin: 24.04.2025
Unterscheidung zwischen:
└── root
└── de
└── dhbw
└── ravensburg
└── icu4j
└── Patient.java
package de.dhbw.ravensburg.icu4j;
class Patient {
private String name;
private int age;
Patient(String name, int age) {
this.name = name;
this.age = age;
}
String getName() {
return name;
}
int getAge() {
return age;
}
}
import java.util.Scanner;
class ScannerExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name + "!");
scanner.close();
}
}
class ScannerExampleQualified {
public static void main(String[] args) {
java.util.Scanner scanner = new java.util.Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name + "!");
scanner.close();
}
}
import java.math.*;
public class MathWildcard {
public static void main(String[] args) {
BigInteger a = new BigInteger("1");
BigDecimal b = new BigDecimal("2");
System.out.println("Number: " + a);
System.out.println("Number: " + b);
}
}
import static java.lang.Math.PI;
public class MathStatic {
public static void main(String[] args) {
System.out.println("PI: " + PI);
}
}
filmtools.FilmUtils in diesem Paket mit einer Methode calculateAverageOfRatings(double[] movieRatings).FilmApp, die diese Methode verwendet. Wo muss diese Klasse gespeichert
werden, um ein Import-Statement zu verwenden?
module org.mariopfob {}
module org.mariopfob {
exports programming;
}
module de.svgruppe {
requires org.mariopfob;
}
package newsapp;
import programming.Feed;
public class NewsApp {
public static void main(String[] args) {
Feed feed = new Feed("Example Feed", "https://example.com/feed");
System.out.println("Feed Name: " + feed.feedName());
}
}
(2nd Preview)
Siehe Skript
package de.dhbw.ravensburg.icu4j;
class HospitalUtils {
double calculateBodySurfaceArea(double height, double weight) {
// Option 1: BSA in m² is used for drug dosing
return Math.sqrt((height * weight) / 3600); // Option 2: BSA in m² is used for drug dosing
}
}
package de.dhbw.ravensburg.icu4j;
class MedicamentValidator {
boolean validateMedicamentName(String medicamentName) {
/*
* Examples of valid names:
* - "Aspirin"
* - "Paracetamol"
* - "Ibuprofen"
* Examples of invalid names:
* - "A" (too short)
* - "Paracetamol123" (contains numbers)
* - "Ibuprofen!" (contains special characters)
* - " " (empty string)
*/
if (medicamentName == null || medicamentName.trim().isEmpty()) {
return false; // Invalid name
}
if (medicamentName.length() < 3 || medicamentName.length() > 50) {
return false; // Invalid length
}
if (!medicamentName.matches("[a-zA-Z\\s]+")) { // Regex: siehe Kapitel 8
return false; // Invalid characters
}
return true;
}
}
package de.dhbw.ravensburg.icu4j;
class IcuMonitor {
/**
* Counts the number of patients in the ICU who are children (under 18 years old).
*
* @author Dr. Shaun Murphy
* @since 0.0.1
* @param patients Array of {@link Patient} to be monitored.
* @return The number of children in the ICU.
*/
int countChildrenPatientsInICU(Patient[] patients) {
int childCount = 0;
for (Patient patient : patients) {
if (patient.getAge() < 18) {
childCount++;
}
}
return childCount;
}
}
package de.dhbw.ravensburg.icu4j;
class Patient {
private String name;
private int age;
Patient(String name, int age) {
this.name = name;
this.age = age;
}
String getName() {
return name;
}
int getAge() {
return age;
}
}
package de.dhbw.ravensburg.icu4j;
class CancerPatient extends Patient {
private String cancerType;
private String treatment;
CancerPatient(String name, int age, String cancerType, String treatment) {
super(name, age);
this.cancerType = cancerType;
this.treatment = treatment;
}
String getCancerType() {
return cancerType;
}
void setCancerType(String cancerType) {
this.cancerType = cancerType;
}
String getTreatment() {
return treatment;
}
void setTreatment(String treatment) {
this.treatment = treatment;
}
}
package de.dhbw.ravensburg.icu4j;
interface Operating {
boolean isPatientStillAlive(int heartRate);
}
package de.dhbw.ravensburg.icu4j;
class InvasiveOperation implements Operating {
@Override
public boolean isPatientStillAlive(int heartRate) {
return heartRate > 0;
}
}
Mehrere Möglichkeiten, u.a.
Implementiere eine PasswordValidator-Klasse, die Passwörter anhand verschiedener Kriterien (Mindestlänge, Sonderzeichen, Zahlen, Groß-/Kleinbuchstaben) überprüft.
Erstelle für jeden Validierungsfall eine spezifische Exception (z.B. TooShortPasswordException, NoSpecialCharacterException) und sammle alle auftretenden Fehler, um sie gebündelt zurückzugeben, anstatt bei dem ersten Fehler abzubrechen.
Siehe Skript
Siehe Skript
Implementiere eine zirkuläre Liste auf Basis einer LinkedList für Strings.
String getNext(), die bei jedem Aufruf das nächste Element zurückgibt.
Siehe Skript
Aufgabe 4 aus dem Skript
Siehe Skript
Aufgabe 5 im Skript
Siehe Skript
Vector-Klasse nicht relevant
DrugCompatibility mit einer main-Methode.ActiveIngredient, das prüft, ob ein Wirkstoff für einen Patienten mit bestimmten Allergien geeignet istPatient und Drug, das prüft, ob ein Medikament für einen Patienten basierend auf Alter, Gewicht und Allergien geeignet istDrug und String, die eine Standarddosierungsempfehlung erstellt
Implementiere ein System zur Analyse von Banküberweisungen mit Stream-Operationen. Erstelle dazu eine Klasse Überweisung mit Attributen für Sender, Empfänger, Betrag und Datum. Entwickle anschließend Stream-Pipelines, die folgende Anforderungen erfüllen:
Collectors.groupingBy() und Collectors.mapping()flatMap() für einen gegebenen Kunden alle direkten und indirekten Zahlungsverbindungen (Überweisungen über maximal einen Zwischenkunden) ermittelt
+ Constraint Propagation
+ Constraint Propagation
| Algorithmus | Zeitkomplexität (Best/Avg/Worst) | Speicher | Stabil | Bemerkungen |
|---|---|---|---|---|
| Bubble Sort | O(n)/O(n²)/O(n²) | O(1) | Ja | Einfach, ineffizient für große Arrays |
| Selection Sort | O(n²)/O(n²)/O(n²) | O(1) | Nein | Einfach, ineffizient für große Arrays |
| Insertion Sort | O(n)/O(n²)/O(n²) | O(1) | Ja | Effizient für kleine Arrays |
| Quicksort | O(n log n)/O(n log n)/O(n²) | O(log n) | Nein | Schnell in der Praxis |
| Mergesort | O(n log n)/O(n log n)/O(n log n) | O(n) | Ja | Garantierte Performance |
Entwickel eine Patientenverwaltung für eine Arztpraxis, die Patienten nach Dringlichkeit der Behandlung (Triage-System) und Ankunftszeit sortiert. Stelle sicher, dass der Algorithmus stabil ist.
| Algorithmus | Zeitkomplexität | Speicherkomplexität | Anforderungen | Besonderheiten |
|---|---|---|---|---|
| Lineare Suche | O(n) | O(1) | Keine | Einfachste Implementierung |
| Binäre Suche | O(log n) | O(1) | Sortiert | Effizient für große Datenmengen |
| Interpolation | O(log log n) | O(1) | Sortiert, gleichmäßig verteilt | Schnell bei gleichmäßiger Verteilung |
| Exponential | O(log n) | O(1) | Sortiert | Gut für unbegrenzte Arrays |
| Fibonacci | O(log n) | O(1) | Sortiert | Verwendet nur Addition/Subtraktion |
| Hash-basiert | O(1) | O(n) | Keine | Schnellster Zugriff, benötigt Vorverarbeitung |
Entwickle eine Suchfunktion für ein Rezeptverwaltungssystem, das es Nutzern ermöglicht, Rezepte basierend auf verfügbaren Zutaten zu finden. Die Anwendung soll Rezepte zurückgeben, wenn alle angegebenen Zutaten enthalten sind. Implementiere zwei verschiedene Suchstrategien und vergleiche deren Effizienz bei einem Datensatz mit 1000 Rezepten.