
- •Лабораторная работа №1
- •Ход работы:
- •Лабораторная работа №2
- •Ход работы:
- •Задание для самостоятельного решения
- •Лабораторная работа №3
- •Ход работы:
- •Задание для самостоятельного решения
- •Учреждение образования «Гомельский торгово-экономический колледж» Белкоопсоюза
- •Лабораторная работа №4
- •Динамическое создание объектов
- •Динамические объекты. Деструкторы
- •Ход работы:
- •Задание для самостоятельного решения
- •Учреждение образования «Гомельский торгово-экономический колледж» Белкоопсоюза
- •Лабораторная работа №5
- •Procedure tForm1.Button2Click (Sender: tObject); {обработка массива}
- •Задание для самостоятельного решения
- •Учреждение образования «Гомельский торгово-экономический колледж» Белкоопсоюза
- •Лабораторная работа №6
- •Ход работы:
Procedure tForm1.Button2Click (Sender: tObject); {обработка массива}
var
Max, Min, Sum, CountPlus: integer; {результаты обработки массива}
begin
if CheckBox1.Checked then Min:=M[0]; {пусть 0-й элемент-Min}
Edit3.Text:=’ ‘;
if CheckBox2.Checked then Max:=M[0]; {пусть 0-й элемент-Max}
Edit4.Text:=’ ‘;
Sum:=0; {обнулить значение Sum}
Edit5.Text:=’ ‘;
CountPlus:=0; {обнулить значения суммы положительных элементов}
Edit6.Text:=’ ‘;
for I:=0 to N-1 do
begin
if CheckBox1.Checked then {определить минимальный элемент массива}
if Min>M[I] then Min:=M[I];
if CheckBox2.Checked then {определить максимальный элемент массива }
if Max<M[I] then Max:=M[I];
if CheckBox3.Checked then {суммировать элементы массива}
Sum:=Sum+M[I];
if CheckBox4.Checked then {суммировать положительные элементы массива}
if M[I]>0 then CountPlus:=CountPlus+1;
end;
{вывести результаты обработки массива}
if CheckBox1.Checked then Edit3.Text:=IntToStr (Min);
if CheckBox2.Checked then Edit4.Text:=IntToStr (Max);
if CheckBox3.Checked then Edit5.Text:=IntToStr (Sum);
if CheckBox4.Checked then Edit6.Text:=IntToStr (CountPlus);
end;
Сохраните файлы проекта и программного модуля, откомпилируйте и запустите программу на выполнение. Задавая различные значения числа элементов массива и щелкая мышью на кнопке Создать массив, убедитесь в правильной работе процедуры защиты от ввода нечисловых данных в Edit1 и генерации массива случайных целых чисел.
Выбирая варианты обработки массива установкой соответствующих флажков CheckBox, как показано на рисунке ниже, и щелкая мышью на кнопке Вычислить, убедитесь в правильности работы процедуры обработки массива.
Закройте окно приложения.
Задание для самостоятельного решения
Задание 1. Написать программу с использованием стандартных объекто, которая предлагает пользователю ввести размер массива и создать массив случайных целых чисел, а затем, используя переключатели, указать порядок сортировки (по неубыванию, по невозрастанию), выполнить сортировку и просмотреть отсортированный массив.
Учреждение образования «Гомельский торгово-экономический колледж» Белкоопсоюза
|
Рассмотрено на заседании цикловой комиссии «Информатики и программирования» Протокол № __ от «__»_____________2010 г. Председатель цикловой комиссии _______________________ Н.С. Васьковцова |
Лабораторная работа №6
«Разработка программ с использованием компонентов библиотеки VCL»»
по дисциплине «Объектно-ориентированное программирование»
для групп П-21, П-22, П-23
специальность:
2-40 01 01 «Программное обеспечение информационных технологий»
специализация:
2-40 01 01 35 «Программное обеспечение обработки экономической и деловой информации»
2-40 01 01 33 «Компьютерная графика»
Разработала преподаватель
О.Л. Иткина
Гомель, 2010
Цель работы: научиться разрабатывать программы с использованием компонентов библиотеки VCL
Теоретические сведения:
Компоненты библиотеки VCL позволяют значительно упростить процесс создания иерархии объектов. При создании иерархии объектов для исключения повторяющегося кода часто бывает логично выделить их общие свойства в один родительский класс. При этом может оказаться, что создавать экземпляры такого класса не имеет смысла, потому что никакие реальные объекты им не соответствуют. Такие классы называют абстрактными. Абстрактные классы служат только для порождения потомков. Как правило, каждый метод, который будет реализовываться в разных потомках по-разному, объявляется в абстрактном классе как виртуальный и имеет пустое тело. Таким образом, абстрактный класс определяет интерфейс для всей иерархии. Абстрактные классы и указатели на них используются в качестве параметров подпрограмм и при работе со структурами данных, предназначенных для хранения объектов одной иерархии.
Альтернативой наследованию при проектировании объектов служит вложение, когда один объект включает в себя поля, являющиеся объектами или указателями на объекты. Например, если есть объект «двигатель», а требуется описать объект «самолет», логично сделать двигатель полем этого объекта, а не его предком.
Вид вложения, когда в классе описано поле объектного типа, называют композицией. Если в классе описан указатель на поле объектного типа, это обычно называют агрегацией. При композиции время жизни всех объектов — и объемлющего, и его полей — одинаково. Агрегация представляет собой более слабую связь между объектами, потому что объекты, на которые ссылаются поля-указатели, могут появляться и исчезать в течение жизни содержащего их объекта; кроме того, один и тот же указатель может ссылаться на объекты разных классов в пределах одной иерархии. Поле-указатель может также ссылаться не на один объект, а на неопределенное количество объектов, например, быть указателем на начало линейного списка. Если объект предназначается для хранения друтих объектов, он называется контейнером. Объекты в контейнере могут храниться в виде массива, списка, стека или другой динамической структуры. Методы контейнера обычно включают его создание, дополнение, просмотр, а также поиск и удаление элементов.
В качестве примера контейнера рассмотрим объект list, предназначенный для работы со связным списком объектов класса monstr и его потомков.
type
list = object
constructor init;
procedure add(pm : pmonstr);
procedure draw;
destructor done; private
beg : pnode; end;
В объекте одно поле beg — указатель на начало списка элементов типа node:
type
pnode = ^node;
node = record
pm : pmonstr; { указатель на объект pmonstr }
next : pnode; { указатель на следующий элемент списка }
end;