Гайд Обучение ООП с нуля. Часть #1

Начинающий
Статус
Оффлайн
Регистрация
28 Сен 2023
Сообщения
53
Реакции[?]
0
Поинты[?]
0
"кто блять сказал что я не понял ??" Давай тогда подробно пересказывай мне всё СВОИМИ словами и покажи на СВОЁМ примере, раз уж думаешь что ты чет понял) И давай без чатгпт)
"твой умный автоспринт тупее тебя даже про что уж можно говорить про тебя" Найс ты от безысходности тупо перешёл на оскорбления без каких либо аргументов :tearsofjoy: И это я ещё бездарь?) На себя то посмотри, нихуя больше кроме оскорблений писать не умеешь, от тебя тем полезных вообще 0, от тебя вообще тем 0, когда у меня даже мою ватермарку на эксп люди пастили к себе, уже молчу о других функциях)
Так что прекращай писать хуйню тут и иди делай домашнее задание, тебе в понедельник топать в школу)
молодец, сделал крутую вотермарку похлопаю, а теперь сделай адекватный софт который люди будут юзать ))
 
(◣_◢)
Участник
Статус
Оффлайн
Регистрация
1 Фев 2021
Сообщения
445
Реакции[?]
152
Поинты[?]
71K
Начинающий
Статус
Оффлайн
Регистрация
28 Сен 2023
Сообщения
53
Реакции[?]
0
Поинты[?]
0
ну давай заходи на сервер в моей подписи и показывай свой клиент.
ожидай
ну давай заходи на сервер в моей подписи и показывай свой клиент.
Для просмотра содержимого вам необходимо авторизоваться.
 
Read Only
Статус
Онлайн
Регистрация
23 Июн 2023
Сообщения
358
Реакции[?]
2
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
7 Окт 2023
Сообщения
196
Реакции[?]
1
Поинты[?]
2K
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,595
Реакции[?]
604
Поинты[?]
43K
ооп хуевый лишь потому что это дробовик к ноге привязанный

ооп заставляет делать предвзятые и удивительно наивные решения по умолчанию; ооп это инструмент для решения статичных и средних по размеру задач

когда предвзятость в решениях велика, то поведения в классах сильно связаны друг с другом, отношения между ними статичны и конкретизированы под конкретный юзкейс. поэтому такие как оп и учат бедолаг ооп в 2024 году - потому что ооп игрушки очень специфичны, а значит читаемы.

ахиллесова пята ооп - изменения. чтоб с этим справляться, и минимизировать потери, люди должны делать меньше предвзятых решений в своём коде, но загвоздка заключается в том что абсолютно во всех техниках по минимизации рисков в изменениях рисков есть серьезные взаимозависимые плюсы и минусы - людям нужно выбирать.

и из этих техник и появляются "AbstractAnimalFactoryBuilder". Для решения одной и той же проблемы, у 10 программистов будет 10 разных решений.

допустим, ты хочешь обработать платёж в банке.

с алгебраическими дата типами я бы сделал так:
Код:
type Payment = Cash Amount | CreditCard Number CVV
каждый раз, когда тебе нужно обработать платёж - ты конкретно и буквально обрабатываешь одну из трех возможностей, ведь так моя модель данных и устроена. шанс того, что другие люди придут к абсолютно такому же решению очень велик.

в "ООП" такое решение.. хм

Код:
class Payment {
  virtual int do_foo() = 0;
  virtual void do_baz() = 0;
};

class CashPayment : Payment { ... }
class CreditCardPayment : Payment { ... }
для того чтобы принять тип "Payment", тебе нужно поместить, утоптать и уничтожить оба субкласса в "Payment" интерфейс. для Payment, наверняка, будет существовать 150 методов, поэтому рефакторинг будет полностью opinionated.

tl;dr ооп зло, и людям не знающим программирования его точно учить не надо

====

а теперь пройдусь по твоему чатгптшному посту:
Это означает, что данные и методы класса не доступны напрямую извне класса, а только через специальные методы, называемые
Пожалуйста, авторизуйтесь для просмотра ссылки.
(геттеры и сеттеры).
энкапсуляция - это невозможность доступа к данным извне класса. ты же лишь добился публичного доступа (аннулировав бейджик энкапсуляции), но только вместа доступа к полю ты теперь метод вызываешь)))

ооп обещал энкапсуляцию, а по итогу добавил больше связи между элементами кода. браво.

===
настоящий пример энкапсуляции:

Код:
class Human {
  Human(int age) : age(age) {}
  int age;
}

int main() {
    Human barbara {25};

    int age = barbara.age; // don't ask women about their age
}
или даже:

Код:
{
    int age = 13;
}
age = 16; // age doesn't exist
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,595
Реакции[?]
604
Поинты[?]
43K
Сверху Снизу