Difference between revisions of "Step 5 (S-10692)"

From Stepik Wiki
Jump to: navigation, search
(Create page for step id=10692)
 
 
Line 1: Line 1:
 
Step on Stepik: https://stepik.org/lesson/557/step/5
 
Step on Stepik: https://stepik.org/lesson/557/step/5
  
<img width="50%" src="https://ucarecdn.com/89f7e971-e8ae-42eb-bf27-30480a274111/">
+
[[File:Step_5_(S-10692)_1.png|border|800px]]
  
 
[00:00 - 00:16] довольно часто воды к нормативно программировании применяется понять interface интерфейс это абстрактный класс у которого отсутствует поля а все методы являются абстрактной в применении к и + + это означает что все это должно быть чистым виртуальными не должна отсутствуют реализации
 
[00:00 - 00:16] довольно часто воды к нормативно программировании применяется понять interface интерфейс это абстрактный класс у которого отсутствует поля а все методы являются абстрактной в применении к и + + это означает что все это должно быть чистым виртуальными не должна отсутствуют реализации
Line 15: Line 15:
  
  
<img width="50%" src="https://ucarecdn.com/d8392101-388b-4e2a-aa27-83ee15674b55/">
+
[[File:Step_5_(S-10692)_2.png|border|800px]]
  
<img width="50%" src="https://ucarecdn.com/a9a9490c-8972-403c-9280-8f6b6c2e89f0/">
+
[[File:Step_5_(S-10692)_3.png|border|800px]]
  
 
[01:07 - 01:25] можно было бы определить и деструктор чистым виртуальным но добавить к нему реализации но в данном случае никакого толка от этого не будет другой пример интерфейсы это интерфейс который могли поддерживать те классы объекты которых можно
 
[01:07 - 01:25] можно было бы определить и деструктор чистым виртуальным но добавить к нему реализации но в данном случае никакого толка от этого не будет другой пример интерфейсы это интерфейс который могли поддерживать те классы объекты которых можно
  
  
<img width="50%" src="https://ucarecdn.com/3f108c32-310d-43dd-8e05-e42598714771/">
+
[[File:Step_5_(S-10692)_4.png|border|800px]]
  
<img width="50%" src="https://ucarecdn.com/8ee606ac-917b-4cfc-a170-267b2aadce6d/">
+
[[File:Step_5_(S-10692)_5.png|border|800px]]
  
 
[01:25 - 01:40] копировать то есть дать такие класс могли бы реализовать себя метод который возвращает указатель на новую копию по указателю собственно на
 
[01:25 - 01:40] копировать то есть дать такие класс могли бы реализовать себя метод который возвращает указатель на новую копию по указателю собственно на
  
  
<img width="50%" src="https://ucarecdn.com/60624846-ef7a-4bce-af0a-988c38f1fa3a/">
+
[[File:Step_5_(S-10692)_6.png|border|800px]]
  
 
[01:40 - 01:55] интерфейса иконок то есть мы не знаем какой конкретный тип то поэтому указатель лежит но мы можем внутри реализации этого метода создать копию объекта и вернуть его показательно например такой
 
[01:40 - 01:55] интерфейса иконок то есть мы не знаем какой конкретный тип то поэтому указатель лежит но мы можем внутри реализации этого метода создать копию объекта и вернуть его показательно например такой
  
  
<img width="50%" src="https://ucarecdn.com/f27c6813-46c2-46e3-9105-5cdc62be667a/">
+
[[File:Step_5_(S-10692)_7.png|border|800px]]
  
<img width="50%" src="https://ucarecdn.com/64073fb4-4d6c-45ce-98ff-99610d729526/">
+
[[File:Step_5_(S-10692)_8.png|border|800px]]
  
 
[01:55 - 02:11] интерфейс могут поддержать класс трошин можно было бы в реализации этого метода com создать копию человека
 
[01:55 - 02:11] интерфейс могут поддержать класс трошин можно было бы в реализации этого метода com создать копию человека
  
  
<img width="50%" src="https://ucarecdn.com/b22209ca-d97e-407a-a344-cceb49a218ee/">
+
[[File:Step_5_(S-10692)_9.png|border|800px]]
  
 
[02:11 - 02:26] при помощи оператора new динамической памяти и скопировать и помощью конструктора в конструктор копирования мы передадим ссылку на текущий момент не вернешь
 
[02:11 - 02:26] при помощи оператора new динамической памяти и скопировать и помощью конструктора в конструктор копирования мы передадим ссылку на текущий момент не вернешь
  
  
<img width="50%" src="https://ucarecdn.com/26cf8b28-c18e-4cae-8b16-cb45a2b49529/">
+
[[File:Step_5_(S-10692)_10.png|border|800px]]
  
 
[02:26 - 02:42] заметим что + тут позволяет в качестве указателя при реализации таких методов в пригодны классов указывать указатель на производные типа то есть то что здесь в сигнатуре мы ожидаем
 
[02:26 - 02:42] заметим что + тут позволяет в качестве указателя при реализации таких методов в пригодны классов указывать указатель на производные типа то есть то что здесь в сигнатуре мы ожидаем
Line 54: Line 54:
  
  
<img width="50%" src="https://ucarecdn.com/cc81fffd-ddd8-45b3-9d50-ba438b9f97a2/">
+
[[File:Step_5_(S-10692)_11.png|border|800px]]
  
 
[03:01 - 03:16] только набор методов которые должны реализовывать производные классы это большое отличие от абстрактного класса который кроме набор методов может еще задавать некоторую реализацию которой будет наследоваться производными классами
 
[03:01 - 03:16] только набор методов которые должны реализовывать производные классы это большое отличие от абстрактного класса который кроме набор методов может еще задавать некоторую реализацию которой будет наследоваться производными классами
  
  
<img width="50%" src="https://ucarecdn.com/4738cf96-37d1-4cb2-9d56-e772c4e61c5d/">
+
[[File:Step_5_(S-10692)_12.png|border|800px]]
  
 
[[Category:Steps]]
 
[[Category:Steps]]
 
[[Category:Особенности наследования в C++ (L-557)|  5]]
 
[[Category:Особенности наследования в C++ (L-557)|  5]]

Latest revision as of 12:48, 7 August 2017

Step on Stepik: https://stepik.org/lesson/557/step/5

Step 5 (S-10692) 1.png

[00:00 - 00:16] довольно часто воды к нормативно программировании применяется понять interface интерфейс это абстрактный класс у которого отсутствует поля а все методы являются абстрактной в применении к и + + это означает что все это должно быть чистым виртуальными не должна отсутствуют реализации


[00:16 - 00:34] и все это не касается деструкторов destructor хоть может быть чистым виртуальным но у него обязана быть реализации дело в том что деструктор производного класса всегда в конце вызывать деструктор базового класса этого этого базовым классом не определим какой то реализации деструктор то у нас произойдет ошибка компиляции


[00:34 - 00:50] на данном слайде я привел 2 примера interface интерфейс i конвертик букву названия значит это интерфейс это просто некоторые соглашение об именовании такой то не смогли поддержать


[00:50 - 01:07] все классы объекты которых можно преобразовать строчки то есть они могли бы определить у себя нет то стринг которое дорожает строковое представление объект так как в данном интерфейсе есть виртуально методы то я определяю деструктор виртуальным


Step 5 (S-10692) 2.png

Step 5 (S-10692) 3.png

[01:07 - 01:25] можно было бы определить и деструктор чистым виртуальным но добавить к нему реализации но в данном случае никакого толка от этого не будет другой пример интерфейсы это интерфейс который могли поддерживать те классы объекты которых можно


Step 5 (S-10692) 4.png

Step 5 (S-10692) 5.png

[01:25 - 01:40] копировать то есть дать такие класс могли бы реализовать себя метод который возвращает указатель на новую копию по указателю собственно на


Step 5 (S-10692) 6.png

[01:40 - 01:55] интерфейса иконок то есть мы не знаем какой конкретный тип то поэтому указатель лежит но мы можем внутри реализации этого метода создать копию объекта и вернуть его показательно например такой


Step 5 (S-10692) 7.png

Step 5 (S-10692) 8.png

[01:55 - 02:11] интерфейс могут поддержать класс трошин можно было бы в реализации этого метода com создать копию человека


Step 5 (S-10692) 9.png

[02:11 - 02:26] при помощи оператора new динамической памяти и скопировать и помощью конструктора в конструктор копирования мы передадим ссылку на текущий момент не вернешь


Step 5 (S-10692) 10.png

[02:26 - 02:42] заметим что + тут позволяет в качестве указателя при реализации таких методов в пригодны классов указывать указатель на производные типа то есть то что здесь в сигнатуре мы ожидаем


[02:42 - 03:01] указатель на базовый класс в производном классе мы можем вернуть указатель на произвольный класса я здесь при этот преобразования значит отличие интерфейса от абстрактного класса заключается в том что интерфейс задает


Step 5 (S-10692) 11.png

[03:01 - 03:16] только набор методов которые должны реализовывать производные классы это большое отличие от абстрактного класса который кроме набор методов может еще задавать некоторую реализацию которой будет наследоваться производными классами


Step 5 (S-10692) 12.png