Eine Motivation der objektorientierten Programmierung. (Warum objektorientierte Programmierung), Artikel, Seite 721911
https://www.purl.org/stefan_ram/pub/warum-objektorientierte-programmierung (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Programmieren

Warum objektorientierte Programmierung?

Procedural code (code using data structures) makes it easy to add new functions without changing the existing data structures. OO code, on the other hand, makes it easy to add new classes without changing existing functions.” – Robert Cecil Martin

Procedural code makes it hard to add new data structures because all the functions must change. OO code makes it hard to add new functions because all the classes must change.” – Robert Cecil Martin

In diesem Artikel wird „objektorientierte Programmierung“ als Laufzeitpolymorphie  typisierter Werte interpretiert, die auch mit Multimethoden arbeiten kann. Klassen und Vererbung  werden nicht als ein notwendiger Bestandteil der objektorientierten Programmierung angesehen, da es objektorientierte Sprachen ohne Klassen und ohne Vererbung gibt und auch die Definition des Begriffs „objektorientierte Programmierung“ nach dessen Schöpfer Alan Kay  Klassen oder Vererbung nicht nennt.

In der objektorientierten Programmierung wird die Methode zur Ausführung eines Aufrufs an Hand der Objekttypen (Laufzeittypen) der Argumentwerte bestimmt.

Im einfachsten Falle besteht ein Aufruf aus einem Selektor »f« und einem Argumentausdruck »x«.
f(x)
Gibt es nun zwei Methodendefinitionen
f(A x) := 1.
f(B x) := 2.

so ergibt der Aufruf »1« oder »2«, wenn der Objekttyp von »x« »A« bzw. »B« ist.

In der strukturierten, aber nicht-objektorientierten Programmierung entspricht diesen beiden Methoden in etwa die Methode

f(x) := objecttype(x)==A ? 1 : 2;

Welchen Vorteil hat nun die objektorientierte Methodendefinition?

In der objektorientierten Schreibweise wird die Abhängigkeit einer Methode von einem Objekttyp bereits in der Schnittstelle notiert. Die Methodendefinitionen sind kleinteiliger. Dadurch können alle Methodendeklarationen, die zu einem Objekttyp gehören, ermittelt und manipuliert werden (etwa, wenn eine Objekttyp zu einem Programm gefügt oder aus ihm entfernt werden soll).

Insbesondere ist es möglich, alle Methodendefinitionen, die zu einem Objekttyp gehören, in der „Klasse“ dieses Objekttyps zusammenzufassen und damit übersichtlich zu gruppieren.

In der nicht-objektorientierten Schreibweise wird die Abhängigkeit der Methode vom Argumentobjekttyp nicht stillschweigend durch die Implementation verwirklicht, sondern muß vom Programmierer ausdrücklich notiert werden. Daher muß sie dann beim Hinzufügen oder Entfernen eines Objekttyps in verschiedenen Methoden angepaßt werden, was manchmal fast unmöglich ist.

In der objektorientierten Schreibeweise sind die einzelnen Methoden feinkörniger, sie können daher besser manipuliert werden und geben über ihre Schnittstelle mehr maschinell verwendbare Informationen nach außen. Sie bilden Ankerpunkte für Dokumentation. In der nicht-objektorientierten Schreibweise wird Quelltext zu verschiedenen Objekttypen in einer einzigen größeren Methode untergebracht und ist daher weniger einfach explizit manipulierbar.

Anhang: Eine kleine Sammlung von Antworten

Was ist objektorientierte Programmierung?

Im allgemeinen Sinne ist ein Objekt zunächst ein Stück des Speichers.

Die Bedeutung des Zustand eines Speicherstücks ist nicht selbsterklärend: Die Interpretation eines Zustands bedarf noch einer Interpretationsregel, die als »Typ« des Objekts bezeichnet wird.

Ein Teil der Typinformationen kann auch selber am Anfang eines Speicherstücks gespeichert werden und wird dann auch »Laufzeittypinformation« genannt.

Die objektorientierte Programmierung verwendet Objekte, die mit Laufzeittypinformationen versehen sind.

Warum werden Laufzeittypinformationen verwendet?

Sie werden immer dann benötigt, wenn Daten ausgetauscht werden sollen, deren Typ erst während des Ablaufs eines Programms vollständig bekannt wird oder werden soll.

Was ist eine objektorientierte Programmiersprache?

In einer objektorientierten Programmiersprache drückt ein Programm gewünschte Operation an einem Objekt (dem Zielobjekt) mit Hilfe eines Wortes aus. Die Programmiersprache stellt dann sicher, daß die korrekte Umsetzung dieses Wortes für ein bestimmtes Zielobjekt zur Laufzeit ermittelt und aktiviert wird. Dazu verwendet sie implizit den Typ des Objekts, so daß das Programm den Typ nicht selber explizit berücksichtigen muß.

Was ist der wichtigste Vorteil objektorientierter Programmiersprachen?

Es ist möglich, Wörter für neue Typen zu erweitern, ohne schon vorhandene Programmteile verändern zu müssen.

Man kann Wörter für Typen verwenden, die es noch gar nicht gibt, und muß daher den Programmteil mit der Verwendung nicht ändern, wenn später Typen hinzugefügt werden. (Späte Bindung, Laufzeitbindung, Laufzeitpolymorphie).

Kann ein Beispiel dafür angegeben werden?

Die Operation »println« verwendet intern das Wort »toString«. (Dies ist in dem folgenden Programm nicht sichtbar.) Obwohl sie geschrieben wurde, als es den Typ »Text« noch gar nicht gab, kann sie nun unverändert dieses Wort auch mit einem Zielobjekt vom Typ »Text« verwenden, um dessen Textdarstellung zu erhalten. Diese Textdarstellung gibt sie dann aus.

class Text
{ public java.lang.String toString(){ return "alpha"; }}

public class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( new Text() ); }}

alpha

Ist das in der prozeduralen Programmierung auch möglich?

In der prozeduralen Programmierung könnte man ein in einer Bibliothek schon definiertes Verb »toString« nicht erweitern, ohne dazu die Definition der Funktion »toString« aus der vorhandenen Bibliothek zu verändern. Die Veränderung von Bibliotheksfunktionen ist aber aus vielen Gründen schlecht.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram721911 stefan_ram:721911 Warum objektorientierte Programmierung Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd721911, slrprddef721911, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/warum-objektorientierte-programmierung