Исследование возможностей стандартных классов VAST. Основы визуального программирования в VAST
Государственное
образовательное учреждение высшего профессионального образования
«Московский
государственный институт радиотехники, электроники и автоматики (технический
университет)» МИРЭА
Объектно-ориентированное
программирование
Отчет
по лабораторной работе №2
Исследование
возможностей стандартных классов VAST.
Основы
визуального программирования в VAST
Выполнил
Студент группы
ИТВ-2-10
Ковалев А.В.
Проверил
Ст. преп. каф. ВТ
Смирнов С.С.
Москва
- 2012г.
Содержание
1.
Цель лабораторной работы
.
Общая постановка задачи
.
Конкретизация задачи
.
Решение
.1
Исследование метода «detect: ifNone:» класса Set
.1.1
Разработка визуальной композиции
.1.2
Разработка метода «for:»
.1.3
Тестирование программы
.2
Исследование метода «to:by:do:» класса Number
.2.1
Разработка визуальной композиции
.2.2
Разработка метода «for:by:do:»
.2.3
Тестирование программы
4.3
Исследование
метода
«copy: ReplaceFrom: to: with:» класса
OrderedCollection
.3.1
Разработка
визуальной
композиции
.3.2
Разработка пользовательского метода «for: copyReplaceFrom: to: with:»
.3.3
Тестирование программы
1. Цель лабораторной работы
Исследовать функциональные возможности
стандартных классов представления данных на примерах использования избранных
методов.
Изучить основы визуального программирования в
среде VAST.
2. Общая постановка задачи
При помощи просмотра иерархии классов (Classes
Browser) ознакомится с функциональными возможностями стандартных классов,
используемых для представления данных. К стандартным классам относятся,
например, следующие:
Величины (Magnitude) и его подклассы:
ПараКлючЗначение (Association);
Символ (Character);
Дата (Date);
Время (Time);
Число (Number) и его подклассы
Наборы (Collection) и его подклассы:
НаборСДублями (Bag);
НаборБезДублей (Set);
Словарь (Dictionary);
УпорядоченныйНабор (OrderedCollection);
ОтсортированныйНабор (SortedCollection);
Массив (Array);
Строка (String);
и т.д.
Среди множества публичных методов данных классов
выбрать несколько (3-4 штуки), принадлежащих разным классам, и продемонстрировать
их работу, для чего разработать в среде VAST приложение, обладающее оконным
пользовательским интерфейсом, обеспечивающим:
ввод данных, необходимых для тестирования
выбранных методов;
вызов выбранных методов и передачу им
необходимых параметров;
вывод результатов обработки данных.
3. Конкретизация задачи
В соответствии с пунктом 2, написать программу
для тестирования следующих выбранных методов:
Класс Set
метод экземпляра
Detect:ifNone:
"Answer the first element of
the receiver forthe evaluation of the one argument block, aBlock returns
true.no such element is detected, answer the result of evaluatingwith no
arguments.if aBlock is not a one-argument Blockif aBlock does not evaluate to a
Booleanif no element is found and exceptionBlock is not aargument Block."
Number vtnjl 'rptvgkzhf to^by^do
"Answer an Interval from the
receiver up toNumber, stop incrementing by a Number,. Evaluate the Block,
aBlock, for eachof the interval. Answer stop.if stop is not a type of Number.if
step is not a type of Number.if aBlock is not a one-argument Block."
Класс
OrderedCollection метод экземпляра
copyReplaceFrom: start to: stop with: replacementCollection
"Answer a
SequenceableCollection which is a copy of the receiver in which the elements
etween the Integer index start and theindex stop have each been replaced by the
elementsthe SequenceableCollection replacementCollection. This methodbe used to
perform insertion, replacement and to append.and stop are first adjusted to be
within the bounds of the. If stop > start then the elements at indices are
replacedreplacementCollection. If stop < start, then this is an
insertion.will occur before the element at the index represented by. If start
> receiver size, this means append after the last.if start in not an
Integerif stop is not an Integer."
4. Решение
Создадим приложение с именем Laba, в котором
будут решаться поставленные задачи (файл, с экспортированным приложением
прилагается к отчету).
Постановка задач не предполагает использование
сложных моделей данных или алгоритмов их обработки, поэтому все задачи могут
быть решены в пределах одного класса с пользовательским интерфейсом. Создадим
класс как визуальный компонент и назовем его Laba1 (рис. 1).
Рис. 1
.1 Исследование метода detect:ifNone: класса Set
Чтобы реализовать этот метод нам в качестве
входных данных понадобится 1 строка: строка где мы будем добавлять элементы в
массив. Приступим к разработке визуальной композиции.
При помощи редактора композиций разработаем
пользовательский интерфейс, определим модель для хранения вводимых данных, а
также информационные и управляющие связи, обеспечивающие удобное тестирование
рассматриваемого метода (рис.2).
Рис. 2
Описание использованных связей:
. Связь «событие действие» между событием
«clicked» кнопки и методом «add:» элемента OrderedCollection.
. Связь «атрибут как параметр» между свойством
«object» текстового поля ввода и параметром «value» связи №1.
. Связь «событие действие» между событием
«clicked» кнопки и свойством «object» элемента Label.
. Связь «параметр код» между свойством
«anObject» связи №3 и методом «for:».
. Связь «атрибут как параметр» между свойством
«self» элемента OrderedCollection и параметром «parametr1» связи №4.
.1.2 Разработка метода «for:»
Вызов исследуемого метода detect:ifNone: класса
Set осуществим посредством пользовательского метода «for:», который имеет
следующий код (рис. 3)
Рис.№3
Метод получает значение массива collection.
Далее этому массиву отправляется сообщение asSet которое убирает все повторения
элементов. Затем идёт исследуемый метод detect:ifNone: который, для примера,
ищет в массиве элемент «6», и возвращает «Yes» если такой элемент найден и «No»
если такой элемент не обнаружен.
.1.3 Тестирование программы
Введем тестовые данные для тестирования работы
программы (числа 1 3 6) (рис. 4).
Рис. 4
Получен верный результат.
.2 Исследование метода to:by:do: класса Number
Метод применяется для обработки числа, в
качестве аргумента требует значение, до которого будет вестись счёт, значение
шага (на которое будет увеличиваться исходное число с каждым шагом) и элемент
aBlock, писывающий действие на каждом шаге. Первые 2 параметра, а так же
обьект, к которому этот метод применяется должны быть класса Number.
.2.1 Разработка визуальной композиции
Для тестирования метода необходимо создать 3
текстовых окна: для исходного элемента и для параметров stop и step. А также
Label для вывода результата и кнопку, запускающую метод.
Рис. 5
. Связь «событие действие» между событием
«clicked» кнопки и свойством «value» элемента Label.
. Связь «параметр код» между свойством
«anObject» связи №1 и методом «from:to:by:».
Связь «атрибут как параметр» между свойством
«object» текстового поля ввода и параметром «parametr1» связи №2.
. Связь «атрибут как параметр» между свойством
«object» текстового поля ввода и параметром «parametr2» связи №2.
. Связь «атрибут как параметр» между свойством
«object» текстового поля ввода и параметром «parametr3» связи №2.
.2.2 Разработка метода «from:by:to:»
Вызов исследуемого метода «to:by:do:» класса
number осуществим посредством пользовательского метода «from:by:to:», который
имеет следующий код (рис. 6)
Рис. 6
Данный метод будет применяться к первому
заданному параметру «start» и иметь заданные аргументы «stop» и «step». Данный
метод, для примера, за счёт переменной «sum» и действия описанного в аргументе
«do:» будет находить сумму всех элементов начиная от «start», заканчивая
«stop», с шагом «step» между ними.
Для примера
start = 1, stop = 4, step = 1
1 + 2 + 3 + 4 = 10
.2.3 Тестирование программы
Запустим программу и заполним исходные данные
(рис. 7).
Рис. 7
Результат верен. (рис.8).
Рис. 8
4.3. Исследование метода copyReplaceFrom:to:with:
класса OrderedCollection
Метод обрабатывает массив. В параметры метода
входят 2 числа и 1 массив, с заменяемыми значениями. Сам метод удаляет в
обрабатываемом массиве элементы начиная с 1го парметра, до 2го параметра и
вставляет на это место элементы массива 3го параметра.
.3.1 Разработка визуальной композиции
Для тестирования метода нужны 2 массива и 2
числа, зададим 2 массива с помощью 2 невизуальных элементов OrderedColelction и
добавим каждому систему добавления элементов, в виде кнопки и текстового поля
ввода, 2 числа зададутся прсотыми текстовыми полями. Далее потребуется Label
для вывода результата и кнопка для запуска пользовательского метода «for:
copyReplaceFrom: to: :»
Рис. 9
Используемые связи:
. Связь «событие действие» между событием
«clicked» кнопки и методом «add:» элемента OrderedCollection1.
. Связь «атрибут как параметр» между свойством
«object» текстового поля ввода и параметром «value» связи №1.
. Связь «событие действие» между событием
«clicked» кнопки и методом «add:» элемента OrderedCollection2.
. Связь «атрибут как параметр» между свойством
«object» текстового поля ввода и параметром «value» связи №3.
. Связь «событие действие» между событием
«clicked» кнопки и свойством «value» элемента Label.
. Связь «параметр код» между свойством
«anObject» связи №5 и методом «for: copyReplaceFrom: to: with:»
Связь «атрибут как параметр» между свойством
«object» текстового поля ввода и параметром «parametr2» связи №6.
. Связь «атрибут как параметр» между свойством
«object» текстового поля ввода и параметром «parametr3» связи №6.
. Связь «атрибут как параметр» между свойством
«self» элемента OrderedCollection1 и параметром «parametr1» связи №4.
. Связь «атрибут как параметр» между свойством
«self» элемента OrderedCollection2 и параметром «parametr4» связи №4.
4.3.2 Разработка
метода
«for: copyReplaceFrom: to: with»
Вызов исследуемого
метода
«copyReplaceFrom:to:with:» класса
number осуществим
посредством
пользовательского
метода
«for: copyReplaceFrom: to: with», который
имеет
следующий
код
(рис.
10)
Рис. 10
класс данные тестирование
программирование
Данный метод получает массив исходных данных,
параметр номера элемента с которого надо начать удаление, параметр номера
элемента на котором стоит закончить удаление элементов и массив с заменяемыми
элементами. Все эти параметры отправляются в исследуемый метод, вызываемый в
данном коде. Локальная переменная «а» служит для вывода значения полученного
массива.
.3.3 Тестирование программы
Рис. 11
Тестирование показало, что работа метода
корректна. (рис. 12).
Рис. 11
1.