Первый слайд презентации
Классы: Инкапсуляция, наследование, полиморфизм. ! ПИШЕМ ВСЁ – примеры, код, пояснения, определения!
Слайд 2
Класс (как и структура) – это шаблон для создания объектов. Для начала нужно описать (создать) класс (шаблон), дать этому классу какое-то имя, после по этому классу можно создать любое количество объектов. В программировании выделяют отдельный стиль программирования – Объектно-Ориентированное Программирование, или ООП. Это подход в котором для решения любых задач создаются классы и их объекты. Стоит отметить что, класс обладает дополнительными свойствами, которых нет у структур: « инкапсуляция », « наследование » и « полиморфизм ». В связи с чем, во многих средах программирования отсутствует понятие «структура», так как есть классы. Также следует отметить, что у классов бывает специальная «функция» которая нужна только для передачи данных из основной программы в объект класса во время создания этого объекта, эта функция называется « конструктор класса » и имеет особую форму записи.
Слайд 3
1. Инкапсуляция - это модификаторы доступа к переменным, которые создаются в классе. Способ записи модификаторов в разных программах отличается, так при создании консольных приложений сначала указывается модификатор, а после любое количество переменных, затем следующий модификатор и снова любое количество переменных. private : - запрещает прямой доступ к переменной (функции). У такой переменной нельзя поменять значение обычным способом. Так же, переменные под этим модификатором не наследуются public : - общедоступная переменная(функция), из любого места программы можно изменить значение такой переменной. protected : - это переменные(функции), значение которых нельзя менять, но они будут наследоваться потомкам класса.
Слайд 4
Например: class simple { private : int x = 10; float t = 25; public : int y = 20; string mess = “hello”; protected : int z = 45; }; Модификаторы можно указывать в любом порядке.
Слайд 5
Важно отметить, что не обязательно использовать все 3 модификатора. Однако, создавать переменные совсем без модификаторов тоже нельзя. class Person { public: string name; int age; }; //объявили класс Person tom{"Tom", 38}; - создание объекта класса tom.name = "Tomas"; tom.age = 22; - меняем переменные объекта, сейчас можно, так как они созданы в public.
Слайд 6
class Person //другой пример: { private: string name; unsigned age; }}; Person tom{"Tom", 38}; tom.name = “Tomas”; Данная программа выдаст ошибку, так как переменная name находится в private.
Слайд 7
Однако есть «обходной путь», даже если переменные name и age недоступны из-за модификатора private, можно создать функцию в «разделе» public, например: private: string name; public: void setName (string newname ){ name = newname ; } В этом случае нельзя будет поменять имя переменнойс помощью команды tom.name = “Tom”; Однако, можно будет вызвать функцию tom.setName (“Tom”), и это изменит имя ( переменную name ).
Слайд 8
Инкапсуляция чаще используется в крупных проектах, где есть опасность случайно поменять значение переменной и нарушить тем самым выполнение большого участка программы. Для этого и создаются поля private, они не дают нарушить работу тех переменных, которые не должны меняться «снаружи» основной программы.
Слайд 9
2. Наследование ( inheritance ) применяется когда нам нужно сделать ещё один класс, чтобы у него имелись все функции предыдущего, но при этом, чтобы ничего не переписывать заново. Другими словами, имея один класс, можно создать второй, используя все имеющиеся переменные и функции первого класса, дополнив (или изменив) их во втором на своё усмотрение. При этом первый класс (по которому создаётся второй), называется предок. А второй (класс, который наследует от кого-то функционал), называется потомок.
Слайд 10
Например, мы описали класс животное, у животного есть кличка(имя), и срок жизни (переменные) – эти данные подходят всем животным. Затем по классу животное мы можем создать несколько классов-потомков с уникальными параметрами, например: птицы, и создадим переменную «время инкубации» Создадим класс-потомок рыбы : где будет переменная «оптимальная температура воды» При этом во всех классах потомках нам не нужно будет заново создавать переменные « имя » и « срок жизни », они есть у их « родителя » а значит и у « потомков » есть автоматически.
Слайд 11
Например: class animal { public: string name; int lifeAge ; }; class bird: public animal { public: int eggTime ; }; class fish: public animal { public: int waterTemp ; }; В этом примере у классов bird и fish будут переменные name и lifeAge, хотя напрямую они не создавались в этих классах. Эти переменные были унаследованы из класса animal командой :public animal Наследование чаще используется, когда нужно создать несколько разных объектов, у которых должны быть одинаковые переменные или функции.
Слайд 12
3. Полиморфизм ( многоформенность ) – Это когда у потомков и родителя есть одинаково названные функции, но выполняют они разные задачи (немного похоже на перегрузку функций). class animal { public: string name; int lifeAge ; void move(){ cout << «ходит ногами» << endl ; } }; class bird: public animal { public: int eggTime ; void move(){ cout << «летает» << endl ; } }; class fish: public animal { public: int waterTemp ; }; И у класса animal и у класса bird есть метод(функция) move, но выполняют они разные задачи. Это и называется полиморфизм.
Последний слайд презентации: Классы: Инкапсуляция, наследование, полиморфизм. ! ПИШЕМ ВСЁ – примеры, код,
Важно отметить, что если мы у потомка(класс fish ) не создаём функцию move, она там всё равно будет! Из класса animal, но в этом случае и команды будут использоваться из родительского класса, то есть у fish функция move выполнит команду: cout << «ходит ногами» << endl ; Полиморфизм часто используется при создании большого количества схожих элементов с разными задачами.