Język obiektowy - Object-based language

Termin język obiektowy może być używany w sensie technicznym do opisania dowolnego języka programowania, który wykorzystuje ideę enkapsulacji stanu i operacji wewnątrz obiektów . Języki obiektowe nie muszą obsługiwać dziedziczenia ani podtypów , ale te, które obsługują , są również określane jako zorientowane obiektowo . Języki obiektowe, które nie obsługują dziedziczenia lub podtypowania, zwykle nie są uważane za prawdziwe języki obiektowe.

Przykłady języków zorientowanych obiektowo , w przybliżonym porządku chronologicznym, obejmują Simula , Smalltalk , C++ (który model obiektowy jest oparty na Simuli), Objective-C (który model obiektowy jest oparty na Smalltalku), Eiffel , Xojo (dawniej REALbasic), Python , Ruby , Java , Visual Basic .NET , C# i Fortran 2003 . Przykładami języka, który jest oparty na obiektach, ale nie jest zorientowany obiektowo, są wczesne wersje Ada , Visual Basic (VB), JavaScript i Fortran 90 . Wszystkie te języki obsługują definicję obiektu jako struktury danych, ale nie mają polimorfizmu i dziedziczenia.

W praktyce termin obiektowy jest zwykle stosowany do tych języków obiektowych, które nie są również zorientowane obiektowo, chociaż wszystkie języki obiektowe są z definicji również obiektowe. Zamiast tego terminy obiektowe i obiektowe są zwykle używane jako wzajemnie wykluczające się alternatywy, a nie jako nakładające się kategorie.

Czasami termin obiektowy jest stosowany do języków programowania opartych na prototypach , prawdziwych języków zorientowanych obiektowo, w których brakuje klas, ale w których obiekty zamiast tego dziedziczą swój kod i dane bezpośrednio z innych obiektów szablonów . Przykładem powszechnie używanego języka skryptowego opartego na prototypach jest JavaScript .

Zarówno języki obiektowe, jak i zorientowane obiektowo (zarówno oparte na klasach, jak i na prototypach) mogą być sprawdzane statycznie . Statyczne sprawdzanie języków opartych na prototypach może być trudne, ponieważ te języki często umożliwiają dynamiczne rozszerzanie obiektów o nowe zachowanie, a nawet zmianę ich obiektu nadrzędnego (z którego dziedziczą) w czasie wykonywania .

Różnica między językami obiektowymi i obiektowymi

Język zorientowany obiektowo Język obiektowy
Języki obiektowe obsługują wszystkie cechy programowania obiektowego (OOP): abstrakcję , enkapsulację , dziedziczenie , polimorfizm Języki obiektowe obsługują podzbiór cech OOP, takich jak polimorfizm lub dziedziczenie.
Przykłady: C++ , C# , Java itp. Przykłady: Visual Basic (pre-.NET)

Bibliografia