
Вопросы к 6ой лабе
.docxВопросы к 6ой лабе
Объектно-ориентированное программирование — парадигма программирования, основанная на концепции классов и объектов.
Объект — экземпляр класса, обладающий состоянием и поведением.
Класс — шаблон для создания объектов, определяющий их структуру и поведение.
Отношения между классами:
Ассоциация — общее отношение между классами.
Агрегация — класс содержит или состоит из других классов.
Композиция — строгая форма агрегации, где части не могут существовать независимо от целого.
Использование — один класс использует другой для выполнения своих функций.
Наследование — класс наследует характеристики другого класса.
Инстанцирование — создание экземпляра класса.
Абстракция — выделение ключевых, существенных характеристик объекта, игнорирование несущественных.
Инкапсуляция — сокрытие деталей реализации и данных класса, предоставление к ним доступа через публичные методы.
Модульность — разделение программы на отдельные независимые модули.
Иерархия — структура наследования или вложенности в программном обеспечении.
Типизация — присваивание типа данным, функциям или объектам.
Сохраняемость — способность системы сохранять состояние объектов между сессиями.
Конструктор и деструктор — специальные методы класса для инициализации и удаления объектов.
Методы класса — функции, определённые внутри класса и имеющие доступ к его данным и поведению.
Абстрактный класс, класс-интерфейс, класс-утилита:
Абстрактный класс — класс, содержащий один или более абстрактных методов.
Класс-интерфейс — класс, состоящий только из абстрактных методов.
Класс-утилита — класс, содержащий только статические методы и переменные.
Области видимости, статические члены класса — определяют область, в которой переменные и функции доступны для использования, статические члены принадлежат классу, а не отдельному объекту.
Модель предметной области — абстрактное представление структуры и отношений в предметной области.
Модель проектирования — абстрактное и систематизированное описание компонентов программы и их взаимосвязей.
Диаграммы классов — диаграммы, описывающие структуру системы с показом классов, их атрибутов, методов и отношений.
Наследование:
Одиночное — класс наследуется от одного родительского класса.
Множественное — класс наследуется от многих родительских классов.
Проблемы множественного наследования:
Проблемы разрешения вызовов (например, алмаз проблемы*).
Способы решения — использование интерфейсов, виртуальное наследование.
* Алмаз проблемы (или "алмаз смерти") — это термин в программировании, который описывает конкретную проблему, возникающую при использовании множественного наследования в объектно-ориентированных языках программирования, таких как C++. Проблема возникает, когда класс наследуется от двух классов, которые в свою очередь наследуют от одного общего предка.
Полиморфизм — способность объекта использовать методы производного класса, которые переопределяют методы базового класса.
Виртуальная функция — функция, объявленная в базовом классе и предназначенная для переопределения в производных классах.
Таблица виртуальных функций — механизм для поддержки динамического полиморфизма и позднего связывания методов объектов.
Сериализация и десериализация объектов — процесс преобразования объектов в формат, пригодный для сохранения или передачи, и обратно.
Методы сериализации объектов — техники и форматы, используемые для сохранения состояния объектов.
Принципы SOLID — набор принципов для написания удобочитаемого и поддерживаемого кода в ООП.
Принцип единственной ответственности — каждый класс должен иметь одну причину для изменения.
Принцип открытости/закрытости — система должна быть открыта для расширения, но закрыта для модификации.
Принцип подстановки Барбары Лисков — объекты должны быть заменяемы на экземпляры их подклассов без влияния на корректность программы.
Принцип разделения интерфейса — множество клиент-специфичных интерфейсов лучше, чем один общий.
Принцип инверсии зависимостей — модули высокого уровня не должны зависеть от модулей низкого уровня; оба типа модулей должны зависеть от абстракций.