Smalltalk в примерах/Создание экземпляра: различия между версиями
Содержимое удалено Содержимое добавлено
Kolas (обсуждение | вклад) м →Классы с единственным экземпляром: орфография |
Kolas (обсуждение | вклад) орфография |
||
Строка 8:
совокупность := УпорядоченнаяСовокупность новый.
Если ты пошлёшь классу совокупность сообщение \emph{новый}, оно вернёт новую совокупность\footnote{Sending new: to a class that is not variable sized will generate an exception}. Размер всегда должен быть нулевым пока совокупность пустая, но вместимость будет равна вместимости по умолчанию для данного класса. Вместимость это количество элементов которые ты можешь поместить в совокупность до того как он начнёт увеличиваться. Например, выполнение следующих выражений даёт вместимость
<!--
Строка 18:
\end{verbatim}
Увеличение вместимости совокупности довольно дорого потому что увеличивающий код создаёт новую совокупность с большей вместимостью, копирует все элементы текущей совокупности, затем большая совокупность становится новой. Если ты
<!--
Строка 28:
поток := (Поток новый: 100) writeStream.
Методы \verb|новый| и \verb|новый:| реализованы в \verb|Behavior|, однако они переопределены во многих классах. Из за того что твой класс наследует \verb|новый| и \verb|новый:|, ты не должен переопределять их пока твой класс ---. Есть два типа присвоения которые могут быть сделаны: присваивание переменной начального значения по умолчанию, и присваивание переменной значения специфичного для
<!--
Строка 46:
^sickHoursUsed неОпределено?
истина: [sickHoursUsed := 0]
В качестве альтернативы, ты можешь инициализировать все данные в одном методи \verb|инициализация|. Lazy инициализация полезна ести твой объект никогда не использует данные которые сложны для инициализации, но на доступ к данным тратится дополнительное сообщение при каждом обращении. Если ты хочешь ---. Например, для объекта \verb|Сотрудник| мы может быть следующий метод инициализации.
Строка 69:
^супер новый инициализация
До того как ты переопределиш \verb|новый| как показано здесь, ты должен знать что \verb|супер новый| существует. Если метод \verb|новый| в суперкласс посылает сообщение \verb|инициализация|, твой метод \verb|инициализация| будет вызван дважды, один раз при вызове метода \verb|новый|, затем второй раз при вызове метода \verb|новый| \emph{Сотрудника}. В этой ситуации ты не должен переопределять \verb|новый| пока ты можешь наследовать его из суперкласса. Т.к. в суперклассе есть метод \verb|инициализация|
<!--
Строка 201:
==Классы с единственным экземпляром==
Некоторые классы имеют только один экземпляр. Примерами из системных классов являются \verb|истина|, которая является единственым экземпляром класса \verb|Истина|, \verb|
<!--
Строка 214:
класс МойКласс>>новый
экземпляр пусто?
только один экземпляр МоегоКласса'].
экземпляр := сам простойНовый.
Строка 222:
^экземпляр пусто?
истина? [экземпляр := сам простойНовый]
[[Smalltalk в примерах/Специальные переменные, буквы и символы|Специальные переменные, буквы и
|