Objekt (Informatik)
Im Informatik, ein Objekt kann a sein Variable, a Datenstruktur, a Funktion, oder ein Methode. Als Regionen von Erinnerung, Sie beinhalten Wert und werden verwiesen von Kennungen.
In dem objektorientierter Programmierung Paradigma, Objekt Kann eine Kombination aus Variablen, Funktionen und Datenstrukturen sein; insbesondere in Klassenbasierte Variationen des Paradigmas bezieht sich auf eine bestimmte Beispiel von a Klasse.
In dem Relationales Modell von Datenbank Management kann ein Objekt a sein Tisch oder Säuleoder eine Zusammenarbeit zwischen Daten und einer Datenbankeinheit (z. B. das Alter einer Person mit einer bestimmten Person).[1]
Objektbasierte Sprachen
Eine wichtige Unterscheidung in Programmiersprachen ist der Unterschied zwischen einer objektorientierten Sprache und einer objektbasierten Sprache. Eine Sprache wird normalerweise als objektbasiert angesehen, wenn sie die grundlegenden Funktionen für ein Objekt enthält: Identität, Eigenschaften und Attribute. Eine Sprache wird als objektorientiert angesehen, wenn sie objektbasiert ist und auch die Fähigkeit von hat Polymorphismus, Vererbung, Kapselung und möglicherweise Komposition. Polymorphismus bezieht sich auf die Fähigkeit, den Namen einer Funktion mit mehreren Verhaltensweisen zu überladen, basierend auf welchen Objekten an sie übergeben werden. Konventionelle Nachrichtenübergabe diskriminiert nur das erste Objekt und berücksichtigt, dass das "Senden einer Nachricht" an dieses Objekt sein wird. Einige objektorientierte Programmiersprachen wie z. Flavors und die Gemeinsames Lisp -Objektsystem (CLOS) Aktivieren Sie mehr als den ersten Parameter der Funktion.[2] Die Vererbung ist die Fähigkeit, eine Objektklasse zu subklassen, eine neue Klasse zu erstellen, die eine Unterklasse eines vorhandenen ist und alle Datenbeschränkungen und Verhaltensweisen seiner Eltern erbt, aber auch neue und/oder ändert eine oder mehrere von ihnen.[3][4]
Objekt orientierte Programmierung
Objektorientierte Programmierung ist ein Ansatz zum Entwerfen modularer wiederverwendbarer Softwaresysteme. Der objektorientierte Ansatz ist eine Entwicklung guter Designpraktiken, die auf den Beginn der Computerprogrammierung zurückkehren. Objektorientierung ist einfach die logische Erweiterung älterer Techniken wie z. Strukturierte Programmierung und Abstrakte Datentypen. Ein Objekt ist ein abstrakter Datentyp mit Zugabe von Polymorphismus und Nachlass.
Anstatt Programme als Code und Daten zu strukturieren, integriert ein objektorientiertes System die beiden unter Verwendung des Konzepts eines "Objekts". Ein Objekt hat Status (Daten) und Verhalten (Code). Objekte können Dingen in der realen Welt entsprechen. So hat beispielsweise ein Grafikprogramm Objekte wie z. Kreis, Quadrat, Speisekarte. Ein Online -Einkaufssystem verfügt über Objekte wie Einkaufswagen, Kunde, Produkt. Das Einkaufssystem unterstützt Verhaltensweisen wie Bestellung aufgeben, Zahlung leisten, und Rabatt bieten. Die Objekte sind als Klassenhierarchien konzipiert. Zum Beispiel kann es mit dem Einkaufssystem hochstufige Klassen geben, wie z. Elektronikprodukt, Küchenprodukt, und Buchen. Es kann beispielsweise weitere Verfeinerungen unter geben elektronische Produkte: CD -Player, DVD -Playerusw. Diese Klassen und Unterklassen entsprechen Sets und Untergruppen in mathematischer Logik.[5][6]
Spezialobjekte
Ein wichtiges Konzept für Objekte ist das Designmuster. Ein Entwurfsmuster bietet eine wiederverwendbare Vorlage, um ein gemeinsames Problem zu lösen. Die folgenden Objektbeschreibungen sind Beispiele für einige der häufigsten Designmuster für Objekte.[7]
- Funktionsobjekt: Ein Objekt mit einer einzelnen Methode (in C ++, diese Methode wäre der Funktionsoperator "Operator ()"), der wie eine Funktion (wie ein C/C ++ - Zeiger auf eine Funktion) wirkt.
- Unveränderliches Objekt: Ein Objekt, das mit einem festen Zustand zur Erstellungszeit eingerichtet ist und sich danach nicht ändert.
- Erstklassiges Objekt: Ein Objekt, das ohne Einschränkung verwendet werden kann.
- Containerobjekt: Ein Objekt, das andere Objekte enthalten kann.
- Fabrikobjekt: Ein Objekt, dessen Ziel es ist, andere Objekte zu erstellen.
- MetaObject: ein Objekt, aus dem andere Objekte erstellt werden können (vergleichen Sie mit a Klasse, was nicht unbedingt ein Objekt ist).
- Prototypobjekt: Ein spezialisiertes Metaobjekt, aus dem andere Objekte durch Kopieren erstellt werden können
- Gott Objekt: ein Objekt, das zu viel weiß oder tut (es ist ein Beispiel für eine Anti-Muster).
- Singleton -Objekt: Ein Objekt, das die einzige Instanz seiner Klasse während der Lebensdauer des Programms ist.
- Filterobjekt: Ein Objekt, das einen Datenstrom als Eingabe empfängt und es in die Ausgabe des Objekts verwandelt. Oft sind die Eingangs- und Ausgabeströme Streams von Zeichen, aber es können auch Streams von willkürlichen Objekten sein. Diese werden im Allgemeinen in Wrappern verwendet, da sie die vorhandene Implementierung mit der auf der Entwicklerseite erforderlichen Abstraktion verbergen.
Verteilte Objekte
Der objektorientierte Ansatz ist nicht nur ein Programmiermodell. Es kann gleich gut verwendet werden wie eine Schnittstellendefinitionssprache für verteilte Systeme. Die Objekte in a verteiltes Computer Das Modell ist tendenziell größer, körnig, länger dauerhaft und serviceorientierter als Programmierobjekte.
Eine Standardmethode zum Verpacken von verteilten Objekten erfolgt über eine Schnittstellendefinitionssprache (IDL). Ein IDL schützt den Client aller Details des verteilten Serverobjekts. Details wie der Computer, auf dem das Objekt lebt, was Programmiersprache Es verwendet, was Betriebssystemund andere plattformspezifische Probleme. Die IDL ist in der Regel auch Teil einer verteilten Umgebung, die Dienste wie Transaktionen und Persistenz für alle Objekte auf einheitliche Weise anbietet. Zwei der beliebtesten Standards für verteilte Objekte sind die Objektverwaltungsgruppe's Corba Standard und Microsoft's dcom.[8]
Zusätzlich zu verteilten Objekten wurde eine Reihe anderer Erweiterungen des Grundkonzepts eines Objekts vorgeschlagen, um verteiltes Computer zu ermöglichen:
- Protokollobjekte sind Komponenten von a Protokollstapel Das schließt die Netzwerkkommunikation in einer objektorientierten Schnittstelle ein.
- Replikierte Objekte sind Gruppen verteilter Objekte (genannt Repliken) Dadurch werden ein verteiltes Mehrparteiungsprotokoll ausgeführt, um eine hohe Konsistenz zwischen ihren internen Zuständen zu erzielen, und die auf koordinierte Weise auf Anfragen reagieren. Beispiele sind fehlertolerant Corba Objekte.
- Live verteilte Objekte (oder einfach Live -Objekte)[9] verallgemeinern repliziertes Objekt Konzept für Gruppen von Replikaten, die intern ein verteiltes Protokoll verwenden könnten, was möglicherweise nur zu einer schwachen Konsistenz zwischen ihren lokalen Zuständen führt.
Einige dieser Erweiterungen, wie z. verteilte Objekte und Protokollobjekte, sind domänenspezifische Begriffe für spezielle Arten von "gewöhnlichen" Objekten, die in einem bestimmten Kontext verwendet werden (wie z. Fernmethodenaufruf oder Protokollzusammensetzung). Andere, wie z. Replikierte Objekte und Live verteilte Objekte, sind mehr nicht standardmäßig, da sie den üblichen Fall aufgeben, dass ein Objekt jeweils an einem einzigen Ort liegt, und das Konzept auf Gruppen von Entitäten (Replikaten) anwenden, die möglicherweise über mehrere Orte hinweg überspannen, möglicherweise nur schwach konsistenten Zustand haben kann und deren Mitgliedschaft sich dynamisch ändern.
Das semantische Web
Das Semantisches Web ist im Wesentlichen ein Rahmen für verteilte Objekte. Zwei Schlüsseltechnologien im semantischen Web sind die Web -Ontologie -Sprache (Eule) und die Ressourcenbeschreibung Framework (RDF). RDF bietet die Fähigkeit, grundlegende Objekte - Names, Eigenschaften, Attribute, Beziehungen - zu definieren, die über das Internet zugänglich sind. Owl fügt ein reichhaltigeres Objektmodell hinzu, das auf der festgelegten Theorie basiert und zusätzliche Modellierungsfunktionen wie z. Mehrfacherbe.
Owl-Objekte sind nicht wie Standard großkörnig verteilte Objekte Zugriff über eine Schnittstellendefinitionssprache. Ein solcher Ansatz wäre für das Internet nicht geeignet, da sich das Internet ständig weiterentwickelt und die Standardisierung an einem Satz von Schnittstellen schwer zu erreichen ist. OWL -Objekte sind in der Regel den Arten von Objekten ähnlich, mit denen Anwendungsdomänenmodelle in Programmiersprachen wie Java und definiert werden C ++.
Es gibt jedoch wichtige Unterschiede zwischen OWL-Objekten und traditionellen objektorientierten Programmierobjekten. Traditionelle Objekte werden in statische Hierarchien in der Regel mit einzelnen Vererbung zusammengestellt, Owl -Objekte sind jedoch dynamisch. Ein Owl -Objekt kann seine Struktur zur Laufzeit ändern und zu einer Instanz neuer oder verschiedener Klassen werden.
Ein weiterer kritischer Unterschied ist die Art und Weise, wie das Modell Informationen behandelt, die sich derzeit nicht im System befinden. Programmierobjekte und die meisten Datenbanksysteme verwenden das "Annahme der geschlossenen Welt". Wenn dem System nicht bekannt ist, dass Tatsache als falsch angenommen wird. Semantische Webobjekte verwenden die Annahme der offenen WeltEine Aussage wird nur als falsch angesehen, wenn tatsächlich relevante Informationen, dass sie falsch ist, ansonsten angenommen wird, dass sie unbekannt und weder wahr noch falsch ist.
Owl -Objekte sind tatsächlich am ähnlichsten Objekte in der künstlichen Intelligenz Rahmensprachen wie zum Beispiel Kl-eins und Webstuhl.
Die folgende Tabelle kontrastiert traditionelle Objekte von objektorientierten Programmiersprachen wie Java oder C ++ mit semantischen Webobjekten:[10][11]
OOP -Objekte | Semantische Webobjekte |
---|---|
Klassen werden als Typen für Instanzen angesehen. | Klassen gelten als Einzelpersonen. |
Instanzen können ihren Typ zur Laufzeit nicht ändern. | Die Klassenmitgliedschaft kann sich zur Laufzeit ändern. |
Die Liste der Klassen ist zur Kompilierungszeit vollständig bekannt und kann sich danach nicht ändern. | Klassen können zur Laufzeit erstellt und geändert werden. |
Compiler werden zur Bauzeit verwendet. Kompilierungszeitfehler zeigen Probleme an. | Die Vernunft können zur Klassifizierung und Konsistenzprüfung zur Laufzeit oder zur Bauzeit verwendet werden. |
Klassen kodieren viel von ihrer Bedeutung und ihrem Verhalten durch imperative Funktionen und Methoden. | Klassen machen ihre Bedeutung in Bezug auf Owl -Aussagen explizit. Es kann kein imperativer Code beigefügt werden. |
Instanzen sind anonym, insofern sie nicht leicht von außerhalb eines ausführenden Programms angegangen werden können. | Alle namens RDF- und OWL -Ressourcen haben einen einzigartigen URI, auf den sie verwiesen werden können. |
Geschlossene Welt: Wenn es nicht genügend Informationen gibt, um eine Aussage wahr zu beweisen, wird angenommen, dass sie falsch sind. | Offene Welt: Wenn es nicht genügend Informationen gibt, um eine Aussage wahr zu beweisen, kann sie wahr oder falsch sein.[12] |
Siehe auch
- Objektlebensdauer
- Objektkopie
- Designmuster (Informatik)
- Geschäftsobjekt (Informatik)
- Schauspielermodell
Verweise
- ^ Oppel, Andy (2005). SQL entmystifiziert. McGraw Hill. p. 7. ISBN 0-07-226224-9.
- ^ Gabriel, Richard; Linda G. Demichie (1987). "Das Common Lisp -Objektsystem: eine Übersicht" (PDF). Lucid Inc. Technischer Bericht. Vorlesungsnotizen in Informatik. 276: 151. Bibcode:1987lncs..276..151d. doi:10.1007/3-540-47891-4_15. ISBN 978-3-540-18353-2.
- ^ Wegner, Peter (Dezember 1987). Meyrowitz, Norman (Hrsg.). "Dimensionen des objektbasierten Sprachdesigns". Oopsla'87 Konferenzbereitschaft. 22 (12): 168–182. doi:10.1145/38807.38823.
- ^ Barbey, s; M. Kempe; A. Strohmeier (1993). "Objektorientierte Programmierung mit ADA 9x". Entwurf des technischen Berichts. Schweizer Federal Institute of Technology in Lausanne Software Engineering Laboratory. Abgerufen 15. Dezember 2013.
ADA 83 selbst gilt im Allgemeinen nicht als objektorientiert; Nach der Terminologie von Wegner [WEG 87] soll sie eher Objektbasis sein, da es nur eine eingeschränkte Vererbungsform liefert und es an Polymorphismus fehlt.
- ^ Jacobsen, Ivar; Magnus Chrierson; Patrik Jonsson; Gunnar Overgaard (1992). Objektorientiertes Software -Engineering. Addison-Wesley ACM Press. ISBN 0-201-54435-0.
- ^ "Was ist ein Objekt?". Oracle.com. Oracle Corporation. Abgerufen 13. Dezember 2013.
- ^ Martin, Robert C. "Designprinzipien und Designmuster" (PDF). Archiviert von das Original (PDF) am 6. September 2015. Abgerufen 28. April 2017.
- ^ Orfali, Robert (1996). Der wesentliche Client/Server -Überlebenshandbuch. New York: Wiley Computer Publishing. pp.399–403. ISBN 0-471-15325-7.
- ^ Ostrowski, K., Birman, K., Dolev, D. und Ahnn, J. (2008)."Programmierung mit lebenden verteilten Objekten", Verfahren der 22. Europäischen Konferenz über objektorientierte Programmierung, Paphos, Zypern, 07. bis 11. Juli 2008, J. Vitek, Hrsg.,, Vorlesungsnotizen in Informatik, vol.5142, Springer-Verlag, Berlin, Heidelberg, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536.
- ^ Berners-Lee, Tim;James Hendler;Ora Lassila (17. Mai 2001). "Das semantische Web Eine neue Form von Webinhalten, die für Computer von Bedeutung ist, wird eine Revolution neuer Möglichkeiten auslösen". Wissenschaftlicher Amerikaner. 284: 34–43. doi:10.1038/ScientificAmerican0501-34. Archiviert von das Original am 24. April 2013.
- ^ Knublauch, Holger;Oberle, Daniel;Tetlow, Phil;Wallace, Evan (2006-03-09). "Ein semantischer Web-Primer für objektorientierte Softwareentwickler". W3c. Abgerufen 2008-07-30.
- ^ Tischauszug aus Tischen in: http://www.w3.org/2001/sw/bestpractices/se/odsd/
Externe Links
- Was ist ein Objekt? aus Die Java -Tutorials