Flashcards in the set

Haven't started (76)

Schlüsselwörter
Class, public, static, void, final, abstract
Editieren
Schreiben/Ändern von Java-Programmen

Klassenname.java
Kompilieren
Zuvor geschriebener Quelltext in Bytecode überführen

javac Klassennahme.java
Ausführen
Java Interpreter führt Programm aus

java Klassenname
Compilerfehler
Fehler, die Compiler hindern Programm korrekt zu übersetzen

--> werden vom Compiler gefunden und mit Zeihlenangabe gemeldet

zB Tippfehler
Variablen
Speicherplatz für Werte

Besitzen:
  • Typ (Char, int, double)
  • Namen
  • Wert





















Regeln für Bezeichner:
  • Buchstaben
  • Unterstrich (_)
  • Dollarzeichen ($)
  • 10 Ziffern (0-9) Aber nicht mit Zahl beginnen!
  • keine Schlüsselwörter
Primitive Datentypen

Datentyp
= konkreter Wertebereich

--> legen Mengen fest

163891297765e09602a109a8.95556997phpyUh0kg.jpg157489925065e1937ae52319.23656832phpKz3mxS.jpg
Komplexe Datentypen
Datentyp
= konkreter Wertebereich

206266446065e09637287637.57093787phphGOEWI.jpg
Literale
Konstanten der Datentypen
194251615465e193937fbe44.07294108phpXsdHN6.jpg
Deklaration
Variable dem Programm bekannt machen / Arbeitsspeicher mit Namen reservieren

Typname Variablename;
int number;
Zuweisung / Initialisierung
Existierenden Variable neuen Wert zuweisen

Variablename = Wert;
number = 10;
Deklaration und Initialisierung in einem Schritt
Typname Variablename = Wert;
int number = 10;
Syntaxfehler
Wenn Code nicht gemäß den Syntaxregeln von Java geschrieben ist
Ausdrücke
Setzten sich zsm aus Operanden (Variablen, Literalen, etc) und Operatoren (Anweisung was gemacht wird)
Operatoren
Verarbeiten ein/zwei Operanden und liefern Ergebnis

Zuweisungen erfolgen von rechts nach links
13040977565e19506a836b1.82527169phpS2ijf1.jpg
Typumwandlung (casten)
Um Wert eines bestimmten Typs in eine Variable eines anderen Typs zu schreiben


Zb:
double d = 3.9;
int i = (int) d;
--> d = 3.9 , i = 3


int i = 3;
double d = i;
--> i = 3 , d = 3.0
43558227465e1969b3c6ee0.04688384phpRVKMZo.jpg
Vergleichsoperatoren / relationale Operatoren
Vergleichen 2 Variablen/Literale
--> boolesche Rückgabewert
136485315865e19bd00ccc59.68512416phpkON9l8.jpg
Logische Operatoren / boolesche Operatoren
Verknüpfen boolesche Variablen
--> boolesche Rückgabe
35420305865e19c2764db82.32311026phpNRvOQJ.jpg
Operatorenpräzedenz
38197402165e19d02dffe47.13086373phpmrO3mf.jpg
if-Bedingung
nur ausgeführt wenn true
178096616565e19decef5760.00145651phpTX1cAK.jpg
if else Bedingung
83288952165e19e116341d3.55572653phpCOrmwt.jpg
while-Schleife
Schleife wird nur so lange durchlaufen solange Bedingung stimmt
24373219965e19f6dc98c99.31685768php7Wv7g1.jpg
Inkrement/ Dekrement Operatoren
212219134365e19febaedba0.08997514phpgVOcLt.jpg
for-Schleife
85104894765e1a1b1cba1a9.95464983phpNsmM6m.jpg
Arrays
Geordnete Sammlung von Datentypen
(Referenzdatentypen)

--> Referenz und Daten liegen getrennt im Arbeitsspeicher

--> Kopien sind nur Kopien der Referenz

--> Aufruf einer Methode mit Referenzdatentyp wird nur Referenz kopiert NICHT Inhalt
119917498465e1b41bac9531.45554282phpp9J9Ss.jpg
Kopie eines Arrays
29800395965e1ba79c39ec9.31236432phpCpZhF8.jpg
Methoden in Klassen auslagern
4603929665e1e692bc3979.54980989phpWutKxt.jpg
Mehrdimensionale Arrays
59594729765e1e8991933e4.62905428phplsaREr.jpg
Rekursion
Rekursiver Aufruf einer Methode:
Methode ruft sich selbst wieder auf


Benötigen:
1. Grundzustand (Abbruchbedingung) zum Aufhören
2. rekursiven Funktionsaufruf
197269482365e1eba7681f97.19879679phptN2a9X.jpg
Rekursion Bsp
45734892165e1ecf3a496b3.27368368phpbILujE.jpg
Komplexe Datentypen

(Referenzdatentypen)
Zuordnung durch: Klassen

Skalierbarkeit durch: Arrays von Objekten

--> Konstruktion von neuen Datentypen aus primitiven Datentypen
Klassen als komplexe Datentypen
vereint Attribute, die alle zu einem Objekt gehören


Attribute stehen direkt in der Klasse --> stehen allen Methoden zur Verfügung


Attribute ab jetzt immer private! (Nur innerhalb der Klasse zugreifen)
53185078565e2085398a561.48465722phpX6vd2D.jpg
Objekte (komplexe Datentypen)
Initialisierte Variablen eines Klassendatentyps


Konkrete Instanz einer Klasse, gebaut nach Bauplan (Datentyp) der Klasse


besitzen:
  • Identität (Speicherplatz Verweis)
  • Attribute ( Eigenschaften)
  • Verhalten (spezifiert durch Methoden)
146049670065e20a770deee5.88180126phpH4uPiW.jpg
Objekt (komplexe Datentypen)

Erzeugung
Standardwerte

Boolean: false
Char: \u0000
int: 0
double: 0.0
Referenz Datentypen: null
149485829565e20d055b8fa0.49589028phpe4186E.jpg
Zugriff auf public Attribute eines Objekts
82630446065e20f641944f4.43995624phpZHXxZG.jpg
Hauptklasse
besitzt main-methode--> greift über diese direkt/indirekt auf andere Klassen zu

Nur Hauptklasse muss kompiliert werden

Dann ausführen
Arrays von Objekten
188510894465e2138d89d1c4.89379167php4dxpjr.jpg
Objekte von Referenzen
Referenz zeigt auf Bereich im Speicher wo Objekt abgelegt ist
105351017565e2157d46f8f1.72189926phpvUekjX.jpg
Gültigkeit innerhalb einer Klasse
Oberste Stufe
deklariert auf Klassenebene --> Attribute

Mittlere Stufe
deklariert auf Methodenebene --> lokale Variablen / Parameter

Unterste Stufe
deklariert innerhalb Block (z.B. Schleife) --> lokale Variable
71918778065e2ec64dbcda3.05970210phpFAGvwJ.jpg
Zugriffsmodifikatoren
Private
nur innerhalb selber Klasse sichtbar

Default
nur innerhalb des selben packages

Protected
innerhalb selben Package überall, von außen erbenden Klassen

Public
von überall sichtbar


--> minimal mögliche Sichtbarkeit verwenden
57852696065e217c86eaf90.14528516php7uCZLh.jpg
Objektmethoden
können Zustand eines Objekts ändern (nicht statisch!)
65515375065e2f08eb943e1.59431377phpRWErjx.jpg
Shadowing

(des Bezeichners des Attributs)
Attribut und lokale Variable mit selben Name in einer Methode


--> Zugriff auf Attribut: this. zB this.nummer

--> Zugriff auf lokale Variable: zB nummer
Getter
Methode zum Wert auslesen eines Attributs

--> hat Rückgabewert

-->bekommt keine Parameter übergeben
32673144065e2f371ddae29.52895270phpcMjx8j.jpg
Setter
Methode zur Wert Zuweisung eines Attributs

--> Rückgabetyp void

--> bekommen Parameter übergeben
105193383165e2f48ae59481.63423179phpQpVkm2.jpg
Zugriff auf statische Methoden und Variablen
statische Methoden: Ausführung eigenständiger Funktionen


Zugriff:
Klassenname.methodenname ( )
oder
Klassenname.variablenname
137250652765e47e5085ea85.53937509phpWZiLWK.jpg
Zugriff auf Objektmethoden
Objektmethoden: konkrete Interaktion mit Objekt



Zugriff:
über ein konkretes Objekt

Objektname.methodenname (Parameter)
132515299565e304647e6b62.90371516phpapgsbL.jpg
Konstruktor
Methode zur Initialisierung von Attributen

Aufruf: bei Erzeugung von Objekt mit new-Operator
Name: wie Klasse
Sichtbarkeit: public
Rückgabetyp: keinen!

Können überladen werden

Default Konstruktor solange kein anderer implementiert wurde
parameterloser Konstruktor
164744839765e306ee8b5c43.64327889phpHqfz4L.jpg
parametrisierter Konstruktor
Konstruktor mit Übergabeparametern

(bei Objekterzeugung können Werte übergeben und sofort den Attributen zugewiesen werden)


Klasse kann mehrere Konstruktoren haben solange sie sich in Typ und Anzahl der Parameter unterschieden
95872332565e30a4314ae88.06737565phpB8yX6Z.jpg
Vererbung
erlaubt gemeinsame Attribute und Methoden den spezialisierten Klassen bereit zu stellen, wobei sie nur einmal geschrieben werden müssen


Superklasse
private Attribute können nur indirekt über Methoden in der Superklasse, die nicht privat sind, verwendet werden


Subklassen
Objekte beinhalten/speichern Attribute und Methoden der Super- und der Subklasse
58315953265e48274e08075.14301150phpWRMcVr.jpg
Vererbung programmieren
Vererbung von Klassen mit ´extendsˋ


Alle Klassen, die kein extends enthalten, stammen von der Klasse ˋObjectˋ

--> alle Klassen erben direkt/indirekt von ˋObjektˋ
41840079665e332b01e9c97.17765014phpdQ0hal.jpg
Überladen
mehrere Methoden mit selben Namen aber andere Anzahl an Parametern
9366287965e32b38bd4d83.53259983php8rEBmF.jpg
Überschreiben
Methode neu definieren:

selber Name, selbe Rückgabetyp und gleiche Parameter. (nur Überschrieben in Klasse wo überschrieben wurde und allen zugehören Subklassen)
1055507365e32bec771e69.83875514phpi9oZea.jpg
Superreferenz
für Zugriff auf überschriebene Methoden und Attribute (Anwendung auf die Superklasse)


--> ˋsuper´ funktioniert so ähnlich wie ˋthisˋ
92315397365e3338194b3e2.93649957phpb38Lyy.jpg
parameterlosen Konstruktor aufrufen
Konstruktor der Superklasse kann nicht vererbt werden


Superreferenz bezieht sich auf ganze Superklasse.--> verwenden um Konstruktor aufzurufen
84519468165e335f05441c4.21731290phpL4lqc1.jpg
parametrisierten Konstruktor aufrufen
muss als erster Methodenaufruf im Subkonstruktor aufgerufen werden!
113003312265e338367cbf97.31219994phpXG9OfP.jpg
Polymorphie
Eigenschaft von Referenzvariablen (schiff) der Superklasse (Schiff), Objekte von Subklassen (Containerschiff) referenzieren zu können

--> anders herum geht nicht
100279488665e33b27b69fa1.84729823phptxRCju.jpg
Polymorphie casten
Polymorphie

= Eigenschaft von Referenzvariablen (schiff) der Superklasse (Schiff), Objekte von Subklassen (Containerschiff) referenzieren zu können

--> anders herum geht nicht


Da die Referenzvariable vom Typ der Superklasse ist, muss die Referenzvariable nach dem Objekt der Subklasse gecastet werden um Methoden der Subklasse aufrufen zu können
166428871965e33cfa7b63e4.09445519phpjdMQKM.jpg
Instanceof
um Typ eines referenzierten / tatsächlichen Objekts festzustellen
169160224665e33df91a0821.79305061phpEAdmrH.jpg
Instance of Bsp
143730974165e340960b2c63.17986918php9VTLPg.jpg
abstrakte Methoden
Es fehlen Methodenrümpfe ( wird in konkreter Methode, die abstrakte überschreibt, implementiert)

nicht privat

Abstrakt bis Methode in einer Subklasse implementiert wird, dann konkret

--> Vertrag der Superklasse mit Subklasse
--> Klasse ist konkret wenn Methode erfüllt wird
72037787465e344ca77b501.35658748phpqNLWvD.jpg
abstrakte Klassen
erlauben es, Methoden vorzugeben, die von allen Subklassen realisiert werden müssen ( Attribute und andere Methoden können zusätzlich schon implementiert werden)


Klasse mit abstrakter Methode --> abstrakte Klasse --> keine Objekte von ihnen erzeugbar


Können auch konkrete Methoden/Attribute enthalten


solange nicht alle Verträge mit Subklassen erfüllt bleibt Klasse abstrakt
149929756665e345c4abb5e5.08401086php3oykWD.jpg
Interfaces Deklaration
definieren Schnittstellen in Form von Methoden um verschiedene Methoden miteinander zu verknüpfen (oft vergleichen) --> allgemeingültige Methoden schreiben


--> Klassen müssen gemeinsame Vererbungshierarchie haben


enthalten ausschließlich Methodendeklarationen

(Sichtbarkeit der Methode entspricht der des Interfaces )


Klasse, die das Interface implementiert, erbt alle Methodendeklarationen aus diesem Interface
20855468565e34b1d70dbf6.06887109php5n3yhh.jpg
Interface Implementierung
16390213365e34bf8a88893.99761028phpnxSTZZ.jpg
Ganzzahlendarstellung
  • byte/char
  • short
  • Int
  • long
124039705565e4953c9e3722.59145944phpdsuw2c.jpg
Gleitkommadarstellung
  • float
  • Double
Vorteile der Zweierkomplementendarstellung
  • keine doppelte null
  • Operationen mit negativen Zahlen effizienter
Unterlauf
Ergebnis der Zweierkomplementendarstellungs Berechnung kleiner als kleinste darstellbare Wert eines bestimmten numerischen Datentyps

[1]0
Überlauf
Ergebnis der Zweierkomplementendarstellungs Berechnung größer als größter darstellbare Wert eines bestimmten numerischen Datentyps

[0]1
Exzessdarstellung
hier 9bit mit 3 Bit Exponenten
170531971865e4a3c27b39f1.85504826phphjpdTi.jpg
Darstellung von Gleitkommazahlen im Computer
191251238465e4a635d72ca5.88828035phpZ6u06b.jpg
Besondere Werte der 9-Bit-Gleitkommazahlen
88417329765e4ea76bd6188.79475798phpZ0HRH9.jpg
Boolesche Algebra: wichtige Operatoren
123286569765e4f422f35952.34254918phpVe98va.jpg
Boolesche Algebra: Halbaddierer
126803500665e4fbd3798213.20130268phpHMFVS3.jpg
Boolesche Algebra: Volladdierer
108364297865e4fbd9efafa9.45459077phpJ8vnnu.jpg
Speicher
132182164565e500b4c41b53.75502558php8fm4hk.jpg