Разделы презентаций


Лекция № 5 по дисциплине Объектно-ориентированное программирование на тему:

Содержание

Понятие наследования Наследование позволяет определить общий класс, а затем определять другие классы путем добавления новых деталей в уже созданное общее определение класса.Общий класс называется базовым классом, или супер-классом, или родительским классом.

Слайды и текст этой презентации

Слайд 1Лекция № 5 по дисциплине «Объектно-ориентированное программирование» на тему: Наследование

Лекция № 5 по дисциплине «Объектно-ориентированное программирование» на тему:  Наследование

Слайд 2Понятие наследования
Наследование позволяет определить общий класс, а затем определять

другие классы путем добавления новых деталей в уже созданное общее

определение класса.

Общий класс называется базовым классом, или супер-классом, или родительским классом. Полученный на его основе класс называется производным, или наследуемым, или подклассом, или классом-наследником.

Понятие наследования Наследование позволяет определить общий класс, а затем определять другие классы путем добавления новых деталей в

Слайд 3Связь базового класса и наследуемого
Наследуемый класс того же типа,

что и базовый класс

Чем новый класс будет отличаться от

базового класса?
1. Мы добавляем несколько новых функций к наследуемому классу.
2. Мы меняем поведение существующей функции базового класса. Это называется переопределением.

Для переопределения функции создается новое определение для функции в наследуемом классе

Связь базового класса и наследуемого Наследуемый класс того же типа, что и базовый класс Чем новый класс

Слайд 4Синтаксис записи производного класса
class :

класс> {}

Пример.
class B : public A // класс B является

наследником класса A
{
// реализация B, расширяющая возможности А
}

Синтаксис записи производного класса class :  {}Пример.class B : public A // класс B является наследником

Слайд 5Режимы доступа к производному классу
Режимы доступа: внешнее, защищенное и

внутреннее наследование.

сlass имеет разделы с различным режимом доступа:
public
private
protected –

защищеный раздел класса, недоступный снаружи, доступен только в производном классе при наследованиии
Режимы доступа к производному классу Режимы доступа: внешнее, защищенное и внутреннее наследование. сlass имеет разделы с различным

Слайд 6Разновидности наследования
class : {public | private | protected} {
};

Режим

доступа public – внешнее наследование - интерфейс базового класса (раздел

public) становится внешним интерфейсом производного класса.
Режим доступа protected – защищенное наследование - внешний и защищенный разделы базового класса становится защищенными разделами производного класса.
Режим доступа private – внутреннее наследование - внешний и защищенный разделы базового класса становятся внутренними разделами производного класса, недоступны снаружи.
Разновидности наследования class : {public | private | protected} {};Режим доступа public – внешнее наследование - интерфейс

Слайд 7Пример с наследованием
class Coord{ // базовый класс, описание двумерных

координат
protected:
int x,y;
public:
Coord();
void SetCoord(int x,int y);
void Draw();
}


// Через наследование создадим класс для описания трехмерных координат class Coord3D : public Coord{ // внешнее наследование
protected:
int z; // Добавим новую переменную – еще одну координату
public:
Coord3D();
void SetCoord(int x,int y, int z); // переопределение метода
void Draw();
};
Пример с наследованием class Coord{ // базовый класс, описание двумерных координатprotected: int x,y;public: Coord(); void SetCoord(int x,int

Слайд 8Продолжение примера
void Coord3D::SetCoord(int X, int Y, int Z) { //

реализация метода
z=Z;
// Задать координаты x и y можно

через метод базового класса:
Coord::SetCoord(X,Y);
// ... или прямым присваиванием:
x=X;
y=Y;
}
// Еще один порожденный класс:
class ColorPoint3D : protected Coord3D{ // защищенное наследование
private:
int Color;
int Radius;
public:
Draw(); };
Продолжение примераvoid Coord3D::SetCoord(int X, int Y, int Z) { // реализация метода z=Z; // Задать координаты x

Слайд 9Конструкторы в производных классах
Конструктор производного класса может вызывать конструктор базового

класса либо неявно, либо явно

Конструкторы базового класса и операции присваивания

базового класса не наследуются производными классами

Если конструктор производного класса опущен, то конструктор по умолчанию производного класса вызывает конструктор по умолчанию базового класса.
Конструкторы в производных классахКонструктор производного класса может вызывать конструктор базового класса либо неявно, либо явноКонструкторы базового класса

Слайд 10Пример с конструкторами
class Point {

public:
Point(int=0, int=0); //конструктор с полями по //умолчанию
protected:

int x,y;
};
Point::Point(int a, int b) {
x=a;
y=b;
}
Пример с конструкторами   class Point {   public:Point(int=0, int=0); //конструктор с полями по //умолчанию

Слайд 11Продолжение примера
class Circle : public Point {

public:
Circle(double r=0.0, int x=0, int y=0); //конструктор с полями

//по умолчанию
private:
double radius;
};
Circle::Circle(double r, int a, int b) : Point (a,b) {
radius=r;
}
int main() {
Point p(5,7);
Circle c(4.5, 7,9);
return 0; }
Продолжение примера  class Circle : public Point {   public:Circle(double r=0.0, int x=0, int y=0);

Слайд 12Преобразование объектов производного класса к базовому
При наследовании типа

public объекты производного класса можно обрабатывать как объекты базового класса.



Ссылка на объект производного класса через указатель базового класса допускается. Можно обращаться только к элементам базового класса.
Ссылка на объект базового класса через указатель производного класса является синтаксической ошибкой.
Преобразование объектов производного класса к базовому  При наследовании типа public объекты производного класса можно обрабатывать как

Слайд 13Множественное наследование
class Brush { // кисть для рисования, "пятно"
protected:
int

Color;
int Radius;
… };
// Новый класс является наследником сразу двух

//базовых классов:
class ColorPoint : protected Coord, private Brush {
public:
Draw(); // функция Draw использует свойства и //функции двух классов
};
Множественное наследованиеclass Brush { // кисть для рисования,

Слайд 14Виртуальные функции
Виртуальные функции – это функции, прототипы которых объявлены в

базовом классе с использованием ключевого слова virtual.
Виртуальные функции позволяют

в базовом классе задать действия, общие для всех производных классов.
Базовый класс задает основной интерфейс, который будут иметь производные классы.
Реализуется принцип "Один интерфейс, много функций"
Виртуальные функцииВиртуальные функции – это функции, прототипы которых объявлены в базовом классе с использованием ключевого слова virtual.

Слайд 15Пример с виртуальными функциями
class Shape : public Coord

{ // форма, фигура

public:
// виртуальная функция, реализация фиктивна
virtual void

Draw() {cout<<"This is Shape";}
// или
//virtual void Draw()=0; чистая виртуальная //функция
// реализация отсутствует, требуется
// переопределение в производном классе.
};
Пример с виртуальными функциями  class Shape : public Coord { // форма, фигура public:// виртуальная функция,

Слайд 16Продолжение примера
// Через наследование создаем новый класс
class Circle :

public Shape { // окружность
protected:

int Radius;
public:
...
void Draw(); // переопределение //виртуальной функции для Circle
};
Продолжение примера // Через наследование создаем новый классclass Circle : public Shape { // окружность

Слайд 17Окончание примера
void main() {
Circle C1; // Объект

типа Circle
C1.Draw();
C1.Shape::Draw();
Shape* pSh; // Указатель на

базовый класс
pSh=&C1; // Указатель на базовый класс //используется для объекта порожденного класса
pSh->Draw(); // Вызов функции Draw() для объекта Shape
((Circle*)pSh)->Draw(); // Преобразование указателя на базовый класс в указатель на производный и вызов функции Draw() для объекта Circle
}
Окончание примераvoid main() {Circle C1;    // Объект типа CircleC1.Draw(); C1.Shape::Draw();   Shape* pSh;

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика