objektorientierte programmierung (oop). von unterprogrammen zu klassen siehe präsentation...
TRANSCRIPT
ObjektorientierteProgrammierung (OOP)
Von Unterprogrammen zu Klassen
SiehePräsentation
01-unterprogramme-zu-klassen
Hauptprogramm globale Variablen
Prozeduren
Anweisung_1;Anweisung_2;
...
Unterprogramm a lokale Variablen
Unterprogramm b lokale Variablen
Unterprogramm c lokale Variablen
Klasse Attribute
Klassen
Methode a lokale Variablen
Methode b lokale Variablen
Methode c lokale Variablen
Eigenschaften
Aktionen
Klassen und Objekte
Eigenschaften Name:
Haarfarbe: Alter:
Aktionen laufen sitzen
schlafen essen
Eigenschaften Name: Sascha Müller
Haarfarbe: blond Alter: 18
Aktionen laufen sitzen
schlafen essen
KlasseAbstrakte Beschreibung
von Eigenschaften (Attributen) und Aktionen
(Methoden).= Schablone
ObjektKonkrete Instanz einer
Klasse.
GruppenarbeitBeispiel für KlassenZeit: 30 Minuten
Von Unterprogrammen zu Klassen
SiehePräsentation
02-beispiele-klassen-objekte
Klassen und Objekte in Java
Definition einer Klasse
Erzeugung von Objekten
Aufruf einer Methode eines Objektes
public class <Klassenname> { Attribute und Methoden}
<Klassenname> <Objektname> = new <Klassenname>();
<Objektname>.<Methodenname>(<Parameter_1>,...,<Parameter_n>);
BeispielKlasse definieren, Objekte erzeugen
public class TesteMensch { /** Startmethode der Klasse */ public static void main(String[] args) { Mensch patrick = new Mensch(); patrick.name="Patrick"; Mensch tim = new Mensch(); tim.name="Tim"; patrick.schlafen(); tim.sitzen(); }}
public class Mensch { String name; String haarfarbe; int alter;
public void schlafen(){S.o.p(name+”schläft”);} public void sitzen(){S.o.p(name+”sitzt”);}}
Beispiel für eine Klasse und das Erzeugen eines Objektes
public class Rechteck { float laenge; float breite;
public float berechneF(){ float a = laenge * breite; return a; }}
public class Test { public static void main(String[] arg) {
Rechteck r1 = new Rechteck(); r1.laenge=10f; r1.breite=1f;
Rechteck r2 = new Rechteck(); r2.laenge=5f; r2.breite=20f;
float f1 = r1.berechneF(); float f2 = r2.berechneF();
S.o.p("Flächeninhalt r1:"+f1); S.o.p("Flächeninhalt r2:"+f2);
}}
Konstruktoren
public class Rechteck { float laenge; float breite;
public Rechteck(float l1, float b1){ laenge=l1; breite=b1; }
public Rechteck(float laenge1) { laenge=laenge1; }
public Rechteck() {}
public float berechneF(){ float a = laenge * breite; return a; }}
Konstruktor
Der Konstruktor ohne Parameter (Default-Konstruktor) ist immer definiert, falls sonst kein Konstruktor angegeben ist.
public class Test { public static void main( String[] arg) {
Rechteck r1 = new Rechteck(10f,1f);
Rechteck r2 = new Rechteck(5f); r2.breite=20f;
float f1 = r1.berechneF(); float f2 = r2.berechneF();
S.o.p("Flächeninhalt r1:"+f1); S.o.p("Flächeninhalt r2:"+f2);
}}
Statische Attribute und der this-Operator
public class Kreis{
static final float pi = 3.14127f; float radius ;
public Kreis (float radius) { this.radius=radius; }
public Kreis() {}
public float berechneF(){ float x = pi * radius * radius; return x; }}
Statisches Attribut: Wird nur einmal für die Klasse
(nicht für jedes Objekt) definiert.
Konflikt: lokale Variable und Attribut.
this. verweist auf das Attribut.
public class Test { public static void main(String[] arg) {
Rechteck r1 = new Kreis(7f); float f1 = r1.berechneF(); S.o.p("Flächeninhalt r1:"+f1); S.o.p(„Wert von PI:"+Kreis.pi);
}}
Zugriff auf eine statische Variable.
Statische AtrributeGetter-/Setter-Methoden
public class Kreis { static final float pi=3.14127f; float radius; public Kreis(float radius){ this.radius=radius; } public Kreis() {} public float getRadius() { return radius; } public void setRadius(float r1) { radius=r1; }
public float berechneF(){ float a = pi * radius * radius; return a; }}
Getter- und Setter-Methoden für den
Zugriff auf Attribute.(Attribute direkt
anzusprechen gilt als verpöhnt)
public class Test { public static void main(String[] arg) {
Rechteck r1 = new Kreis(); f1.setRadius(7f); float f1 = r1.berechneF();
S.o.p("Flächeninhalt r1:"+f1); }}
Getter-/Setter-Methoden in Netbeans automatisch erzeugen lassen
Objekte „printable“ machen: toString()
public class Kreis { …
public String toString() { return "Kreis("+radius+")"; }}
public class Test { public static void main(String[] arg) {
Rechteck r1 = new Kreis(); f1.setRadius(7f); float f1 = r1.berechneF(); S.o.p("Flächeninhalt von "+r1+ " ist "+f1); }}
Ohne toString()
Mit toString()
UML-Diagramm
Aufruf des Konstruktors
Klasse Bruch
Vererbung: Attribute werden vererbt
Vererbung: Methoden werden vererbt
Überschreiben von Methoden
Prinzipien OOP