Ответы пользователя по тегу ООП
  • Как поменять 2 функции в один класс?

    kinglostov
    @kinglostov
    просто lostov
    А в абстрактной функции сделать вызов функции. Это нормальная идея или нет?

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

    kinglostov
    @kinglostov
    просто lostov
    Идеи ООП (Хоар, 1966, “Совместное использование кода”):
    • Инкапсуляция (объединение данных и действий над ними, или для каждого типа данных – свои функции-действия);
    • Наследование (модификация развития программы за счет надстроек; вместо изменения написаного кода – делаем над ним надстройки);
    • Организация взаимодействия между объектами; перенесение взаимодействия объектов из физического мира в программирование.
    Два вида взаимодействия:
    1. Акцессорное – вступление в контакт, получение информации от объектов (синхронное взаимодействие)
    2. Событийное взаимодействие – взаимодействие, связанное с изменением состояния объекта (асинхронное взаимодействие)
    Объект – конкретная реализация абстрактного типа, обладающий характеристиками состояния, поведения, индивидуальности.

    Состояние – один из возможных вариантов условий существований объекта.

    Поведение – описание объекта в терминах изменения его состояния и передача сообщений (данных) в процессе воздействия.

    Индивидуальность – сущность объекта, отличающееся от других объектов.

    Действие – деятельность или операция, которые должны быть выполнены над объектом.

    Модель Мура:
    • Состоит из множества состояний, каждое состояние представляет стадию в жизненном цикле типичного экземпляра.
    • Из множества событий: каждое событие представляет собой инцидент или указание на то, что происходит эволюционирование.
    • Из (множества) правил перехода определяет какое новое состояние получает в следствие какого-нибудь события (событие может и не изменять объект)
    • Из действий – деятельность или операция который должен быть выполнены над объектом чтобы он мог достичь состояния (каждому действию соответствует состояние).
    Категории объектов:
    • Реальные объекты – абстракция фактического существующего объекта реального мира.
    • Роли – абстракции цели или назначения человека, части оборудования или организации.
    • Инциденты – абстракция чего-то происшедшего или случившегося (наводнение, скачёк напряжения, выборы). -
    • Взаимодействия – объекты получаемые из отношений между другими объектами (перекресток, договор, взятка). -
    • Спецификации – используется для представления правил, критериев качества, стандартов (правила дорожного движения, распорядок дня).
    Преимущества ООП:
    • Возможность легкой модификации (при грамотном анализе и проектировании)
    • Возможность отката при наличии версий
    • Более легкая расширяемость
    • «Более естественная» декомпозиция программного обеспечения, которая существенно облегчает его разработку.
    • Сокращение количества межмодульных вызовов и уменьшение объемов информации, передаваемой между модулями.
    • Увеличивается показатель повторного использования кода.
    Недостатки ООП:
    • Требуется другая квалификация
    • Резко увеличивается время на анализ и проектирование систем
    • Увеличение времени выполнения
    • Размер кода увеличивается :interrobang:
    • Неэффективно с точки зрения памяти (мертвый код - тот, который не используется) :interrobang:
    • Сложность распределения работ на начальном этапе
    • Себестоимость больше
    Ответ написан
    1 комментарий