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

Содержимое удалено Содержимое добавлено
Строка 51:
===Класс как фабрика===
 
Следующий возникающий вопрос как наша УпорядоченнаяСовокупность создаётся. Как-никак она не появляется с помощью магии. Ответ состоит в том что мы просим <i>класс</i> УпорядоченнаяСовокупность создать два <i>экзэмпляраэкземпляра</i> УпорядоченнойСовокупности. Следующий код показывает как создаются, и присваиваются переменным, два экзэмпляраэкземпляра УпорядоченнойСовокупности (:= это оператор присвоения).
 
\begin{verbatim}
Строка 58:
\end{verbatim}
 
Таким образом наряду с тем что класс хранилище для кода он ещё является фабрикой создающей экзэмплярыэкземпляры себя. Точно так жэже как автомобильный завод производит машынымашины фабрика (класс) УпорядоченнаяСовокупность производит УпорядоченныеСовокупности. Фабрика содержытсодержит проэктпроект для создания объектов, и шаблон на который похож объект - для данных содержащихся в нём.
 
Сейчас давайте на момент вернёмся назад на один шаг и посмотрим на код вышэвыше по тексту который создаёт экзэмплярыэкземпляры УпорядоченнойСовокупности. Обратите внимание что мы посылаем сообщение <tt>новый</tt> УпорядоченнойСовокупности. Вспомните что мы просим объекты выполнять некоторые вещи посылая им сообщения. Данный код выглядит так как будто класс УпорядоченнаяСовокупность является объектом, и это действительно так. Не только наш собственный экзэмплярэкземпляр класса УпорядоченнаяСовокупность является объектом, но и фабрика которая создаёт его. Мы называем <i>классом</i> объект являющийся фабрикой, и экзэмпляромэкземпляром каждый объект который создаёт фабрика. Так в нашэмнашем случае мы имеем класс УпорядоченнаяСовокупность который создаёт два экзэмпляра УпорядоченнойСовокупности.
 
Из за того что класс содержытсодержит шаблон для индивидуального экзэмпляра УпорядоченнойСовокупности, каждая УпорядоченнаяСовокупность содержытсодержит свои собственные копии переменных экзэмпляраэкземпляра первыйИндэкспервыйИндекс и последнийИндэкспоследнийИндекс. И из за того что класс это хранилище кода, каждый экзэмплярэкземпляр УпорядоченнойСовокупности использует код класса.
 
===Класс как абстракция===