Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

вопросы_10

.docx
Скачиваний:
0
Добавлен:
28.12.2024
Размер:
20.01 Кб
Скачать

Контрольные вопросы к лекции №10

  1. Что из себя представляет объектно-ориентированная программа?

  2. Каким образом может изменяться состояние ООП программы? Посредством чего оно достигается?

  3. Какие выделяются отношения между классами?

  4. Что из себя представляет отношение зависимости?

  5. Сколько и каких выделяется отношений ассоциации?

  6. Что общего и в чем заключается принципиальная разница отношений агрегации и композиции?

  7. Каким образом отношения зависимости и ассоциации отражаются в протоколах классов?

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

    2. Состояние объектно-ориентированной программы может меняться путем изменения свойств объектов, вызова их методов, создания или удаления объектов, а также воздействия на внешние системы, с которыми программа взаимодействует. Изменение состояния объектов достигается путем изменения значений их атрибутов через присваивание новых значений или вызов методов. Также программа может влиять на состояние внешних систем, например, обновляя данные в базе данных или отправляя запросы на сервер. Для правильного изменения состояния объектов необходимо организовать взаимодействие между ними, написать соответствующие методы для обработки различных сценариев и учитывать возможные ошибки. Управление жизненным циклом объектов также важно для избежания утечек памяти и других проблем с производительностью.

    1. Существует несколько видов взаимосвязей между классами в объектно-ориентированном программировании:

      1. Наследование: это отношение, при котором один класс (подкласс) получает свойства и методы от другого класса (суперкласса), с возможностью добавления новых свойств и методов, а также переопределения или расширения методов суперкласса.

      1. Ассоциация: это отношение, когда один класс имеет ссылку на объект другого класса для использования его свойств и методов. Ассоциация может быть однонаправленной или двунаправленной, а также может быть агрегацией (когда объект одного класса является частью другого) или композицией (когда объект одного класса является неотъемлемой частью другого).

      1. Реализация: это отношение, при котором один класс реализует интерфейс другого класса. Интерфейс определяет набор методов, которые должны быть реализованы классом, использующим этот интерфейс.

      1. Зависимость: это отношение, когда один класс использует объект другого класса без сохранения ссылки на него. Зависимость может быть временной (использование объекта только внутри метода) или постоянной (использование объекта на протяжении всего жизненного цикла класса).

      1. Рефакторинг: это процесс изменения структуры программы без изменения ее поведения. Рефакторинг может включать изменение взаимосвязей между классами, такие как объединение или разделение классов, изменение наследования или добавление новых связей между классами.

    1. В объектно-ориентированном программировании отношение зависимости означает, что один класс использует объекты другого класса в своей реализации, но не имеет прямой связи с ним. Зависимый класс использует объекты независимого класса через параметры методов, локальные переменные, возвращаемые значения или создание объектов внутри методов. Это отношение может быть временным (использование объекта только внутри метода) или постоянным (использование объекта на протяжении всего жизненного цикла класса). Управляемые зависимости между классами могут быть реализованы через интерфейсы для уменьшения связности и обеспечения гибкости и легкости изменения кода при изменении требований программы.

    2. Существует четыре типа отношений ассоциации: однонаправленная ассоциация, двунаправленная ассоциация, агрегация и композиция. Однонаправленная ассоциация означает, что один класс использует функциональность другого класса без обратной связи. Двунаправленная ассоциация подразумевает взаимное использование функциональности двух классов. Агрегация описывает случай, когда один объект является частью другого, но может существовать сам по себе. Композиция же указывает на неотъемлемую зависимость одного объекта от другого, так что объекты не могут существовать независимо друг от друга.

    1. Оба типа отношений, агрегация и композиция, представляют собой связи между классами в программировании. Основное различие между ними заключается в степени зависимости одного класса от другого. В композиции один класс является частью другого и не может существовать без него, в то время как в агрегации классы могут существовать независимо друг от друга. Например, в отношении "человек-рука" при использовании композиции рука является неотъемлемой частью человека, а при использовании агрегации рука просто связана с человеком и может существовать самостоятельно.

    1. Способы отражения отношений ассоциации и зависимости между классами в протоколах классов различаются. В протоколе класса ассоциация обычно представлена через атрибуты, которые хранят объекты других классов. Например, класс "автомобиль" может иметь атрибут "двигатель", указывающий на объект класса "двигатель". С другой стороны, зависимость между классами отображается в протоколе с использованием методов, которые позволяют получать доступ к атрибутам других классов или взаимодействовать с их объектами. Например, метод "завести двигатель" класса "автомобиль" демонстрирует зависимость от класса "двигатель". Правильное представление этих отношений в протоколах классов имеет важное значение для эффективного проектирования программного обеспечения.

Соседние файлы в предмете Объектно ориентированное программирование