ФЭНДОМ


1.0

Объекты и сообщенияПравить

Объекты представляют компоненты системы Смолток. Например, объекты представляют

  • числа
  • цепи знаков
  • очереди
  • словари
  • прямоугольники
  • папки с файлами
  • текстовые редакторы
  • программы
  • компиляторы
  • вычислительные процессы
  • финансовые истории
  • отображение информации

Объект состоит из некоторой собственной памяти и набора операций. Природа операций объекта зависит от типа представляемого компонента. Объекты представляющие числа вычисляют арифметические функции. Объекты представляющие структуры данных сохраняют и выдают информацию. Объекты представляющие позиции и площади выдают информацию о своём положении и площади.

Сообщение это запрос к объекту на выполнение его операции. Сообщение определяет нужную операцию, но не как данная операция должна быть выполнена. Получатель, объект к которому было послано сообщение, определяет как выполнить запрошенную операцию. Например, сумма выполняется путём посылки сообщения объекту представляющему число. Сообщение определяет что требуется выполнить сложение и также определяет какое число нужно добавить к получателю. Сообщение не определят как должна быть выполнена операция. Как должны быть выполнено сложение определяет получатель. Вычисления это важная возможность объектов которая может быть единообразна выполнена с помощью посылки сообщений.

Набор сообщений на который может отвечать объект называется его интерфейсом с остальной системой. Единственный способ взаимодействовать с объектом это его интерфейс. Ключевым свойством объекта является то что его собственная память может быть доступна только при помощи операций. Ключевым свойством сообщений является то что они являются единственным способом выполнения операций объекта. Данные свойства гарантируют что реализация одного объекта не зависит от внутренних деталей другого объекта, только от сообщений на которые он отвечает.

Сообщения гарантируют модульность системы т.к. они определяют тип нужных операций, но не способ которым эти операции должны выполняться. Например, в системе Смолток существует несколько представлений численных значений. Дроби, малые целые, большие целые и числа с плавающей точкой представляются различными способами. Они все понимают одни и те же сообщения запрашивающие вычисление их суммы с другим числом, но каждое представление предполагает различные способы вычисление данной суммы. Чтобы взаимодействовать с числом или другим объектом нужно только знать на какое сообщение он отвечает, но то как он его выполняет.

Другие среды программирования также используют объекты и сообщения для поддержания модульной разработки. Например, Симула использует их для описания моделирования и Гидра использует их для описания возможностей операционной системы в распределённой системе. В системе Смолток сообщения и объекты используются для реализации всей системы программирования. Как только будут поняты сообщения и объекты то сразу станет доступна вся система.

Пример широко используемой структуры данных в программировании это словарь, который связывает имена и значения. В системе Смолток словарь представлен при помощи объекта который выполняет две операции: связывает имя со значением и находит последнюю ассоциацию к данному имени. Программист пользующийся словарём должен знать как выполнять данные операции при помощи сообщений. Объект словарь понимает сообщения которые отвечают на подобные запросы "связать имя Brett со значением 3" и "какое значение связано с именем Dave?" Т.к. всё объекты имена Brett или Dave и значения 3 или 30 представлены объектами. Хотя любопытный программист может захотеть узнать как связь представлена внутри словаря, знание этого внутреннего представления не требуется для успешного использования словаря. Знание реализации словаря нужно только программисту который работает над определением самого объекта словаря.

Важная часть проектирования программы на Смолтоке это определение типов объектов которые нужно описать и на какие сообщения они должны отвечать для взаимодействия между этими объектами. Когда программист определяет сообщения которые могут быть посланы объекту он определяет язык. Конечно от подходящего выбора объектов зависят от цели с которыми создаётся объект и детальность манипулирования информацией. Например, если создаётся модель парка развлечений для сбора информации об очередях на разные аттракционы, то будет полезно описать объекты представляющие аттракционы, работников которые управляют ими, очереди и людей посещающих парк. Если цель модели включает слежение за расходом пищи в парке, то нужны объекты представляющие эти расходуемые ресурсы. Если происходит слежение за количеством денег потраченных в парке, то нужно представить в системе детали о цене аттракционов.

Выбор объектов это первый главный шаг в проектировании программы на Смолтоке. Нельзя сказать ничего определённого о "правильном способе" выбора объектов. Как и в любом процессе проектирования это умение приобретается с опытом. Различные выборы влекут различные базы для расширения программы или для использования объектов для других целей. Опытные программисты на Смолтоке знают что объекты созданные для программы могут быть более полезными для других программ если для этих объектов определён семантически полный набор функций. Например, словарь чьи ассоциации могут быть добавлены и удалены более полезен чем версия словаря только с возможностью добавления ассоциаций.

Классы и экземпляры Править

Класс описывает реализацию набора объектов которые представляют один и тот же вид компонентов системы. Отдельные объекты описываемые классом называются экземплярами. Класс описывает для своих экземпляров собственную память и способ выполнения операций. Например, в системе существует класс описывающий реализацию объектов представляющих прямоугольные области. Этот класс описывает как отдельные экземпляры запоминают положение их области и также как экземпляры выполняют операции которые предоставляет прямоугольная область. В системе Смолток каждый объект это экземпляр класса. Даже объекты которые представляют уникальные компоненты системы реализованы как единственные экземпляры класса. Программа на Смолтоке состоит из создания классов, создания экземпляров этих классов и определения последовательности сообщений обменивающихся между этими объектами.

Экземпляры класса похожи и в способе доступа к их внешним и внутренним свойствам. Внешние свойства объекта это сообщения которые предоставляет его интерфейс. Все экземпляры класса имеют один и тот же интерфейс т.к. они представляют один и тот же вид компонента. Внутренние свойства объекта это набор переменных экземпляра которые составляют его собственную память и набор методов которые описывает способ выполнения операций. Переменные экземпляра и методы не доступны напрямую для других объектов. Все экземпляры класса используют один и тот же набор методов для описания своих операций. Например, все экземпляры которые представляют прямоугольник отвечают на один и тот же набор сообщений и все используют один и тот же метод для ответа на сообщение. Каждый экземпляр имеет свои переменные экземпляра, но все они вместе одинаковое количество переменных экземпляра. Например, все экземпляры которые представляют прямоугольники, имеют две переменных экземпляра.

У каждого класса есть имя которое описывает тип компонента представляемого экземплярами. Имя класс будет записываться при помощи специального шрифта т.к. это часть языка программирования. Этот же шрифт будет использоваться для всех текстов предложений Смолтока. Класс чьи экземпляры представляют последовательность знаков называется Цепь. Класс чьи экземпляры представляю точки в пространстве называется Точка. Класс чьи экземпляры представляют прямоугольные области называется Прямоугольник. Класс чьи экземпляры представляют процесс вычисления называются Процесс.

Каждая переменная экземпляра это ссылка на собственную память объекта, называемую её значением. Значения двух переменных экземпляра Прямоугольника это экземпляры Точки которые обозначают противоположные углы прямоугольной области. Тот факт что Прямоугольник имеет две переменных экземпляра, или что эти переменные ссылаются на Точки это строго внутренняя информация, недоступная вне данного Прямоугольника. Каждый метод класса описывает как выполнять операцию запрошенную данным типом сообщения. Когда данный тип сообщения посылается к экземпляру класса выполняется метод. Методы используемые всеми Прямоугольниками описывают как выполнять их операции в терминах двух Точек представляющих противоположные углы. Например, одно сообщение спрашивает Прямоугольник о положении его середины. Соответствующий метод описывает как вычислить центр при помощи нахождения точке лежащей посередине между противоположными углами.

В классе есть метод для каждого типа операций которые могут выполнять его экземпляры. Метод может определять некоторые изменения собственной памяти объекта и/или посылать некоторые другие сообщения. Метод также определяет объект который будет возвращён как значение вызванного сообщения. Методы объекта имеют доступ к собственным переменным объекта, но не к переменным другого объекта. Например, метод Прямоугольника используемый для вычисления его центра имеет доступ к двум Точкам которые ссылаются его переменные экземпляра; однако, метод не может получить доступ к переменным экземпляра данных Точек. Метод определяет сообщения которые будут посланы Точкам и которые запрашивают выполнение требуемых вычислений.

Небольшой набор методов в системе Смолток не выражаются на языке Смолток. Они вызывают примитивные методы. Примитивные методы реализуются виртуальной машиной и не могут быть изменены программистом. Они вызываются с помощью сообщений точно так же как и другие методы. Примитивные методы позволяют получить доступ к оборудованию и виртуальной машине. Например, экземпляры Целого используют примитивные методы для ответа на сообщение +. Другие примитивные методы производят взаимодействие с диском и терминалом.

Пример программы Править

Примеры -- это важная часть описания языка программирования и его среды. Большинство примеров в данной книге взяты из классов, находящихся в стандартной системе Смолток. Другие примеры взяты из классов, которые могут быть добавлены к системе для расширения её функциональности. Первая часть книги использует примеры из программы, которая может быть добавлена к системе для поддержания простой финансовой истории для индивидуального использования, домохозяйства или малого бизнеса. Полная программа предоставляет возможность ввода информации о финансовых операциях и вывода этой информации на экран. Рисунок 1.1. показывает как эта информация может выглядеть на экране. Две верхние части вида показывают два вида количества денег потраченных на различные нужды. Следующий вид внизу показывает как изменялось со временем количество наличных денег в течении выполнения финансовых операций.

1.1

Рисунок 1.1

Внизу картинки показаны две области в которых пользователь может набрать сумму для добавления нового расхода денег и добавления денег на счёт. При добавлении новой информации все три вида автоматически обновляются. На рисунке 1.2. добавлена новая трата на еду.

1.2

Рисунок 1.2

Данная программа добавляет к системе несколько классов. Эти новые классы описывают различные виды и также соответствующую информацию о финансовой истории. Класс в действительности описывающий финансовую информацию называется Финансовая история и будет использоваться в качестве примера в следующих четырёх главах. Данный пример программы будет использовать несколько классов уже присутствующих в системе, он будет использовать числа для представления количества денег цепи для представления причин трат и источников поступления денег.

Финансовая история используется для введения основных концепций языка программирования Смолток т.к. её функциональность и реализацию легко писать. Функциональность класса можно описать при помощи перечисления доступных операций в интерфейсе. Финансовая история предоставляет шесть операций:

  1. Создание нового объекта финансовой истории с данным количеством доступных денег.
  2. Запоминание, что данное количество денег было потрачено на конкретную причину.
  3. Запоминание, что данное количество денег было получено из конкретного источника.
  4. Нахождение количества доступных денег.
  5. Нахождение количества денег, потраченных на конкретную причину.
  6. Нахождение количества денег, полученных из конкретного источника.

Как описываются класса будет рассказано в главах 3, 4 и 5.

Классы системы Править

Система Смолток содержит набор классов, который предоставляет стандартную функциональность языка программирования и его среды: арифметику, структуры данных, управляющие структуры и возможности ввода/вывода. Функциональность этих классов будет детально описана во второй части данной книги. Рисунок 1.3. это диаграмма классов системы представленных во второй части. Вокруг связанных классов обведена рамка, группы пронумерованы для указания глав в которых можно найти описание классов.

1.3

Рисунок 1.3

Арифметика Править

Система Смолток содержит объекты представляющие и реальные и рациональные числа. Реальные числа могут быть представлены с точность около шести десятичных цифр. Целые с абсолютным значением меньше, чем 2524288 могут быть представлены точно. Рациональные числа представляются при помощи данных целых. Так же есть классы для представления линейных величина (таких как дата и время) и генератора случайных чисел.

Структуры данных Править

Большинство объектов системы Смолток работают как некоторый вид структур данных. Однако из за того что большинство объектов также имеют другую функциональность существует набор классов представляющий более или менее структуры данных. Эти классы представляют различные типы совокупностей. Элементы некоторых совокупностей неупорядочены, а элементы других упорядочены. Из совокупностей с неупорядочеными элементами представлены мешок, который позволяет дублировать элементы и множество которое не позволяет дублирования. Также представлены словари, которые связывают пары объектов. Из совокупностей с упорядоченными элементами для некоторых порядок элементов задаётся внешне при его добавлении, а для некоторых порядок определяется на основании свойств самого элемента. Общие структуры данных ряды и цепи представлены классами которые имеют ассоциативное поведение (связывают номера с элементами) и внешнее упорядочивание.

Управляющие конструкции Править

Система Смолток включает объекты и сообщения которые реализуют стандартные управляющие конструкции присутствующие в большинстве языков программирования. Они предоставляют условный выбор подобно конструкции Алгола if-then-else и условное повторение подобно конструкциям while и until. Также есть объекты предоставляющие независимые процессы и механизмы для планирования и синхронизации процессов. Для поддержания этих структур предоставляются два класса. Логические значения представляют два значения истинности а блоки представляют последовательность действий. Логические значения и блоки также используется для создания новых видов управляющих конструкций.

Среда программирования Править

В системе Смолток есть несколько классов которые помогают в процессе программирования. Это классы представляющие исходную форму (для человека) и откомпилированную форму (для выполнения машиной) методов. Объекты представляющие разборщики, компиляторы и декомпиляторы, переводящие данные две формы методов. Объекты представляющие классы, которые соединяют методы с объектами, их использующими (экземпляры классов).

Объекты, представляющие структуры, организующие методы и классы для помощи программисту в обзоре системы, и объекты, представляющие историю модификации программы, помогающие взаимодействию нескольких программистов. Даже состояние выполнения метода представляется при помощи объектов. Этот объект называется контекстом и аналогичен стеку или записи активации в других системах.

Просмотр и взаимодействие Править

Система Смолток включает классы объектов которые используются для просмотра и редактирования информации. Классы для представления графической информации представлены точками, линиями, прямоугольниками и окружностями. Т.к. система Смолток рассчитана на использование графического дисплея, то есть классы для представления и манипулирования картинками. Также есть классы для представления и манипулирования более специфическими картинками для шрифтов, текстов и курсоров.

Из данных объектов строятся другие объекты представляющие прямоугольные окна, меню и т.д. Так же есть объекты представляющие действия пользователя при помощи устройств ввода и связь между этими действиями и показываемой информацией. Классы представляющие специальные механизмы для просмотра и редактирования построенные их данных компонентов это просмотрщики классов, контекстов и документов содержащих текст и графику. Просмотрщики классов предоставляют основной механизм для взаимодействия с программами системы. Редакторы и просмотрщики системы Смолток рассмотрены в отдельной книге.

Связь Править

Система Смолток позволяет взаимодействовать с внешней информацией. Стандартная внешняя среда информации это файловая система диска. Объекты представляют файлы и папки. Если доступна связь с сетью, то тоже доступна через объекты.

Сводка терминологии Править

объект - компонент системы Смолток который представляет некоторую собственную память и набор операций.

сообщение - запрос к объекту на выполнение его операции.

получатель - объект которому послано сообщение.

интерфейс - сообщения на которые объект может отвечать.

класс - описание группы подобных объектов.

экземпляр - один из объектов описываемых классом.

переменная экземпляра - часть собственной памяти объекта.

метод - описания способа выполнения одной из операций объекта.

примитивный метод - операция напрямую выполняемая виртуальной машиной Смолтока.

Финансовая история - имя класса используемого в качестве примера в этой книге.

Классы системы - набор классов который поставляется вместе с системой Смолток.

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на ФЭНДОМЕ

Случайная вики