Java und Objektorientierte Programmierung: Unterschied zwischen den Seiten

Aus ZUM-Unterrichten
(Unterschied zwischen Seiten)
main>Karl Kirst
(Babel -> Kurzinfo; kat !)
 
main>Bakera
(+Objektorientierte Programmiersprachen)
 
Zeile 1: Zeile 1:
{{Kurzinfo-4|Java|Liste|Software|Links}}
{{Kurzinfo-2|Software|Idee}}


{{Zitat wpde|'''Java''' ist eine [[OOP|objektorientierte]], plattformunabhängige [[Programmiersprachen|Programmiersprache]]. Üblicherweise benötigen Java-Programme zur Ausführung eine spezielle Umgebung (Java Virtual Machine). Der Vorteil ist, dass nur diese Umgebung an verschiedene Computer und [[Betriebssystem]]e angepasst werden muss. Sobald dies geschehen ist, laufen auf der Plattform alle Java-Programme ohne Anpassungsarbeiten.|Java (Programmiersprache)|22.10.05}}
Die '''Objekt-Orientierte Programmierung (OOP)''' beschreibt ein Programm als Interaktion zwischen Objekten. Diese können sich gegenseitig Nachrichten senden und dadurch ihren Zustand - ihre Attribute - ändern.


== Zusammenfassung ==
{{Kasten gelb|
{{Kasten gelb|
;Sei mutig! Mach mit!
* Objekte sind in der objektorientierten Programmierung Daten (Eigenschaften oder auch Atrribute) und die damit verknüpfte Programmlogik (Methoden oder auch Operationen), die zu Einheiten, nämlich eben den Objekten, zusammengefasst sind.
* Wenn du noch Beispiele und Ideen aus dem Unterricht hast, dann gib sie doch einfach frei, indem du hier einen Artikel anlegst oder ergänzt. Es ist ganz einfach!
* Gleichartige Objekte werden zu Klassen zusammengefasst.
* Falls du Dinge von hier ausprobierst, so hinterlass doch einen kurzen Kommentar auf der Diskussionsseite.
* Klassen dienen als Vorlage (wie ein Bauplan) zur Herstellung von Objekten. Von einer Klasse können beliebig viele Objekte hergestellt werden. Die Objekte sind einzigartig, da sie einen unterschiedlichen Namen tragen müssen, obwohl ihr Zustand identisch sein kann.
* Wenn du eigene Beispiele oder Tutorials im Netz hast oder gute Beispiele kennst, dann ergänze doch hier Links.
* Der Zustand (oder auch Status) ist die Gesamtheit der Werte der Eigenschaften.
}}
}}
* nach {{wpd|Objektorientierte Programmierung|}} und nach: [http://www.u-helmich.de/inf/BlueJ/kurs11/seite01/theorie.html]


==Aktuell==
== Einstieg in die Objekt-Orientierte Programmierung ==
* [http://www.golem.de/0612/49398.html Java 6.0 ist fertig] "Leichterer Zugriff aus Skriptsprachen auf Java Sun hat die Java Standard Edition (SE) 6 für Linux, Solaris und Windows veröffentlicht.", 11.12.2006
* [http://www.golem.de/0612/49477.html Buch zu Java 6 zum kostenlosen Download] - "Zu Java 6 wurde das Buch um die Themen Web-Services, JavaScript-API, Tray, Splash-Screen, RowSorter, File-Erweiterungen, Compiler API, SwingWorker und Console erweitert."


=== Unterrichtsidee ''Vogel'' ===
{{Idee|1=
Zunächst klären wir am Beispiel Vogel, was eine Klasse ist: Ähnlich wie in der [[Biologie]] gruppiert man in der OOP (Objektorientierten Programmierung) Objekte und fasst sie in Klassen zusammen.


__NOTOC__
[[Bild:Cyanocitta-cristata-004.jpg|thumb|Ein "Blue Jay" (deutsch Blauhäher) ist der Namensgeber von BlueJ, der Einsteiger-Java-IDE]]


{{Kastendesign|
Dabei stellt sich die Frage, was einen Vogel auszeichnet:
BORDER = #97BF87|
* Ein Vogel hat bestimmte '''Eigenschaften''' (oder Attribute). Er hat zum Beispiel eine bestimmte Farbe, ein Geschlecht und man kann seine Flügelspannweite messen.
BACKGROUND = cornflowerblue|
* Ein Vogel kann bestimmte Dinge tun. Er kann etwa singen oder ein Ei legen. Das sind die so genannten '''Methoden''' (Operationen) des Vogels wie singe() oder legeEi().
BREITE =100%|
BILD = Java.png|
ÜBERSCHRIFT =Unterseiten|
|INHALT1='''Liste sortiert nach Inhalten'''
;Theorie und Modellierung
* [[Objektorientierte Programmierung]]
* [[Objekt]], [[Klasse (Informatik)]], [[Methode (Informatik)]]
* [[UML]]
;Algorithmik
* Eingabe, Ausgabe
** [[Java/Konsolenausgabe]]
** [[Java/Texteingabe]]
** [[Java/Dateihandling]]
** [[Java/Runden]]
* [[Java/Primitive Datentypen]]
** [[Java/Numerische Datentypen]]
** [[Java/String]]
* [[Java/Logische Operatoren]]
* [[Java/Bedingte Ausführung]] - if-else-Abfragen
** [[Java/PQ-Formel]]
** [[Java/Uhr]]
* Wiederholungen
** [[Java/while-Schleife]]
** [[Java/for-Schleife]]
** [[Java/do-while-Schleife]]
* [[Java/Rekursion]]
** [[Java/ggT]]
* [[Java/Zufallszahl]]
;OOP
* [[Java/Objekt-Interaktion und Fußball-WM]]
;Datenstrukturen
* [[Java/Array]]
* [[Java/Queue]]
** [[Java/Einführungsbeispiel Array]]
* [[Java/List]]
** [[Java/List/Liste mit GUI]]
** [[Java/Zahlenliste]]
;Anwendungen
* [[Java/Netzwerkprogrammierung]]
;Grafik und GUI
* [[Java/Applet]]
* [[Java/Turtle-Grafik]]
;Beispiele und Projekte
* [[Java/Onlinebank Einsteigerbeispiel]]
* [[Java/Bahnanzeige]]
* [[Java/Eigene Spiele]]
** [[Java/Roulette]]
** [[Java/TicTacToe]]
** [[Java/Pong]]
;IDE und Software
* [[Java/BlueJ]]
* [[Java/Hamster]]
* [[Java/Software]]
;Tutorials und Hilfen
* [[Java/Glossar]]


|INHALT2='''Alphabetisches Verzeichnis'''
Methoden teilt man in zwei Gruppen ein
* Es gibt zum einen '''beobachtende oder auch sondierende Methoden'''. Diese beantworten z.B. die Frage: Welche Farbe hast du? Im Programm werden sie gibFarbe() oder getFarbe() genannt.
* Zum anderen gibt es Methoden, die Eigenschaften ändern können ('''verändernde Methode'''). Ein Beispiel wäre setFarbe(“gruen“), welche die Farbe eines Objektes ändern könnte.


Hier werden alle Seiten aufgeführt, deren Namen nach folgendem Prinzip aufgebaut ist: '''Java/Artikelname'''
Aus der Klasse Vogel lassen sich konkrete '''Objekte''' bilden: z.B. vogel1, vogel2, vogel3. Jedes Objekt hat einen bestimmten Zustand. So kann z.B. vogel1 die Farbe gelb haben, weiblich sein und 40 cm Spannweite haben. der Zustand von vogel2 könnte sein: gelb, 30 cm Spannweite, männlich. Während die Klasse Vogel etwas abstraktes ist (eine Art Bauplan für Objekte) ist ein Objekt konkret.
<subpages
 
  parent=Java
{{Übung|
  order=DESC
* Nennen Sie weitere Eigenschaften und Methoden einer Klasse Vogel.
  order=lastedit
* Je nachdem, ob man für ein Zoogeschäft oder ein Lexikon ein Verwaltungsprogramm schreibt, bekommt eine Klasse Vogel ganz andere Eigenschaften. Nennen Sie Eigenschaften, die jeweils nur für einen der beiden Auftraggeber (Zoogeschäft, Lexikon) wichtig sind.
  showpath=no
* Beschreiben Sie den Zustand des Objektes bluejay1, das den Vogel aus dem Bild zeigt.
/>
* Nennen Sie Eigenschaften und Methoden eines Haushaltsgerätes (z.B. einer Uhr).
}}
}}
}}


{{Kastendesign|
== Wissenschaftliche Definition ==
BORDER = #97BF87|
Das folgende Zitat eignet sich, um einen Überblick über die OOP zu erlangen.
BACKGROUND = cornflowerblue|
BREITE =100%|
BILD = Web-browser.png|
ÜBERSCHRIFT =Zubehör und Hilfen|
INHALT1=


===[[IDE]]s===
{{Zitat wpde|
* [[Java (Software)]]
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 angewendet werden können, möglichst eng in einem sogenannten Objekt zusammenzufassen und nach außen hin zu kapseln, sodass 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. Befürworter der OOP vertreten die These, dass der OOP Ansatz für Computerneulinge leichter zu erlernen ist als bisherige Ansätze.
* [[BlueJ]], dort auch Netbeans BlueJ-Edition
* [[Eclipse]]
* [http://lernen.bildung.hessen.de/informatik/javaeditor/index.htm Java Editor (Hessen)]


===Unterrichtsgänge in Java (extern)===
Im Folgenden werden wichtige Begriffe der objektorientierten Programmierung kurz umrissen. Für nähere Details sei auf die jeweiligen Einzelabschnitte und -artikel verwiesen.
* [http://informatik.zum.de/pieper/ Java-Reader] von Uli Pieper (alias ugh)
* [http://www.u-helmich.de/inf/ Online Material] von U. Helmich
* [http://www.saar.de/~awa/download.htm Java in der Sek II] von Axel Wagner
* [http://www.gymmelk.ac.at/~nus/informatik/wpf/JAVA/index.php?kat=grund&teil=grund Nussbaumer - JAVA (eine kleine Einführung)] dazu: http://www.gymmelk.ac.at/~nus/informatik/wpf/JAVA/javahtml/index.html
*[http://www.zitadelle.juel.nw.schule.de/if/java/java.html Materialien] des Gym. Zitadelle, Jülich
*[http://www.gailer-net.de/tutorials/java/java-toc.html Java lernen interaktiv]
*[http://www.gymmelk.ac.at/nus/informatik/wpf/JAVA/index.php Unterrichtsbeispiele zu JAVA]
*[http://mathsrv.ku-eichstaett.de/MGF/homes/grothmann/java/ Java Vorlesung mit vielen Übungen]
* [http://www2.dgb.ch/users/soe/Informatik/java/index.htm Eine Einführung in die Sprache, das Konzept der OOP und das Umfeld im Internet]  "Der Kurs wird noch immer weiterentwickelt. Sie müssen also neue Versionen mit "Neu laden" holen und auf tote Links gefasst sein. Diese Webseiten sind Begleitmaterial zu Fakultativkursen am Deutschen Gymnasium Biel und damit nicht selbserklärend!"


|INHALT2=
Die einzelnen Bausteine, aus denen ein objektorientiertes Programm während seiner Abarbeitung besteht, werden als Objekte bezeichnet. Die Konzeption dieser Objekte erfolgt dabei in der Regel auf Basis der folgenden Paradigmen:
===Kurse===
 
* [[Bild:Wikibooks20.gif]] [[wikipedia:b:Java|Java]] - Ein Wikibook-Kurs im Aufbau
;Klasse
* [http://www.programmierkurs-java.de/ Programmierkurs der Uni Oldenburg] - Den Kurs gibt es in verschiedenen Varianten (Powerpoint- und PDF-Folien, Filme) zusammen mit Übungen und Beispielprogrammen.
 
===E-Bücher===
Die Struktur eines Objekts wird durch die Attribute (auch Eigenschaften) seiner Klassendefinition festgelegt. Das Verhalten des Objekts wird von den Methoden der Klasse bestimmt. Klassen können von anderen Klassen abgeleitet werden (Vererbung). Dabei erbt die Klasse die Datenstruktur (Attribute) und die Methoden von der vererbenden Klasse (Basisklasse).
* [http://www.javabuch.de/download.html Handbuch der Java-Programmierung] - Auch das neuste Buch des Standardwerkes (Nachfolger von "Go To Java 2") von Guido Kröger kann als gepackte Datei in Form von HTML-Seiten heruntergeladen werden. Dazu gibt es auch Beispieldateien.
 
* '''Java ist auch eine Insel''' - als [http://www.galileopro.de/openbook/javainsel5/galileocomputing_javainsel5.zip HTML-Version]  bei [http://www.galileocomputing.de/katalog/openbook/ Galileo-Open-Books] herunterladbar.
;Abstraktion
* '''Java 2''' Buch, das als [http://www.galileocomputing.de/openbook/java2/ HTML-Version] bei [http://www.galileocomputing.de/katalog/openbook/ Galileo-Open-Books] heruntergeladen werden können.
Jedes Objekt im System kann als ein abstraktes Modell eines Akteurs betrachtet werden, der Aufträge erledigen, seinen Zustand berichten und ändern und mit den anderen Objekten im System kommunizieren kann, ohne offenlegen zu müssen, wie diese Fähigkeiten implementiert sind (vgl. abstrakter Datentyp (ADT)).
* '''Thinking in Java, 3rd Edition''' - [http://www.linuxguruz.org/ebooks/eckel/TIJ-3rd-edition2.0.zip Download]
 
===Kurztutorial===
;Datenkapselung
* [http://www.boku.ac.at/javaeinf/ '''Kurztutorial'''] (erlaubte Vervielfältigung nichtkommerziell - passt auf eine Diskette)
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. Dies verhindert das Umgehen von Invarianten des Programms.
* http://www.highscore.de/
 
===Tipps und Tricks===
;Polymorphie
* [http://www.bastie.de/java/howto/index.html How to...]
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.
}}
 
;Feedback
Verschiedene Objekte kommunizieren über ein 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
Vererbung heißt vereinfacht, dass eine abgeleitete Klasse die Methoden und Objekte der Basisklasse ebenfalls besitzt, also „erbt“. Somit kann die abgeleitete Klasse auch darauf zugreifen. Neue Arten von Objekten können auf der Basis bereits vorhandener Objekt-Definitionen festgelegt werden. Es können neue Bestandteile hinzugenommen werden oder vorhandene überlagert werden. Wird keine Vererbung zugelassen, so spricht man zur Unterscheidung oft auch von objektbasierter Programmierung.  
 
|Objektorientierte Programmierung|(Zusammenstellung 29.11.2006}}
 
== Objektorientierte Programmiersprachen ==
 
Die folgenden objektorientierten [[Programmiersprachen]] sind in diesem Wiki vertreten.
 
* [[C|C++]]
* [[CSharp|C#]]
* [[Delphi]]
* [[Java]]
* [[JavaScript]]
* [[Python]]
* [[Smalltalk]]


==Hallo Welt in Java==
{{Zitat wpde|Einfache Beispiele von Computerprogrammen, die zum Beispiel zur Demonstration verwendet werden, bestehen häufig nur aus ein paar Zeilen Programmcode, die den Text Hallo, Welt! oder auf Englisch Hello, world! ausgeben. Dieses Programm soll als eines der einfachst möglichen zeigen, was für ein vollständiges Programm (in der betreffenden Programmiersprache) benötigt wird, und einen ersten Einblick in die Syntax geben. Ein solches Programm ist auch geeignet, die erfolgreiche Installation eines Compilers für die entsprechende Programmiersprache zu überprüfen.|Hallo-Welt-Programm|09.10.06}}
<java>
  public class Hallo
  {
      public static void main(String[] args)
      {
        System.out.println("Hallo Welt!");
      }
  }
</java>


==Java als Programmiersprache im Unterricht==
== Linkliste ==
{{Kasten gelb|'''Java''' wird immer häufiger als [[Programmiersprachen|Programmiersprache]] im Unterricht verwendet.
* [http://oszhdl.be.schule.de/gymnasium/faecher/informatik/oop/index.htm  Definitionen und Grundkonzepte] (OSZ Handel I)
* Entsprechend gibt es '''zahlreiche Literatur, Fortbildungen und Software''' zum Thema Java im Unterricht.
* [http://oszhdl.be.schule.de/gymnasium/faecher/informatik/ooa-ood/index.htm Unterrichtsmaterialien zu OOA - OOD - OOP] (OSZ Handel I)
* Java ist '''kostenlos und plattformunabhängig'''. Java ist stabil, aufgrund der Vielzahl der Versionen und Rechnerkonstellationen kann es aber zu unvorhergesehenen Problemen kommen.
* [http://www.oszhandel.de/gymnasium/faecher/informatik/delphi/implementation_oo.htm OOP mit DELPHI - Hinweise zur Implementierung] (OSZ Handel I)
* Java ist auf den ersten Blick '''bedienerunfreundlich'''. Bereis die Abfrage Tastatur in Programmen gestaltet sich schwierig. Andererseits gibt es '''Software, die diesen Mangel ausgleichen''' (z.B. [[BlueJ]]).
* Ausschnitt aus [http://informatik.zum.de/pieper/blog/index.php?entry=entry060527-080240 Kapitel 1 Java-Reader] von Uli Pieper
* Da Java '''objektorientiert''' ist, in der '''Industrie häufig benutzt''' wird und aktuell weite '''Verbreitung auf Handys''' bekommt, lässt sich sagen, dass Java im Trend ist und für Schüler daher '''motivierend'''.
* Genauere Einsteigererläuterung: [http://www.u-helmich.de/inf/BlueJ/kurs11/seite01/theorie.html Klassen und Objekte] von Ulrich Helmich
* '''Applets''' lassen sich einfach im Internet veröffentlichen, was die Motivation weiter steigert.
* [http://www.learnline.de/angebote/oop/medio/didaktik/grundlagen/warum.html Warum Objektorientierte Programmierung?]
* Vom Anspruch an die Rechner ist Java zwar '''speicherhungrig''' (mögl. mind. 128MB RAM), stellt aber '''keine hohen Erwartungen an den Prozessor''' (Pentium II möglich).
* '''Fazit:''' Die Hürde zum ersten Pieps ist hoch, wird aber dadurch ausgeglichen, dass man eine moderne und vielseitige Sprache im Unterricht hat, mit der man sämtliche Anwendungen schreiben kann.
}}


== Siehe auch ==
== Siehe auch ==
* [[UML]] - Unified Modeling Language
* [[Programmiersprachen]]
* [[Programmiersprachen]]
* [[Informatik]]
* [[:Datei:Arbeitsblatt Vererbung.odg|Arbeitsblatt zur Vererbung]]
 
 


[[Kategorie:Java| !]]
[[Kategorie:Informatik]]
[[Kategorie:Software]]
[[Kategorie:Programmiersprache]]

Version vom 14. Mai 2013, 19:46 Uhr

Vorlage:Kurzinfo-2

Die Objekt-Orientierte Programmierung (OOP) beschreibt ein Programm als Interaktion zwischen Objekten. Diese können sich gegenseitig Nachrichten senden und dadurch ihren Zustand - ihre Attribute - ändern.

Zusammenfassung


  • Objekte sind in der objektorientierten Programmierung Daten (Eigenschaften oder auch Atrribute) und die damit verknüpfte Programmlogik (Methoden oder auch Operationen), die zu Einheiten, nämlich eben den Objekten, zusammengefasst sind.
  • Gleichartige Objekte werden zu Klassen zusammengefasst.
  • Klassen dienen als Vorlage (wie ein Bauplan) zur Herstellung von Objekten. Von einer Klasse können beliebig viele Objekte hergestellt werden. Die Objekte sind einzigartig, da sie einen unterschiedlichen Namen tragen müssen, obwohl ihr Zustand identisch sein kann.
  • Der Zustand (oder auch Status) ist die Gesamtheit der Werte der Eigenschaften.

Einstieg in die Objekt-Orientierte Programmierung

Unterrichtsidee Vogel

Unterrichtsidee

Zunächst klären wir am Beispiel Vogel, was eine Klasse ist: Ähnlich wie in der Biologie gruppiert man in der OOP (Objektorientierten Programmierung) Objekte und fasst sie in Klassen zusammen.

Ein "Blue Jay" (deutsch Blauhäher) ist der Namensgeber von BlueJ, der Einsteiger-Java-IDE

Dabei stellt sich die Frage, was einen Vogel auszeichnet:

  • Ein Vogel hat bestimmte Eigenschaften (oder Attribute). Er hat zum Beispiel eine bestimmte Farbe, ein Geschlecht und man kann seine Flügelspannweite messen.
  • Ein Vogel kann bestimmte Dinge tun. Er kann etwa singen oder ein Ei legen. Das sind die so genannten Methoden (Operationen) des Vogels wie singe() oder legeEi().

Methoden teilt man in zwei Gruppen ein

  • Es gibt zum einen beobachtende oder auch sondierende Methoden. Diese beantworten z.B. die Frage: Welche Farbe hast du? Im Programm werden sie gibFarbe() oder getFarbe() genannt.
  • Zum anderen gibt es Methoden, die Eigenschaften ändern können (verändernde Methode). Ein Beispiel wäre setFarbe(“gruen“), welche die Farbe eines Objektes ändern könnte.

Aus der Klasse Vogel lassen sich konkrete Objekte bilden: z.B. vogel1, vogel2, vogel3. Jedes Objekt hat einen bestimmten Zustand. So kann z.B. vogel1 die Farbe gelb haben, weiblich sein und 40 cm Spannweite haben. der Zustand von vogel2 könnte sein: gelb, 30 cm Spannweite, männlich. Während die Klasse Vogel etwas abstraktes ist (eine Art Bauplan für Objekte) ist ein Objekt konkret.


Übung
  • Nennen Sie weitere Eigenschaften und Methoden einer Klasse Vogel.
  • Je nachdem, ob man für ein Zoogeschäft oder ein Lexikon ein Verwaltungsprogramm schreibt, bekommt eine Klasse Vogel ganz andere Eigenschaften. Nennen Sie Eigenschaften, die jeweils nur für einen der beiden Auftraggeber (Zoogeschäft, Lexikon) wichtig sind.
  • Beschreiben Sie den Zustand des Objektes bluejay1, das den Vogel aus dem Bild zeigt.
  • Nennen Sie Eigenschaften und Methoden eines Haushaltsgerätes (z.B. einer Uhr).


Wissenschaftliche Definition

Das folgende Zitat eignet sich, um einen Überblick über die OOP zu erlangen.

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 angewendet werden können, möglichst eng in einem sogenannten Objekt zusammenzufassen und nach außen hin zu kapseln, sodass 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. Befürworter der OOP vertreten die These, dass der OOP Ansatz für Computerneulinge leichter zu erlernen ist als bisherige Ansätze.

Im Folgenden werden wichtige Begriffe der objektorientierten Programmierung kurz umrissen. Für nähere Details sei auf die jeweiligen Einzelabschnitte und -artikel verwiesen.

Die einzelnen Bausteine, aus denen ein objektorientiertes Programm während seiner Abarbeitung besteht, werden als Objekte bezeichnet. Die Konzeption dieser Objekte erfolgt dabei in der Regel auf Basis der folgenden Paradigmen:

Klasse

Die Struktur eines Objekts wird durch die Attribute (auch Eigenschaften) seiner Klassendefinition festgelegt. Das Verhalten des Objekts wird von den Methoden der Klasse bestimmt. Klassen können von anderen Klassen abgeleitet werden (Vererbung). Dabei erbt die Klasse die Datenstruktur (Attribute) und die Methoden von der vererbenden Klasse (Basisklasse).

Abstraktion

Jedes Objekt im System kann als ein abstraktes Modell eines Akteurs betrachtet werden, der Aufträge erledigen, seinen Zustand berichten und ändern und mit den anderen Objekten im System kommunizieren kann, ohne offenlegen zu müssen, wie diese Fähigkeiten implementiert sind (vgl. abstrakter Datentyp (ADT)).

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. Dies verhindert das Umgehen von Invarianten des Programms.

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.

Feedback

Verschiedene Objekte kommunizieren über ein 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

Vererbung heißt vereinfacht, dass eine abgeleitete Klasse die Methoden und Objekte der Basisklasse ebenfalls besitzt, also „erbt“. Somit kann die abgeleitete Klasse auch darauf zugreifen. Neue Arten von Objekten können auf der Basis bereits vorhandener Objekt-Definitionen festgelegt werden. Es können neue Bestandteile hinzugenommen werden oder vorhandene überlagert werden. Wird keine Vererbung zugelassen, so spricht man zur Unterscheidung oft auch von objektbasierter Programmierung.



Wikipedia-logo.png Programmierung Objektorientierte Programmierung, Wikipedia – Die freie Enzyklopädie, (Zusammenstellung 29.11.2006 - Der Text ist unter der Lizenz „Creative Commons Attribution/Share Alike“ verfügbar; zusätzliche Bedingungen können anwendbar sein. Siehe die Nutzungsbedingungen für Einzelheiten. In der Wikipedia ist eine Liste der Autoren verfügbar.



Objektorientierte Programmiersprachen

Die folgenden objektorientierten Programmiersprachen sind in diesem Wiki vertreten.


Linkliste

Siehe auch