Die Antwort ist aus zwei Gründen kompliziert.
Verschiedene Menschen in der Informatik interpretieren den Begriff "Objekt" unterschiedlich. Zum einen besteht ein Objekt aus einigen Daten und Operationen, die zusammen gepackt sind. Das andere ist, dass ein Objekt alles ist, aber auch "Zustand" hat, dh es ist eine Form einer veränderbaren Entität.
Es gibt tiefe philosophische Fragen, die damit zu tun haben, was "Veränderung" bedeutet (und was "Entität" bedeutet, da sie sich ständig ändert) und ob mathematische Beschreibungen tatsächlich veränderbare Entitäten erfassen.
Objekt im Sinne von Daten + Operationen : Das ist in der Mathematik ziemlich Standard. Nehmen Sie ein beliebiges Lehrbuch zur Gruppentheorie. Es wird irgendwo eine Definition wie . (Es ist ein Konjugationsoperator.) Das h g ist ein "Objekt" in dieser Terminologie. Es hat einige Daten ( g ) und eine Operation x ↦ g x g - 1 . Oder Sie können es mehr Objekt-y machen , indem das Paar unter ⟨ g , x ↦ g x g - 1hG( x ) = gx g- 1hGGx ↦ gx g- 1 Oder das Dreifach ⟨ g , x ↦ g x g - 1 , x ↦ g - 1 x g ⟩ . Sie können diese Art von "Objekten" in jeder funktionalen Programmiersprache erstellen, die über eine Lambda-Abstraktion verfügt und auf irgendeine Weise Tupel bildet. Abadis und Cardellis "Theory of Objects" befasst sich ausführlich mit Objekten dieser Art.⟨ g, X ↦ gx g- 1⟩⟨ g, X ↦ gx g- 1, X ↦ g- 1x g⟩
Objekte mit Zustand (oder Objekte, die sich ändern ): Hat die Mathematik solche Dinge? Das glaube ich nicht. Ich habe keinen Mathematiker gesehen, der über etwas gesprochen hat, das sich ändert, nicht in seinem Berufsleben. Newton schrieb für die Position eines Teilchens, das sich angeblich ändert, und ˙ x für seine Änderungsrate. Mathematiker fanden schließlich heraus, dass Newton von einer Funktion x ( t ) aus reellen Zahlen in einen Vektorraum sprach , und ˙ x war eine weitere solche Funktion, die die erste Ableitung von x ( t ) in Bezug auf t warxx˙x ( t )x˙x ( t )t. Daraus haben viele tief denkende Mathematiker geschlossen, dass Veränderungen nicht wirklich existieren und alles, was Sie haben, Funktionen der Zeit sind. Aber was sich in der Newtonschen Mechanik änderte, war nicht die Position, sondern das Teilchen . Die Position ist ihr augenblicklicher Zustand. Kein Mathematiker oder Physiker würde so tun, als wäre ein Teilchen eine mathematische Idee. Es ist eine physische Sache.
So ist es auch mit Objekten. Sie sind "physikalische" Dinge, und die Zustände sind ihre mathematischen Attribute. Eine ausführliche Beschreibung dieses Aspekts finden Sie in Kapitel 3 von Abelson und Sussmans Struktur und Interpretation von Computerprogrammen . Dies ist ein Lehrbuch am MIT und sie bringen es allen Wissenschaftlern und Ingenieuren bei, die meiner Meinung nach "physikalische" Dinge vollkommen verstehen.
x1( t )x2( t )
In ähnlicher Weise besteht die mathematische Standardmethode zum Modellieren objektorientierter Programme darin, jedes Objekt als Index in den Zustandsraum zu behandeln. Der einzige Unterschied besteht darin, dass Objekte kommen und gehen und die Struktur des Systems dynamisch ist. Wir müssen es auf ein "mögliches Welt" -Modell erweitern, bei dem jede Welt im Grunde eine Sammlung von Indizes ist. Die Zuweisung und Freigabe von Objekten würde den Wechsel von einer Welt in eine andere beinhalten.
Es gibt jedoch ein Problem. Anders als in der Mechanik möchten wir, dass der Zustand unserer Objekte eingekapselt wird . Aber die mathematischen Beschreibungen von Objekten setzen überall Zustände und zerstören die Kapselung vollständig. Es gibt einen mathematischen Trick namens "relationale Parametrizität", mit dem Dinge auf ihre Größe zurückgeschnitten werden können. Ich werde jetzt nicht darauf eingehen, außer um zu betonen, dass es sich um einen mathematischen Trick handelt, nicht um eine sehr konzeptionelle Erklärung der Kapselung. Eine zweite Möglichkeit, Objekte mit Kapselung mathematisch zu modellieren , besteht darin, die Zustände zu verfeinern und das Objektverhalten anhand beobachtbarer Ereignisse zu beschreiben. Für eine gute Diskussion dieser beiden Modelle kann ich Sie auf meinen Artikel mit dem Titel Objekte und Klassen in algolähnlichen Sprachen verweisen .
[Anmerkung hinzugefügt:]
Eine schöne Analyse der mathematischen Grundlagen von Objekten findet sich in William Cooks Artikel " On Understanding Data Abstraction, Revisited ".