Section 1

Preview this deck

Wann wird ein Objekt vom Garbage-Collector gelöscht?

Front

Star 0%
Star 0%
Star 0%
Star 0%
Star 0%

0.0

0 reviews

5
0
4
0
3
0
2
0
1
0

Active users

0

All-time users

0

Favorites

0

Last updated

7 years ago

Date created

Mar 1, 2020

Cards (124)

Section 1

(50 cards)

Wann wird ein Objekt vom Garbage-Collector gelöscht?

Front

Wenn es nichtmehr referenziert wird.

Back

Namenskonventionen

Front

-Dateiname = Klassenname -Klassen mit Großbuchstaben und CamelCase -sonstige bezeichner in CamelCase -Konstanten alles Groß und unterstriche

Back

Objektorientierung nach Alan Key

Front

1. „Everything is an object" 2. „Objects communicate by sending and receiving messages" 3. „Objects have their own memory (in terms of objects)" 4. „Every object is an instance of a class" 5. „The class holds the shared behavior for its instances"

Back

Modularisierung

Front

-Gliederung (z.B. hinsichtlich Namensraum) von semantisch zusammengehörigen Programmteilen in Module -Kommunikation von Modulen über wohldefinierte, öffentliche Schnittstellen -Abgrenzung zur Kapselung im Bezug auf verborgene Realisierungsdetails und öffentlichen Schnittstellen nur etwas schwammig möglich

Back

Garbage Collector

Front

automatische Speicherverwaltung in Java

Back

Boxing

Front

Die Umwandlung eines primitiven Datentyps in seinen Wrapper-Typ

Back

Main Methode

Front

public static void main(String[] args) {...}

Back

Funktion eines Konstruktors

Front

-Objekterstellung -Initialisierung von Instanzattributen

Back

Konzepte der Objektorientierung

Front

-Abstraktion -Hierarchisierung -Kapselung -Modularisierung

Back

Syntax Konstruktor

Front

[Sichtbarkeit] Klassenname([Parameterliste]) {...}

Back

Klassenattribute

Front

Attribute die für jedes Objekt einer Klasse die gleiche Belegung besitzen

Back

Abstraktion

Front

-Identifikation und Modellierung von für die Aufgabenstellung benötigten Objekte und Klassen -Konzentration auf die für die Aufgabenstellung relevanten Merkmale eines Objekts -Vernachlässigung der übrigen Informationen

Back

Eigenschaften von Java

Front

-Imperativ -Objektorientiert -Plattformunabhängig -Einfach -Performant -Netzwerkfähig -Open Source -Sicher/Robust

Back

Arten von Beziehungen in der OO

Front

-„Is a"/„kind of" -„has a"/„part of"

Back

Überladen von Methoden

Front

-Unterschiedliche „Varianten" einer Methode Unterscheidung nach Typ und/oder Anzahl der Parameter

Back

Was macht der javac Befehl

Front

Kompilierung/Aufruf des Java Compilers auf der Kommandozeile

Back

Schnittstellen/Interfaces

Front

-Dienen zur Vorgabe bestimmter Methodensignaturen

Back

Rückgabewert void

Front

Eine Methode hat keinen Rückgabewert

Back

Was ist Objektorientierung

Front

-Abbildung realer Sachverhalte in Programmen -Datenstruktur im Vordergrund -Datenstrukturen heißen Objekte und haben bestimmte Eigenschaften und Funktionen -Basis moderner Software Entwicklung

Back

Syntax neues Objekt erzeugen

Front

new Klassenname([Parameterliste])

Back

Spezialisierung

Front

Erweiterung eines bestehenden Datentyps

Back

Syntax Zugriff auf Klassenattribut

Front

Klassenname.attributname

Back

Schlüsselwort "this"

Front

Das Schlüsselwort „this" dient in erster Linie als Objektreferenz auf die aktuelle Objektinstanz innerhalb einer Klasse

Back

Syntax Objekt Referenzieren

Front

Klassenname referenzName;

Back

Arrays

Front

Arrays sind „Objekt-Behälter"

Back

Was wird eingebungen bei java -classpath /lib;. Hauptklasse

Front

-/lib Sucht im Ornder Lib sowie dem aktuellen verzeichnis

Back

JVM

Front

-führt den Bytecode aus -enthält den JIT -Wird von Sun/Oracle für viele Betriebssysteme bereitgestellt

Back

default-Wert einer noch nicht initialisierten Objektreferenz

Front

null

Back

Was bedeutet "null"

Front

Referenz zeigt auf nichts

Back

Syntax Methoden Rückgabe

Front

return Wert/Variable

Back

Syntax Variablen

Front

[Sichtbarkeit] Typ Bezeichner [=Wert]

Back

Kapselung

Front

-Struktur und Verhalten werden in einem Objekt gekapselt (vgl. prozedurale Programmierung) -Interne Abläufe, die für Außenstehende nicht zugänglich sein sollen, werden verborgen → Wird auch als „information hiding" Prinzip bezeichnet -Es werden definierte Schnittstellen angeboten, die den Zugriff von Außen ermöglichen -Durch die Zusammenfassung von Methoden und Attributen entsteht ein Objekt als geschlossene Einheit -Durch das Verbergen von Implementierungsdetails sind diese geschlossenen Einheiten robust -Trennt Abstraktion von der Implementierung (Black-Box Konzept/Theorie)

Back

Vorteile/Nachteile primitive Datentypen

Front

Vorteile: • Einfachere Verwendung durch Literalschreibweise • Bessere Performance Nachteile: • Haben keine Methoden

Back

Versionen von Java

Front

-JavaSE: Standard Edition -JavaEE: Enterprise Edition -JavaME: Java Micro Edition

Back

Polymorphie

Front

1. Ein Objekt kann Instanz mehrerer Klassen sein 2. Unterschiedliche Objekte reagieren auf die gleiche Nachricht unterschiedlich

Back

Probleme der prozeduralen Programmierung

Front

-Trennung von Daten und Funktionen -Direkte(r) Zugriff/Manipulation auf/von Daten möglich -Subjekt/Objekt?!

Back

Syntax Array

Front

Klassenname[] referenzName = new Klassenname[n]

Back

Syntax Methoden

Front

[Sichtbarkeit] Rückgabetyp Name ([Parameterliste]) {. . . }

Back

Ziele der Objektorientierung

Front

-Geringere Komplexität -Wiederverwendbarkeit -Einfache Änderarkeit und Erweiterbarkeit -Beheben der Probleme Prozedualer Programmierung

Back

Wieviele Rückgabewerte hat eine Java-Methode?

Front

Einen oder Keinen

Back

Syntax Klassenattribute

Front

[Sichtbarkeit] static Typ Bezeichner [=Wert]

Back

Klasse

Front

-Bauplan/Schablone zur Erzeugung ähnlicher Objekte

Back

Generalisierung

Front

Ermittlung der Gemeinsamkeiten bestehender

Back

Ablauf einer Java Anwendung

Front

Back

Syntax Klassenmethode

Front

[Sichtbarkeit] static Rückgabetyp Name([Parameterliste]){. . . }

Back

Unboxing

Front

Die Umwandlung eines Wrapper-Typs in einen primitiven Typ

Back

Standard Rückgabewert bei Programmbeendung

Front

0

Back

NullPointerException

Front

Ein Zugriff auf Attribute/Methoden einer Referenz, die auf null verweist

Back

Aufgabe des Java Just in Time Compilers

Front

Bei Bedarf übersetzt der JIT (Just-in-Time) Compiler den Bytecode in nativen Maschinencode

Back

JRE

Front

-Wird zur Ausfhrung von Java Programmen verwendet -Beinhaltet die JVM und weitere Komponenten -Programme können auch im Bundle mit der JRE ausgeführt werden

Back

Section 2

(50 cards)

UML - Auto Vererbung (Beispiel)

Front

Back

was macht die Methode hashCode()?

Front

int hashCode() : *Gibt für das aktuelle Objekt einen Hashcode zurück.* Dieser Hashcode wird in einigen Datenstrukturen und Algorithmen für bessere Effizienz genutzt. Laut JDK API Dokumentation muss hashCode() überschrieben werden, wenn equals() überschrieben wird. Der Hashcode muss für gleiche Objekte gleich, für ungleiche Objekte aber nicht zwangsläufig auch ungleich sein.

Back

Normale innere Klassen

Front

-Können genutzt werden zur erweiterten Strukturierung -Muss eine Verbindung zur äußeren Klasse haben

Back

finally

Front

Dieser Block ist optional und wird ausgeführt sobald der try/catch-Mechanismus beendet ist - also unabhängig davon, ob eine Exception aufgetreten ist oder nicht

Back

Unterschied zwischen Abstrakt und Interface?

Front

In einem Interface kann man nur vorgeben, welche Methoden in einem Kind implementiert werden sollen. In einer Abstrakten Klasse kann man jedoch schon Methoden implementieren, welche als Standard genutzt werden können.

Back

Das Liskovsche Substitutionsprinzip

Front

Ein Programm, welches für eine Klasse K konzipiert wurde, auch mit einer Klasse U, die eine Unterklasse von K ist, ohne Anpassungen funktionieren muss

Back

UML - Attribute (Syntax)

Front

[Sichtbarkeit] [Bezeichner] : [Typ] Statische Attribute werden unterstrichen

Back

OOA

Front

- Probleme (aus Sicht des Kunden) verstehen und durchdringen - Anforderungen an die Software erfassen - Ergebnis ist meist ein Pflichtenheft, bzw. eine Spezifikation - Beschreibt, was die Software leisten können muss

Back

Downcasting

Front

Als Downcasting bezeichnet man den Vorgang, eine Referenz in den Typ ihrer Unterklasse umzuwandeln - Funktioniert nur, wenn die Referenz tatsächlich auf ein Objekt der Zielklasse (oder eine ihrer Unterklassen) zeigt → Prüfung mittels instanceof

Back

Was sollte man auch machen wenn man die Methode equals() überschreibt?

Front

hashCode() überschreiben!

Back

Klassenmethoden

Front

-Klassenmethoden sind ebenfalls an die Klasse gebunden und nicht an ein einzelnes Objekt -Klassenmethoden werden dementsprechend auch anhand des Klassenobjekts aufgerufen

Back

try-Block

Front

Dieser Block ist der normale Programmablauf, der von Anfang bis Ende durchlaufen werden soll. Falls eine Exception auftritt, wird der nächste passende catch-Block aufgerufen.

Back

Möglichkeiten zu Initialisierung statischer Variablen

Front

1. direkt bei der Deklaration mit einem konkreten Wert initialisieren 2. Verwendung eines static initializer Block 3. Implizit werden statische Variablen bei der Instanziierung des Klassenobjekts mit ihrem default-Wert initialisiert

Back

UML - Auto Klasse (Beispiel)

Front

Back

UML - Implementierung

Front

gestrichelten Pfeil mit geschlossener Pfeilspitze (am Interface)

Back

Ablauf beim late binding

Front

1. Zur Laufzeit wird ein Methodenaufruf an einer Referenz erkannt 2. Die JVM prüft den konkreten Typ des Objekts, auf das die Referenz verweist 3. Von der Klasse des Objekts wird die Vererbungshierarchie Stück für Stück von unten nach oben traversiert, bis eine Implementierung für die Methoden gefunden wird 4. Dieser Methodenkörper wird ausgeführt

Back

UML

Front

standardisierte Modellierungssprache zur Spezifikation und Dokumentation von Software

Back

UML - Müll Interface (Beispiel)

Front

Back

Konstanten

Front

-Konstanten werden in Java mit Hilfe des Schlüsselwortes „final" erzeugt -Per Konvention wird der Bezeichner einer Konstante ausschließlich aus Großbuchstaben und Unterstrichen gebildet

Back

Wie macht man eine Klasse Abstrakt?

Front

public abstract class Test{ . . . }

Back

UML - Assoziation

Front

- Beziehungen zwischen Instanzen von Klassen - durchgezogene Linie zwischen zwei Klassen, Interfaces, etc. - Werden genutzt, wenn eine Klasse (o.Ä.) festes Element einer anderen Klasse (o.Ä.) ist

Back

Mit welchem Operator kann überprüft werden, ob das Objekt, auf das eine Referenz zeigt, eine Instanz von einer bestimmten Klasse ist?

Front

instanceof-Operator

Back

UML - Vererbung

Front

durchgezogener Pfeil, geschlossene Pfeilspitze, Richtung Oberklasse

Back

UML - Komposition

Front

• Existenzabhängige Beziehung; Das Element kann nur im Kontext seines umgebenden Elements existieren • Darstellung über Verbindungslinie mit schwarzer Raute am beinhaltenden Element • Bsp.: Raum und Gebäude. Ein Raum kann nicht existieren ohne dass er in diesem Modell Teil eines Gebäudes ist

Back

UML - Sichtbarkeiten

Front

- „+": public - „-": private - „#": protected - „~": package (vgl. Java)

Back

Vererbung

Front

-Vererbt werden alle sichtbaren Attribute und Methoden

Back

Syntax Typecast

Front

Typ bezeichner = (Neuer_Typ) bezeichner2;

Back

UML - Interfaces

Front

<<interface>> markiert

Back

catch-Block

Front

Nach jedem try-Block folgt mindestens ein catch-Block. Eventuell möchte man für unterschiedlichen Exceptions eigene catch-Blöcke anbieten, deshalb sind auch mehrere solcher Blöcke erlaubt

Back

Grundideen des Exception Handlings

Front

-Man schreibt den Code des normalen Programmablaufs in einen tryBlock - Man überlegt, welche Ausnahmen auftreten können - Man fängt diese Exceptions in catch-Blöcken und verarbeitet sie wie gewünscht. - „Aufräumarbeiten" und Code, der in jedem Fall ausgeführt werden soll, schreibt man in einen finally-Block

Back

Klasse Object

Front

Die Klasse Object ist implizit die Oberklasse aller Java-Klassen

Back

Arten innerer Klassen

Front

- (Normale) innere Klassen - Lokale innere Klassen - Statische innere Klassen - Anonyme innere Klassen

Back

Syntax Vererbung

Front

[Sichtbarkeit] class Klassenname extends Oberklasse {. . . }

Back

Wie heißen die verschiedenen access modifier und wie weit beschränken diese jeweils ein Objekt?

Front

Back

UML - Enum

Front

<<enumeration>> markiert

Back

Statische innere Klassen

Front

-Die zu definierende Klasse befindet sich in einer umgebende Klasse und wird mit dem Modifier static versehen -Kann ohne Instanz der äußeren Klasse instanziiert werden

Back

UML - Methoden (Syntax)

Front

[Sichtbarkeit] [Bezeichner]([Bezeichner] : [Typ]) : [Rückgabetyp] Statische Methoden werden unterstrichen

Back

UML - Beziehung

Front

Back

Klasse String

Front

-Klasse zur Verwaltung von Zeichenketten -String Objekte sind immutable (unveränderlich)

Back

Sytnax Enums (erweitert)

Front

[Sichtbarkeit] enum Name { ELEMENT1("Parameter"){ // Implementierung von (abstrakten) Methoden }, ELEMENT2("Parameter"){...}, . . .; // Attributes // Constructor // (abstract) Methods }

Back

Anonyme innere Klasse

Front

Anonyme innere Klassen sind Klassen, die ein Interface implementieren oder eine (abstrakte) Klasse erweitern, keinen Namen besitzen und bei denen Klassendeklaration und Objekterzeugung in einem Konstrukt vereint ist

Back

Sytnax Enums (einfach)

Front

[Sichtbarkeit] enum Name { ELEMENT1, ELEMENT2, . . .}

Back

Wie macht man ein Interface?

Front

public interface Test { . . . }

Back

UML - abstrakte Klassen

Front

kursiv geschrieben & ggf. mit <<abstract>> markiert

Back

throw

Front

Mit Hilfe von throw kann eine Exception explizit geworfen werden, wenn man selbst eine Ausnahme auslösen möchte

Back

Upcasting

Front

Als Upcasting bezeichnet man den Vorgang, eine *Referenz in den Typ ihrer Oberklasse umzuwandeln* - Immer gefahrlos möglich - Bsp.: Eine Cabrio-Referenz, wird in eine Auto-Referenz umgewandelt

Back

UML - Aggregation

Front

• Stärkere „part-of"-Beziehung bei der ein Teil funktional abhängig vom Gesamten ist • Darstellung über Verbindungslinie mit weißer Raute am beinhaltenden Element • Bsp.: Ein Auto Objekt ist nicht voll funktionsfähig ohne ein Motor Objekt, ebenso ist ein konkretes Motor Objekt zwar ohne Auto existenzfähig, funktional aber wenig sinnvoll

Back

Sinn und Zweck von Interfaces?

Front

• Schnittstellendefinition (Liste von Methodensignaturen und evtl. Konstanten) • Typisierung (leere Interfaces können z.B. auch als „Markerinterface" benutzt werden) • Trennung von Schnittstelle und Implementierung wird möglich (Komponenten bzw. Objekte mit demselben Interface sind untereinander austauschbar wie die Stecker von elektrischen Geräten in EuroNorm) • Auf Schnittstellenebene ist „Mehrfachvererbung" gegeben • Gemeinsamkeiten von an sich unterschiedlichen Klassen modellieren

Back

OOD

Front

- Softwarearchitektur entwerfen - Beschreibt, wie die Software die Anforderungen umsetzen soll

Back

Wie werden Parameter in Java übergeben?

Front

In Java werden alle Parameter per „call by value" übergeben

Back

Section 3

(24 cards)

Ausnahmen, die von RuntimeException erben

Front

-Solche Ausnahmen können, müssen aber nicht gefangen werden. - Sollte eine solche fliegen handelt es sich in der Regel um einen Programmierfehler, der behoben werden muss.

Back

Stream: Intermediate operations

Front

-filter() erlaubt selektive Bearbeitung von Stream Elementen -map() transformiert jedes einzelne Elemente mit Mapping Funktion. Mapping auf primitive Werte mittels spezieller Methoden wie mapToInt(). One-to-Many Mapping ist möglich mit flatMap() -peek() erlaubt Blick in die Pipeline als Debugging Hilfe -sorted() sortiert die Elemente eines Streams -distinct() entfernt die doppelten Elemente eines Streams -skip() entfernt die ersten Elemente eines Stream -limit() begrenzt einen Stream auf eine bestimmte Anzahl Elemente

Back

Erzeugungsmuster

Front

-Muster bezüglich der Erzeugung von Objekten -Oft findet eine Entkopplung zwischen Objekterzeugung und der „Repräsentation" des Objekts statt

Back

Factory Method

Front

-Definition einer Schnittstelle und Operationen zum Erzeugen eines Objekts in einer Fabrik -Entweder die Fabrik selbst oder Unterklassen der Fabrikentscheiden, von welcher konkreten Klasse das zu erzeugende Objekt ist

Back

Methoden der Collection

Front

-boolean add(Object e) -boolean contains(Object o) -int size() -boolean remove(Object o) -void clear() -Iterator iterator()

Back

Ausnahmen, die von Exception erben

Front

-Ausnahmen müssen grundsätzlich gefangen werden.

Back

Vorteile Design Patterns

Front

-Nutzung von etablierten Lösungen -Wiederverwendbarkeit (abstrakt/konkret) -Dokumentationshilfe -Erleichtert Kommunikation zwischen Entwicklern und fördert das gemeinsame Verständnis des Codes

Back

Strategy

Front

-Definition einer „Familie" von Algorithmen, z.B. als Methode in einer abstrakten Klasse oder einem Interface -Jeder konkrete Algorithmus ist in eigenen Klasse gekapselt -Der Aufrufer delegiert oft seine Aufgaben an das Strategieobjekt

Back

Hierarchische Ordnung von Interfaces

Front

Back

Singelton

Front

-Eine Klasse besitzt genau ein Exemplar -Es existiert ein globaler Zugriffspunkt auf dieses Exemplar

Back

throws

Front

Markierung an der Methodensignatur, die deutlich macht, dass eine Methode unter Umständen folgende Exception(s) werfen kann

Back

Schnittstelle Map

Front

-Assoziativer Speicher -bildet Schlüssel auf Werte ab -Eine solche Map kann keinen Schlüssel doppelt enthalten und ein Schlüssel kann maximal auf einen Wert zeigen -Das Interface Map ist Teil des Collections Framework, aber nicht innerhalb der Vererbungshierachie des Interface Collection sondern bildet eine eigenständige Hierarchie

Back

Fehler der Java Virtual Machine (Error)

Front

-Hierbei handelt es sich um Ausnahmen (oder besser Fehler) der Java Virtual Machine. -Diese Fehler müssen nicht und sollten auch nicht gefangen werden.

Back

Design Patterns sind ...

Front

- Lösungsempfehlungen/-schablonen für wiederkehrende Problemstellungen in der Softwareentwicklung - keine fertig implementierten Codeschnipsel, sondern Empfehlungen bezüglich der Architektur und Struktur des Codes -ein hervorragendes Mittel um Ziele der Objektorientierung zu erreichen

Back

Arten von Design Patterns

Front

1. Erzeugungsmuster 2. Strukturmuster 3. Verhaltensmuster

Back

Vorteile von Collection Klassen

Front

-Die grundlegenden Interfaces des Collections Framework bilden verschieden Arten von Collections ab -Diese Interfaces erlauben es Collections zu benutzen ohne ihre konkrete Implementierung zu kennen -Interfaces sind hierarchisch geordnet

Back

Observer

Front

-Definiert eine 1-zu-n-Abhängigkeit zwischen Objekten -Änderungen des Zustandes eines Objekts führt zur Benachrichtigung und Aktualisierung der abhängigen Objekte -Abhängige Objekte können sich als Interessenten für Änderungen an der Quelle registrieren und auch wieder abmelden -Bei einer Änderung/einem Ereignis benachrichtigt die Quelle alle registrierten Objekte

Back

Strukturmuster

Front

-Regeln die Art der Beziehungen zwischen mehreren Objekten -Streben eine möglichst lose Kopplung zwischen Klassen/Objekten an, um für eine leichter Änder-/Erweiterbarkeit zu sorgen

Back

Schnittstelle List

Front

-geordnete Collection -dublikate erlaubt -indexierter Zugriff

Back

Schnittstelle Collection

Front

-Eine Collection stellt eine Gruppe von Objekten (bzw. Elementen) dar -Das Interface Collection stellt den kleinsten gemeinsamen Nenner aller Collection Interfaces und Klassen dar

Back

Adapter

Front

Anpassen der Schnittstelle einer Klasse an eine andere vom Klient/Aufrufer erwartete Schnittstelle Eine Adapter Klasse, die das Interface Ziel implementiert und entweder von der Klasse Dient erbt oder per Komposition über ein Objekt der Klasse verfügt

Back

Implementierungen für Collections innerhalb der JDK

Front

Back

Lambda Syntax

Front

- Lambdas bestehen aus „parameter list" und „body" - Diese sind getrennt durch einen „function arrow ->" - Längere und leere Parameter Listen müssen geklammert werden - Parameter Typen können explizit angegeben werden

Back

Basiselemente von Design Patterns

Front

-Abstraktion -Polymorphie -Delegation

Back