Классы.
Когда мы говорим об объектах, мы говорим, что они являются экземплярами классов. Что это означает? Для полного понимания, рассмотрим следующую аналогию. Почти все языки программирования имеют стандартные типы данных; например, в С++ есть целый тип int. Мы можем определять переменные таких типов в наших программах:
int day;
int count;
int answer;
Подобным же образом мы можем определять объекты класса. Класс является своего рода формой, определяющей, какие данные и функции будут включены в объект класса. При объявлении класса не создаются никакие объекты этого класса, по аналогии с тем, что существование типа int ещё не означает существование переменных этого типа.
Таким образом, класс является описанием совокупностью похожих между собой объектов. Это соответствует нестрогому пониманию термина «класс»: например Prince, Madonna и Sting относятся к классу рок-музыкантов. Не существует конкретного человека с именем «рок-музыкант», однако люди со своими именами являются объектами этого класса, если они обладают определенным набором характеристик. Объект класса также называют экземпляром класса. Класс является своего рода типом, только уже не переменной, а объекта.
Так же можно провести аналогию с языком Си, где вместо пременных-объекты, а вместо стандартных типов этих переменных – классы.
Рассмотрим пример создания класса «массив»:
Пример 2:
//Файл hpp
class MArray
{
protected:
int size;
public:
int takesize()
{
return size;
};
};
Таким образом, объекты данного класса буду представлять собой массив.
Понятие класса приводит нас к понятию наследования. В повседневной жизни мы часто сталкиваемся с разбиением классов на подклассы; например, класс животные можно разбить па подклассы млекопитающие, земноводные, насекомые, птицы и т. д. Класс наземный транспорт делится на классы автомобили, грузовики, автобусы, мотоциклы и т, д.
Принцип, положенный в основу такого деления, заключается в том, что каждый подкласс обладает свойствами, присущими тому классу, из которого выделен данный подкласс. Автомобили, грузовики, автобусы и мотоциклы обладают колесами и мотором, являющимися характеристиками наземного транспорта. Кроме тех свойств, которые являются общими у данных класса и подкласса, подкласс может обладать и собственными свойствами: например, автобусы имеют большое число посадочных мест для пассажиров, в то время как грузовики обладают значительным пространством и мощностью для перевозки тяжеловесных грузов и т. д.
Базовый класс
Производные классы.
В С++ класс который порождает все остальные классы, называется базовым классом, остальные классы наследуют его свойства, одновременно обладая собственными свойствами. Такие классы называются производными.
Наследование можно считать аналогом использования функций в процедурном подходе. Если мы обнаружим несколько функций, совершающих похожие действия, то мы извлечем из них идентичные части и вынесем их в отдельную функцию. Тогда исходные функции будут одинаковым образом вызывать свою общую часть, и в то же время в каждой из них будут содержаться спои собственные инструкции. Базовый класс содержит элементы, общие для группы производных классов. Роль наследования в ООП такая же, как и у функций в процедурном программировании, — сократить размер кода и упростить связи между элементами программы.
Рассмотрим реализацию наследования на примере вышерассмотренного класса «массив»:
Пример 3:
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;
class MArray
{protected:
int size;
int A[50];
;
class nasl:public MArray
{
public:
void Keyboard()
{
int i;
cout<<"Vvedite razmer massiva";
cin>>size;
for(i=0;i<size;i++)
{
cin>>A[i];
}
};
void DisplayA()// функция вывода массива на экран
{
int i;
for(i=0;i<size;i++)
{
cout<<" "<<A[i];
}
};
};
int main()
{
nasl a;
a.Keyboard();
a.DisplayA();
return 0;
}