1.Объекты и классы
Объектом называется совокупность разного типа данных и функций, которые их обрабатывают.Компоненты объекта:
- члены-данные
- члены-функции
Под классом понимается множество объектов, связанных общностью структуры и поведения. Таким образом, класс можно сравнить с шаблоном, по которому создаются объекты.
В С++ класс – это структурированный тип, включающий в себя в качестве элементов типизированные данные и функции, применяемые по отношению к этим данным
Например, можно объявить класс
четырехугольников:
Имя класса FourAngel
Члены-данные
- координаты вершин,
- стороны,
- периметр,
- площадь.
Члены-функции:
- метод ввода координат вершин,
- расчет длин сторон,
- расчет площади,
- расчет периметра.
Затем в том же файле (или в другом) производится описание объявленных функций – членов класса.
Так как прототипы всех методов уже указаны в определении класса, то порядок описания членов-функций может быть любой. Члены-функции могут вызывать друг друга и обращаться к любым членам-данным этого класса.
На рис.: член-функция Init класса FourAngel вводит члены-данные x1, y1, x2… этого класса:
В отличие от
определения обычной функции здесь имеются спецификации принадлежности к
определенному кассу с использованием операции разрешения области видимости (::)
В функции main описываются конкретные
экземпляры класса (объекты) и сама
программа получается очень компактной:
Здесь
•
Созданы три объекта –четырехугольника f1,f2,f3, на
них автоматически будет выделена память.
•
Поля (координаты) объектов f1,f2 определены с помощью вызова функции Init() для этих объектов;
•
Рассчитаны длины сторон первого четырехугольника.
•
Рассчитана площадь первого четырехугольника.
Обратите внимание на особенности
вызова:
- функций-членов типа void (вызов отдельным оператором)
- функций-членов других типов (в операторах вывода на экран и в арифметических операциях ). Например, можно написать:
S= f1.Ploshad()+ f2.Ploshad()
Вопросы №1-3 CР
- Создайте новый проект и впишите туда части кода, приведенные выше. Непоказанные методы оформите как "заглушки": double FourAngel::Ploshad(void){P=0; return P;} Проверьте работоспособность проекта.
- Напишите Storony(), Perimetr() и Ploshad() - функции – члены класса FourAngel, считая, что имеете дело с прямоугольником. Заготовьте контрольный пример и, переписав очередную функцию, проверьте результат.
- Опишите еще один объект-прямоугольник, задайте начальные значения его данных и вызовите члены-функции для вычисления сторон, периметра и площади.
2. Инкапсуляция
Инкапсуляция – комбинирование и сокрытие внутри объекта данных и функций, которые их обрабатывают.
Инкапсуляция
позволяет разработчику в силу различных причин скрыть от пользователя детали
реализации объекта и самому в то же время делать меньше ошибок, так как доступ
к членам - данным объектов обычно имеют лишь функции класса.
В С++ используются три спецификатора доступа:
•
Private (сокрытый)
- Доступ извне запрещен
•
Public (общедоступный)
- Доступ извне разрешен
•
Protected (защищенный) - Доступ
разрешен только наследникам
Один и тот же
спецификатор доступа может появляться при описании класса несколько раз.
В описанном
нами примере класса все поля являются скрытыми (при попытке обращения –ошибка),
а все методы –доступными извне (можно вызывать).
Для доступа к значениям скрытых полей
используется следующий прием:
Вопрос №4 СР
Доступны ли извне значения длин сторон A, B, C, D и почему? Допишите код так, чтобы вам удалось распечатать в функции main() значения всех сторон каждого объекта.
3.Конструкторы и деструкторы
Каждый класс
имеет один или несколько конструкторов, которые вызываются автоматически при
создании объекта и в этом смысле не являются методами класса. Конструктор можно
описать явно и использовать для задания начальных значений полям.
Основные
отличия конструктора от методов класса:
•
Имя конструктора совпадает с именем класса;
•
Конструктор не может иметь возвращаемого значения.
Можно
определить несколько конструкторов с разным количеством параметров. Это
позволит по-разному задавать значения полей создающихся объектов- экземпляров
класса.
Вопросы №5-5 СР
- Напишите определение класса FourAngel с конструктором. Метод Init убирать не надо. Конструктор напишите так, чтобы с помощью параметров задавались координаты вершин, лежащих на одной диагонали. Координаты двух других вершин получите, считая, что стороны прямоугольника параллельны осям координат.
- С помощью конструктора задайте начальное значение координат прямоугольника f1
Комментариев нет:
Отправить комментарий