Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation...

29
Objektorientierte Programmierung (OOP)

Transcript of Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation...

Page 1: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

ObjektorientierteProgrammierung (OOP)

Page 2: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

Von Unterprogrammen zu Klassen

SiehePräsentation

01-unterprogramme-zu-klassen

Page 3: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Prä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

Page 4: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

Klasse Attribute

Klassen

Methode a lokale Variablen

Methode b lokale Variablen

Methode c lokale Variablen

Eigenschaften

Aktionen

Page 5: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

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.

Page 6: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

GruppenarbeitBeispiel für KlassenZeit: 30 Minuten

Page 7: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

Von Unterprogrammen zu Klassen

SiehePräsentation

02-beispiele-klassen-objekte

Page 8: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

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>);

Page 9: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

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”);}}

Page 10: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.
Page 11: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.
Page 12: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.
Page 13: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

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);

}}

Page 14: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

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);

}}

Page 15: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

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.

Page 16: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

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); }}

Page 17: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

Getter-/Setter-Methoden in Netbeans automatisch erzeugen lassen

Page 18: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

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()

Page 19: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

UML-Diagramm

Page 20: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

Aufruf des Konstruktors

Page 21: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

Klasse Bruch

Page 22: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

Vererbung: Attribute werden vererbt

Page 23: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

Vererbung: Methoden werden vererbt

Page 24: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

Überschreiben von Methoden

Page 25: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.
Page 26: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.
Page 27: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.
Page 28: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.

Prinzipien OOP

Page 29: Objektorientierte Programmierung (OOP). Von Unterprogrammen zu Klassen Siehe Präsentation 01-unterprogramme-zu-klassen.