in der OOP Mirko Carl-Zeiss-Gymnasium Jena Fachbereich Informatik Workshop zur OOP-Fortbildung Jena, 26. 5. 2009
Gliederung 1 Objektorientierung - Grundlagen 2 3 4
Gliederung 1 Objektorientierung - Grundlagen 2 3 4
Objektorientierung Ziele der OOP Objekte bekommen Fähigkeiten übertragen und kümmern sich um die Behandlung ihrer Daten selbst Hilfe beim Programmieren im Großen (Organisation eines Projektes vereinfacht) Systematisierung der Daten lässt sich auf das Programm übertragen 3 Aspekte der OOP Kapselung von Daten und Methoden - Geheimnisprinzip von Methoden
Ein Projektbeispiel: Vektorgrafik Vektorgrafik Eine Vektorgrafik ist eine Liste verschiedener geometrischer Figuren, die durch Koordinaten beschrieben werden. Gegensatz: Pixelgrafik (Bitmap) Anwendung Reine Vektorgrafikprogramme (frei skalierbare Grafik) Illustrationen in der Textverarbeitung (Pfeile, Vielecke,... ) Landkarten (Geokodierung)
Ein Projektbeispiel: Vektorgrafik Open Office Draw: Objektauswahl. Jedes Objekt kann in der Liste einen anderen Platz einnehmen
Gliederung 1 Objektorientierung - Grundlagen 2 3 4
Vektorgrafik objektorientiert: Klassenbildung Klasse Figur Eine Figur besitzt einen Ort (Koordinaten) und kann erzeugt sowie gezeichnet werden. Punkte, Strecken, Rechtecke, Kreise sind Figuren (ist-ein-beziehung), die verschieden erzeugt und gezeichnet werden. Klasse Vektorgrafik Eine Vektorgrafik ist eine Liste verschiedener geometrischer Figuren, die durch Koordinaten beschrieben werden. Es empfiehlt sich, die Vektorgrafik in einer Klasse zu kapseln, da sie öfter neu gezeichnet werden muss Grafik ändert sich, Fenster muss neu gezeichnet werden
Klasse Figur eigene Unit figuren verwenden, mit uses-klausel einbinden da sich sonst das Geheimnisprinzip nicht durchsetzen lässt getrennte Übersetzung möglich Basisklasse figurc Konstruktor legt den Ort fest (Farbe denkbar) virtuelle Methode zeichne - wird selbst in dieser Form nicht aufgerufen, reicht Ausführung an erbende Klassen weiter
Klasse Figur - Definition Im interface-teil: Die Daten sollten von direkten Fremdzugriffen ferngehalten werden (private). Nur die Methoden dürfen direkt mit den Daten arbeiten.
Klasse Figur - Methoden
Gliederung 1 Objektorientierung - Grundlagen 2 3 4
in der Figuren-Klasse Punkte, Strecken, Rechtecke, Kreise sind Figuren (ist-ein-beziehung), die verschieden erzeugt und gezeichnet werden. Beispiel: Punkt Ein Punkt ist eine Figur. type punktc = class(figurc) Er erbt den Ort (x, y) und die Methode zeichne von figurc. Allerdings muss die Methode verändert (überschrieben) werden. Dazu wird zeichne in figurc als virtuell (virtual) und in punktc als überschrieben (override) gekennzeichnet.
ist Typerweiterung Beispiel: Strecke Eine Strecke ist auch eine Figur. type streckec = class(figurc) Außer dem Ort (x, y) und der Methode zeichne von figurc brauchen wir noch den Endpunkt (endx, endy), der im public-teil ergänzt wird: public endx,endy:integer; private (...)
Semantische Probleme bei der Typerweiterung Widerspruch ist-ein-beziehung vs. Typerweiterung Beispiel: Ein Quadrat hat eine Seite a. Ein Rechteck hat eine Seite a und eine Seite b. Aber: Ein Rechteck ist ein Quadrat mit noch einer Seite mehr ist technisch gesehen möglich, aber semantisch falsch. Ein Quadrat ist ein Rechteck ist dagegen richtig.
Gliederung 1 Objektorientierung - Grundlagen 2 3 4
von Methoden in der Figuren-Klasse Zeichnen eines Punktes unterscheidet sich vom Zeichnen eines Kreises Ziel Das Zeichnen soll trotz seiner Verschiedenartigkeit bei jeder Figur gleich benannt werden. Grund: Beim Darstellen der Liste soll in einer Schleife jede Figur gezeichnet werden, egal, wie sie beschaffen ist. liste[i].zeichne
von Methoden in der Figuren-Klasse Lösung: durch virtuelle Methoden (siehe ). Die Methode zeichne heißt bei allen Figuren gleich, ist aber bei jeder anders ausgeprägt. Punkt: canvas.pixels[x,y] := color Strecke: canvas.pen.color := color; canvas.moveto(x,y); canvas.lineto(endx,endy)
Anhang Literatur I Bertram Hafner. Einstieg in die OOP mit Delphi. http://www.bertram-hafner.de/infos/ Material/DelphiOOP.pdf, 24. 5. 2009. S. Spolwig. Hinweise zur Implementation in OOP mit DELPHI. Oberstufenzentrum (OSZ) Handel 1, Berlin, 2007. http://www.schule.de/schulen/ oszhdl/gymnasium/faecher/informatik/ delphi/implementation_oo.htm, 24. 5. 2009.
Anhang Literatur II S. Schekan, S. Thurau. OOA und OOP mit Borland Delphi in der gymnasialen Oberstufe. HU Berlin, 2002. http://ddi.informatik.hu-berlin.de/spolwig/ hsem_02/dokumente/thurau/, 24. 5. 2009. OOP in Delphi. Delphi Tutorials, 2006. http://www.delphi-tutorials.de/ oop-in-delphi-22.html, 24. 5. 2009.
Anhang Literatur III Joachim Goll, Cornelia Weiß, Frank Müller. Java als erste Programmiersprache. Vieweg + Teubner, 2007. http://www.it.hs-esslingen.de/ ~heinisch/javabuch/, 24. 5. 2009. John R. Hubbard, Anita Huray. Data Structures with JAVA. Pearson Education, 2004. Kathy Sierra, Bert Bates. Java von Kopf bis Fuß. O Reilly 2006
Anhang Literatur IV Charles Petzold. Die Kunst zu programmieren. Ein Programmierlehrgang in C#.NET Microsoft Press, 2003. Eric Gunnerson. C#. Die neue Sprache für Microsofts.NET-Plattform. Galileo Open Book, 2000 http://openbook.galileocomputing.de/ csharp/kap06.htm/, 24. 5. 2009.
Anhang Literatur V c-sharpcorner.com. http://www.c-sharpcorner.com/ UploadFile/camurphy/ csharplists03302006170209pm/ csharplists.aspx, 24. 5. 2009.