Стратегии реализации для объектной ориентации

В настоящее время я изучаю Smalltalk в среде Squeak и читаю "Squeak - A Quick Trip To ObjectLand". Я вхожу в объектно-ориентированную парадигму с некоторыми предварительными знаниями Python и Java, и это предложение из книги на странице 36 заставило меня задуматься:

Smalltalk — это основанная на классах реализация объектно-ориентированного языка.

Короткая фраза, но очень интересная. В ООП все термины, такие как класс, объект, экземпляр, кажутся четко определенными и указывают на одно-единственное истинное значение, и вы, вероятно, столкнетесь с общими предложениями, такими как «объекты являются экземплярами класса».
Но вы редко слышите о стратегиях реализации. Что в данном случае означает реализация объектно-ориентированной концепции? Существуют ли реализации ОО-языков, кроме классов?


person f4lco    schedule 26.10.2012    source источник


Ответы (2)


Javascript — это прототип реализации объектно-ориентированного языка.

Вместо подкласса класса и создания экземпляра этого нового класса вы наследуете поведение, клонируя прототип.

В качестве исторической справки я должен добавить, что, хотя Javascript, вероятно, является наиболее широко используемым языком, использующим прототипы, первым был Язык собственного языка.

Существует несколько реализаций прототипы для Squeak. Я ими не пользовался, поэтому ничего не могу сказать о библиотеках.

person Frank Shearar    schedule 26.10.2012

Я никогда не видел, но читал об Emerald, который является объектно-ориентированным, но не основанным ни на классах, ни на прототипах, но, похоже, создает объекты один за другим с помощью специального конструктора:

Однако объекты Emerald не требуют объекта Class для их создания. В большинстве объектно-ориентированных систем программист сначала указывает объект класса, который определяет структуру и поведение всех его экземпляров. Объект класса также отвечает на новые вызовы для создания новых экземпляров.

Напротив, объект Emerald создается путем выполнения конструктора объекта. Конструктор объекта — это выражение Emerald, определяющее представление, операции и процесс объекта.

См. Эндрю Блэк, Норман Хатчинсон, Эрик Джул и Генри Леви: Структура объектов в системе Emerald< /а>.

person Helene Bilbo    schedule 26.10.2012