Ключ_класса имя_класса

Оглавление

Практическое занятие 14. Реализация абстрактного типа данных на языке С++. Создание многофайлового проекта в Visual Studio. 3

Практическое занятие 15. Создание многофайлового проекта с использованием компилятора g++ 18

Практическое занятие 16. Дружественные функции. Перегруженные операции. 22

Практическое занятие 17. Функторы.. 30

Практическое занятие 18. Создание иерархии классов. 36

Практическое занятие 19. Динамический полиморфизм. Абстрактные классы.. 50

РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА.. 61

 


Практическое занятие 14. Реализация абстрактного типа данных на языке С++. Создание многофайлового проекта в Visual Studio.

 

Понятие класса

В основе объектно-ориентированного программиро-вания на языке С++ лежит понятие класса.

Класс – это производный структурированный тип, введенный программистом на основе уже существующих типов. Механизм классов позволяет создавать типы в полном соответствии с принципами абстракции данных, т.е. класс задает некоторую структурированную совокупность типизированных данных и позволяет определить набор операций над этими данными.

Простейшим образом класс можно определить с помощью конструкции, называемой спецификацией класса:

ключ_класса имя_класса

{поля_данных и методы_класса} список_объектов;

 

где ключ_класса – одно из служебных слов: class, struct, union; имя_класса – произвольно выбираемый идентификатор; поля_даных – определения и описания типизированных данных; методы_класса – определения и прототипы принадлежащих классу функций; список_объектов указывать не обязательно, он просто позволяет объявлять объекты класса.

Заключенный в фигурные скобки список полей данных и методов классов называют телом класса. Телу класса предшествует заголовок. В простейшем случае заголовок класса включает ключ класса и его имя. Определение (спецификация) класса всегда заканчивается точкой с запятой. В теле спецификации класса могут быть данные, функции (методы), классы, перечисления, битовые поля, дружественные функции, дружественные классы.

Чаще всего принадлежащие классу функции называют методами или функциями класса. Принадлежащие классу данные называют свойствами, данными, элементами данных, полями данных.

Для изменения видимости полей данных и методов в определении класса можно использовать спецификаторы доступа.

Спецификатор доступа – это одно из трех служебных слов:

private (собственный или закрытый),

public (общедоступный или открытый),

protected (защищенный),

за которым помещается двоеточие. Появление любого из спецификаторов доступа в тексте определения класса означает, что до конца определения класса либо до другого спецификатора доступа все поля и методы класса имеют указанный статус.

Любые данные и функции, объявленные после спецификатора доступа к элементам public, доступны при любом обращении программы к объекту класса (являются открытыми и видимыми для любой функции, для которой доступен объект данного класса). По умолчанию функции и данные класса, определение которого начинается со служебного слова struct, являются открытыми.

Открытые функции-элементы (открытый интерфейс услуг класса) будут использоваться клиентами класса (т.е. частями программы, играющими роль пользователей) для манипуляции с данными этого класса.

Любые данные и функции, объявленные после спецификатора доступа к элементам private, доступны только функциям-элементам этого класса и друзьям класса (являются закрытыми и видимыми только друзьям класса и другим элементам класса). По умолчанию функции и данные класса, определение которого начинается со служебного слова class, являются закрытыми.

Спецификатор доступа protected необходим только при наследовании классов. При использовании классов без наследования, т.е. без порождения на основе одних классов других (производных), применение спецификатора protected эквивалентно использованию спецификатора private.

Применение в качестве ключа класса служебного слова union приводит к созданию классов с несколько необычными свойствами, которые нужны для специфических ситуаций. В каждый момент времени исполнения программы объект-объединение проявляет себя только как одно из полей данных, присутствующих в классе, определенном с помощью union. Тем самым один и тот же участок памяти, точнее, один и тот же код этого участка, может рассматриваться как значения разных типов. Все поля и методы union -класса по умолчанию являются открытыми.

Когда класс определен, имя класса можно использовать для объявления объектов этого класса.

В каждый определяемый объект (в экземпляр класса) входят данные, соответствующие полям данных класса. Методы класса позволяют обрабатывать данные конкретных объектов, но в отличие от полей данных методы не тиражируются при создании конкретных объектов класса. Место в памяти выделяется именно для полей данных каждого объекта класса. Определение объекта класса предусматривает выделение участка памяти и деление этого участка на фрагменты, каждый из которых соответствует отдельному полю данных класса.

 

Конструкторы

Для инициализации объектов класса в его определение (спецификацию) можно явно включать специальный метод, называемый конструктором. Формат конструктора:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: