Исследование возможностей стандартных классов VAST. Основы визуального программирования в VAST
Оценка функциональных возможностей стандартных классов представления данных на примерах использования избранных методов ("detect: ifNone:" класса Set, "to:by:do:" класса Number и "copy: ReplaceFrom: to: with:" класса OrderedCollection), их тестирование.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 14.10.2012 |
Размер файла | 1,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Государственное образовательное учреждение высшего профессионального образования
«Московский государственный институт радиотехники, электроники и автоматики (технический университет)» МИРЭА
Объектно-ориентированное программирование
Отчет по лабораторной работе №2
Исследование возможностей стандартных классов VAST.
Основы визуального программирования в VAST
Выполнил
Студент группы ИТВ-2-10
Ковалев А.В.
Проверил
Ст. преп. каф. ВТ
Смирнов С.С.
Москва -- 2012г.
Содержание
1. Цель лабораторной работы
2. Общая постановка задачи
3. Конкретизация задачи
4. Решение
4.1 Исследование метода «detect: ifNone:» класса Set
4.1.1 Разработка визуальной композиции
4.1.2 Разработка метода «for:»
4.1.3 Тестирование программы
4.2 Исследование метода «to:by:do:» класса Number
4.2.1 Разработка визуальной композиции
4.2.2 Разработка метода «for:by:do:»
4.2.3 Тестирование программы
4.3 Исследование метода «copy: ReplaceFrom: to: with:» класса OrderedCollection
4.3.1 Разработка визуальной композиции
4.3.2 Разработка пользовательского метода «for: copyReplaceFrom: to: with:»
4.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 for
which the evaluation of the one argument block, aBlock returns true.
If no such element is detected, answer the result of evaluating
exceptionBlock with no arguments.
Fail if aBlock is not a one-argument Block
Fail if aBlock does not evaluate to a Boolean
Fail if no element is found and exceptionBlock is not a
zero-argument Block."
Rkfcc Number vtnjl 'rptvgkzhf to^by^do
"Answer an Interval from the receiver up to
a Number, stop incrementing by a Number,
step. Evaluate the Block, aBlock, for each
element of the interval. Answer stop.
Fail if stop is not a type of Number.
Fail if step is not a type of Number.
Fail 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 the
Integer index stop have each been replaced by the elements
of the SequenceableCollection replacementCollection. This method
can be used to perform insertion, replacement and to append.
start and stop are first adjusted to be within the bounds of the
receiver. If stop > start then the elements at indices are replaced
with replacementCollection. If stop < start, then this is an insertion.
Insertion will occur before the element at the index represented by
start. If start > receiver size, this means append after the last
element.
Fail if start in not an Integer
Fail if stop is not an Integer."
4. Решение
Создадим приложение с именем Laba, в котором будут решаться поставленные задачи (файл, с экспортированным приложением прилагается к отчету).
Постановка задач не предполагает использование сложных моделей данных или алгоритмов их обработки, поэтому все задачи могут быть решены в пределах одного класса с пользовательским интерфейсом. Создадим класс как визуальный компонент и назовем его Laba1 (рис. 1).
Рис. 1
4.1 Исследование метода detect:ifNone: класса Set
Чтобы реализовать этот метод нам в качестве входных данных понадобится 1 строка: строка где мы будем добавлять элементы в массив. Приступим к разработке визуальной композиции.
4.1.1 Разработка визуальной композиции
При помощи редактора композиций разработаем пользовательский интерфейс, определим модель для хранения вводимых данных, а также информационные и управляющие связи, обеспечивающие удобное тестирование рассматриваемого метода (рис.2).
Рис. 2
Описание использованных связей:
1. Связь «событие действие» между событием «clicked» кнопки и методом «add:» элемента OrderedCollection.
2. Связь «атрибут как параметр» между свойством «object» текстового поля ввода и параметром «value» связи №1.
3. Связь «событие действие» между событием «clicked» кнопки и свойством «object» элемента Label.
4. Связь «параметр код» между свойством «anObject» связи №3 и методом «for:».
5. Связь «атрибут как параметр» между свойством «self» элемента OrderedCollection и параметром «parametr1» связи №4.
4.1.2 Разработка метода «for:»
Вызов исследуемого метода detect:ifNone: класса Set осуществим посредством пользовательского метода «for:», который имеет следующий код (рис. 3)
Рис.№3
Метод получает значение массива collection. Далее этому массиву отправляется сообщение asSet которое убирает все повторения элементов. Затем идёт исследуемый метод detect:ifNone: который, для примера, ищет в массиве элемент «6», и возвращает «Yes» если такой элемент найден и «No» если такой элемент не обнаружен.
4.1.3 Тестирование программы
Введем тестовые данные для тестирования работы программы (числа 1 3 6) (рис. 4).
Рис. 4
Получен верный результат.
4.2 Исследование метода to:by:do: класса Number
Метод применяется для обработки числа, в качестве аргумента требует значение, до которого будет вестись счёт, значение шага (на которое будет увеличиваться исходное число с каждым шагом) и элемент aBlock, писывающий действие на каждом шаге. Первые 2 параметра, а так же обьект, к которому этот метод применяется должны быть класса Number.
4.2.1 Разработка визуальной композиции
Для тестирования метода необходимо создать 3 текстовых окна: для исходного элемента и для параметров stop и step. А также Label для вывода результата и кнопку, запускающую метод.
Рис. 5
1. Связь «событие действие» между событием «clicked» кнопки и свойством «value» элемента Label.
2. Связь «параметр код» между свойством «anObject» связи №1 и методом «from:to:by:».
3 Связь «атрибут как параметр» между свойством «object» текстового поля ввода и параметром «parametr1» связи №2.
4. Связь «атрибут как параметр» между свойством «object» текстового поля ввода и параметром «parametr2» связи №2.
5. Связь «атрибут как параметр» между свойством «object» текстового поля ввода и параметром «parametr3» связи №2.
4.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
4.2.3 Тестирование программы
Запустим программу и заполним исходные данные (рис. 7).
Рис. 7
Результат верен. (рис.8).
Рис. 8
4.3. Исследование метода copyReplaceFrom:to:with: класса OrderedCollection
Метод обрабатывает массив. В параметры метода входят 2 числа и 1 массив, с заменяемыми значениями. Сам метод удаляет в обрабатываемом массиве элементы начиная с 1го парметра, до 2го параметра и вставляет на это место элементы массива 3го параметра.
4.3.1 Разработка визуальной композиции
Для тестирования метода нужны 2 массива и 2 числа, зададим 2 массива с помощью 2 невизуальных элементов OrderedColelction и добавим каждому систему добавления элементов, в виде кнопки и текстового поля ввода, 2 числа зададутся прсотыми текстовыми полями. Далее потребуется Label для вывода результата и кнопка для запуска пользовательского метода «for: copyReplaceFrom: to:
with:»
Рис. 9
Используемые связи:
1. Связь «событие действие» между событием «clicked» кнопки и методом «add:» элемента OrderedCollection1.
2. Связь «атрибут как параметр» между свойством «object» текстового поля ввода и параметром «value» связи №1.
3. Связь «событие действие» между событием «clicked» кнопки и методом «add:» элемента OrderedCollection2.
4. Связь «атрибут как параметр» между свойством «object» текстового поля ввода и параметром «value» связи №3.
5. Связь «событие действие» между событием «clicked» кнопки и свойством «value» элемента Label.
6. Связь «параметр код» между свойством «anObject» связи №5 и методом «for: copyReplaceFrom: to: with:»
7 Связь «атрибут как параметр» между свойством «object» текстового поля ввода и параметром «parametr2» связи №6.
8. Связь «атрибут как параметр» между свойством «object» текстового поля ввода и параметром «parametr3» связи №6.
9. Связь «атрибут как параметр» между свойством «self» элемента OrderedCollection1 и параметром «parametr1» связи №4.
10. Связь «атрибут как параметр» между свойством «self» элемента OrderedCollection2 и параметром «parametr4» связи №4.
4.3.2 Разработка метода «for: copyReplaceFrom: to: with»
Вызов исследуемого метода «copyReplaceFrom:to:with:» класса number осуществим посредством пользовательского метода «for: copyReplaceFrom: to: with», который имеет следующий код (рис. 10)
Рис. 10
класс данные тестирование программирование
Данный метод получает массив исходных данных, параметр номера элемента с которого надо начать удаление, параметр номера элемента на котором стоит закончить удаление элементов и массив с заменяемыми элементами. Все эти параметры отправляются в исследуемый метод, вызываемый в данном коде. Локальная переменная «а» служит для вывода значения полученного массива.
4.3.3 Тестирование программы
Введем начальные данные, первый массив (1 2 3 4 5), второй массив (0 0) и зададим удаление со 2 элемента по 4 (рис. 11).
Рис. 11
Тестирование показало, что работа метода корректна. (рис. 12).
Рис. 11
1. Размещено на www.allbest.ru
Подобные документы
Механизм классов в C++. Инициализация внутреннего объекта с помощью конструктора. Управление доступом к классу. Защищенные члены класса. Графические средства компилятора Borland C 3.1. Библиотека стандартных шаблонов. Реализация и использование класса.
курсовая работа [2,7 M], добавлен 16.05.2012Понятия шаблонов функции и класса, правила описания на языке С++. Разработка и отлаживание в среде программирования программ, содержащих шаблоны функций и классов. Шаблон функции square, возвращающей квадрат переменной. Создание шаблона класса массива.
лабораторная работа [162,6 K], добавлен 25.05.2013Построение абстрактной модели. Структура базового класса System_Term: формальное описание класса, структура данных и функций, инструкция программиста и пользователя. Структура базовых классов mobile, Home, TV, Internet, их составные части и функционал.
курсовая работа [1,2 M], добавлен 20.06.2014Создание класса wind, характеризующего ветровой режим, и программы, демонстрирующей применение разработанного класса. Программный модуль на языке программирования C++ в среде программирования C++Builder6/0, демонстрирующая работу с классом wind.
курсовая работа [123,5 K], добавлен 24.06.2010Разработка структуры класса "Экран курсового проектирования", которая будет основой для хранения информации о студентах, выполняющих курсовые работы. Реализация визуального приложения для тестирования иерархии классов на языке программирования С++.
курсовая работа [3,3 M], добавлен 18.03.2011Цели объектно-ориентированного программирования, абстрактные классы и адреса базовых классов, множественное и виртуальное наследование. Инициализация элементов производного класса, программный вызов конструкторов базового и производного классов.
реферат [21,8 K], добавлен 31.10.2011Создание класса прямоугольников со сторонами, параллельными осям координат. Основные требования к программе. Описание классов и диаграмма их взаимодействия. Интерфейс пользователя и руководство по эксплуатации программы. Блок-схемы разработанных методов.
курсовая работа [622,8 K], добавлен 18.03.2011Изучение принципов объектно-ориентированного программирования. Понятие класса в Delphi, в основе которых лежат три фундаментальные принципы - инкапсуляция, наследование и полиморфизм. Разработка классов транспортных средств и структур классов (кошки).
курсовая работа [29,7 K], добавлен 29.10.2011Листинг класса для работы с регулярными выражениями. Особенности классов для проверки данных при регистрации и отправки сообщений. Отправка ссылки для активации на почту пользователя, описание основных классов, анализ их назначения и листинг функций.
курсовая работа [1,7 M], добавлен 17.09.2013Разработка и тестирование программы класса Точка. Спецификация программы. Сценарий диалога с пользователем. Разработка структур данных и алгоритмов. Таблица параметров функций программы. Текст программы на языке C++. Особенности тестирования программы.
лабораторная работа [43,1 K], добавлен 21.07.2012