
- •Методическое материалы по курсу
- •Cанкт-Петербург
- •Оглавление
- •Введение.
- •Задание: Разобраться в коде и вывести на консоль еще одну фразу: "It's a first program"
- •Типы данных и правила их применения:
- •Операции
- •Управляющие операторы
- •Задание: в данном примере реализуйте операции умножения и деления Оператор цикла for (;;)
- •Оператор цикла do-while
- •Задание: к примеру добавьте перегруженную функцию для суммирования чисел типа double, и проверьте ее работу
- •Модульная организация программы
- •Массивы
- •Задание: добавьте еще один элемент в массив при инициализации и посмотрите его размерность. В цикле увеличьте значение всех элементов массива на 10 и напечатайте его заново. Работа со строками
- •Ссылочный тип данных
- •Задание: Объявить еще одну переменную-ссылку на I и, изменив ее значение, пронаблюдать, как изменилось значение переменной I Работа с файлами
- •Взаимодействие с ассемблером
- •Обработка ошибок и исключений
- •Директивы препроцессора: Макросы и Условные директивы
- •Структуры
- •Задание : Добавить в сруктуру еще одно данное (стоимость модели) типа int, в коде функции main() задать значение этого данного переменной–структуры, и напечатать его.
- •Объектно-ориентированное программирование (ооп)
- •Терминология ооп
- •Структура как простейший класс
- •Конструкторы и деструкторы
- •Перегрузка методов класса
- •Дружественные функции и классы
- •Указатель this
- •Перегрузка операций
- •Множественное наследование
- •Если осталось время – разобраться в иерархии классов и принципов построения
- •Список литературы
Структура как простейший класс
Тип 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);
};