Наследование. Когда мы говорим об объектах, мы говорим, что они являются экземплярами классов

Классы.

Когда мы говорим об объектах, мы говорим, что они являются экземплярами классов. Что это означает? Для полного понимания, рассмотрим следующую аналогию. Почти все языки программирования имеют стандартные типы данных; например, в С++ есть целый тип 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;

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: