Метка «абстрагирование»

image

За годы преподавания и коммерческой разработки я повстречал много студентов и разработчиков с одним и тем же заблуждением насчет ООП: класс = абстракция. Как я себе объясняю причину возникновения этого заблуждения — впервые, да, пожалуй, больше и нигде, программисты сталкиваются с понятием абстракции в книжках об объектно-ориентированном программировании, где как раз и говорится, что классы являются абстракциями. Естественно, не имея явно акцентированных других примеров абстракций, читатели начинают отождествлять абстракции с классами. В попытках искоренить данное заблуждение набралось много материала, из которого получилась настоящая статья. Что Вы найдете под катом:

  • Определение понятия абстракции и объяснение откуда оно взялось в ООП.
  • Объяснение на простых примерах, что такое барьер абстракции, побочный эффект абстракции.
  • Как получается хардкод.

Читать полностью »

После появления статей типа "Я не знаю ООП" — возникает желание внести ясность, «сорвать покровы» и «докопаться до истины».

Принципы объектно-ориентированности

Обычно выделяют (читай: на собеседовании требуют назвать) четыре «принципа объектно-ориентированного программирования»: абстракцию, инкапсуляцию, наследование и полиморфизм.

На мой взгляд (не говоря о том, что абстракция и полиморфизм могут быть запросто отнесены к подразделам наследования), принцип тут один, в общем, тот же самый, что при проектировании баз данных: представление всего в виде объекта — некоторой штуковины со свойствами. Набор обычно бывает фиксированным, и тогда говорят о классе объектов, а даже если понятия класса и нет, то наличие свойств с определёнными названиями подразумевается логикой программы, т.е. нечто типа класса в виде некоего минимального набора свойств всё равно присутствует. В общем, воззрения восходят к давнему С-шному/паскалевскому типу данных struct/record. Потом к этому добавили немного «функциональности» (в смысле функционального программирования): значением свойства может быть функция, причём такая, которая имеет доступ к самой структуре/записи, значением одного из свойств которой она является. Сей феномен, в лучших традициях немецкого латиноязычного нейминга (когда опция называется «вариантом», а степень числа — «потенцией»), назвали «методом». Желание повторно использовать код, в сочетании с представлением каждого предмета как некоего подобия паскалевской «записи», привело к появлению концепции «наследования».Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js