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

Содержимое удалено Содержимое добавлено
м Категоризация по запросу на w:ВП:РДБ
Строка 17:
Наш объект акция содержит данные: название акции, обозначение, текущую цену, объём последней сделки и объём продаж за день; и сообщения: <tt>имяАкции, обозначение, цена, последняяСделка, объёмСделок</tt>, и <tt>покупка:цена:</tt> (плюс некоторые другие). Данные хранятся в переменных экземпляра. Каждый объект акция имеет свою собственную копию <i>переменных экземпляра</i>, так что каждая акция может хранить различные значения цены, обозначения, и т.д.
 
== Инкапсуляция ==
 
Когда ты посылаешь сообщение <tt>покупка: количествоАкций цена: цена</tt> конкретному объекту акция, он обновляет переменные экземпляра <i>''цена, последняяСделка</i>'' и \emph{''объёмСделок}''. Не существует <i>''другого</i>'' пути для изменения этих переменных. Ни один другой объект не может прочитать или изменить данные объекта XYZ. Это можно сделать только посылая объекту <tt>XYZ</tt> сообщение. Некоторые сообщения обновляют данные объекта акция, и некоторые сообщения возвращают значения. Но ни один объект не может получить доступ к данным напрямую. Данные <i>''инкапсулированы</i>'' в объекте. Рисунок~\ref{incapsulxcyx} показывает представление данной инкапсуляции.
 
\begin{figure}[!htb]
Строка 29:
\end{figure}
 
Тот факт что данные инкапсулированы означает что мы можем изменить способ их хранения. Так долго как мы сохраняем общедоступный интерфейс который мы определили - — сообщения на которые объект отвечает, мы можем делать всё что захотим внутри объекта. В один день мы можем решить хранить цену в долларах и центах, в следующий день в центах, в следующий день в восьмёрках долларов, и  т. д. Так долго как мы также меняем способ которым метод <tt>цена</tt> манипулирует данными до их возвращения, мы поддерживаем общедоступный интерфейс несмотря на то что объект внутренне изменяется.
 
==Классы==