Title: Regleralgorithmus
Course: LF07 - Cyber-physische Systeme ergänzen - FI/ITSE - Raspberry Pi

LS 7.2 (KE): Codierung, Funktionsaufruf, Klassendiagramm, Klasse--Objekt, Konstruktor, Reglerdiagramm, Algorithmus, Quellcode

Feedback shared by this category's questions, if right: Die Antwort ist richtig.
Feedback shared by this category's questions, if wrong: Die Antwort ist falsch.

Q: [Image: Objekte Werte Colaflasche Python 3]Aufgabe: Der unten dargestellte Programmcode erzeuge die Flaschen f1, f2 und f3. Welche Werte haben die Flaschen am Ende der Programmausführung?

```def main():
        f1 = Flasche()
        f1.setInhalt("Cola")
        f2 = Flasche()
        f3 = Flasche()
        f1.setVolumen(1.0)
        f2.setInhalt("Fanta")
        f3.setInhalt(f1.getInhalt())
        f2.setVolumen(0.5);
        f3.setVolumen(f1.getVolumen()+f2.getVolumen())
        f2.setInhalt(f1.getInhalt())
#
********************* Hauptprogramm
if __name__ == '__main__':
 main()```
- Zone 1 | Cola
- Zone 2 | Cola
- Zone 3 | Cola
- Zone 4 | 1.0
- Zone 5 | 0.5
- Zone 6 | 1.5
Also offered: Fanta; Sprite
If partly right: Die Antwort ist teilweise richtig.

Aufgabe: Entwickeln Sie die Klasse Quadrat. Im Konstruktor der Klasse wird ein Wert übergeben, der der Kantenlänge des Quadrates entspricht. Diese wird im privaten Attribut  __length gespeichert. Über die Methode get_Area() kann der Flächeninhalt des Quadrates abgefragt werden. [Image: LS7_2-Aufgabe_Klasse entwickeln in Python 3]
Feedback: class Quadrat(): def __init__(self,l): self.__length=l def get_Area(self): return self.__length*self.__length

Aufgabe: Implementieren Sie die Klasse Konto anhand des nebenstehenden Klassendiagramms. [Image: UML Klasse Konto]

Hinweis: Die Methode auszahlen gibt den auszuzahlenden Betrag als Rückgabewert zurück. Hat das Konto nicht genügend Deckung, so wird lediglich der mögliche Betrag ausgezahlt. Enthält das Konto zum Beispiel 500€ und es wird die Methode auszahlen(600) aufgerufen, liefert die Methode den Wert 500 zurück. Natürlich wird der Kontostand um den ausgezahlten Betrag vermindert. Die Methode einzahlen erhöht den Kontostand um den eingezahlten Betrag. Mit get_kontostand kann das aktuelle Guthaben ermittelt werden.
Feedback: class Konto(): def __init__(self): self.__kontostand=0.0 def einzahlen(self, betrag): self.__kontostand += betrag def auszahlen(self, betrag): if self.__kontostand > betrag: self.__kontostand -= betrag return betrag else: betrag = self.__kontostand self.__kontostand=0.0 return betrag def get_kontostand(self): return self.__kontostand

Q: Beim Entwickeln des Quellcodes für Ihr Projekt taucht beim Debuggen folgende Fehlermeldung auf:

[Image: Debugger Fehlermeldung]

Geben Sie die beiden dafür wahrscheinlichsten Gründe an!
- Die lines Bibliothek ist auf dem Zielsystem nicht installiert. (Das ist falsch, lines ist ein Array pip install paho-mqtt pip install paho-mqtt pip install paho-mqtt pip install paho-mqtt)
- Hier wird ein Stringwert durch einen float dividiert (Ist richtig, das darf natürlich nicht sein, der Typecast fehlt)
- Es fehlt ein Typecast (Nämlich float())
- Der Doppelpunkt hinter tempStr+2 erzeugt einen Syntaxfehler
A: Hier wird ein Stringwert durch einen float dividiert / Es fehlt ein Typecast
Feedback: Debugging ist sehr hilfreich, aber man muss die Fehlermeldungen verstehen

Q: Ordnen Sie den Aussagen die passenden Begriffe zu!

[...]: Eine Methode, die einmalig beim Erzeugen eines Objektes automatisch aufgerufen wird und zur Initialisierung des Objektes dient.
[...]: Eine Schreibweise, mit der man auf Attribute oder Methoden eines Objekts zugreifen kann. <Objekt>.<Methode>
[...]: Auf ein Attribut oder eine Methode kann von außerhalb der Klasse zugegriffen werden.
[...]: Die Sichtbarkeit eines Attributes oder einer Methode ist auf den Bereich der Klasse beschränkt. Von außen kann darauf nicht zugegriffen werden.
[...]: Eine Notation aus der UML, mit der der Bauplan einer Klasse oder die Beziehungen zwischen Klassen beschrieben werden kann.
[...]:Eine lose Bindung zwischen zwei Klassen. Die erste Klasse ist zwar abhängig von der zweiten Klasse für deren Funktion. Wenn ein Objekt der ersten Klasse gelöscht wird, bleiben die Instanzen der zweiten Klasse erhalten.
Also offered: Destruktor; Erzeuger; Schweizerische Notation; Abtrennung; global; lokal; Klassenrelation; Klassensynopse; Komposition
A: Konstruktor; Punktnotation; public; private; Klassendiagramm; Aggregation
If partly right: Die Antwort ist teilweise richtig.