Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
oop.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
248.32 Кб
Скачать

3 Класс — как расширенное понятие структуры

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

Конструкция определения класса выглядит следующим образом:

ключ_класса имя_класса { список_компонентов};

ключ_класса - одно из служебных слов class, struct, union;

имя_класса - произвольно выбираемый идентификатор;

список_компонентов - определения и описания типизированных данных и принадлежащих классу функций.Компонентами класса могут быть данные, функции, классы, перечисления, дружественные функции, дружественные классы, имена типов и битовые поля. struct complex1 { double real; double imag;

void define (double re=0.0, double im=0.0)

{ real=re; imag=im; } void display (void)

{ cout<<“real=“<<real; cout<<“, imag=“<<imag; } };

После объявления класса можно определять и описывать объекты класса (экземпляры класса): complex1 x1, x2, D; complex1 *point=&D; complex1 dim[8];

complex1&Name=x2;

Итак, для описания объекта используется конструкция: имя_класса имя_объекта;

После определения объекта класса появляется возможность обращаться к его компонентам с помощью “квалифицированных имен”:

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

Имя_класса с “::” (операцией уточнения области действия) может быть опущено: имя_объекта . имя_элемента;.

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

x1.define ( ); x2.define ( 4.3, 20.0); x2.display ( ) - вывод на печать комплексного числа.

Другой доступ к элементам объекта некоторого класса предусматривает явное использование указателя на объект класса и операции косвеного выбора компоненты "->":

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

Через указатель можно вызвать компонентную функцию

указатель_на_объект_класса->обращние_к_компонентной_функции

Статические компоненты класса не “дублируются” при создании объектов класса, каждый статический компонент существует в единственном экземпляре. Доступ к статическому компоненту возможен только после его инициализации. Для инициализации используется конструкция: тип имя_класса : : имя_компоненты инициализатор;

# include<iostream.h> struct goods { char name[40];

float price; static int percent; void Input ( )

{ cout<<“Наименование товара:”;

cin>>name; cout<<“Закупочная цена:”; cin>>price; }

void Display ( ) {cout<<“\n”<<name;

cout<<“,розничная цена:”<<lond(price*(1.0+goods:: percent *0.01)); }};

int goods : : percent=12; - это предложение должно быть размещено в глобальной области после определения класса. Только при инициализации статический компонент класса получает память и становится доступным имя_класса::имя_компоненты;

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]