Smalltalk в примерах/Основы: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 145:
==Абстрактные суперклассы==
 
Сейчас давайте расшыримрасширим идею наследования. СортированаяСовокупность это подкласс <i>УпорядоченнойСовокупности</i>. Другие подклассы УпорядоченнойСовокупности включают <i>РегулярнуюСовокупность</i> и <i>СвязынныйСписокСвязанныйСписок</i>. УпорядоченныеСовокупности, Массивы и СвязанныеСписки имеют некоторое общее поведение которое определено в классе РегулярнаяСовокупность. Однако, вы не можэтеможете создать экзэмплярэкземпляр РегулярнойСовокупности (вы можэтеможете, но вы получите ошыбкуошибку если попытаетесь что-либо сделать с ней).
 
Класс УпорядоченнаяСовокупность существует как место для хранения кода который является общим для упомянутых классов. Общее поведение отделяется помещается в абстрактный суперкласс, который не можэтможет иметь экзэмпляровэкземпляров --- т.е. не должэндолжен создавать экзэмплярыэкземпляры себя. Например методы <tt>копироватьОт:до:</tt> и <tt>наличие---</tt>: оба написаны в РегулярнойСовокупности и наследуются её подклассами.
 
Таким образом, абстрактный суперкласс это класс который не имеет своих экзэмпляров, но который существует как хранилище для общего кода. Абстрактный суперкласс РегулярнаяСовокупность сам имеет абстрактный суперкласс, <i>Совокупность</i>. Совокупность это такжэ суперкласс для <i>Множэства</i> и <i>Мешка</i>, совокупностей для которых нет понятия порядка. Совокупность обеспечивает поведение которое является общим для всех совокупностей, такое как <tt>пустая?</tt>, <tt>собрать:</tt>, <tt>делать:</tt> и <tt>включает:</tt>. (Некоторые подклассы переопределяют эти методы для осуществления подходящего поведения. Однако, многие подклассы наследуют поведение напрямую.) Рисунок~\ref{ierarhix} показывает малую часть иерархии Совокупностей.