- •Предисловие
- •Структура классического Смолтока
- •Основные определения и термины
- •Метаклассы
- •Посылка сообщений
- •Определение объектов
- •Типы сообщений и их приоритеты
- •Блоки
- •Переменные
- •Методы и примитивные методы
- •Соглашения о форматировании кода
- •Контрольные вопросы
- •Прогулка по VisualWorks
- •Настройка среды
- •Разработка простого приложения
- •Сохранение созданного кода
- •Создание автономного приложения
- •Выход из среды
- •Контрольные вопросы
- •Пространства имён
- •Особенности введения пространств имён
- •Пространство имён и его содержимое
- •Ссылка на объекты и импорт
- •Особенности импорта
- •Разделяемые переменные VisualWorks 7.4.1
- •Пакеты и парселы
- •Пакеты и связки пакетов
- •Парселы
- •Контрольные вопросы
- •Основные инструменты
- •Рабочее окно
- •Администратор парселов
- •Браузер файлов
- •Контрольные вопросы
- •Cистемный браузер
- •Панели системного браузера
- •Управление пакетами
- •Управление связками пакетов
- •Управление парселами
- •Определение пространства имён
- •Определение класса
- •Определение переменной класса
- •Определение переменных в пространстве имён
- •Работа с экземплярами
- •Определение метода
- •Контрольные вопросы
- •Отладка кода
- •Oкно уведомлений
- •Oкно отладки кода
- •Программные зонды
- •Работа с зондами через браузер
- •Зонды на уровне класса
- •Установка временных зондов в отладчике
- •Исключения и их обработка
- •Классы исключений
- •Обработка исключений
- •Оповещение о возникновении исключения
- •Среда исключений процесса
- •Явный выход из обработчика
- •Преобразование исключений
- •Развертывание защиты
- •Поставка приложения
- •Выбор стратегии поставки
- •Подготовка к поставке приложения
- •Создание поставляемого образа
- •Контрольные вопросы
- •Литература
- •Список иллюстраций
32 |
Глава 1. Структура классического Смолтока |
ная thisContext редко используется в приложениях. С ней в основном работают обработчик особых ситуаций системы и отладчик.
1.7.4. Назначение значения переменной
Значение по умолчанию для любой переменной — nil. Чтобы назначить новое значение переменной, следует использовать встроенную в систему операцию назначения значения :=, как, например, в выражениях:
prompt := ’Enter your name’.
flavors := #(’chocolate’ ’vanilla’ ’mint chip’). ramdomNumber := (Random new next) 3.
Назначения могут выстраиваться в цепочку, когда две или более переменных должны хранить одно и то же значение, как, например, в выражении majorLoopCounter := minorLoopCounter := 1. Назначения по цепочке должны использоваться только с литералами или только для чтения, иначе, изменение значения одной переменной, как побочный эффект, изменит значение и другой переменной.
Выражение назначения значения := не является селектором метода, хотя по форме напоминает бинарный селектор.
1.8.Методы и примитивные методы
Вся работа осуществляется объектами, которым посылаются сообщения. В ответ объекты вызывают для исполнения методы, в которых в свою очередь посылаются сообщения другим объектам, и так далее. Но только пересылая сообщения от одного объекта к другому, толку не добьешься. Кто-то должен взаимодействовать со средой, обращаться к операционной системе. Но кто и как?
В методах многих классов встречается строка вида <primitive: nn>, где nn — некоторое число. Такое обозначение имеют примитивные методы системы, реализованные в виртуальной машине, а число nn идентифицирует примитивный метод в выражениях, написанных на языке Смолток. В теле метода такая конструкция располагается самой первой. Примитивные методы, как правило, выполняют операции низкого уровня (такие как арифметические операции, выделение памяти) или операции, критичные по производительности.
Обычно такой метод состоит из двух частей: примитивного метода с номером, и части, написанной на Смолтоке. Сначала выполняется примитивный метод. Его выполнение заканчивается либо успехом (возвращением некоторого объекта), либо неудачей. В первом случае, выполнение метода прекращается и возвращенный примитивом объект возвра-
1.9. Соглашения о форматировании кода |
33 |
щается как результат выполнения всего метода. Код на языке Смолток в этой ситуации выполняться на будет. Если примитивный метод не может быть выполнен, то выполняется часть метода, написанная на языке Смолток. Например,
+ aNumber <primitive: 41>
^aNumber sumFromFloat: self
Такое разделение ответственности очень эффективно работает, поскольку примитивы управляют наиболее часто используемыми, но простыми случаями.
1.9.Соглашения о форматировании кода
Компилятор игнорирует в коде символы табуляции, перевода каретки и дополнительные пробелы. Форматирование кода не влияет на его выполнение, но для достижения его удобочитаемости, следует придерживаться следующих простых соглашений.
1)Начинать определение выражения посылки сообщения с левого поля, и выравнивать всё содержание метода на одном уровне.
2)Оставлять пустую строку ниже комментария метода и как разделитель между разделами длинного метода.
3)После каждой точки, заканчивающей выражение, переходить на новую строку.
4)Отступать вправо при необходимости, чтобы визуально идентифицировать каждый зависимый раздел кода.
Браузер кода, используемый в VisualWorks обеспечивает команду Format для автоматического применения этих правил.
1.10.Контрольные вопросы
1)Что такое объект?
2)Что такое структура и поведение объекта?
3)Что такое интерфейс объекта?
4)Что такое инкапсуляция?
5)Что такое сообщение, посылка сообщения, селектор сообщения?
6)Что такое метод, имя метода?
7)Что представляет собой возвращаемый методом объект?
8)Что такое класс? Что такое экземпляр класса?
9)Что такое наследование, подкласс и суперкласс? Что такое иерархия классов?
10)Что такое полимозфизм?
34 |
Глава 1. Структура классического Смолтока |
11)Являются ли в Смотоке классы объектами?
12)Что такое метакласс? Что является его экземплярами? Сколько экземпляров может иметь каждый метакласс?
13)Экземплярами какого класса является каждый метакласс?
14)Подклассами какого класса является каждый метакласс? Как строится иерархия метаклассов?
15)Как используется иерархия для поиска метода, выполняемого по сообщению?
16)Что такое оператор возврата объекта?
17)Что такое смолтоковское выражение?
18)Что такое литеральный объект? Какие объекты в Смолтоке задаются литерально?
19)Экземплярами каких классов являются символы, числа, системные имена, строки, массивы?
20)Посылкой каких сообщений определяется новый объект?
21)Что такое абстрактные и конкретные классы?
22)Какие типы сообщений используются в Смолтоке? Какв их приоритет?
23)Что такое именованные и индексированные переменные объекта?
24)Что такое блок? Какие типы блоков встречаются в Смолтоке?
25)Что такое временные переменные метода и блока?
26)Что такое аргументная переменная?
27)Что такое псевдопеременная?
28)Чем схожи и чем отличаются друг от друга псевдопеременные self
и super?
29)Что такое операция назначения значения переменной?
30)Что такое примитивные методы и как они используются?
