Docsity
Docsity

Prüfungen vorbereiten
Prüfungen vorbereiten

Besser lernen dank der zahlreichen Ressourcen auf Docsity


Download-Punkte bekommen.
Download-Punkte bekommen.

Heimse Punkte ein, indem du anderen Studierenden hilfst oder erwirb Punkte mit einem Premium-Abo


Leitfäden und Tipps
Leitfäden und Tipps

Java Grundlagen programmieren, Zusammenfassungen von Informatik

Dieses Dokument behandelt alle Grundlagen von der Programmiersprache „Java“, die jeder Beginner kennen sollte

Art: Zusammenfassungen

2018/2019

Zum Verkauf seit 21.10.2021

Sarahlie
Sarahlie 🇩🇪

1 dokument

1 / 10

Toggle sidebar

Diese Seite wird in der Vorschau nicht angezeigt

Lass dir nichts Wichtiges entgehen!

bg1
Welche wichtigen Konzepte / Begriffe kennzeichnen die objektorientierte Programmierung.
Erläutern sie jeweils.
1) Generalisierung:
“is-a” Beziehung: zwischen 2 Klassen, die in Vererbungsbeziehung stehen
Vaterklasse vererbt ihre Merkmale an die von ihr abgeleitete Klasse
abgeleitete Klasse wird nicht komplett neu definiert, sondern erbt alle Eigenschaften
der Basisklasse & neue Eigenschaften werden hinzugefügt
Klasse B ist ein A (B “is-a” A) -> eine Spezialisierung von Klasse A
Umgekehrt: Basisklasse A = Generalisierung von abgeleiteter Klasse B
Vererbungen können mehrstufig sein -> eine abgeleitete Klasse kann als Basisklasse
für weitere Klassen dienen -> Vererbungshierarchie, die als Baumstruktur dargestellt
werden kann
Klasse Lebewesen (1 Eigenschaft: Alter) = Basisklasse aller anderen Klassen -> alle Klassen erben ihre
Eigenschaften
Klasse Säugetier ist Spezialisierung von Lebewesen-Klasse -> erbt Alter; fügt AnzahlBeine hinzu
Klassen Mensch und Schaf sind von der Säugetier-Klasse abgeleitet. Beide erben die
Merkmale Alter und AnzahlBeine, besitzen jedoch eigene individuelle zusätzliche Eigenschaften.
2) Vererbung:
Eine Subklasse erbt die Methoden und Eigenschaften ihrer Superklasse; die Subklasse
wird um eigene Attribute und Methoden erweitert
Bsp.: Klasse Adresse; keine Veränderungen sollen vorgenommen werden; aber TelNr
soll hinzugefügt werden -> Klasse Adresse erweitern
public class FaxAdresse extends Adresse{
public String telefon;
public String fax;}
FaxAdresse ist Subklasse von Adresse
FaxAdresse erbst alles von Adresse
3) Kapselung:
Data Hiding
Objektorientierung: Gebot von Sicherheit, dass jede einzelne Klasse den Zugriff
auf ihre Strukturen nur durch genau definierte Schnittstellen zulässt -> Methoden
und Attribute müssen vor unkontrollierten Aufrufen geschützt werden
pf3
pf4
pf5
pf8
pf9
pfa

Unvollständige Textvorschau

Nur auf Docsity: Lade Java Grundlagen programmieren und mehr Zusammenfassungen als PDF für Informatik herunter!

Welche wichtigen Konzepte / Begriffe kennzeichnen die objektorientierte Programmierung. Erläutern sie jeweils.

  1. Generalisierung:  “is-a” Beziehung: zwischen 2 Klassen, die in Vererbungsbeziehung stehen  Vaterklasse vererbt ihre Merkmale an die von ihr abgeleitete Klasse  abgeleitete Klasse wird nicht komplett neu definiert, sondern erbt alle Eigenschaften der Basisklasse & neue Eigenschaften werden hinzugefügt  Klasse B ist ein A (B “is-a” A) -> eine Spezialisierung von Klasse A  Umgekehrt: Basisklasse A = Generalisierung von abgeleiteter Klasse B  Vererbungen können mehrstufig sein -> eine abgeleitete Klasse kann als Basisklasse für weitere Klassen dienen -> Vererbungshierarchie, die als Baumstruktur dargestellt werden kann Klasse Lebewesen (1 Eigenschaft: Alter) = Basisklasse aller anderen Klassen -> alle Klassen erben ihre Eigenschaften Klasse Säugetier ist Spezialisierung von Lebewesen -Klasse -> erbt Alter ; fügt AnzahlBeine hinzu Klassen Mensch und Schaf sind von der Säugetier -Klasse abgeleitet. Beide erben die Merkmale Alter und AnzahlBeine , besitzen jedoch eigene individuelle zusätzliche Eigenschaften.
  2. Vererbung:  Eine Subklasse erbt die Methoden und Eigenschaften ihrer Superklasse; die Subklasse wird um eigene Attribute und Methoden erweitert  Bsp.: Klasse Adresse; keine Veränderungen sollen vorgenommen werden; aber TelNr soll hinzugefügt werden -> Klasse Adresse erweitern  public class FaxAdresse extends Adresse{ public String telefon; public String fax;}  FaxAdresse ist Subklasse von Adresse  FaxAdresse erbst alles von Adresse
  3. Kapselung:  Data Hiding  Objektorientierung: Gebot von Sicherheit, dass jede einzelne Klasse den Zugriff auf ihre Strukturen nur durch genau definierte Schnittstellen zulässt -> Methoden und Attribute müssen vor unkontrollierten Aufrufen geschützt werden

-> Aufruf einer Methode aus einer anderen Klasse ist nur erlaubt, wenn die Ausführung tatsächlich notwendig ist.  falsche Zugriffe werden vermieden -> Vermeidung von Fehlfunktionen, Einschleusen von Fremdcode Zugriffspfade:

  • public (+) - Zugriff von außerhalb und innerhalb der Klasse möglich
  • private (-) - Zugriff nur innerhalb der Klasse möglich
  • protected (#) - Zugriff nur innerhalb der Klasse und von Spezialisierungen derselben
  • package (~) - Zugriff für alle Elemente innerhalb des eigenen Pakets
  1. Polymorphismus („Vielgestalt“)
  • wenn zwei Klassen denselben Methodennamen haben, aber Implementierung sich unterscheidet
  • häufig bei Vererbung; einer Variablen können nicht nur Objekte vom Typ der bei der Deklaration angegebenen Klasse zugewiesen werden, sondern auch Objekte vom Typ der Kindsklassen -> alle Kindsklassen verfügen über dieselben Methoden wie die Elternklasse → Code muss nicht geändert werden, wenn eine Unterklasse hinzugefügt wird
  • die Methoden können aber unterschiedlich implementiert werden= "Überschreiben" der Methode.
  • Überladen von Methoden: versch. Methoden mit gleichem Namen, aber unterschiedlicher Liste von Argumenten
  • Überschreiben von Methoden: Methoden mit gleichem Rückgabetyp & gleicher Liste v. Argumenten in einer Sub- und einer Superklasse Was ist eine Klasse, was sind Klassenmethoden und Klassenvariablen? Klasse:
  • allgemeingültige Beschreibung von Dingen, die in verschiedenen Ausprägungen vorkommen können, aber eine gemeinsame Struktur & gemeinsames Verhalten haben
  • = ein Bauplan für Erzeugung von einzelnen konkreten Ausprägungen (-> Objekte oder Instanzen der Klasse)
  • allgemeiner Aufbau: [optionales] [ Modifizierer ] class Klassenname [extends Basisklasse ][implements Interface-Liste ] { Attribute Konstruktoren Methoden … } Klassenmethoden:
  • Methoden, die sich nicht auf ein bestimmtes Objekt beziehen, sondern auf die ganze Klasse
  • Zugriff erfolgt über den Klassennamen
  • Klassenmethoden werden mit Hilfe des Schlüsselworts static deklariert, z.B.: Klasse Schulklasse public static int getKlassenteiler() return Schulklasse.klassenteiler;
  • Zugriff erfolgt über Klassennamen: Schulklasse.getKlassenteiler(30);

Objekte besitzen häufig Methoden, die die Werte ihrer Instanzvariablen lesen/schreiben

  • Bsp: class HundTestlauf{ public static void main(String[] args){ Hund h = new Hund(); -> Hund-Objekt erstellen h.größe = 40; -> Größe des Hundes setzen mit Punktoperator h.bellen(); -> bellen-Methode aufrufen Beschreiben Sie den Zusammenhang zwischen Klassen und Objekten. Eine Klasse ist kein Objekt, sondern wird verwendet, um es aufzubauen
  • Klasse sagt, wie ein Objekt des bestimmten Typs gemacht werden soll
  • Jedes Objekt, das von dieser Klasse gemacht wird, kann eigene Werte für die Instanzvariablen dieser Klasse haben
  • Bsp.: Objekt ist wie ein Eintrag im Adressbuch o Stapel neuer Karteikarten o Jede Karte gleiche leere Felder (Instanzvariablen) o Wenn eine Karte ausgefüllt wird, wird eine Instanz (Objekt) erstellt, Einträge = Zustand der Instanz o Methoden sind Dinge, die man mit der Karte tun kann (getName(), setName()) o Jede Karte kann die gleichen Dinge tun, weiß aber spezifische Dinge Wie kann man Instanzvariablen kapseln? Beschreiben Sie. Geben Sie ein Java-Code-Beispiel. Beschreiben Sie, wie das Überschreiben von Methoden funktioniert.
  • eine Subklasse erbt neben Variablen auch Methoden der Superklasse
  • oft muss diese modifiziert werden → Methode überschreiben
  • Methode besitzt dann den Namen und Parameter-Liste der geerbten Methode
  • neue Methode ersetzt die ursprüngliche in der Superklasse Regeln:
  1. Die Argumente müssen gleich und die Rückgabetypen müssen kompatibel sein
  2. die Zugreifbarkeit der Methode kann nicht geringer sein → keine öffentliche Methode überschreiben und privat machen Was ist ein IS-A Test. Geben sie Beispiele.
  • will man wissen, ob eine Klasse eine andere erweitert → IS-A-Test
  • funktioniert nur in eine Richtung
  • Beispiel siehe Blatt

Was kann man mit einer abstrakten Klasse nicht machen?

  • Klasse, die nicht abstrakt ist, ist konkret
  • um zu verhindern, dass eine Klasse jemals instantiiert wird, also dass jemand ein Objekt dieser Klasse erstellt → Klasse als abstract markieren → Compiler hält jeden Code davon ab, irgendwo eine Instanz dieses Typs zu erzeugen
  • abstrakter Typ kann als Referenztyp verwendet werden
  • abstract class Hundeartig extends Tier{ public void bewegen(){}} Was sind abstrakte Methoden? Wo werden die implementiert?
  • ist eine Methode abstrakt, muss sie überschrieben werden
  • public abstract void essen();
  • eine abstrakte Methode hat keinen Body
  • wird eine abstrakte Methode deklariert, muss die Klasse auch als abstract markiert werden
  • in einer nicht abstrakten Klasse dürfen keine abstrakten Methoden auftauchen
  • eine abstrakte Methode implementieren ist das Gleiche wie das Überschreiben einer Methode
  • die erste konkrete Klasse im Vererbungsbaum muss alle abstrakten Methoden implementieren Wenn eine Objektreferenz oref1 ihren originalen Typ (Katze) verloren hat und zum Beispiel nach Speichern und Lesen aus einer ArrayList jetzt den Typ Object hat: was kann man machen, um den richtigen Typ bei einer neuen Objektreferenz zu verwenden? Wenn eine Klasse ein Interface implementiert, was muss dann in der Klasse gemacht werden?
  • ein Interface ist wie eine 100% reine abstrakte Klasse
  • es definiert nur abstrakte Methoden
  • Interface erstellen: Schlüsselwort interface statt class
  • Interface implementieren, indem man das Schlüsselwort implements verwendet: Hund implements Haustier
  • Klasse kann mehrere Interfaces implementieren
  • eine Klasse, die ein Interface implementiert, muss alle Methoden aus dem Interface implementieren, da alle Interface-Methoden implizit public und abstract sind Was ist Vererbung und was geschieht dabei? Skizzieren Sie einen mindestens dreistufigen Vererbungsbaum und erläutern Sie detailliert, was bei der Objekterzeugung aus einer unteren Klasse passiert. Was ist ein Event Listener? Welches Modell der Ereignisverarbeitung realisiert er?
  • JButton ist Ereignisquelle → Drücken löst Ereignis aus
  • Ereignisempfänger muss erzeugt und beim Button registriert werden
  • gedrückter Knopf ist Action-Ereignis → ActionListener- Interface;
  • Methode actionPerformed, die die Reaktion ausführt class ButtonListener implements ActionListener{ public void actionPerformed(ActionEvent e){ float zufall = (float) Math.random(); Color grauton = new Color (zufall, zufall, zufall); c.setBackground(grauton); }} → Empfänger-Objekt erzeugen und bei Ereignisquelle registrieren Welche Programmiervarianten gibt es bei der Ereignisverarbeitung? Was muss bei separaten ListenerKlassen beachtet werden? Vier Varianten:
  1. Listener-Klasse als innere Klasse realisieren
  2. Listener-Klasse als anonyme Klasse realisieren - Listener-Objekt m.H. einer anonymen Klasse erzeugen; erst unmittelbar beim Erzeugen des Objekts wird die Struktur der anonymen Klasse festgelegt → hinter new-Operator Namen der Superklasse angeben, von der die anonyme Klasse erben soll
  3. Container-Klasse wird selbst zur Listener-Klasse _- man erzeugt nicht mit innerer oder anonymer Klasse ein Listener-Objekt
  • man verwendet das Objekt, in dem man sich zur Laufzeit des Programms gerade befindet, als Listener-Objekt_
  1. Listener-Klasse als separate Klasse realisieren
  • ermöglicht strikte Trennung zwischen grafischer Oberfläche und Ereignisverarbeitung → Listener-Klasse vollständig in eigenständige Klasse auslagern
  • beachten: Listener-Klasse benötigt Zugriff auf die Ereignisquelle, ihren Container und andere Objekte!
  • kann sichergestellt werden, indem man dem Listener-Objekt die entsprechenden Informationen schon bei seiner Erzeugung übergibt → spezieller Konstruktor programmieren Nennen Sie 5 Maus Events und 5 andere (nicht-Maus) Events.
  • soll auf Mausaktionen (Drücken, Loslassen, Bewegung) reagiert werden, muss ein Ereignisempfänger erstellt werden void addMouseListener(Mouse Listener 1) → hinzufügen void mousPressed(MouseEvent e) → Drücken der Maustaste void mouseReleased(MouseEvent e) → gedrückte Maustaste loslassen void mouseClicked(MouseEvent e) → drücken und wieder loslassen void mouseEntered(MouseEvent e) → Mauszeiger bewegt sich in einen Bereich rein void mouseExited(MouseEvent e) → Mauszeiger bewegt sich aus Bereich raus public void windowOpened(WindowEvent e) → wenn Fenster zum 1. Mal sichtbar wurde public void windowClosing(WindowEvent e) → wenn Fenster geschlossen werden soll public void windowClosed(WindowEvent e)→ wenn Fenster geschlossen wurde public void windosActivated(WindowEvent e) → wenn Fenster aktiviert wurde public void windowDeactivated(WindowEvent e) → wenn Fenster deaktiviert wurde Was ist ein Layout Manager? Geben Sie ein Java-CodeBeispiel.
  • die Anordnung von Komponenten in einem Container erfolgt m.H. von Layout-Managern
  • es gibt verschiedene Layout.Manager; alle haben gemeinsam, dass eine Platzierung durch Angabe der genauen Pixelwerte nicht erforderlich ist → automatische Anpassung der Größe der Komponenten
  • Methode: void setLayout(LayoutManager mgr) der Klasse Container setzt den Layout-Manager für den Container
  • z.B.: setLayout(null) → kein Layout-Manager; setSize oder setBounds, um Komponenten zu positionieren
  • z.B. FlowLayout, Standard für Objekte von JPanel; Komponenten werden zeilenweise von oben links nach unten rechts angeordnet Container c = getContentPane(); c.setLayout(new FlowLayout(FlowLayout.LEFT,10,10)); Nennen Sie drei Klassen, die von Java für die Texteingabe zur Verfügung gestellt werden und erläutern Sie kurz deren Zweck. Nennen Sie einige Methoden, die auf diese TexteingabeKlassen angewendet werden können.

Wie bringt man einen Thread zur Ausführung, dem man eine Aufgabe übergeben möchte? Bitte beschreiben inkl. Java CodeAngaben. Welche Zustände kann ein Thread annehmen? Erläutern Sie. Beschreiben Sie das Java Collections-Framework: Zweck, Einsatz, Beispiele, Funktionen, Polymorphie/Generics. Möchte man die Methode sort(List o) aufrufen: welche Bedingung muss erfüllt sein? Welche Alternative gibt es? Was ist ein Nebenläufigkeitsproblem. Beschreiben Sie ein Beispiel. Wie kann man diese Probleme beheben? Was ist ein Deadlock? Was bedeutet „synchronized“ vor einer Methode? Wann sind zwei Objekte gleich? Was müssen Sie programmieren, damit zwei nicht-referenzgleiche Objekte als gleich behandelt werden? Beschreiben Sie, wie riskante Methoden Exception's werfen und was der aufrufende Code machen muss. Beschreiben Sie ein Java Code Beispiel, in dem Sie eine Methode programmieren, die selbst eine bestimmte Exception auslösen soll. Welche Möglichkeiten haben Sie beim aufrufenden Programm? Geben Sie vier Exception- Regeln an.