Если совсем коротко и упрощенно - ООП это когда ты раскладываешь куски кода и данных по отдельным коробкам, что создает относительный порядок в программе при условии наличия мозгов. В то время как ООП-хейтеры сваливают свой код в одну большую дымящуюся кучу, садятся на нее, давятся ей и нахваливают, похрюкивая.
>>247585202 (OP) В общем есть классы, то есть некие сущности, будь то автомобиль, битард или собака, у классов есть поля(свойства) и методы. Сам класс является чаще всего этакой частью мира Идей(как у Платона), а в других частях кода может вызываться экземпляр этого класса, в полях которого будут храниться данные об этом классе, будь то цвет машины или порода собаки в виде переменной, а в методах будут производиться какие то действия(автомобиль едет, битард капчует).
>>247585202 (OP) В ООП есть 3 парадигмы: наследование, инкапсуляция и полиморфизм.
Наследование подразумевает то, что один класс может наследоваться от другого, взять например хрестоматийное объяснение - класс собака наследуется от класса животное, соответственно в классе животные есть методы дышать, спать, размножаться и т.д., а в класс собака соответственно может использовать эти методы, не прописывая их у себя, либо же переопределить их, то есть создать метод с тем же названием и входными/выходными данными но с другим содержимым.
Тут мы плавно подходим ко второй парадигме - полиморфизм. По крайней мере в Java полиморфизм проявляется в двух явлениях: переопределение и перегрузка, что такое переопределение я уже пояснил выше, а перегрузка - это создание в одном классе нескольких методов с одним названием, но разными входными/выходными данными, и когда ты у экземпляра класса вызываешь метод, в зависимости от того, что ты написал в скобках, будут вызываться разные перегрузки метода.
Инкапсуляция - это парадигма подразумевающая защищенность полей класса. Проявляется она таким образом - когда ты создаешь поля класса, ты объявляешь их private, то есть трогать их так просто никто не сможет, но объявляешь для них методы get - получение данных из поля, и set - введение данных в поле, так же можно вводить данные в поля через конструктор - метод, который вызывается сразу же при инициализации экземпляра класса
>>247590468 Мало того, я студентик шараги, в которой нас научили блять писать только условия и циклы, зато на 4 разных языках, но при этом был такой великолепный предмет, как Основы семейной жизни, которому по часам уделили примерно столько же, сколько и самому программированию.
>>247585202 (OP) Лучший подход, это когда ты создаешь для каждого метода интерфейс, каждому классу которому нужно: реализуешь нужные интерфейсы, нахуй наследование. К примеру: interface IBarker { Bark(); }
interface IShitter { CreateShit(); }
class Dog : IBarker, IShitter { ... } class Dvacher : IBarker, IShitter, Incel { ... } class Tyan : IShitter { public void CreateShit(){ return; } }
Далее оперируешь представлениями этих интерфейсов, ваще поебать.
>>247591728 Да только и рассказывают, что мужык-добыччик, баба-очаг, дети-цветы, петр-февронья, семья-ромашки-заебись. Еще философия была, ебать там препод валил, Платоны, Сократы, кто о чем филосовствовал, так-то даже интересно, но как только ты с преподом начинаешь спорить, он начинает верещать, типа "Да че ты тут споришь, а ну читай учебник, пиши контроши", короче сам нихуя не знает, тупо озвучка учебника. Благо осталось 3 недели и вся эта каторга кончится.
>>247588893 > Инкапсуляция - это парадигма подразумевающая защищенность полей класса. Проявляется она таким образом - когда ты создаешь поля класса, ты объявляешь их private, то есть трогать их так просто никто не сможет, но объявляешь для них методы get - получение данных из поля, и set - введение данных в поле, так же можно вводить данные в поля через конструктор - метод, который вызывается сразу же при инициализации экземпляра класса Мы вам перезвоним.
>>247592436 Инкапсуляция - отделение одних кусков кода от других, если коротко. Сокрытие - то что ты отчасти описал, это другая штука, которая в некоторых языках может быть частью инкапсуляции, а в некоторых и не быть.
>>247585202 (OP) ООП - это такая попытка прихуячить друг к другу реальный мир, где бегают кошечки и собачки, и мир кудахтера, где нихуя нет, кроме нуля и единиц. Так как программист сам не является кудахтером, нулями-единицами ему оперировать весьма непросто (и даже на более высоком уровне тоже сложна), а кошечками-собачками очень просто.
Поэтому вводится понятие объекта - произвольной сущности со свойствами и производимыми над ним методами, а также классов - шаблонов для создания готовых объектов. Также вводится наследование - возможность создания надклассов и подклассов.
Ну и всё, дальше ты можешь в качестве объектов делать кошечек и собачек, объединять их в единый класс млекопитающих и сверху ещё сделать надкласс животных. Всё как в реальном мире, вернее, в нашем с вами о нём типичном представлении.
>>247585202 (OP) ООП это фича придуманная для даунов, которые не могут в процедурки. Ты мог заметить что люди все пытаются заказуалить, вот ООП это оно самое. Народ просто тупеет.
Ооп в джавовском стиле - охуенная вещь для упорядочивания кода. Без ооп там черт голову сломал в слоях абстракции. И заебался бы его поддерживать и модифицировать. А так очень удобно.
>>247588893 >класс собака наследуется от класса животное, соответственно в классе животные есть методы дышать, спать, размножаться максимум бесполезный пример. хз вообще зачем его пихают всюду. В реальной жизни ты ни разу не занаследуешь собачку от какого-то животного точнее, тебе просто не понадобится создавать родительский класс животное в большинстве своем
>>247593875 один раз покажи, один раз разберись и все
а пока вдуплишь в собачек, ты ебнешься, а потом это оказывается еще и неприменимо в жизни и в итоге, куча народа пытается создать абстрактный класс Shape для абстрактного класса Triangle, от которого реализуем силед класс дорожный знак............
>>247593936 >абстрактный класс Shape для абстрактного класса Triangle, от которого реализуем силед класс дорожный знак............ Почему нельзя так делать, если не брать во внимание то, что треугольность дорожного знака - это не главное его свойство?
>>247593864 Плохоструктурированные, плохотипизированные объекты, как в жз. Опять же плохоструктурированная куча данных и логики, близких к железу без достаточных слоев абстракции, как в си.
Скорее всего уже ответили, но похуй. В первую очередь ООП - парадигма проектирования. Нужна она для двух целей: сопровождаемость и скорость программирования. В программе на этапе проектирования (для чего и существует ООП) определяют, что может меняться, а что не может. Что может – подчиняется полиморфизму, что не может – определяет полиморфизм. Инкапсуляция позволяет программировать вслепую, пока один разрабатывает реализацию, второй имеет интерфейс для неё. Или сделать сначала реализацию, а потом использовать её в нескольких местах или программах. Ещё ООП завязано на SOLID. Но это ты и сам почитать можешь.
>>247585202 (OP) Привет оп я твой единственный постер. Я на протяжении многих лет преследовал тебя и отвечал на твои сообщения. Сейчас я отправлю это сообщение во все существующие треды.
>>247585202 (OP) Не ооп а ОП, оп это типа топик стартер как на пикабу. Сейчас в этом итт треде оп это ты, у твоих постов даже надпись соответствующая есть.