22

Einstieg In Oop

Embed Size (px)

Citation preview

Page 1: Einstieg In Oop
Page 2: Einstieg In Oop

2 28 © add2 GmbH 2007

Düsseldorf, 20.08..2007

Einstieg in OOP

Page 3: Einstieg In Oop

3 © add2 GmbH 2007

Klassenbasiertesprogrammieren mit Flash

Page 4: Einstieg In Oop

4 © add2 GmbH 2007

OOP Definition

Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma, welches Flexibilität und Wiederverwendbarkeit von Programmen fördert.

Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden können, möglichst eng in einem sogenannten Objekt zusammenzufassen und nach außen hin zu kapseln, so dass Methoden fremder Objekte diese Daten nicht versehentlich manipulieren können.

Im Gegensatz dazu beschreibt das vor der OOP vorherrschende Paradigma eine strikte Trennung von Funktionen (Programmcode) und Daten, dafür aber eine schwächere Strukturierung der Daten selbst.

Page 5: Einstieg In Oop

5 © add2 GmbH 2007

Warum objektorientiert programmieren?

Software lässt sich schneller entwickeln

ist leichter zu warten

weniger Fehleranfällig sowie einfacher zu debuggen

Source Code ist übersichtlicher

Wiederverwendbar (Frameworks)

Page 6: Einstieg In Oop

6 © add2 GmbH 2007

Was zeichnet objektorientierte Programmierung aus?

AbstraktionEin Objekt verkörpert einen Arbeiter der verschiedene Eigenschaften hatund verschiedene Aufgaben übernehmen kann.

KapselungJedes Objekt ist einer Kapsel, das heißt Eigenschaften und Verhaltens-weisen die in dem Objekt implementiert werden überschreiben nicht etwaiggleichlautende Eigenschaften außerhalb des Objektes.

VererbungEs können allgemeine Verhaltensweisen und Eigenschaften von Objekten ineinen Oberklasse heraus generalisiert werden. So kann doppelter Code aufleichte Weise vermieden werden.

PolymorphieKlassen die von einer Oberklasse allgemeine Eigenschaften und Verhaltens-weisen geerbt hat können diese überschreiben um so ein spezialisiertesVerhalten zu erzeugen.

Page 7: Einstieg In Oop

7 © add2 GmbH 2007

Die Klasse

Klassen

Klassen sind sozusagen Objektfabriken, wir erzeugen ein Objekt von einer Klasse. Analogie in der Natur sind die Gattungen, von der Gattung Fisch werden Fischobjekte erzeugt.

Beispiel:

class User {

public function User() {

}

}

Einfaches Klassenkonstrukt mit dem sogenannten Konstruktor der Klasse.

Erklärung: Konstruktoren besitzen denselben Namen wie die Klasse.

Einfache Erzeugung einer Instanz der Klasse User:

var carlos : User = new User();

var simone : User = new User();

var user3 : User = new User();

Page 8: Einstieg In Oop

8 © add2 GmbH 2007

Die Eigenschaften

Eigenschaft

Eigenschaft Variable eines Objektes

Beispiel:

class User {

private var _name : String;

public function User() {

}

}

Die Eigenschaft _name hat keinen Wert und ist private. Möglich wäre auch

public var _name : String;

Wurde in diesem Beispiel aber auf private gesetzt um eine Manipulation von außen zu verhindern.

Page 9: Einstieg In Oop

9 © add2 GmbH 2007

Methoden: Getter / Setter Methode (implizit)

Methode

Methode eines Objektes, Verhaltensweise, Nachricht)

Beispiel:

class User {

private var _name : String;

public function User() {

}

public function set name(name : String) : Void {

_name = name;

}

public function get name() : String {

return _name;

}

}

Page 10: Einstieg In Oop

10 © add2 GmbH 2007

Methoden: Getter / Setter Methode (implizit)

Setter ausführen.

var carlos : User = new User();

carlos.name = ‘Carlos Ulluoa‘;

var simone : User = new User();

simone.name = ‘Simone Meier‘;

var user3 : User = new User();

user3. name = ‘Fake User‘;

Getter ausführen.

trace(carlos.name);

trace(simone.name);

trace(user3.name);

Page 11: Einstieg In Oop

11 © add2 GmbH 2007

Methoden: Einfache Methode

Beispiel:

class User {

private var _name : String;

public function User() {

}

public function set name(name : String) : Void {

_name = name;

}

public function get name() : String {

return _name;

}

public function sayHello() : Void {

trace('Hi my name is: ' +  _name );

}

}

Methode „sayHello“ ausführen:

carlos.sayHello();

simone.sayHello();

user3.sayHello();

Page 12: Einstieg In Oop

12 © add2 GmbH 2007

Methode != Funktion

Methoden

ist eine Routine die fast immer zu einer Klasse oder einem Objekt gehört und auch von einem Objekt oder Instanz aufgerufen wird.

Funktion

Erstellt keine Objekte und gehört auch zu keiner Klasse oder Instanz. Steht meist alleine im Raum und stammt aus der „prozeduralen“ Programmierung.

Page 13: Einstieg In Oop

13 © add2 GmbH 2007

Instanzen - eine kurze Beschreibung von "new"

Definitionen

Klasse: Eine Vorlage die benutzt wird um Eigenschaften eines Objektes zu setzen.

Instanz: Ein Objekt erstellt mit Hilfe einer Klasse.

Beispiel:

var carlos : User = new User();

Klasse: User

Instanz: carlos

Page 14: Einstieg In Oop

14 © add2 GmbH 2007

Datenkapselung

Als Datenkapselung bezeichnet man in der Programmierung das Verbergen von Implementierungsdetails.

Der direkte Zugriff auf die interne Datenstruktur wird unterbunden und erfolgt statt dessen über definierte Schnittstellen.

Objekte können den internen Zustand anderer Objekte nicht in unerwarteter Weise lesen oder ändern. Ein Objekt hat eine Schnittstelle, die darüber bestimmt, auf welche Weise mit dem Objekt interagiert werden kann.

Page 15: Einstieg In Oop

15 © add2 GmbH 2007

Datenkapselung

Beispiel:

class Couple {

private var _male:User;

private var _female:User;

public function Couple() {

_male = new User();

_male.name = ‘Roland Meier ‘;

_female = new User();

_female.name = ‘Heike Schmidt ‘;

}

public function married():Void {

trace(_male +‘ist verheiratet mit ‘ + _female);

}

}

Page 16: Einstieg In Oop

16 © add2 GmbH 2007

Feedback

Verschiedene Objekte kommunizieren über einen Nachricht-Antwort-Mechanismus, der zu Veränderungen in den Objekten führt und neue Nachrichtenaufrufe erzeugt. Dafür steht die Kopplung als Index für den Grad des Feedback.

Page 17: Einstieg In Oop

17 © add2 GmbH 2007

Vererbung

Durch Vererbung können neue Klassen definiert werden, die auf einer (Super-)Klasse basieren.

Hierbei stellt die neue Klasse eine Erweiterung ihrer Oberklasse dar. Die neue Unterklasse (subclass) erbt alle Eigenschaften (= Daten und Methoden) der Oberklasse (super class). Zusätzlich können weitere Datenfelder und Methoden definiert werden.

Statt die Unterklasse völlig neu zu implementieren, verwendet man die Implementierung der Oberklasse, welche die Eigenschaften vererbt.

In der erweiterten Klasse können neue Datenfelder und Methoden definiert werden. Man darf auch Methoden der Oberklasse durch neue Methoden ersetzen.

Erstellen einer Subklasse

class KlassenName extends NameSuperklasse   {.....}

Die Vererbung erfolgt über das Schlüsselwort extends.

Wenn eine Klasse von einer anderen Klasse abgeleitet wird, erbt die untergeordnete Klasse automatisch alle Eigenschaften (Attributvariablen) und das gesamte Verhalten (Methoden) der übergeordneten Klasse. Hierbei ist zu beachten, dass die Vererbung immer additiv ist. Es ist nicht möglich, von einer Klasse zu erben und weniger zu erhalten als die übergeordnete Klasse enthält.

Page 18: Einstieg In Oop

18 © add2 GmbH 2007

Vererbung

Die Vererbungsbeziehung beinhaltet eine Aufrufbeziehung in Pfeilrichtung von der Unterklasse zur Oberklasse.

Vorteile:

Die Implementierung von Auto kann in AutoBunt und PolizeiAuto weiter verwendet werden. Zusätzliche Eigenschaften werden in den Unterklassen implementiert.

Page 19: Einstieg In Oop

19 © add2 GmbH 2007

Polymorphie

Verschiedene Objekte können auf die gleiche Nachricht unterschiedlich reagieren.

Wird die Zuordnung einer Nachricht zur Reaktion auf die Nachricht erst zur Laufzeit aufgelöst,

dann wird dies auch späte Bindung genannt.

Page 20: Einstieg In Oop

20 © add2 GmbH 2007

Polymorphie

Beispiel:

class Female {

public function Couple() {

}

public function sayHello ():Void {

trace("Hello, my name is "+name+" and I am a Female.");

}

}

class Female {

public function Couple() {

}

public function sayHello ():Void {

trace("Hello, my name is "+name+" and I am a male.");

}

}

Page 21: Einstieg In Oop

21 © add2 GmbH 2007

Fragen, Anregungen und Kritik?

Page 22: Einstieg In Oop

22 © add2 GmbH 2007

Ansprechpartner

Christian SobolewskiFlash Developer

Graf-Adolf-Platz 1-240213 Düsseldorf

Fon +49.211.540.38.301Fax +49.211.540.38.150

[email protected]