Министерство образования Республики Беларусь
Министерство образования Республики Беларусь
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Кафедра эконмической информатики
Объектно-ориентированное программирование
Лабораторная работа №1
“Классы и объекты в языке C++”
Вариант 16
Выполнила: Студентка группы
972303
Рушева Маргарита
Владиславовна
Проверила: Григорьева Юлия
Юрьевна
Минск, 2020
1 Цель лабораторной работы
Изучить структуру класса, атрибуты доступа к компонентам класса; рассмотреть принцип работы конструкторов (с параметрами, без параметров, с параметрами по умолчанию, конструктора копирования), деструкторов при работе с объектом, статические и константные данные и методы класса.
2 Теория по лабораторной работе
КЛАСС в объектно-ориентированном программировании, представляет собой шаблон для создания объектов, обеспечивающий начальные значения состояний: инициализация полей-переменных и реализация поведения функций или методов. Объявление класса начинается с ключевого слова class. Объявление класса синтаксически подобно объявлению структуры. Основное отличие между С++-структурой и С++классом состоит в том, что по умолчанию элементы класса являются закрытыми, а элементы структуры — открытыми. В остальном же структуры и классы имеют одинаковое назначение. И классы, и структуры могут иметь сочетание открытых и закрытых элементов, могут использовать наследование и могут иметь функции-элементы. С++-программисты тип class используют главным образом для определения формы объекта, который содержит методы-элементы и данные, а тип struct — для создания объектов, которые содержат только элементы данных.
ОБЪЕДИНЕНИЕ (UNION) – тип данных, переменная которого может хранить (в разное время) объекты различного типа и размера. В результате появляется возможность работы в одной и той же области памяти с данными различного вида. Для описания объединения используется ключевое слово union. В языке С++ класс, определяемый посредством ключевых слов struct, class, union, включает в себя методы и данные, создавая новый тип объектов. Компоненты класса имеют ограничения на доступ.
Обычно данные класса имеют атрибут доступа private или protected, а методы – public. Значения атрибутов доступа:
− private – элемент класса с атрибутом private может использоваться только методами собственного класса и функциями-«друзьями» этого же класса;
− protected – тот же доступ, что и private, но дополнительно элемент класса может использоваться методами и функциями-«друзьями» производного класса, для которого данный класс является базовым;
− public – элемент класса может использоваться любой функцией, т. е. защита на доступ к элементу снимается.
Элементы структуры (struct) и объединения (union) по умолчанию имеют доступ public.
Использование функций для установки начальных значений полей объекта часто приводит к ошибкам. КОНСТРУКТОР - функция, позволяющая инициализировать объект в процессе его декларирования (определения). Конструктор является элементом класса и имеет то же имя, что и класс. Конструктор может иметь и не иметь аргументы, но он никогда не возвращает значение (даже типа void). Класс может иметь несколько конструкторов, что позволяет использовать несколько различных способов инициализации объектов. Конструктор вызывается при создании объекта.
Конструктор, у которого все аргументы заданы по умолчанию, называется КОНСТРУКТОРОМ ПО УМОЛЧАНИЮ, т. е. конструктором, который можно вызывать без указания каких-либо аргументов.
Противоположные действия, по отношению к действиям конструктора, выполняет МЕТОД-ДЕСТРУКТОР или метод-разрушитель, который уничтожает объект. Деструктор может вызываться явно или неявно. Деструктор не может иметь аргументы, возвращать значение и наследоваться.
Подобно конструкторам деструкторы не возвращают значений, следовательно, в их объявлениях отсутствует тип возвращаемого значения. В отличие от конструкторов, деструкторы не могут иметь параметров.
УКАЗАТЕЛЬ THIS — это неявный параметр, принимаемый всеми методами-элементами класса. В любом методе-элементе класса указатель this можно использовать для ссылки на вызывающий объект.
Основные свойства и правила использования указателя this:
− каждый новый объект имеет свой скрытый указатель this;
− указатель this указывает на начало своего объекта в памяти компьютера;
− указатель this не надо дополнительно объявлять;
− указатель this передается как скрытый аргумент во все нестатические (т. е. не имеющие спецификатора static) компоненты-методы;
− указатель this является локальной переменной, которая недоступна за пределами объекта;
− можно обращаться к указателю this непосредственно в виде this или *this.
Ключевое различие между статической локальной и глобальной переменными состоит в том, что статическая локальная переменная известна только блоку, в котором она объявлена, а глобальная известна всему файлу. Таким образом, статическую локальную переменную в некоторой степени можно назвать глобальной переменной, которая имеет ограниченную область видимости. Чтобы объявить статическую переменную, достаточно предварить ее тип ключевым словом static. Локальные static-переменные инициализируются только однажды, в начале выполнения программы, а не при каждом входе в функцию, в которой они объявлены.