Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
oop-VisualWorks.pdf
Скачиваний:
35
Добавлен:
13.02.2015
Размер:
1 Мб
Скачать
☆

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)Что такое примитивные методы и как они используются?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]