Инфоурок Другое ПрезентацииОбъектно-ориентированное программирование С++

Объектно-ориентированное программирование С++

Скачать материал
Скачать материал "Объектно-ориентированное программирование С++"

Получите профессию

Экскурсовод (гид)

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Инструктор по туризму

Описание презентации по отдельным слайдам:

  • Объектно-ориентированное программированиеС++. Лекция 8Карпов В.Э.

    1 слайд

    Объектно-ориентированное программирование
    С++. Лекция 8
    Карпов В.Э.

  • ООП C++2ШАБЛОНЫПредположим, что перед нами стоит задача создания списка элеме...

    2 слайд

    ООП C++
    2
    ШАБЛОНЫ
    Предположим, что перед нами стоит задача создания списка элементов некоторого типа. Например, списка целых чисел. Реализация может выглядеть примерно так:
    class List
    {
    int val;
    List *next;
    public:
    void add(List *e);
    void add(int n)
    {
    List *t = new List(n);
    add(t);
    }
    void print(void);
    List(int v0) { val = v0; next = NULL; };
    };
    void List::add(List *e)
    {
    List *t;
    for(t=this;t->next;t=t->next);
    t->next = e;
    }
    void List::print(void)
    {
    for(List *t=this;t;t=t->next)
    printf("%d ", t->val);
    }
    Пример работы со списком:
    List L=1;
    L.add(&List(2));
    List *pl = new List(3);
    L.add(pl);
    L.add(4);
    L.print();

  • ООП C++3Понятие шаблонаВведено в работе Б.Строуструпа "Parameterized Types fo...

    3 слайд

    ООП C++
    3
    Понятие шаблона
    Введено в работе Б.Строуструпа "Parameterized Types for C++", 1988.
    Определение шаблона:

    <template> <список параметров> объявление
    Объявление описывает функцию или класс. Объявление может быть только глобальным.
    template <class T> class Vector
    {
    T* v;
    int sz;
    public:
    Vector(int n) { sz = n; v = new T[sz]; };
    void sort(void);
    T& operator[](int i) { return v[i]; }
    };
    Vector <int> v1(20);
    Vector <Complex> v2(10);
    typedef Vector <Complex> CVector;

    Работа с именем шаблонного класса ведется так же, как и просто с именем класса.
    class SVector: public Vector<Complex> {…}

  • ООП C++4Шаблоны функций-членовtemplate  T&amp;Vector::operator[](int i) {...};
te...

    4 слайд

    ООП C++
    4
    Шаблоны функций-членов
    template <class T> T&Vector<T>::operator[](int i) {...};
    template <class T> void Vector<T>::sort(void) {...};
    При использовании шаблонных функций на компилятор ложится работа по определению их реализации на основе анализа их типа.
    Vector <Complex> cv(100);
    Vector <int> ci(100);
    f(cv); //f(vector<Complex>)
    f(ci); //f(vector<int>)

  • ООП C++5Шаблоны функцийtemplate  T max(T a, T b) {return a&gt;b?a:b;};
int a, b;...

    5 слайд

    ООП C++
    5
    Шаблоны функций
    template <class T> T max(T a, T b) {return a>b?a:b;};
    int a, b;
    char c, d;
    int m1 = max(a,b); //max(int, int)
    char m2 = max(c,d); //max(char, char)
    int m3 = max(a,c); // - ошибка: нельзя сгенерировать max(int, char)

  • ООП C++6ОграниченияКаждый параметр шаблона, заданный в списке параметров, дол...

    6 слайд

    ООП C++
    6
    Ограничения
    Каждый параметр шаблона, заданный в списке параметров, должен быть использован в типах параметров шаблона функции.
    template <class T> T* create(); // Ошибка
    template <class T> void f()
    {
    T a;

    }; // Ошибка
    template <class T> class creator
    {
    static T* create();
    }
    int *creator<int>::create();

  • ООП C++7Примерstruct S
{   int a, b; };

template  T* create()
{	  T *a;
	  a...

    7 слайд

    ООП C++
    7
    Пример
    struct S
    { int a, b; };

    template <class T> T* create()
    { T *a;
    a = new T;
    return a;
    }
    template <class T> class Ccreator
    { public:
    static T* create();
    };

    int *Ccreator<int>::create()
    { int *n;
    n = new int;
    *n = 123;
    return n;
    }
    void main(void)
    {
    int *t;
    S *s;
    t = create<int>();
    s = create<S>();
    t = Ccreator<int>::create();
    }

  • ООП C++8Примерыtemplate  class TList
{public:
  T val;
  TList *next;
  void...

    8 слайд

    ООП C++
    8
    Примеры
    template <class T> class TList
    {public:
    T val;
    TList *next;
    void add(TList *e);
    void add(T n)
    { TList *t = new TList(n); add(t); }
    void print(void);
    TList(T v0) { val = v0; next = NULL; };
    };
    template <class T> void TList<T>::add(TList *e)
    {
    TList *t;
    for(t=this;t->next;t=t->next);
    t->next = e;
    }
    template <class T> void TList<T>::print(void)
    {
    for(TList *t=this;t;t=t->next)
    printf("%d ", t->val);
    }
    template <class T> void print(T e) { printf("%d ", e.val); }
    // Вплоть до момента вызова этой функции компилятор ничего не знает о
    // типе аргумента
    template <class T> void print()
    {
    T x;
    printf("%d ", 1);
    }

    class C
    {
    int n, n2;
    public:
    C(int k=0) { n=k; n2=n-1;}
    };

  • ООП C++9Продолжениеvoid main(void)
{
  TList tl=1;
  tl.add(&amp;TList(2));
  TLi...

    9 слайд

    ООП C++
    9
    Продолжение
    void main(void)
    {
    TList<int> tl=1;
    tl.add(&TList<int>(2));
    TList<int> *tpl = new TList<int>(3);
    tl.add(tpl);
    tl.add(4);
    tl.print();
    typedef TList<char> CList;
    CList cl=1;
    cl.add(&CList(2));
    CList *cpl = new CList(3);
    cl.add(cpl);
    cl.add(4);
    cl.print();
    TList<C> ctpl = C(31);
    ctpl.add(32);
    ctpl.print();
    print(ctpl);
    print(); //Ошибка: не найден образец для print<T>()
    print<int>(); //А вот так можно
    }

  • ООП C++10Множество параметровПараметров шаблонов может быть несколько:
templa...

    10 слайд

    ООП C++
    10
    Множество параметров
    Параметров шаблонов может быть несколько:
    template <class A, class B> void print(A e, B x) { printf("%d %d", e.val, x); }
    template <class T1, class T2> class L12
    {
    T1 t1;
    T2 t2;
    };
    ...
    print(ctpl, 1);
    L12<int, int> s;

Получите профессию

Копирайтер

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 626 985 материалов в базе

Скачать материал

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 03.09.2020 236
    • PPTX 130 кбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Колупаева Светлана Михайловна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Колупаева Светлана Михайловна
    Колупаева Светлана Михайловна
    • На сайте: 3 года и 3 месяца
    • Подписчики: 0
    • Всего просмотров: 82876
    • Всего материалов: 241

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Секретарь-администратор

Секретарь-администратор (делопроизводитель)

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

Организация деятельности библиотекаря в профессиональном образовании

Библиотекарь

300/600 ч.

от 7900 руб. от 3950 руб.
Подать заявку О курсе
  • Сейчас обучается 281 человек из 66 регионов

Курс профессиональной переподготовки

Руководство электронной службой архивов, библиотек и информационно-библиотечных центров

Начальник отдела (заведующий отделом) архива

600 ч.

9840 руб. 5900 руб.
Подать заявку О курсе

Курс профессиональной переподготовки

Библиотечно-библиографические и информационные знания в педагогическом процессе

Педагог-библиотекарь

300/600 ч.

от 7900 руб. от 3950 руб.
Подать заявку О курсе
  • Сейчас обучается 457 человек из 66 регионов

Мини-курс

Стратегии маркетинга и продаж в B2B

8 ч.

1180 руб. 590 руб.
Подать заявку О курсе

Мини-курс

Психология развития личности: от мотивации к самопониманию

4 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 75 человек из 30 регионов

Мини-курс

Психологические аспекты развития и состояния личности

4 ч.

780 руб. 390 руб.
Подать заявку О курсе