Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Программирование – 2 курс осень 2020 – 10 занятие

ТиМПИ
November 18, 2020

Программирование – 2 курс осень 2020 – 10 занятие

ТиМПИ

November 18, 2020
Tweet

More Decks by ТиМПИ

Other Decks in Education

Transcript

  1. dscs.pro spbu.ru 2/13 Напоминание сlass Class_Name{ // конструктор Class_Name(…){ //

    код конструктора } // поля класса // методы класса } 1. Конструкторы 2. Поля 3. Методы 4. Друзья 5. this 6. Инкапсуляция 7. Деструктор
  2. dscs.pro spbu.ru 3/13 Много классов Городской транспорт Частный Транспорт юридических

    лиц Общественный Наземный Подземный Объектно-ориентированное программирование служит для моделирования сложных систем, позволяя увеличить управляемость процесса моделирования.
  3. dscs.pro spbu.ru 4/13 Три (четыре) кита ООП Наследование. Для построения

    иерархии или вложения. Инкапсуляция. Для контроля объектов. Полиморфизм. Для работы с интерфейсом. Абстракция. Выделение главного из предметной области для построения модели.
  4. dscs.pro spbu.ru 5/13 Наследование сlass Base_Class{ protected: var a var

    any_metod(){} virtual var method_1(){ // код метода virtual var method_2(){ // код метода public: Base_Class(); ~Base_Class(); } class New_Class: public Base_Class{ protected: var b var method_1() override{ // новая реализация метода } var method_2(int v){ // реализация метода } public: New_Class(); ~New_Class(); }
  5. dscs.pro spbu.ru 6/13 Наследование: конструкторы сlass Base_Class{ protected: var a

    var any_metod(){} virtual var method(){ // код метода public: Base_Class() a = 3; ~Base_Class(); } class New_Class: public Base_Class{ protected: var b var method() override{ // новая реализация метода } public: New_Class():Base_Class() b = 4; ~New_Class(); }
  6. dscs.pro spbu.ru 8/13 Инкапсуляция сlass Base_Name{ Base_Name(…){} protected: var a;

    private: var b; c; public: void set_a(var a_1) a = a_1; void set_b(var b_1) b = b_1; var get_a() return a; } Типы наследования: 1) class New_Class: public Base_Class Все члены родительского класса сохраняют уровень доступа. 1) class New_Class: private Base_Class Все члены родительского класса приобретают уровень доступа private. 1) class New_Class: protected Base_Class Все члены родительского класса приобретают уровень доступа protected.
  7. dscs.pro spbu.ru 9/13 сlass Base_Class{ protected: var a var any_metod(){}

    virtual var method_1(){ // код метода virtual var method_2(){ // код метода public: Base_Class(); ~Base_Class(); } class New_Class: public Base_Class{ protected: var b var method_1() override{ // новая реализация метода } var method_2(int v){ // реализация метода } public: New_Class(); ~New_Class(); } Полиморфизм
  8. dscs.pro spbu.ru 10/13 Полиморфизм: абстрактный метод сlass Base_Class{ protected: var

    a var any_metod(){} virtual var method_1()=0 public: Base_Class(); ~Base_Class(); } class New_Class: public Base_Class{ protected: var b var method_1() { // реализация метода } public: New_Class(); ~New_Class(); } У абстрактных классов не может быть экземпляров, несмотря, на наличие конструктора. А также любой класс, который от них наследует, обязан реализовать все функции, которые не были реализованы в родительском классе.
  9. dscs.pro spbu.ru 11/13 Полиморфизм: интерфейсы сlass Base_Class{ protected: virtual var

    method_1()=0 public: ~Base_Class(); } class New_Class: public Base_Class{ protected: var b var method_1() { // реализация метода } public: New_Class(); ~New_Class(); } У интерфейсов не может быть экземпляров. У них нет полей. Любой класс, который от них наследует, обязан реализовать все функции интерфейса.
  10. dscs.pro spbu.ru 12/13 Абстракция сlass Human{ protected: int age; string

    sex; string name; string birth_day; string full_name; double height; string work_place; string adres; public: Human(); ~Human(); } сlass Human{ protected: string sex; string birth_day; string full_name; } сlass Taxpayer: public Human{ protected: string work_place; string adres; string income; }