Prinzipien Objektorientierter Programmierung



Ähnliche Dokumente
Programmieren in Java

OO Softwareentwicklung

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Typumwandlungen bei Referenztypen

Objektorientierte Programmierung. Kapitel 12: Interfaces

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Java: Vererbung. Teil 3: super()

SEP 114. Design by Contract

Kapitel 6. Vererbung

Client-Server-Beziehungen

Objektorientierte Programmierung

Kapitel 6. Vererbung

Objektorientiertes JavaScript

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

Kapitel 6. Vererbung

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Gebundene Typparameter

Algorithmen und Datenstrukturen

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Objektorientierte Programmierung

Innere Klassen in Java

Kapitel 4. Mehrfachvererbung. Beispiel 1: typische Diamant Struktur. Person. Hiwi

Klassenbeziehungen & Vererbung

Objektorientierte Programmierung OOP

Factory Method (Virtual Constructor)

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Grundkonstrukte der Objektorientierung in Java, C# und C++

Nathan Burgener. Design by Contract. Modul SWE

3. Konzepte der objektorientierten Programmierung

Vorkurs C++ Programmierung

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

Kapselung und Methodenbindung: Javas Designprobleme und ihre Korrektur. Dipl.-Inform. Peter Müller Prof. Arnd Poetzsch-Heffter Fernuniversität Hagen

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

3 Objektorientierte Konzepte in Java

Java Einführung Abstrakte Klassen und Interfaces

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Überblick. Lineares Suchen

Einführung in die Java- Programmierung

2.4.3 Polymorphie (Wiederholung von Alp2)

Java lernen mit BlueJ

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

WebService in Java SE und EE

5. Abstrakte Klassen

Einführung in die Programmierung

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

C/C++-Programmierung

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Applet Firewall und Freigabe der Objekte

Tagesprogramm

Java Einführung Methoden in Klassen

Klassendiagramm. (class diagram)

Software Engineering Klassendiagramme Assoziationen

Vererbung & Schnittstellen in C#

Assoziation und Aggregation

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Grundlagen von Python

Kapitel 9. Inner Classes. 9.1 Wiederholung: Iteratoren. Ausführen einer Operation auf allen Elementen einer Containerklasse

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version:

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

13. Tutorium zu Programmieren

5. Tutorium zu Programmieren

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

4. AuD Tafelübung T-C3

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Kapitel 12: Übersetzung objektorienter Konzepte

Software Engineering Interaktionsdiagramme

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

Einführung in die Java- Programmierung

Test-Driven Design: Ein einfaches Beispiel

Einführung in die Programmierung für Wirtschaftsinformatik

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Einführung in die Programmierung mit Java. Hörsaalübung

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Programmierkurs Java

Remote Method Invocation

Javakurs zu Informatik I. Henning Heitkötter

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Themen. Web Service - Clients. Kommunikation zw. Web Services

Client-Server Beziehungen

Abschnitt 9: Schnittstellen: Interfaces

WhiteStarUML Tutorial

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Java Kurs für Anfänger Einheit 5 Methoden

Große Übung Praktische Informatik 1

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Einführung in Eclipse und Java

Javakurs 2013 Objektorientierung

Transkript:

Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................ 2 3.2.1 Parametrische Polymorphie................. 3 3.2.2 Ad-Hoc-Polymorphie..................... 4 4 Vererbung 4 4.1 Vererbung der Spezifikation..................... 4 4.2 Vererbung der Implementierung................... 4 5 Schlusswort 4 6 Literaturverzeichnis 5 1 Vorwort Ich möchte in dieser Mini-Seminararbeit kurz auf die wichtigsten Aspekte der Objektorientierten Programmierung eingehen. 2 Kapselung Programmteile und Daten werden in der Objektorientierten Programmierung in Klassen und deren Instanzen (Objekte) gepackt. Der Zugriff auf deren Inhalte kann nach außen hin eingeschränkt werden. Das hat folgende Vorteile: Es kann gewährleistet werden, dass der Objektzustand konsistent bleibt. Wenn Attribute für die Korrektheit des Programmes nur bei Ausführung bestimmter Methoden verändert werden dürfen, können diese Attribute nach außen verborgen werden. Typisch dafür wären Zählvariablen. Ein anderes Beispiel wäre, wenn Attribute nur gemeinsam verändert werden dürfen, oder erst beim Abfragen berechnet werden. Der Nutzer muss nur mit den Methoden vertraut sein, die nach außen gestellt werden. 1

Die eigentliche Implementierung mit zusätzlichen Funktionen und Attributen wird austauschbar, solange die versprochene Schnittstelle gestellt wird. public class Counter { public S t r i n g name = Default ; private int counter ; public int count ( ) { return counter++; Abbildung 1: Ein Minimalbeispiel der Kapselung Abb. 1 zeigt eine Java-Klasse, deren Instanzen das Attribut name nach außen hin frei zugänglich machen, aber das Attribut counter nur durch die öffentliche Methode count() verändert werden kann. 3 Polymorphie Polymorphie bedeuted Vielgestaltigkeit: Die Eigenschaft, Programmteile für mehrere Typen zu verwenden. Es gibt verschiedene Formen der Polymorphie: 3.1 Dynamische Polymorphie Zur Laufzeit kann festgelegt werden, welche Implementierung verwendet wird. Das kann genutzt werden, wenn verschiedene Klassen die geforderte Spezifikation stellen und daher untereinander ausgetauscht werden können. In Java wäre der Typ einer Klasse mit allen Unterklassen, die von dieser erben, austauschbar, da garantiert wird, dass diese wegen der Vererbung die Methoden stellen. Abb. 2 zeigt Dynamische Polymorphie am Beispiel von Java-Code. Der Variable variable können sowohl Instanzen der Klasse One als auch Instanzen der Klasse T wo zugewiesen werden, da beide die Spezifikation erfüllen und die Methode f oo() stellen. 3.2 Statische Polymorphie Diese Polymorphie findet nicht zur Laufzeit statt, sondern zur Compilierzeit. Es gibt zwei Einteilungen, die hier getroffen werden können: 2

public class Test { static interface I { public int foo ( ) ; static class One implements I { public int foo ( ) { return 1 ; static class Two implements I { public int foo ( ) { return 2 ; public static void main ( S t r i n g [ ] args ){ I v a r i a b l e ; v a r i a b l e = new One ( ) ; v a r i a b l e = new Two ( ) ; v a r i a b b l e. foo ( ) ; Abbildung 2: Ein Minimalbeispiel Dynamischer Polymorphie 3.2.1 Parametrische Polymorphie Parametrische Polymorphie ermöglicht es, Klassen derart zu schreiben, dass bei der Instanziierung oder beim Methodenaufruf der Typ, der verwendet werden soll, angegeben wird. In Java ist das durch die Übergabe eines Typparameters möglich, der beim Compilieren durch Casts ersetzt wird. public class Test { static class Para<T>{ private T a t t r i b u t e ; public T g e t A t t r i b u t e ( ) { return a t t r i b u t e ; public void s e t A t t r i b u t e (T a t t r i b u t e ){ this. a t t r i b u t e = a t t r i b u t e ; public static void main ( S t r i n g [ ] args ){ Para<Integer > para = new Para<Integer >(); I n t e g e r i = para. g e t A t t r i b u t e ( ) ; Abbildung 3: Ein Minimalbeispiel Parametrischer Polymorphie 3

Abb. 3 zeigt Parametrische Polymorphie in Java anhand einer Klasse, die Typisierung zulässt. 3.2.2 Ad-Hoc-Polymorphie Diese beschreibt das Überladen von Methoden, d.h. die Möglichkeit, Methoden gleich zu benennen, aber im Typ der Argumente zu unterscheiden. Es wird die jeweils passenste Methode beim Aufruf gewählt. public class Test<T>{ public int foo ( ) { return 0 ; public int foo ( int arg ){ return arg ; Abbildung 4: Ein Minimalbeispiel der Ad-Hoc-Polymorphie Abb. 4 zeigt Ad-Hoc-Polymorphie in Java anhand einer Klasse, die eine Methode überlädt. 4 Vererbung Vererbung beschreibt im Allgemeinen, dass Programmteile einer Klasse übernommen werden. Vererbung kann auch verhindert werden. Es können mindestens zwei Unterteilungen getroffen werden, zusätzlich zu den Mischformen: 4.1 Vererbung der Spezifikation Bei der reinen Vererbung der Spezifikation einer Klasse müssen die Programmteile von der erbenden Klasse implementiert werden. In Java entspricht das der Implementierung eines Interfaces. Siehe Abb. 2. 4.2 Vererbung der Implementierung Hier wird die Funktionalität der Oberklasse gestellt. Dies ist zumeist der Fall. Abb. 5 zeigt Vererbung der Implementierung in Java. Der Unterklasse wird die Implementierung der Methode der Oberklasse gestellt. 5 Schlusswort Die Objektorientierte Programmierung stellt hochsprachige Konzepte, die es ermöglichen, Programme effizient zu strukturieren. Die Möglichkeiten gehen aber weit über die in dieser Arbeit angestreiften Grundzüge hinaus. 4

public class Test { static class Oberklasse { public int foo ( ) { return 0 ; static class U n t e r k l a s s e extends Oberklasse { public int bar ( ) { return 1 ; public static void main ( S t r i n g [ ] args ) { U n t e r k l a s s e u = new U n t e r k l a s s e ( ) ; u. foo ( ) ; u. bar ( ) ; Abbildung 5: Ein Minimalbeispiel von Vererbung der Implementierung 6 Literaturverzeichnis Literatur [1] Prof. Dr. Arnd Poetzsch-Heffter. Konzepte objektorientierter programmierung. Springer-Verlag Berlin Heidelberg, 2009. [2] Bernhard Lahres und Gregor Rayman. Objektorientierte programmierung. Galileo Computing, 2009. 5