Суперкласс Smalltalk по сравнению с метаклассом?

Я в новинку для ООП, но с "процедурным" фоном.

Я в настоящее время пытаюсь получить голову вокруг ООП через GNU "Smalltalk Smalltalk и Lovejoy: Получение сообщения".

Я смущен относительно heck, который класс метакласса и Метакласса, по сравнению с суперклассом. Я вижу поток наследования суперкласса-> класс-> подкласс; но я не вижу, как/где метакласс вписывается. TIA...

7
задан Sasha Chedygov 25 January 2010 в 07:30
поделиться

3 ответа

Существует отличное описание в бесплатной онлайн-книге Pharo настоящим , глава 13 (классы и метаклассы). Вещи, объясненные в этой главе, являются общими для всех реализаций SmallTalk.

7
ответ дан 6 December 2019 в 14:04
поделиться

Существует два различных соотношений в классовых ОО: и и наследство .

Экземпция - это отношение между объектом и его классом , ключевое слово новых и т. Д. Обычно он реализован указателем в низкоуровневом представлении любого объекта Отказ В SmallTalk, класс анобъекта проходит этот указатель; Также происходит, что классы также являются объектами, а классы классов называются метаклассами, но это то же самое соотношение, что и с экземплярами.

Наследование - это отношения между классами . Вы можете отправиться от класса на свой суперкласс, делая Superclass ACLass и продолжайте делать это, пока не дойдете до объекта класса . В SmallTalk указатель SuperClass является просто переменной экземпляра, определенной на всех классах, и сообщение Superclass является обычным доступом.

3
ответ дан 6 December 2019 в 14:04
поделиться

На самом деле существует два уровня наследования: наследование экземпляра и наследование класса.

Smalltalk имеет специальную схему, которая позволяет передавать классы как объекты. Это означает, что классы также являются объектами сами по себе. Метакласс - это «просто» класс объекта класса.

Это не мешает нормальному наследованию экземпляров, поэтому оно не помещается ни в одной диаграмме суперкласс -> класс -> подкласс , которую вы использовали.

5
ответ дан 6 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: