Aufgabe Vorschlag C - 1 - Klassen und Methoden implementi… · Abitur Hessen Technische Informatik LK 2022
Thema: Klassen und Methoden implementieren · Aus der Prüfung LK (2022)
Aufgabenstellung
Gewächshaus
Ein Gewächshaushersteller möchte eine Serie automatisierter Gewächshäuser herausbringen. Hierzu benötigt er eine Software, die die Sensoren im Gewächshaus überwacht und abhängig von den erfassten Werten und den von den Benutzerinnen bzw. Benutzern (im Folgenden Benutzer genannt) eingestellten Schwellwerten verschiedene Prozesse im Gewächshaus steuert.
Material 1: UML-Klassendiagramm
Material 2: ServerSocket und Socket
Material 3: UML-Sequenzdiagramm für Client-Server-Kommunikation
1.3 Zur Konfiguration der Bewässerung im Modus „Bodenfeuchte“ dient die Methode konfiguriereBewaesserung(Benutzer benutzer, int wassermenge, int schwellwert). Sie fragt zuerst bei der Benutzerverwaltung nach, ob der Benutzer berechtigt ist, die Bewässerung zu konfigurieren. Ist er berechtigt, werden die Wassermenge und der Schwellwert gesetzt. Damit ist die Konfiguration abgeschlossen.
Die Methode holeFeuchtigkeit(Benutzer benutzer) berechnet den Mittelwert der Messwerte aller Feuchtigkeitssensoren und gibt ihn zurück. Auch diese Methode prüft zuerst die Berechtigung des Benutzers. Besitzt der Benutzer keine Berechtigung, gibt sie als Ergebnis den Wert -1 zurück.
Implementieren Sie die Klasse Gewaechshaussteuerung mit allen Attributen, dem Konstruktor und den oben beschriebenen Methoden gemäß dem UML-Klassendiagramm in Material 1 so, dass die beschriebenen Vorgänge durchgeführt werden können.
Hinweise: Die übrigen Methoden sind nicht zu implementieren. Die Berechtigungen sind Aufgabe 1.1 zu entnehmen.

Lösung
Nach den offiziellen Korrekturhinweisen
1.3 Implementieren Sie die Klasse Gewaechshaussteuerung mit allen Attributen, dem Konstruktor und den oben beschriebenen Methoden.
Lösung: ```java import java.util.*; public class Gewaechshaussteuerung { private int schwellwert; private String uhrzeit; private String wochentag; private String startzeit; private String endzeit; private double untererSchwellwert; private double obererSchwellwert; private Bewaesserung bewaesserung; private Fensteroeffner fensteroeffner; private Beleuchtung beleuchtung; private ArrayList<Sensor> feuchtigkeitssensoren = new ArrayList<Sensor>(); private ArrayList<Sensor> helligkeitssensoren = new ArrayList<Sensor>(); private ArrayList<Sensor> temperatursensoren = new ArrayList<Sensor>(); private Benutzerverwaltung benutzerverwaltung; public Gewaechshaussteuerung(Benutzerverwaltung benutzerverwaltung) { schwellwert = 0; uhrzeit = "00:00"; wochentag = "Montag"; startzeit = "00:00"; endzeit = "00:00"; untererSchwellwert = 0.0; obererSchwellwert = 0.0; bewaesserung = new Bewaesserung(); fensteroeffner = new Fensteroeffner(); beleuchtung = new Beleuchtung(); this.benutzerverwaltung = benutzerverwaltung; } public void konfiguriereBewaesserung(Benutzer benutzer, int wassermenge, int schwellwert) { if (benutzerverwaltung.pruefeBerechtigung(benutzer, Benutzerverwaltung.GAERTNER)) { this.schwellwert = schwellwert; bewaesserung.setWassermenge(wassermenge); } } public double holeFeuchtigkeit(Benutzer benutzer) { if (benutzerverwaltung.pruefeBerechtigung(benutzer, Benutzerverwaltung.GAERTNER) || benutzerverwaltung.pruefeBerechtigung(benutzer, Benutzerverwaltung.HILFSGAERTNER)) { double mittelwert = 0.0; for (Sensor sensor : feuchtigkeitssensoren) { mittelwert += sensor.getWert(); } mittelwert = mittelwert / feuchtigkeitssensoren.size(); return mittelwert; } else { return -1.0; } } } ```
Die ausführliche Erklärung Schritt für Schritt (mit KI) gibt es mit Premium. Premium
Löse sie direkt hier: automatische Korrektur, Hinweise und Lösung Schritt für Schritt.
‹ Aufgabe Vorschlag B - 1 - Klassen und Methoden implementi… · LK 2022 · Aufgabe Vorschlag A - Aufgabe 1.3 · LK 2021 ›