Ответы пользователя по тегу ООП
  • Как писать Толковый ООП код в JS?

    yurakostin
    @yurakostin
    Front-end developer
    На мой вкус там, где ООП - там паттерны, а где паттерны - там не обязательно должно быть ООП.
    Вы должны понимать, зачем вы создаёте все ваши классы. Какую проблему они решают.

    Вот достаточно популярный ресурс по паттернам.

    Если вы хотите прям ООП-ООП, то у вас более половины вашего кода должно быть написано иначе(а ещё лучше на ООП языке типа Java). Не должно быть просто вызовов функций: вся работа через объекты. Никаких `$toolbar.append` и прочего.

    Опять же, я могу быть глубоко не прав, но js ни ООП, ни ФП подход не реализует в полной мере. Поэтому только и остаётся, что писать в каком-то гибридном стиле. Возможно, что это огромная проблема языка, возможно наоборот.
    Ответ написан
    Комментировать
  • Абстракция в JavaScript?

    yurakostin
    @yurakostin
    Front-end developer
    Простите, а что вы подразумеваете под абстракцией в js?

    Есть, например, абстрактные классы. Об этом можно почитать в книгах про паттерны. Абстрактные классы, да не буду заброшен я помидорами за неточность, это классы, методы которых могут быть не описаны.

    class Animal {
        constructor({name, age}) {
            if (this.constructor.name === 'Animal') {
                throw new Error(`${this.constructor.name}: can not create instance of abstract class`);
            }
            
            this.name = name;
            this.age = age;
        }
    
        name() {
            return this.name;
        }
    
        age() {
            return this.age;
        }
    
        /*
         * Абстрактный метод
        */
        talk() {}
    }
    
    class Dog extends Animal {
        talk() {
            console.log('Bark!')
        }
    }
    
    const animal = new Animal({
        name: 'Jack',
        age: 5
    }); // выбросит ошибку
    
    const dog = new Dog({
        name: 'Jack',
        age: 5
    });
    dog.talk(); // Bark!


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

    Мне кажется, что вы задали не очень корректный вопрос, или сами не понимаете, что хотели вообще спросить.
    Ответ написан
    Комментировать