Технологии программирования
Имя | Дата изменения | |
---|---|---|
Лабораторная работа №1 | 7 октября 2014 | Описание Скачать |
Лабораторная работа №2 | 25 октября 2014 | Описание Скачать |
Лабораторная работа №3 | 13 ноября 2014 | Описание Скачать |
Лабораторная работа №4 | 6 декабря 2014 | Описание Скачать |
Лабораторная работа №5 | 6 декабря 2014 | Описание Скачать |
Лабораторная работа №5 (без юникода) | 15 декабря 2014 | Описание Скачать |
Лабораторная работа №6 | 15 декабря 2014 | Описание Скачать |
Лабораторная работа №6 (без юникода) | 22 декабря 2014 | Описание Скачать |
Описание лабораторной работы
Тема: Проектирование классов и создание объектов
Цель: Получение практических навыков проектирования классов, создания объектов, разработки и отладки объектно-ориентированных программ.1. Задание
А. Спроектировать класс Time, содержащий две закрытые переменные (часы, минуты) и функции работы с ними. В состав функций (методов) должны входить:- три конструктора: первый – без параметров, второй – с параметрами, третий – для создания копии объекта;
- деструктор;
- функции доступа к закрытым членам класса;
- функция, выводящая на экран показания времени в определённом формате;
- дружественные функции, увеличивающие значения часов и минут;
2. Методические указания
Проект следует составить из двух файлов. В заголовочном файле описать класс Time. Во второй файл поместить главную функцию, в которой описываются действия с объектами.
Класс может иметь несколько конструкторов. Они отличаются типом и/или количеством параметров. Пример двух конструкторов класса Prima:
Prima( ): a(0), b(0) { } // конструктор по умолчанию Prima( int n, float m): a(n), b(m) { } // конструктор с параметрами
Объект считается созданным в тот момент, когда завершил работу конструктор объекта. Деструктор является дополнением конструктора. Он вызывается всякий раз, когда уничтожается представитель класса. Объект считается уничтоженным, когда завершил работу деструктор объекта. Класс может иметь один деструктор.
Объекты класса можно передавать в функции в качестве аргументов точно так же, как передаются данные других типов. Внутри функции создается копия объекта - аргумента, и эта копия, а не сам объект, используется функцией. Объект внутри функции - это побитовая копия передаваемого объекта, а это значит, что если объект содержит в себе, например, некоторый указатель на динамически выделенную область памяти, то при копировании создается объект, указывающий на ту же область памяти. И как только вызывается деструктор копии, где, как правило, принято освобождать память, то освобождается область памяти, на которую указывал объект-"оригинал", что приводит к разрушению исходного объекта. Для предотвращения этого используется конструктор копирования, у которого в качестве параметра указывается ссылка на объект того же класса. Пример такого конструктора для класса Prima:
Prima(const Prima &p) { a=p.a; b=p.b;}
В теле каждого конструктора и деструктора предусмотрите вывод на экран сообщения, что позволит проследить процесс создания и уничтожения объектов.
3. Содержание отчета
Отчет оформляется в печатном виде с указанием темы и цели лабораторной работы, задания на лабораторную работу, текста программы с комментариями и выводов с анализом работы конструкторов и деструкторов.
Описание лабораторной работы
Тема: Проектирование классов с наследованием
Цель: Получение практических навыков проектирования классов с наследованием, создания объектов, разработки и отладки объектно-ориентированных программ.Задание
А. Спроектировать три класса согласно приведённой схеме. Базовый класс Human содержит две закрытые переменные: возраст и указатель на символьную строку, в которую заносится имя. Методы класса включают: конструктор по умолчанию, конструктор с параметрами, деструктор и функцию, выводящую на экран значения переменных.
Производный класс Man включает закрытую переменную — указатель на символьную строку — для хранения фамилии человека и методы — такие же, как и у базового класса.
Последний производный в цепочке класс именуется Russian. Он содержит одну закрытую переменную — указатель на символьную строку — для хранения информации о стране проживания и методы — как у базового класса.
Б. Создать по одному объекту для каждого класса, вывести на экран значения закрытых переменных.
Описание лабораторной работы
Тема: Проектирование классов как пользовательских типов данных
Цель: Получение практических навыков проектирования классов как пользовательских типов данных, создания объектов, разработки и отладки объектно-ориентированных программ.Задание
A) Спроектировать три автономных класса. Первые два — Sedan и Sportcar — в качестве полей данных содержат указатель на символьную строку и целочисленную переменную без знака. Методами в классах являются: конструктор без параметров, конструктор с параметрами, копирующий конструктор, деструктор и функция, выводящая на экран значения переменных. Третий класс — Car — включает три поля данных: целочисленную переменную, объект класса Sedan и объект класса Sportcar. Методами класса являются: конструктор без параметров, конструктор с параметрами, деструктор и функция, выводящая на экран значения всех переменных класса.
B) Создать объекты для каждого класса, вывести на экран значения закрытых переменных. Проанализировать работу конструкторов копирования.
Описание лабораторной работы
Тема: Разработка и исследование виртуальных функций
Цель: Получение практических навыков создания виртуальных функций и исследования механизма позднего связывания.Задание
A) Спроектировать три класса согласно приведённой схеме. Базовый класс Parent (родитель) содержит защищенную переменную - указатель на символьную строку lastName, в которую заносится фамилия. Его рublic-функции включают: конструктор по умолчанию, конструктор с параметрами, конструктор копирования, функции доступа к защищенной переменной, виртуальную функцию, выводящую на экран значение переменной, и деструктор. Производный класс Child (ребенок) включает защищенную переменную - указатель на символьную строку firstName - для хранения имени и методы – такие же, как и у базового класса. Виртуальная функция должна выводить на экран значения переменных базового и производного классов. Последний производный в цепочке класс именуется GrandChild (внук). Он содержит одну закрытую переменную grandFatherName (имя) и методы – как у базового класса. Его виртуальная функция должна выводить на экран значения переменных всех трёх классов.
B) Создать по одному объекту для каждого класса, используя указатель на базовый класс продемонстрировать работу виртуальных функций.
Описание лабораторной работы
Тема: Разработка класса для работы с символьными строками и исследование перегрузки операторов
Цель: Получение практических навыков разработки класса для работы с символьными строками, русификации консольного ввода/вывода, перегрузки операторов, разработки и отладки объектно-ориентированных программ.Задание
A) Спроектировать класс String, содержащий две закрытые переменные - указатель на символьную строку (char *s) и размер строки (int n), - и функции работы с ними.
Состав функций:
1) три конструктора: первый – без параметров, второй – с параметрами, третий – для создания копии объекта;
2) деструктор, освобождающий память, занятую строкой;
3) функции доступа к закрытым членам класса: возвращение размера строки length(), извлечение символа с указанным индексом at(), установка символа строки setchar();
4) функции работы со строками: определение длины строки strlen(), удаления фрагмента строки erase(), вставка фрагмента в строку insert(), добавления фрагмента в конец строки append();
5) оператор-функции для перегрузки: операции присваивания (=) – для копирования строк, операции «+» - для «склеивания» объектов типа String, операций сравнения (==, !=, <, >) объектов типа String, операции преобразования типа String в символьную строку.
6) оператор-функции перегрузки операторов консольного вывода и ввода объектов типа String с одновременной русификацией.
B) Создать необходимое количество объектов и продемонстрировать работу спроектированных средств при использовании объектов типа String.
Описание лабораторной работы
Тема: Разработка класса для работы с символьными строками и исследование перегрузки операторов
Цель: Получение практических навыков разработки класса для работы с символьными строками, русификации консольного ввода/вывода, перегрузки операторов, разработки и отладки объектно-ориентированных программ.Задание
A) Спроектировать класс String, содержащий две закрытые переменные - указатель на символьную строку (char *s) и размер строки (int n), - и функции работы с ними.
Состав функций:
1) три конструктора: первый – без параметров, второй – с параметрами, третий – для создания копии объекта;
2) деструктор, освобождающий память, занятую строкой;
3) функции доступа к закрытым членам класса: возвращение размера строки length(), извлечение символа с указанным индексом at(), установка символа строки setchar();
4) функции работы со строками: определение длины строки strlen(), удаления фрагмента строки erase(), вставка фрагмента в строку insert(), добавления фрагмента в конец строки append();
5) оператор-функции для перегрузки: операции присваивания (=) – для копирования строк, операции «+» - для «склеивания» объектов типа String, операций сравнения (==, !=, <, >) объектов типа String, операции преобразования типа String в символьную строку.
6) оператор-функции перегрузки операторов консольного вывода и ввода объектов типа String с одновременной русификацией.
B) Создать необходимое количество объектов и продемонстрировать работу спроектированных средств при использовании объектов типа String.
Описание лабораторной работы
Тема: Разработка шаблона класса для работы с динамическими структурами данных
Цель: Получение практических навыков создания шаблонов классов и динамических структур данных, разработки и отладки объектно-ориентированных программ.Задание
A) Спроектировать шаблон класса dynamo для реализации односвязного линейного списка.
B) При использовании шаблона класса в качестве данных для элемента односвязного списка использовать структурную переменную, содержащую следующую персональную информацию:
+) личный номер;
+) фамилия;
+) имя;
+) возраст;
+) страна проживания;
+) профессия;
+) хобби;
+) номер телефона.
C) Для представления символьных строк в элементе списка использовать объекты класса String, спроектированного в лабораторной работе №5.
D) Создать список из 10-15 элементов.
E) Разработать функции работы со списком:
- поиск информации по номеру, фамилии;
- добавления элемента в список;
- вывод на экран данных элемента списка;
- вывод на экран фамилий, если задан(ы) (с клавиатуры): возраст, профессия, хобби;
- сортировка списка по номеру, фамилии (дополнительно);
F) Интерфейс пользователя оформить в виде меню.
Описание лабораторной работы
Тема: Разработка шаблона класса для работы с динамическими структурами данных
Цель: Получение практических навыков создания шаблонов классов и динамических структур данных, разработки и отладки объектно-ориентированных программ.Задание
A) Спроектировать шаблон класса dynamo для реализации односвязного линейного списка.
B) При использовании шаблона класса в качестве данных для элемента односвязного списка использовать структурную переменную, содержащую следующую персональную информацию:
+) личный номер;
+) фамилия;
+) имя;
+) возраст;
+) страна проживания;
+) профессия;
+) хобби;
+) номер телефона.
C) Для представления символьных строк в элементе списка использовать объекты класса String, спроектированного в лабораторной работе №5.
D) Создать список из 10-15 элементов.
E) Разработать функции работы со списком:
- поиск информации по номеру, фамилии;
- добавления элемента в список;
- вывод на экран данных элемента списка;
- вывод на экран фамилий, если задан(ы) (с клавиатуры): возраст, профессия, хобби;
- сортировка списка по номеру, фамилии (дополнительно);
F) Интерфейс пользователя оформить в виде меню.