- •Лабораторные работы 1-3 по ооп
- •Справки и пояснения по учебным файлам
- •1. Простейшие опыты
- •2. Исследование дружественных функций. Работа с комплексными числами
- •Лабораторная работа № 2. Перегрузка функций и перегрузка операций
- •2. Комплект файлов point.H, point.Cpp, pointmai.Cpp - класс точка на экране
- •Справки и пояснения по учебным файлам
- •Упражнение 1. Перегрузка функций
- •Упражнения 2. Перегрузка операций
- •1. Данные класса и статус их доступа
- •2. Методы класса Point
Лабораторные работы 1-3 по ооп
Работы 1 – 3 выполняются на основе готовой лабораторной работы “Разработка функций по обработке структурных типов данных “ - № 13 по программированию, т.е. решают ту же самую задачу, только на базе классов. При этом,
в лаб. №1 создается свой собственный класс в минимальном комплекте (включая описание полей данных, конструкторов, деструктора и один – два простых метода) и с этим классом выполняется ряд упражнений.
- в лаб. №2 осуществляется перегрузка функций и перегрузка операций для своего или других классов.
- наконец в лаб3 создается окончательно полноценный класс со всеми возможными и необходимыми компонентами, включая перегрузку операций вставки/извлечения <</>> объектов своего класса в стандартные потоки ввода/вывода.
Темы практических занятий, лабораторных работ и домашних заданий
Практические занятия
1. Объектно-ориентированное проектирование классов
2. Особенности перегрузки конструкторов и операции =
3. Объектно-ориентированное проектирование иерархии классов
Лабораторные работы
1. Исследование классов и объектов (4 ч)
2. Перегрузка функций и операций (2 ч)
3. Разработка собственных классов (4 ч) (Создание полноценного класса со всеми необходимыми методами, операциями и конструкторами)
4. Полиморфизм и виртуальные функции 2ч (механизмы раннего и позднего связывания.)
5. Создание иерархии наследуемых классов (4 ч)
Домашние задания
Дз1. Перегрузка операций <<\>>
Дз2. Создание шаблонов функций и классов
Лабораторная работа № 1. Исследование классов и объектов
Повторить теоретические вопросы:
1. Понятия класса и объекта. Член-данные и член-функции (методы). Статус доступа.
2. Конструкторы и деструкторы, из разновидности: - конструктор по умолчанию, - конструктор копирования, конструктор-инициализатор.
3. Операции доступа к полям и к методам класса. Операция уточнения области видимости (::).
4. Статические данные и функции (методы) класса.
5. Дружественные функции, статус их доступа к данным и к методам класса..
Ознакомиться и провести эксперименты с комплектами учебных файлов:
1. файлы comp1.cpp, comp2.cpp compL2.cpp - простейшие классы комплексных чисел
2. комплект файлов stroka.cpp и stroki.cpp - класс “строка символов” с двумя конструкторами, а так же файл conkat.cpp с перегруженной операцией + (конкатенация строк).
3. комплект файлов goods.cpp, doods_v.cpp - класс “товары в магазине” (со статической переменной)
4. комплект файлов point.h, point.cpp, pointmai.cpp - класс точка на экране
5. Файлы CMPLX.CPP и CMPLX.H с дружественными операциями-функциями (+ - * / ) для комплексных чисел.
Справки и пояснения по учебным файлам
После перегрузки операции + в Си-программе появляется возможность склеивания строк как в Бейсике.
Обратите внимание, что операция + перегружена для данных типа (класса) stroka и не поддерживает склейку символьных массивов, хотя это вроде бы тоже строки.
Так же обратите внимание (и испытайте), что к перегруженной операции-функции можно обращаться как к обычной функции с именем “operator +” и указанием аргументов в скобках (аргументы) по шаблону :
Новая строка = operator + (строка1, строка2); - если перегружена вне класса, и
Суть работы № 1, в соответствии с ее названием, заключается в проведении экспериментов (опытов) с классами и объектами, для чего студенту требуется изменить (модернизировать) как классы, так главные программы, чтобы понять синтаксис определения классов и доступа к его компонентам. Некоторые опыты очень просты, о них достаточно упомянуть в отчете только результаты. Для других упражнений необходимо привести тексты модернизированных фрагментов программ. Имена модернизированных программ, во избежание путаницы, лучше изменить, не забыв эти изменения и в директивах include.