xam1816
py.user.next
Ну и ещё теория. Очень много прошёл в объектно-ориентированной парадигме. Учился анализировать, раскладывать всё на объекты, на иерархии объектов, на коллаборации объектов. Ну дошло до того, что я просто в реале стал видеть, из чего состоят всякие конструкции, и не только то, из чего они состоят, но и ещё и то, как они себя ведут, какие у них протоколы. Получил абсолютно новый взгляд на всё.
Есть пример того, как ты представлял раньше и как представляешь теперь?Какая особенность стала очевидна?
Ну на примере там того же излива.
Вот я в сантехнике вообще не шарю. Излив - это такая фигня, из которой в раковину или ванну льётся вода. Эту фигню можно поворачивать, чтобы она лила воду правее или левее. Ну вот в этом месте, где она крепится к крану самому, место крепления может начать протекать, и тогда вода начинает капать на пол. Ну у меня он лопнул вообще, образовалась трещина такая сбоку (называется свищ), что он просто стал брызгать в сторону при включении воды. Я пошёл и купил новый излив в магазине. Приношу его, а он нифига не прикручивается к крану. На нём эта хрень с резьбой, которая накручивается на кран, просто шире, чем та, которая у крана. Он не лопнувший, но из него вот в этом месте просто вода течёт уже не каплями даже, а ручейком, и всё это на пол течёт в итоге.
Ну раньше я бы пошёл и сдал в магазин обратно этот излив, а потом бы показал им лопнувший излив и попросил найти такой же или хотя бы с такой же этой штукой, которая прикручивается к крану. Но я рассмотрел эти оба излива, старый и новый, как такие объекты, состоящие из объектов, которые тоже состоят из объектов, которые тоже состоят из объектов. В общем, в виде иерархии объектов, в которых в одних объектах сагрегированы другие объекты. И сначала я их полностью разобрал оба. Дальше я изучил устройство этих изливов, как там течёт вода, куда она поступает. Всё это рассматривается как объекты. Вода-объект вступает во взаимодействие с трубкой-объектом, и они взаимодействуют друг с другом по протоколу (протокол - это такой набор правил, определённых для процесса взаимодействия). И там этот излив же не просто вот трубка и всё, там в него вкручен бочонок, у которого с одной стороны резьба. То есть мы бочонок тоже раскладываем на объекты. А как его разложить на объекты, если он цельный? Кажется, что это просто один объект и всё, а разложить его нельзя. А вот так: мы часть с резьбой считаем отдельным объектом, который находится в объекте бочонок. Хотя он и полностью литой, но мы можем так делать. А потом мы можем рассмотреть, как объект-бочонок взаимодействует с объектом часть бочонка с резьбой, который в нём находится. Мы можем объектом назвать тень на стене, а можем полоску света на стене назвать, хотя и кажется, что есть только стена и на ней нет никаких объектов. И вот с помощью этого бочонка к изливу крепится эта хреновина, которая накручивается на кран. Так это ещё не всё. На сам этот бочонок надеты колечки резиновые, потому что он же вкручивается в излив, и вот это место, где он вкручивается в излив, без этих колечек резиновых протекает. Ну тут становится понятно, что весь этот излив и его части - это просто куча разных больших, маленьких, цельных, нецельных, с границами, без границ, объектов. И все эти объекты находятся в каких-то взаимодействиях, группируются как-то, связываются друг с другом, не связываются друг с сдругом. Очень много всяких процессов там.
Ну и всё это кончилось тем, что я просто взял старый бочонок от старого излива, сделал толстую резиновую прокладку из автомобильной камеры (вырезал её просто бритвой), снял с этого бочонка резиновые колечки эти дебильные, через которые всё протекает, потому что их там неправильное количество, убрал их вообще, обернул этот бочонок этой толстой резиновой прокладкой и в таком виде вкрутил его в новый излив. То есть это было сделано вообще не в тему и оно так не задумывалось ни автором первого излива, ни автором второго излива. То есть бочонок был меньше в диаметре, но благодаря этой резиновой прокладке вокруг него, он вкрутился очень плотно в трубку. Как раз к этому бочонку я добавил эту штуку, которая нормально накручивалась на кран. Ну и всё, и прикрутил этот новый излив, со старым креплением к крану. Так как из-за этого кран полностью протекал, я сделал ещё одну круглую и толстую прокладку из камеры, которой там вообще не было изначально даже задумано, и просто накрутил эту штуку прямо на эту прокладку. И таким образом, я получил излив, который не протекает и который можно ещё крутить во все стороны, он не раскручивается и очень легко крутится, очень мягко и плавно, потому что он крутится по той резиновой прокладке внутри, которую я вырезал под это дело.
А как это всё сделано? как это всё получилось так? Да я просто применил эти методы, приёмы эти, когда мы видим, что в каком-то процессе не хватает какого-то объекта, и его там и не было изначально, мы его создаём. Но мы не создаём объект так, что типа “вот я знаю, что там прокладка резиновая нужна, я её сейчас вырежу”, потому что так мы ничего не создадим, потому что мы не знаем, что там нужно и в каком виде и в каком количестве. Но мы умеем делать абстракции. Мы делаем абстракцию. Мы знаем, что там нужная какая-то неопределённая хреновина, так смутно похожая на утку, которая вот крякает там и немножечко что-то там ковыряет клювом или лапами. То есть мы не знаем, что мы придумываем, но мы знаем, что вот эта штука должна занять такую-то роль в протоколе и обеспечить такое соединение, провести какой-то процесс через себя, чтобы там неправильная какая-то фигня превратилась в правильную. И когда у нас появляется такая абстракция, которая работает и выполняет свою роль, тогда мы начинаем думать “а как эту абстракцию можно реализовать? в виде чего её можно реализовать?”. Потому что абстракция отображается на много разных объектов, её можно через множество всяких объектов реализовать, чтобы требования просто выполнялись. На примере прокладки - это “какая-то хреновина, которая не даёт этой штуке болтаться и не даёт воде проходить через резьбу”. Это можно реализовать множеством всяких объектов разных. Можно реализовать одним объектом, можно реализовать парой объектов, один держит, другой не даёт протекать, ну и так далее. И таким образом одна из подходящих реализаций для этой абстракции с заданными требованиями/характеристиками - это резиновая прокладка из толстой резины, через которую и вода не проходит, и сама она уплотняет ещё хорошо этот стык. Вот она выполнит все вот эти требования, которые предъявляются к абстракции.
А раньше да, мне бы даже в голову не пришло что-то там вырезать, убирать нативные резиновые колечки, принимать решения за инженеров, которые придумали эти великие конструкции, базирующиеся на резиновых колечках в количестве трёх штук.