JAVA & Objektorientiertes Programmieren
Eine Einführung in das objektorientierte Programmieren mit JAVA Diese Kartei baut auf dem Stoff des Moduls OOP an der HSLU geleitet von Roland Gisler auf.
Eine Einführung in das objektorientierte Programmieren mit JAVA Diese Kartei baut auf dem Stoff des Moduls OOP an der HSLU geleitet von Roland Gisler auf.
Set of flashcards Details
Flashcards | 500 |
---|---|
Students | 19 |
Language | Deutsch |
Category | Computer Science |
Level | University |
Created / Updated | 04.12.2016 / 16.08.2024 |
Weblink |
https://card2brain.ch/box/java_objektorientiertes_programmieren
|
Embed |
<iframe src="https://card2brain.ch/box/java_objektorientiertes_programmieren/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Bei einer while-Schleife wird der Schleifenkörper so oft ausgeführt bis die Bedungung false ist. Die Bedingung wird vor jeder weiteren Ausführung des Schleifenkörper geprüft.
Wie ist die do-while-Schleife aufgebaut?
Was ist die Charakteristik der do-while-Schleifen?
- die Anzahl Schleifendurchgänge ist in der Regel (mindestens zum Zeitpunkt der Implementation) nicht bekannt
- Schleifenkörper wird ausgeführt, solange die Bedingung true ist
- Die Bedingung wird nach jeder Ausführung des Schleifenkörpers geprüft (wird somit immer mindestens einmal ausgeführt!)
Wie wird die for-Schleife aufgebaut?
Wozu ist eine for-Schleife ideal?
Für einfache, zählende Schleifen!
Die Anzahl der Schleifendurchläufe ist bekannt oder im Voraus (eventuell erst zur Laufzeit) berechenbar
Die Zählvariable einer for-Schleife ist auch ausserhalb der Schleife sichtbar
Kurze Namen, wie i, j, k etc. sind bei for-Schleifen für die Zählvariable verpönt
Die for-Schleife ist eine Schleife mit Ausgangstest und wird somit immer mindestens einmal ausgeführt
Sowohl Initialisierung als auch Finalisierung können mehrere Anweisungen beinhalten
Die Finalisierung bei for-Schleifen ist häufig eine einfache Zählanweisung
Was ist sehr wichtig zu beachten bei den Schleifenbedingungen?
Diese müssen "sicher" formuliert werden, denn tritt eine Bedingung nicht ein, resultiert eine Endlos-Schleife!
Ist es sinnvoll bei Schleifen (Iterationen) in der Bedingung auf absolute Werte zu vergleichen?
(z.B. x == 10)
Nein, sondern auf Bereiche, wie z.B. x >= 10. Somit verringert man die Chance auf eine Endlosschleife! Vorallem bei Fliesskomazahlen kann dies wegen Rundungsfehlern kritisch sein.
Wozu dient die break-Anweisung in einer Iteration?
- wird innerhalb eines Schleifen-Blocks ausgeführt, bewirkt das sofortige Beenden der Schleife
- ungeachtet der Schleifenbedingung!
Wozu dient die continue-Anweisung in einer Iteration?
- innerhalb eines Schleifen-Blocks ausgeführt: bewirkt das Springen ans Ende des Schleifenblockes
- es folgt die sofortige Prüfung der Bedingung, abhängig davon wird die Schleife fortgesetzt oder nicht
Sollten break und continue Anweisungen in Iterationen so oft wie möglich verwendet oder eher vermieden werden?
Eher vermieden! Sie werden nicht empfohlen und entsprechen quasi einem goto (ebenfalls eher verpöhnt!)
Was versteht man unter Abstraktion?
Vereinfachung bzw. Reduktion der Realität auf das im jeweiligen Kontext unmittelbar Notwendige.
Wenn wir direkt Klassen entwerfen, abstrahieren wir typisch aus einer "Innenperspektive"
Wenn wir direkt Klassen entwerfen, abstrahieren wir typisch aus einer "Innenperspektive".
Erläutere
- Identifikation von Attributen: Daten zur internen Repräsentation des Zustandes
- Identifikation des Verhaltens: Öffentliche als auch private (interne) Methoden zur Umsetzung dessen.
Wir können die Abstraktion zusätzlich verstärken, indem wir konsequent zwischen dem WAS und dem WIE unterscheiden
Welchem Begriff der objektorienterten Programmierung könnte dieser Fall zugewiesen werden?
"Die (hoch-)komplexe Realisation des Vorganges eines Geldautomatens bleibt hinter einer vergleichsweise einfachen Schnittstelle vollständig verborgen!"
Was bedeutet Modularisierung im Allgemeinen?
Bezeichnet die Zerlegung einer Gesamtaufgabe in Teilaufgaben und die Definition der erforderlichen Schnittstellen, so dass die entstehenden Module möglichst unabhängig voneinander bearbeitet werden können
Was ist die Grundidee der Modularisierung in der objektorienterten Programmierung?
Man macht grosse, komplexe Systeme (besser) beherrschbar, indem man sie in mehrere, kleinere teile zerlegt:
- Teile weisen ein klar definiertes Verhalten auf
- Teile haben eine überschaubare Komplexität und Grösse
- Teile sind möglichst gut in sich abgeschlossen
- Teile sind dadurch einzeln gut wiederverwendbar!
Welchem Begriff können die folgenden beiden Prinzipien zugewiesen werden?
Separation of Concerns (SoC)
Single Responsibility Principle (SRP)
Die Modularisierung ist in der Objektorientierung immer automatisch gegeben
Die Modularisierung wird in der Objektorientierung beinahe nie genutzt
Die Modularisierung wird in der Objektorientierung sehr häufig genutzt, ist aber nicht automatisch gegeben
Auf tiefer Ebene manifestiert sich die Modularisierung in der Objektorientierung typisch durch Klassen, welche Module repräsentieren. -> Datenkapselung
Was sind abstrakte Klassen
Klassen, welche so abstrakt sind, dass es nicht möglich ist, davon Objekte zu instanziieren.
Diese verfügen über keine Implementation (der Methoden)!
Ein Mittel um das WAS (über Methodenköpfe) zu definiere, aber nicht das WIE (keine Implementation der Methodenrümpfe)
Es ist auch möglich, zumindest einzelne Teile von abstrakten Klassen bereits vollständig zu implementiere: Es entsteht quasi ein Mix zwischen Abstrakt und Konkret
Was ist das Schlüsselwort für eine abstrakte Klasse?
abstract (ergänzend zu class)
In Klassen- und Methodenköpfen möglich
Abstrakte Methoden erzwingen implizit eine abstrakte Klasse
Abstrakte Methoden haben einen Methodenrumpf
Bereits eine einzige abstrakte Methode macht auch die ganze Klasse implizit abstrakt
Von abstrakten Klassen können Objekte instanziiert werden
Abstrakte Klassen definieren keinen validen Typ
Abstrakte Methoden legen primär eine Schnittstelle fest und erzwingen, dass diese anderorts implementiert wird (Konkret: in einer Spezialisierung -> Vererbung)
Eine abstrakte Klasse zwingt die Methoden implizit abstrakt zu sein!
(vollständig abstrakte Klasse)
Objekte einer abstrakten Klasse können immer instanziiert werden, wenn man die abstrakten Klassen mit einen abstrakten Konstruktor ergänzt
Objekte einer abstrakten Klasse können nur dann instanziiert werden, wenn man die abstrakten Klassen durch Spezialisierung konkretisiert