Step 5 (S-11077)

From Stepik Wiki
Revision as of 13:06, 7 August 2017 by Admin (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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

Step 5 (S-11077) 1.png

[00:00 - 00:15] мы сами разобрались как можно определять дружественный класс дружный функции и дружественными дружественной функции дружественной методы это довольно локально вещи они позволяют нарушать модификаторы доступа только внутри тела этой функции или нет в принципе и


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


[00:32 - 00:48] front на класс его можно хоть раз следующими утверждениями 1 утверждение это то что отношения дружбы не симметрично знать что если а является другом б


[00:48 - 01:03] то из этого не следует не следует что б является другом а почти как реальной жизни 2 отношения тоже соответствует реальной жизни если


[01:03 - 01:21] а друг б ab в свою очередь друг ц то отсюда не следует опять не следует что а является другом с нельзя так


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


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


[01:58 - 02:12] то есть можно сказать что отношения дружбы оно сильнее чем отношения родства таким образом получается что а класс отец


Step 5 (S-11077) 2.png

[02:12 - 02:27] классов и может что то скрывать воспевать а вот вот друзья взгляд ничего не может надо понимать также да что то сказал что отношение наследования оно перпендикулярно отношению дружат то есть


[02:27 - 02:43] друг моего сына мне не друг друг моего отца мне не друг но тогда это можно считать и возможные комбинации сказать что ни 1 отношения не влияет на другое но при этом отношении дружбы оно сильнее чем


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


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


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


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


[03:45 - 03:53] но делать 1 класс дружным другому следует только при очень веских на то причинах