- •2 Программирование классов
- •Void Display(struct tTime tp)
- •Int year; //Данные-//члены
- •Int month; // -//-
- •Int hour; // -//-
- •Int minute; // -//-
- •Void Display(void); // Функция-// член
- •7: Int month; // “ “
- •9: Int hour; // “ “
- •10: Int minute; // “ “
- •3: #Ifndef time1_h
- •4: #Define time1_h 1
- •21: #Endif // _ _time1_h
- •Замечание
- •Типы доступа
- •Объект класса выходит
- •Объект конструктор требуемое количество функции-члены вызывается деструктор
- •Выделенную память
2 Программирование классов
ООП парадигма программирования 1990-x.
Основное достижение в программировании на языке С++ класс.
Класс это объектно-ориентированный инструмент для создания новых типов данных.
В С++ существует множество встроенных тиров данных, таких как int, double и char.
Классы дают возможность определять новые типы данных, которые согласно принципам ООП в использовании почти не отличаются от встроенных.
Почему необходимо использовать
объектно-ориентированное программирование
ООП и классы С++ помогают уменьшить сложность, особенно в больших по размерам программах в 10,000 и более строк;
ООП также способствует повторному использованию написанного ранее кода, вместо переписывания функций.
В отличие от так называемых “чистых” языков ООП, таких как SmallTalk и Actor, C++ гибридный язык программирования, который сочетает в себе качества обычного и объектно-ориентированного подходов. Это означает, что при изучении ООП можно пользоваться тем, что уже известно о С++. Нет надобности одновременно вникать во все детали ООП.
Основные преимущества ООП:
Инкапсуляция
Наследование
Виртуальные функции
Инкапсуляция- объединяет данные и функции в классе.
Наследование- это способ повторного использования ПО, при котором новые классы создаются из уже существующих путем заимствования их атрибутов и функций и обогащениями этими возможностями новых классов.
Полиморфизм- позволяет нам обычным образом писать программы, обрабатывающий широкий круг как существующий, так и еще даже неописанных родственных классов.
пример
дата и время
В С объявили бы структуру, подобную следующей:
struct TTime {
int year;
int month;
int day;
int hour;
int minute;
};
Члены TTime сохраняют компоненты значений даты и времени.
Лишнее T в TTime означает тип (type) это соглашение, которое помогает отличать имена типов данных от прочего.
В соответствии с этой структурой можно объявить переменную типа TTime следующим образом:
TTime ap;
С++ позволяет опустить ключевое слово struct перед TTime, обязательное в С.
В соответствии с данным объявлением можно присвоить значения членом переменой appointment с помощью следующих операторов:
ap.year = 1996 ;
ap.month = 7 ;
ap.day = 14;
ap.hour = 8 ;
ap.minute = 30 ;
В программе, использующей множество структур TTime, вероятно потребуются функции вывода даты и времени, изменение членов структуры, сравнение двух дат и т.п. функцию отображения времени:
Void Display(struct tTime tp)
{
char buffer[32];
sprintf(buffer, “Date:%02d%02d%04d Time:%02d:%02d\n”,
tp-> month, tp->day, tp->year, tp-> hour, tp->minute);
cout << buffer;
}
Чтобы отобразить дату и время, можно передать в операторе вызова функции Display() адрес структуры ap типа TTime:
Display (&ap);
Старое эмпирическое правило гласит: данные формируют код.
Введение в понятие класса
Рассмотрим возможное представление даты и времени в классе и его преимущество.
Класс это вид структуры, инкапсулирующей данные и функции в удобную упаковку (рис. 2.1) .
Класс
Данные-члены
рис. 2.1. инкапсуляция данных и функций в классе
Приведем предыдущую структуру TTime в виде Класса с инкапсулированными функциями и данными:
class TTime {
public: //Спецификатор //доступа