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

Структура как простейший класс

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

  • В структуре можно декларировать и реализовывать функции (get_sine()), либо только декларировать, а реализовывать их позже (get_cosine()) (\28TSTRUC):

#include <math.h> // Библиотека математических функций

const double DEG_TO_RAD=0.0174532925;

struct degree { // Структура для работы с углами в градусах

double data_value;

void set_value(double ang) // Метод задания начального значения угла

{ data_value = ang; }

double get_sine(void) // Метод расчета синуса угла

{ return sin(DEG_TO_RAD*data_value); } // Реализация метода

double get_cosine(void); // Метод расчета косинуса угла

};

double degree::get_cosine(void) // Реализация метода расчета косинуса угла

{

double answer = cos(DEG_TO_RAD*data_value);

return(answer);

}

int main()

{

degree deg; // Объявление переменной типа стурутура

deg.set_value(30.0); // Вызов метода для задания начального значения

cout << "The value is: " << deg.data_value << endl; // Обращение к данным

cout << "The sine is: " << deg.get_sine() << endl; // Вызов метода

cout << "The cosine is: " << deg.get_cosine() << endl;

return(0);

}

Классы

  • Преимущества классов в ООП по сравнению со структурами:

  • ограничение доступа к определенным данным

  • возможность инициализировать и защищать жизненно важные функции и данные

  • создание абстрактных типов данных

  • Описание класса похоже на описание структуры, но начинается с ключевого слова class. Первый раздел объявлений функций и данных по умолчанию защищенный - private (а, в структуре - общедоступный public)

class тип {

[private:]

тип переменная1;

тип переменная2;

функция-класса1;

...

public:

тип переменная3;

функция-класса2;

функция-класса3;

...

private:

...

protected:

...

} имя объекта;

  • Пример заголовка простейшего класса на основе вышеприведенного примера структуры

class degree {

double data_value; // Защищенная секция класса по умолчанию

public: // Объявление общедоступного раздела

double get_value(void) // Метод доступа к защищенному данному класса

{ return(data_value); }

void set_value(double ang) // Метод задания начального значения угла

{ data_value = ang; }

double get_sine(void) // Метод расчета синуса угла

{ return sin(DEG_TO_RAD*data_value); } // Реализация метода

double get_cosine(void); // Метод расчета косинуса угла

};

Задание: Изменить пример \28TSTRUC так, чтобы вместо структуры получить описание класса, пользуясь вышеприведенным описанием. При печати значения угла изменить обращение к data_value переменной данного класса в теле main() на вызов метода get_value().

  • Вложенные классы допустимы, но нужно следить за тем, чтобы объявление не было слишком сложным:

class employee {

class emp_name { // объявление объекта вместе с классом

char firstname[20];

char lastname[20];

} name;

emp_hours hours; // объявление объекта другого класса

void emp_input(void);

void emp_output(void);

};

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