Objektový jazyk - Object-based language - Wikipedia
Termín "objektový jazyk"lze použít v technickém smyslu k popisu žádný programovací jazyk který využívá myšlenku zapouzdření stavu a operací uvnitř "objekty". Objektově založené jazyky nemusí podporovat dědictví nebo podtypování, ale o těch, kteří to dělají, se také říká, že jsou "objektově orientovaný". Objektově založené jazyky, které nepodporují dědičnost nebo podtypování, se obvykle nepovažují za skutečné objektově orientované jazyky.
Příklady objektově orientované jazyky, v hrubém chronologickém pořadí, zahrnout Simula, Pokec, C ++ (jehož objektový model byl založen na Simulově modelu), Cíl-C (jehož objektový model byl založen na Smalltalku), Eiffelova, Xojo (dříve REALbasic), Krajta, Rubín, Jáva, Visual Basic .NET, C#, a Fortran 2003. Příklady jazyka, který je objektově založený, ale není objektově orientovaný, jsou rané verze Ada, Visual Basic (VB),JavaScript a Fortran 90. Všechny tyto jazyky podporují definici objektu jako datové struktury, ale postrádají polymorfismus a dědičnost.
V praxi se termín „objektově založený“ obvykle používá u těch objektových jazyků, které nejsou také objektově orientované, ačkoli všechny objektově orientované jazyky jsou podle definice také objektově založené. Místo toho se výrazy „objektově“ a „objektově orientované“ obvykle používají jako vzájemně se vylučující alternativy, nikoli jako kategorie, které se překrývají.
Někdy se používá termín „objektově založený“ prototypové jazyky, opravdové objektově orientované jazyky, které nemají třídy, ale ve kterých objekty místo toho dědí svůj kód a data přímo z jiných objektů "šablony". Příklad běžně používaného prototypu skriptovací jazyk je JavaScript.
Objektově i objektově orientované jazyky (ať už založené na třídách nebo prototypech) mohou být staticky zkontrolováno. Statická kontrola jazyků založených na prototypech může být obtížná, protože tyto jazyky často umožňují dynamické rozšiřování objektů o nové chování a dokonce i změnu jejich nadřazeného objektu (ze kterého dědí) za běhu.[1][2]
Rozdíl mezi objektově orientovanými a objektově založenými jazyky
Objektově orientovaný jazyk | Objektový jazyk |
---|---|
Objektově orientovaný jazyk podporuje všechny funkce OOP (abstrakce, zapouzdření, dědičnost, polymorfismus). | Objektově založené jazyky nepodporují všechny funkce OOP jako polymorfismus nebo dědictví.[Citace je zapotřebí ] |
Příklady: C ++, C#, Jáva atd. | Příklady: VB (pre-.NET)[Citace je zapotřebí ] |
Reference
- ^ Wegner, Peter (prosinec 1987). Meyrowitz, Norman (ed.). „Dimenze jazykového designu založeného na objektech“ (PDF). Sborník konferencí OOPSLA'87. 22 (12): 168--182.
- ^ Barbey, S; M. Kempe; A. Strohmeier (1993). „Objektově orientované programování s Ada 9X“. Návrh technické zprávy. Švýcarský federální technologický institut v Lausanne Software Engineering Laboratory. Citováno 15. prosince 2013.
Samotná Ada 83 se obecně nepovažuje za objektově orientovanou; spíše se podle Wegnerovy terminologie [Weg 87] říká, že je objektová, protože poskytuje pouze omezenou formu dědičnosti a postrádá polymorfismus.