По теме лабораторной работы

Целью введения концепции классов в С++ является предоставление программисту средств создания новых типов, которые настолько же удобны в использовании, как и встроенные типы. Класс - это определенный пользователем тип. Мы создаем новый тип для определения концепции, не выражаемой непосредственно встроенными типами. Например, мы могли бы ввести тип TrunkLine (междугородная линия) в программе, имеющей отношение к телефонии, тип Depositir (вкладчик) в программе управления банком или тип Pretator (хищник) в программе экологического моделирования.

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

В простейшем случае класс можно определить с помощью конструкции: тип_класса имя_класса {список_членов_класса}, где

· тип_класса – служебное слово class;

· имя_класса – идентификатор;

· список_членов_класса – определения и описания типизированных данных и принадлежащих классу функций.

Функции – это методы класса, определяющие операции над объектом.

Данные – это поля объекта, образующие его структуру. Значения полей определяет состояние объекта.

Мы будем называть члены класса компонентами класса, различая компонентные данные и компонентные функции. Компоненты-функции предназначены для выполнения операций над объектным данным, их часто называют методами класса.

Для каждого компонента класса устанавливается уровень доступа либо явно, указанием уровня доступа одним из ключевых слов public или private с двоеточием, либо неявно, по умолчанию. Указание уровня доступа относится ко всем последующим компонентам класса, пока не встретится указание другого уровня доступа. Уровень доступа public разрешает доступ к компонентам класса из любого места программы, в котором известна переменная этого класса. Уровень доступа private разрешает доступ к компонентам класса только из методов этого класса. Уровень доступа к компонентам класса типа class по умолчанию private, явно можно определять и другие уровни.

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

имя_объекта.имя_члена_класса;

ссылка_на_объект.имя_члена_класса;

указатель_на_объект->имя_члена_класса;

Собственные (private) компоненты локализованы в классе и не доступны извне. Они могут использоваться функциями-членами данного класса.

Например, пусть программист решил в классе Point (точка) запретить внешний доступ к координатам точки и разрешить внешний доступ к методам перемещения точки на плоскости. Описание класса Point можно построить так:

class Point { private: int x,y; public: void movePoint ( int newx, int newy); // смещение в новую точку void relmove ( int dx, int dy ); // смещение на dx,dy int getx ( void ) ( return x ; }; int gety ( void ) { return y ; }; };

Описание тела компоненты-функции может быть включено в описание класса, как это сделано в примере для функций getx и gety, или помещено вне описания класса. Компоненты-функции при их вызове неявно получают дополнительный аргумент - указатель на переменную объектного типа, для которой вызвана функция и в теле функции можно обращаться ко всем компонентам класса. В связи с этим при описании тела компоненты-функции вне описания класса нужно использовать операцию разрешения контекста, чтобы информировать компилятор о принаждлежности функции к классу. Методы класса Point можно описать так:

void Point :: movePoint ( int newx, int newy ) { x = newx; y = newy ; }void Point :: relmove ( int dx, int dy ) { x += dx; y += dy ; }

 

Пример:

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