Ответы пользователя по тегу ООП
  • Как упростить метод, выполняющий операции для всех других методов класса, если он получается слишком раздутым?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Сделать декомпозицию и разбить на несколько методов. Или даже на целый класс с группой различных методов с разными опциями.
    Ответ написан
    Комментировать
  • JS: Как в родительском классе, вызвать метод из дочернего?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Создать объект дочернего класса:
    class parentClass {
      constructor() {
        this.extendMethod();
      }
      extendMethod() { }
    }
    
    class extendClass extends parentClass {
      extendMethod() {
        console.log('Hi');
      }
    }
    
    new extendClass();


    Передать дочерний элемент в родительский:
    class parentClass {
      constructor(child = null) {
        child?.extendMethod();
      }
    }
    
    class extendClass extends parentClass {
      extendMethod() {
        console.log('Hi');
      }
    }
    
    new parentClass(new extendClass());


    Создать интерфейс (базовый класс) и оба класса унаследовать от него:
    class IBase {
      constructor() {
        this.extendMethod();
      }
      extendMethod() { }
    }
    
    class A extends IBase {
      extendMethod() {
        console.log('Hi from A');
      }
    }
    class B extends IBase {
      extendMethod() {
        console.log('Hi from B');
      }
    }
    Ответ написан
    4 комментария
  • Как создать билдер на C#?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    В вашем приложении либо реализуете свой скриптовый язык (или какой надо) и реализуете структуру исполняемого файла и соответствующий скрипту бинарный код, компилируя его из скрипта и далее просто сохраняется на диске. Либо используете какой-то уже готовый компилятор и с его помощью компилируете приложение. Детали по реализации зависят от конкретной задачи.
    Ответ написан
  • Где можно найти задачи для практики ООП?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Надо просто брать и решать реальные задачи. Например автоматизация действий за ПК или любые задачи, которые вам интересны. Или вот к примеру написать самый обычный калькулятор с использованием WPF и паттерном MVVM (например с либой Prism).
    Ответ написан
    3 комментария
  • Что должно в себя включать приложение по аренде авто?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Но я не могу понять что оно должно в себя включать и как работать

    Представляете себе следующую ситуацию: у вас есть 1000 авто. Вам надо сдать их в аренду с помощью приложения. Берете ручку, бумагу и записываете список того, что вам нужно от этого приложения как владельцу автопарка, так и потенциальному клиенту. Далее оформляете это в ТЗ, делаете декомпозицию задачи в несколько итераций, пишите частное ТЗ и реализуете данное приложение.

    кто-то может скинуть статью с объяснением функционала или пример такого приложения?

    А в чем сложность скачать и поставить любое приложение по аренде авто?
    Ответ написан
    4 комментария
  • Может кто-нибудь дать реальную задачу на которой можно применить ООП?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    ООП очень тяжело заходит потому что совершенно непонятно для чего оно нужно.

    Ровно для того же, для чего нужно программирования без ООП. ООП - просто достаточно простая и удобная абстракция для программирования.

    Я так понял, что бы в этом всём разобраться нужно писать свою CMS на ООП.

    Нет. Достаточно просто решить любую задачу с использованием ООП и без и сравнить для себя. Без ООП, т.е., функциональное программирование - у тебя куча файлов с кучей функций, каждый раз, когда нужно произвести какие-то вычисления над какими-то данными надо импортировать нужную функцию и использовать её для обработки данных. Когда у тебя десять строк кода и три функции - это достаточно просто. А если у тебя тысяча функций и несколько сотен видов данных для обработки, да еще и кучей разных форматов? А десять тысяч? Делать огромную документацию, в которой описывать какая функция с какими видами данных может работать и каждый раз её пересматривать в процессе написания или чтения кода? А вот ООП, говоря простым языком, позволяет группировать функции в отдельные группы, т.е. классы, которые могут работать с определенными типам данных и связывать сами эти группы функций с определенными типами данных, а так же связывать классы друг с другом (иерархия, наследование и прочее). Т.о., это упрощает работу с данными и их обработкой: просто создаем новый экземпляр класса и получаем удобный интерфейс для дальнейшей обработки каких-либо данных, путем использования методов этого класса для обработки данных, хранящихся в полях данного экземпляра или передаваемых в качестве параметров методов и сохраняемых в полях позднее.
    Ответ написан
  • Как преобразовать в строку последовательность вызываемых вложенных классов?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    В вашем случае вам нужен словарь. Например:
    Dictionary<string, Action> index = new Dictionary<string, Action>();
    index["a.b.c"] = () => Console.WriteLine("a.b.c");
    index["a.b.c"]();

    Если хочется именно через классы - то вместо делегата легко можно использовать экземпляр любого нужного класса. Если хочется вот прям совсем красиво и именно дерево, то в классе опять же создаете словарь и перегружаете индексатор, чтобы он разбивал строку по разделителям и осуществлял поиск дальше вглубь дерева. И тогда можно будет делать что-то типа такого:
    var tree = new MyTree() { 
        {
            "a",  new MyTree() { 					
                {
                    "b", new MyTree(() => Console.WriteLine("a.b.c"))
                }					
            }
        }
    }
    tree["a.b"]();

    И да, как уже сказали ранее - можно и через рефлексию, но зачем, если есть словари и они проще и работают из коробки?
    Ответ написан
    2 комментария
  • Что значит глобально доступный объект приложения?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Доступен из любого файла исходного кода/модуля/подсистемы для чтения/записи/выполнения/изменения. Например:
    var globalVar = 123;
    function(){
        var localVar = 789;
    }
    Ответ написан
    1 комментарий
  • Где хранят вызовы функций нормальные люди?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Обычно делается так:
    1. Разработка схемы архитектуры приложения;
    2. Декомпозиция архитектуры до атомарных операций;
    3. Некоторое количество итераций доработки архитектуры;
    4. Разбивка системы на системы/подсистемы/модули/подмодули и другие уровни - и вот тут как раз образуются классы, каждый из которых включает в себя какой-то определенный набор функций/процедур из файла или каталога(модуля).
    Ответ написан
    Комментировать