Welche Design- und Implementierungsprobleme mussten Programmierer lösen, als sie sich entschieden, zuerst Strukturen und Klassen zu verwenden?
Wann ist das passiert und wer waren die Pioniere hinter diesen Ideen?
Beachten Sie, dass dies eine doppelte Frage ist, da Strukturen und Klassen zusammenhängen. Mir ist klar, dass Strukturen älter sind als Klassen. Es wäre großartig, wenn die Antwort getrennt über beide sprechen und einige Quellen zitieren würde.
struct
Schlüsselwort dann optional, wenn die Struktur verwendet wird.Antworten:
Die Idee einer Struktur besteht darin, eine Sammlung von Variablen in einem einzigen Container zusammenzufassen. ZB wenn Sie drei Koordinaten haben
Vielleicht möchten Sie sie als Dateneinheit anzeigen und zusammenfassen:
Sie können dies als eine Möglichkeit sehen, Ihre Daten zu modularisieren. Jetzt können Sie Variablen definieren, die alle drei Werte in einer Einheit enthalten:
In der prozeduralen Programmierung haben Sie Prozeduren oder Funktionen, die Daten und insbesondere Strukturen manipulieren, z
Sie können die Funktion für eine Struktur aufrufen, indem Sie sie als Argument übergeben:
Der Schritt von Strukturen zu Klassen besteht darin, zu sagen, dass Prozeduren / Funktionen zusammen mit Daten zu Einheiten gruppiert werden sollten: Wie Strukturen klassifizieren Entitäten mit derselben Struktur, klassifizieren Klassen Entitäten mit derselben Struktur und Operationen.
Jetzt können Sie schreiben:
und dann:
Auf diese Weise ist es einfacher, Vorgänge zu gruppieren, die mit derselben Art von Daten arbeiten. Sie können beispielsweise alle Operationen zusammenfassen, die auf Punkte in der Klassendefinition einwirken, anstatt sie als Funktionen mit einem oder mehreren Parametern vom Typ point über Ihren Code zu verteilen.
Darüber hinaus können Sie Struktur und Verhalten mithilfe der Vererbung verfeinern.
Zusammenfassen: Strukturen sind ein Konzept, mit dem Daten organisiert / modularisiert werden können. Klassen ermöglichen das Organisieren / Modularisieren von Daten und Operationen.
quelle
Simula 67
wie WorldEngineer schreibt, und vielleicht wird irgendwo geschrieben, warum diese Idee unter anderen Programmiersprachen populär wurde.Strukturen sind Datengruppen, die normalerweise typisiert werden. COBOL sah die erste weit verbreitete Verwendung von ihnen. Obwohl Analoga dazu vorher existierten. Das Designproblem besteht darin, mehrere Datensätze wie einen Namen, einen Beruf und eine Telefonnummer zu gruppieren. Die Idee einer "Aufzeichnung" ist viel älter als das Rechnen und taucht in der Mathematik und in vielen anderen Disziplinen auf.
Die objektorientierte Programmierung wurde ursprünglich für die Simulation entwickelt, bei der eine Reihe von Objekten ausgeführt werden, um ein System zu simulieren. Simula 67 war die erste, die diesen Programmierstil implementierte. Smalltalk war die erste vollständig objektorientierte Sprache, in der alles ein Objekt einschließlich Primitiven ist. Das ursprünglich gelöste Problem war die Simulation komplexer Systeme. Simula 67 wurde von Ole-Johan Dahl und Kristen Nygaard entworfen. Alan Kay (der einmal eine Frage zu Stack Overflow beantwortet hat ) hat Smalltalk entworfen, das immer noch verwendet wird.
Strukturen und Klassen sind ziemlich eng mit Typen verbunden, da beide bestimmte Parameter für einen Datensatz definieren. Klassen definieren die Zugriffsberechtigungen und -operationen weiter und ermöglichen so vollständig implementierte abstrakte Datentypen. Strukturen können als Teilmenge von Klassen in einer objektorientierten Sprache betrachtet werden. Sie wären eine Wrapper-Klasse, bei der alle Felder auf public gesetzt sind und keine Methoden außerhalb von Gettern und Setzern für diese Felder.
quelle
Informationen zu Strukturen finden Sie in diesem Wikipedia-Artikel . Kurz gesagt, sie scheinen so tief in der Informatik verankert zu sein, dass sie zuerst von Hardware unterstützt wurden (spezielle Anweisungen in IBM 1620, Lochkarten im Grunde als eine Datensatzinstanz und Babbages Analytical Engine (zumindest laut Wikipedia). COBOL war das erste weit verbreitete Sprache zur Unterstützung des Konstrukts.
quelle
"Strukturen" unterscheiden sich eigentlich völlig von "Klassen". Stellen Sie sich den alten Stil "struct" als Rekord vor. In QBASIC wurden sie sogar so genannt. Die Notwendigkeit ist ziemlich offensichtlich und obwohl ich nicht sagen kann, wer es erfunden hat ... würde ich mir vorstellen, dass es fast sofort auftauchte. OOP "Klassen" scheinen mit Simula ziemlich gut begonnen zu haben: http://en.wikipedia.org/wiki/Object-oriented_programming#History
quelle
struct
und aclass
ist , dassclass
standardmäßigprivate
währendstruct
Standardwertepublic
.