Наследование time time_with_sec В чем преимущества наследования? Наследование кода – поля, метод inc Появилось два класса с которыми точно можно обращаться.

Презентация:



Advertisements
Похожие презентации
Д.з. на 3 марта Язык С++ - занятие 41Д.з. на 3 марта Язык С++ - занятие 41.
Advertisements

Д.з. 1. Задача 1: order // Вспомогательная функция: // Упорядочиваем два числа void order(int& x, int& y) { if (x > y) { int tmp = x; x = y; y = tmp;
НГТУ, каф. ВТ Наследование в С++ Макаревич Л. Г.НГТУ, каф. ВТ Наследование в С++ Макаревич Л. Г.
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
Прикладное программирование кафедра прикладной и компьютерной оптики Наследование.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Наследование Полиморфизм ВЫЗОВ КОНСТРУКТОРОВ И ДЕСТРУКТОРОВ ПРИ НАСЛЕДОВАНИИ.
С++, начала ООП Семинар 3 Рябова Анна Сергеевна
Д.з. на 3 марта Язык С++ - занятие 51. Задача 4: top class stack { … int & top() { return stk[size -1 ]; } … }; // Пример вызова: stack s; … s.top() =
Д.з. 1. Задача 3: список struct list { int val; list* next; list(int val_, list* next_) : val(val_), next(next_) {} }; void print(const list* p) { while.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Д.з Язык С++ - занятие 31. Задача 1: 1/1 + 1/3 + 1/5 … #include using namespace std; int main() { int n; cin >> n; double sum = 0;// Сумма for.
Интерфейсы Лекция 4. Реализуйте очередь в виде списка, содержащую комплексные числа Реализуйте методы void Enqueue(Complex с ) – помещает число в очередь.
Наследование и полиморфизм. «Быть» или «Иметь» а так же «Точно» или «Как получится»
Лекция 16. Введение в ООП. Часть 7 Красс Александр СПбГУ ИТМО, 2008.
Д.з. на 17 марта Язык С++ - занятие 61. Задача 2: фигуры // shape - общий интерфейс для // фигур class shape { protected: int x, y; public: shape(int.
EXtreme Programming XP Тема 3. XP Пусть есть некоторая информационная система для банков. В качестве основной валюты для расчетов используется доллар,
Полиморфизм Полиморфизм (polymorphism) - последний из трех "китов", на которых держится объектно-ориентированное программирование Слово это можно перевести.
Интерфейсы Обобщения ( шаблоны ) Лекция 4. Интерфейсы Обобщения.
Транксрипт:

Наследование time time_with_sec В чем преимущества наследования? Наследование кода – поля, метод inc Появилось два класса с которыми точно можно обращаться одинаково – inc(), print() – Наследование интерфейса

Пример void f(time t) { t.print(); t.inc(); t.print(); } time t = new time(8, 30); f(t); time t1 = new time_with_sec(8, 40, 15); f(t1); Мы можем писать код, который работает для разных типов (и для time и для time_with_sec) Называется полиморфизм Это главное зачем нужно наследование Это благодаря виртуальным функциям

Еще пример time [] a = new time [10]; a[0] = new time(8, 30); a[1] = new time_with_sec (8, 40, 15); … for (int i=0; i

Фигуры Фигура – Ромб – Круг – Треугольник abstract class Shape { protected int x, y; public abstract double area(); public abstract double perim(); class Rhomb: Shape { методы для площади и периметра } class Circle: Shape { методы для площади и периметра }

Абстрактные классы и методы abstract метод – его надо переопределить (А virtual метод – его можно переопределить) abstract класс – у него надо определить производный класс Нельзя создать обьект абстрактного класса object – базовый класс для всех обьектов

Интерфейсы примерно: абстрактный класс, в котором есть только абстрактные методы и больше ничего public interface IShape { double Area(); double Perim(); } abstract и public как бы добавляются автоматически class Rhomb : IShape { …

Зачем интерфейсы? Зачем интерфейсы, если есть абстрактные классы? Множественное наследование Car - автомобиль Ship – корабль Amphibia : Car, Ship – так нельзя.. Если автомобтль и корабль – интерфейсы - ОК

Создание обьектов и полиморфный код может ли конструктор быть виртуальным? – нет… конструктор не может вызываться в полиморфном коде. А иногда все-таки хочется создать код, который – полиморфный – все-таки создает обьекты Пример IShape [] a = new IShape[10]; Задача – скопировать в массив b. Но мы не знаем, что там находиться! Как вызывать new?

clone public interface IShape { double Area(); double Perim(); IShape Clone(); } class Rhomb : IShape { public IShape Clone() { return new Rhomb(x, y, h, w); } это шаблон Prototype