Einstieg in OOP Düsseldorf, 20.08..2007
Klassenbasiertes programmieren mit Flash
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.
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)
Was zeichnet objektorientierte Programmierung aus? Abstraktion Ein Objekt verkörpert einen Arbeiter der verschiedene Eigenschaften hat und verschiedene Aufgaben übernehmen kann. Kapselung Jedes Objekt ist einer Kapsel, das heißt Eigenschaften und Verhaltens- weisen die in dem Objekt implementiert werden überschreiben nicht etwaig gleichlautende Eigenschaften außerhalb des Objektes. Vererbung Es können allgemeine Verhaltensweisen und Eigenschaften von Objekten in einen Oberklasse heraus generalisiert werden. So kann doppelter Code auf leichte Weise vermieden werden. Polymorphie Klassen die von einer Oberklasse allgemeine Eigenschaften und Verhaltens- weisen geerbt hat können diese überschreiben um so ein spezialisiertes Verhalten zu erzeugen.
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();
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.
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; } }
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);
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();
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.
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
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.
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); } }
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.
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.
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.
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.
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."); } }
Fragen, Anregungen und Kritik?
Ansprechpartner Christian Sobolewski Flash Developer Graf-Adolf-Platz 1-2 40213 Düsseldorf Fon +49.211.540.38.301 Fax +49.211.540.38.150 [email_address] www.add2.de

Einstieg In Oop

  • 1.
  • 2.
    Einstieg in OOPDüsseldorf, 20.08..2007
  • 3.
  • 4.
    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.
  • 5.
    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)
  • 6.
    Was zeichnet objektorientierteProgrammierung aus? Abstraktion Ein Objekt verkörpert einen Arbeiter der verschiedene Eigenschaften hat und verschiedene Aufgaben übernehmen kann. Kapselung Jedes Objekt ist einer Kapsel, das heißt Eigenschaften und Verhaltens- weisen die in dem Objekt implementiert werden überschreiben nicht etwaig gleichlautende Eigenschaften außerhalb des Objektes. Vererbung Es können allgemeine Verhaltensweisen und Eigenschaften von Objekten in einen Oberklasse heraus generalisiert werden. So kann doppelter Code auf leichte Weise vermieden werden. Polymorphie Klassen die von einer Oberklasse allgemeine Eigenschaften und Verhaltens- weisen geerbt hat können diese überschreiben um so ein spezialisiertes Verhalten zu erzeugen.
  • 7.
    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();
  • 8.
    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.
  • 9.
    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; } }
  • 10.
    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);
  • 11.
    Methoden: Einfache MethodeBeispiel: 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();
  • 12.
    Methode != FunktionMethoden 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.
  • 13.
    Instanzen - einekurze 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
  • 14.
    Datenkapselung AlsDatenkapselung 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.
  • 15.
    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); } }
  • 16.
    Feedback Verschiedene Objektekommunizieren ü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.
  • 17.
    Vererbung Durch Vererbungkö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.
  • 18.
    Vererbung Die Vererbungsbeziehungbeinhaltet 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.
  • 19.
    Polymorphie Verschiedene Objektekö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.
  • 20.
    Polymorphie Beispiel: classFemale { 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."); } }
  • 21.
  • 22.
    Ansprechpartner Christian SobolewskiFlash Developer Graf-Adolf-Platz 1-2 40213 Düsseldorf Fon +49.211.540.38.301 Fax +49.211.540.38.150 [email_address] www.add2.de