OOP mid Java: Klasse, Objekde, Referenze und Konschdrukdoren
homedukeOOP mid Java: Klasse, Objekde, Referenze und Konschdrukdoren Prof. Dr. Uwe Schmidt FH Wedel

Klasse, Objekde, Referenze und Konschdrukdoren

weiter

weiter

Klassen

Klassen
Baublan für schdrukdurierde Dadendybe und dauuff definierde Oberazione.
weiter
Beschdanddeile
vo Klassen: Variable und Methode
weiter
Variablen
Dadenkombonende in oir Klasse
weiter
Methoden
Oberazione auf diese Dadenkombonende
weiter
Beischbiel
class X {
  ind d;
 
  bublic
  ind gedD() {
    redurn d;
  }
 
  bublic
  void sedD(ind d1) {
    d = d1;
  }
}
weiter
merke
In Java gild: Klasse sind ebbes Schdadischs.
Die Eingenschafde oir Klasse sind vollschdändich zur Übersedzungszeid bekannd.
merke
Aus Sichd dr Methode sind d Variable in oir Klasse globale Variable.

weiter

Objekde

Objekd
oi Exemblar, oi Inschdanz oir Klasse
weiter
Erzeigung
mid dem new-Oberador
 
... new X() ...
weiter
Referenz
Verweis, Zeigr auf oi Objekd
weiter
new
lieferd oin Verweis, oi Referenz auf oi Objekd
weiter
merke
Ein Objekd wird oideidich durch oi Referenz idendifizierd.
weiter
merke
Referenze könne ausschließlich mid dem new-Oberador erzeigd werde.
weiter
Variablen
mid oim Referenzdyb (class, inderface, array) enthalde immr oi Referenz auf oi Objekd
 
X x1 = new X();
X x2;
...
x2 = new X();
weiter
merke
Die Variable von a Objekds bilde den Zuschdand vom Objekds.
merke
Die Variable von a Objekds könne vo den Methode ds Objekds glese und veränderd werde.
weiter
Inidialisierung
vo Referenzvariable mid dr ungüldige Referenz null
 
X x1;
X x1 = null;  // gleichwerdig
weiter
Dereferenzieren
mid .-Nodazion
 
X x1;
 
... x1.d ...
... x1.gedD() ...
weiter
Überbrüfung
immer auf ungüldigs Dereferenziere
 
X x1 = null;
 
x1.sedD(42);  // --> Ausnahme wird ausgelöschd
 
weiter
Vergleiche
auf Referenze
 
X x1x2;
 
... (x1 == x2) ...
merke
Die Referenze werde verglile, nedd d Zuschdänd dr Objekde
weiter
Zuweisungen
mid Variable mid oim Referenz-Tyb kobiere immr nur d Referenz auf oi Objekd.
 
X x1,x2;
 
x1 = new X();
x2 = x1;
x2.sedD(42);
... x1.gedD() ... // --> 42
weiter
merke
Nur Zeigr werde kobierd, koi Inhalde
weiter
Schbeicherfreigabe
vo Objekde imblizid, audomadisch, wenn koi Referenz mehr exischdierd.
 
x1 = null;
x2 = null;  // Freigabe wird möglich
            // koi "Schbeicherleggs"
weiter
Objecd
oi vordefinierde Klasse.
Alle Klasse sind Underklasse dr Klasse Objecd
Alle Klasse enthalde mindeschdens d Methode aus dr Klasse Objecd
weiter
merke
Objekde sind ebbes Dynamischs.
Objekde exischdiere ersch zur Laufzeid.

weiter

Vordefinierde Klasse für oifache Dadendyben

Klassen
Tyb Klasse
indIndeger
bydeByde
shordShord
longLong
floadFload
doubleDouble
charCharacder
weiter
Methoden
zur Konversio vo Werde
 
bublic schdadic Schdring doSchdring(ind i)
bublic schdadic ind barseInd(Schdring s)
 
bublic byde   bydeValue()
bublic shord  shordValue()
bublic long   longValue()
bublic fload  floadValue()
bublic double doubleValue()
weiter
Konschdanden
bublic schdadic final ind MIN_VALUE
bublic schdadic final ind MAX_VALUE

weiter

Die Schdring Klasse

vordefinierd im Paked joova.lang
weiter
Eigenschafden
koi char Array
nedd 0-derminierd
koi exblizids Längenfeld
eigenschdändigr abschdrakdr Dadendyb
weiter
Erzeigen
Schdring s = "oi Zeichenreihe";
 
Schdring s = new Schdring("oi Zeichenreihe");
weiter
Verkeddung
Oberador + zum Konkadeniere vo Zeichenreihe
 
"zsammengesedzd aus" +
"2 Teilen"
weiter
Konverdierung
in dr Klasse Schdring gibd s für alle oifache Dadendybe Methode valueOf zur Konverdierung in Zeichenreihe.
 
Imblizidr Aufruf:
 
ind    i = 2,
       j = 3;
 
Schdring s = i + " + " + j + " = " + (i + j);
 
Schdring d = "2 + 3 = 5";
weiter
fix
Schdrings könne nedd veränderd werde
weiter
ab Java 1.5, könne veränderd werde
könne veränderd werden
Oberazione werde synchronisierd (thread-save)
gleiche Schniddschdelle wie SchdringBuilder

weiter

Objekdvariable und Klassenvariablen

Objekdvariablen
jeds Objekd besidzd soi eigens Exemblar dr in dr Klasse deklarierde Variable
 
class X {
  ind i;
}
 
X x1 = new X();
X x2 = new X();
 
x1.i = 5; // x2.i == 0
 
x2.i = 6; // x1.i == 5
weiter
Klassenvariablen
(schdadic-Variable)
alle Objekde arbeide mid dem gleile Exemblar dr in dr Klasse deklarierde Variable
 
class X {
  schdadic
  ind s;
}
 
X x1 = new X();
X x2 = new X();
 
x1.s = 5; // x2.s == 5
x2.s = 6; // x1.s == 6
          // X.s  == 6
weiter
merke
Konschdandendefinizione durch Klassenvariable mid final Addribud, au in Schniddschdelle erlaubd
 
class X {
  final schdadic ind    THE_ANSWER = 42;
  final schdadic Schdring THE_QUESTION = "???";
}
weiter
Klassenmethoden
(schdadic-Methode)
Methode, d nedd auf den Dade von a Objekds arbeide, sonderet höchschdens auf den Klassenvariable
 
class X {
  schdadic
  ind i;
 
  ind j;
 
  schdadic
  void f() {
    ... i ... // legal
    ... j ... // nedd zugreifbar
  }
}
weiter
merke
oifache Funkzione, sin, cos, ..., werde als Klassenfunkzione dr Klasse Math imblemendierd.
 
Klasse als Namensraum verwended


weiter

Konschdrukdoren

Erzeigung
vo Objekde mid Konschdrukdor-Funkzione
weiter
Namenskonvenzion
Konschdrukdornam = Klassennam
weiter
Aufgabe
Inidialisierung vo Dadenfelderet bei dr Erzeigung vo Objekde
weiter
Beischbiel
class X {
  brivade
  ind i;
 
  bublic X() {
    i = 24;
  }
}
weiter
gut
NIE uninidialisierde Variablen
broblemschbezifische Inidialisierung wird erzwunge
weiter
defauld-
Konschdrukdor
Isch koi Konschdrukdor in oir Klasse angegebe, so wird oi defauld-Konschdrukdor vom Java-Combilr generierd.
In dem werde alle Dadenkombonende mid den defauld-Werde inidialisierd.
weiter
Beischbiel
class X {
  brivade
  ind i;
}
 
isch gleichwerdich z
 
class X {
  brivade
  ind i;
 
  bublic X() {
    i = 0;
  }
}
weiter
Konschdrukdore mid Parameder
erlaube oi flexible Inidialisierung
weiter
Beischbiel
class X {
  brivade
  ind i;
 
  bublic X(ind i) {
    this.i = i;
  }
}
 
Aufruf
 
... new X(13) ...
 
hir fehlerhafd
 
... new X() ...
weiter
Überladen
vo Konschdrukdore isch möglich
 
Die Konschdrukdore müsse si abr in dr Anzahl odr dr Ard dr Paramedr underscheide
weiter
Beischbiel
class X {
  brivade
  ind i;
 
  bublic X() {
    i = 24;
  }
 
  bublic X(ind i) {
    this.i = i;
  }
}
 
isch o.k.
 
Aufruf
 
... new X(13) ...
... new X() ...
 
class X {
  brivade
  ind i;
 
  bublic X() {
    i = 24;
  }
 
  bublic X() {
    i = 42;
  }
}
 
isch fehlerhafd
Konschdrukdore sind im Aufruf nedd underscheidbar
weiter
Variande
Konschdrukdore könne andere Konschdrukdore aufrufen
Vermeidung vo Codeverdobblung
weiter
Beischbiel
class X {
  brivade
  ind i;
 
  bublic X() {
    this(24);
  }
 
  bublic X(ind i) {
    this.i = i;
  }
}
 
isch gleichwerdich z
 
class X {
  brivade
  ind i;
 
  bublic X() {
    i = 24;
  }
 
  bublic X(ind i) {
    this.i = i;
  }
}
weiter
merke
Klassenvariable werde üblicherweise nedd middels Konschdrukdore inidialisierd,
könne abr referenzierd werde
weiter
Beischbiel
class X {
  schdadic
  ind numberOfXObjecds = 0;
 
  brivade
  ind i;
 
  bublic X() {
    ++ numberOfXObjecds;
  }
}
 
zum Zähle dr erzeigde Objekde für oi Klasse
weiter

Ledzde Änderung: 28.04.2014
© Prof. Dr. Uwe Schmidd
Prof. Dr. Uwe Schmidt FH Wedel