Ответы пользователя по тегу ООП
  • Зачем нужно ООП?

    pazukdev
    @pazukdev
    Java Dev
    Как уже тут было сказано в комменте выше:
    с одной целью - снизить сложность сопровождения и развития большой кодовой базы

    Я бы добавил, что ООП пытается повысить "человекопонятность" кода за счет переноса свойств реального мира на процесс написания и структуру кода.
    Ответ написан
    Комментировать
  • Когда в коде следует использовать интерфейсы (Java)?

    pazukdev
    @pazukdev
    Java Dev
    1, Абстракция нужна везде, где будет проходить ось изменений системы. А интерфейс - основное средство достижения абстракции в Java. Из этого следует п.2.
    2. Всегда, когда нужна абстракция (за исключением случаев, когда абстракция должна обладать состоянием. В таком случае вместо интерфейса придется использовать абстрактный класс т.к. интерфейс не может обладать состоянием).
    Ответ написан
    Комментировать
  • В чем суть интерфейсов в программировании?

    pazukdev
    @pazukdev
    Java Dev
    1. Класс - это всегда интерфейс + реализация (хотя бы частичная).
    2. Интерфейс - это способ полностью отделить интерфейс от реализаци. Т.е. полностью абстрактный класс. Служит для описания котракта поведения класса для взаимодействия с внешним окружением.
    Ответ написан
    Комментировать
  • Отличия абстрактного класса от интерфейса?

    pazukdev
    @pazukdev
    Java Dev
    1. Interface - это контракт системы с внешним окружением. Более Java-специфично: контракт для класса на определенное поведение реализованный в форме напоминающей полностью абстрактный класс.
    Применять всегда. Это основной способ реализации абстракции.

    2. Abstract class - это шаблон для группы классов кот. не может быть инстанциирован т.к. не содержит полного описания поведения (может содержать частичное).
    Применять только в специфических случаях, когда нужно какое-то стостояние в абстракции.

    Конкретные различия можно посмотреть тут: https://ru.stackoverflow.com/a/1229336/258227
    Ответ написан
    Комментировать
  • Совет по проектированию класса?

    pazukdev
    @pazukdev
    Java Dev
    По п. 1 Вашего вопроса.
    Если уверены, что через этот функционал (эту сущность) не будет проходить ось изменений, то пишите класс. Если нет - интерфейс. Или абстрактный класс, если эта сущность должна обладать каким-то state.
    Ответ написан
    Комментировать