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

вопросы_5

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

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

  1. Что такое класс и объект? Что они представляют собой с точки зрения предметной области с одной стороны и программы с другой?

  2. В чем заключается принцип инкапсуляции ООП? Какие выделяют области видимости в классе и в чем их суть?

  3. Что общего и в чем различие классов, описываемых как

class, struct, union?

  1. Что из себя представляют атрибуты и методы классов? Чем отличаются различные объекты одного и того же класса?

  2. Что такое конструктор? Сколько их может быть?

  3. Что такое конструктор копирования? Для чего он используется?

  4. В чем отличие переменной, указателя на переменную и ссылки на переменную?

  5. Почему в конструкторе копирования должна использоваться именно ссылка?

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

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

программирования. Объект в программировании представляет собой экземпляр класса с определенными свойствами и методами, определяющими его состояние и поведение.

    1. Принцип инкапсуляции в объектно-ориентированном программировании заключается в том, что данные и методы,

объединенные в классе, должны быть скрыты от прямого доступа извне класса. Доступ к ним должен осуществляться только через определенные интерфейсы (публичные методы класса). Инкапсуляция позволяет скрыть реализацию объектов и защитить их от неправильного использования или модификации, обеспечивая логическую связность и независимость компонентов программы.

Области видимости в классе определяют уровень доступа к членам класса. В объектно-ориентированных языках программирования существуют три типа областей видимости:

      1. Область видимости public - члены класса доступны для всех

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

      1. Область видимости protected - члены класса доступны только из

класса и его подклассов. Это методы и свойства, доступные только из класса и его потомков.

      1. Область видимости private - члены класса доступны только внутри самого класса. Это методы и свойства, скрытые от внешнего мира.

Области видимости помогают контролировать доступ к данным и методам класса, предотвращая ошибки и обеспечивая безопасность программы.

    1. Class, struct и union - это три различных типа данных, которые могут быть созданы в языках программирования. Вот их краткое описание и различия:

      1. Class - это тип данных, который объединяет переменные (члены данных) и методы для работы с ними. Основное отличие от struct заключается в том, что в классах все члены по умолчанию являются закрытыми (private) и доступ к ним осуществляется через публичные методы класса (public).

      2. Struct - также тип данных, содержащий переменные и методы. Основное различие от class в том, что в структурах все члены по умолчанию являются открытыми (public) и доступны извне. Кроме того, структуры не поддерживают конструкторы и деструкторы.

      3. Union - тип данных, который позволяет использовать одну область памяти для разных типов данных. В отличие от class и struct, union не имеет методов и не поддерживает инкапсуляцию. Основное отличие от struct и class заключается в том, что union занимает только столько

места в памяти, сколько нужно для самого большого из его членов.

Общие черты:

  • Они определяют новые типы данных.

  • Могут содержать переменные и функции.

  • Могут использоваться для создания объектов.

  • Применяются для описания сложных структур данных.

  • Атрибуты и методы классов являются частями классов в объектно- ориентированных языках программирования. Атрибуты — это

    переменные, хранящие данные объекта, а методы - функции, выполняющие операции с данными объекта. Атрибуты могут быть публичными, защищенными или закрытыми, в зависимости от доступности извне класса. Методы позволяют инкапсулировать логику работы с данными. Разные объекты одного класса могут отличаться

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

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

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

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

    Конструктор копирования обычно определяется таким образом: ClassName(const ClassName& other)

    // Копирование значений членов данных из other в текущий объект .

    Он используется для создания нового объекта на основе уже существующего, например, при передаче объекта по значению в функцию или при возврате значения из функции. Конструктор

    копирования обеспечивает глубокое копирование объектов, чтобы

    избежать проблем с неявным копированием, которые могут привести к ошибкам в программе. Если конструктор копирования не определен явно в классе, компилятор C++ автоматически создаст конструктор копирования по умолчанию, который копирует значения всех членов

    класса. Однако, если класс содержит указатели на динамически

    выделенную память или другие ресурсы, то необходимо определить конструктор копирования самостоятельно для правильной работы

    класса при копировании объектов.

      1. Переменная, указатель и ссылка - это три различных способа работы с значением переменной в языке программирования C++.

    • Переменная - это именованное хранилище для значения определенного типа данных, которое можно использовать для хранения и обработки значений.

    • Указатель - это переменная, которая хранит адрес другой переменной в памяти компьютера. Указатели используются для работы с

    динамической памятью, передачи аргументов по ссылке и реализации структур данных.

    • Ссылка - это альтернативное имя переменной, которое обеспечивает доступ к тому же значению, что и изначальное имя переменной.

    Ссылки используются для передачи аргументов по ссылке и оператора присваивания.

    Основные различия между переменной, указателем и ссылкой:

    • Переменная имеет имя, тип и значение; указатель имеет тип и адрес; ссылка имеет только имя и тип.

    • Указатели могут быть проинициализированы адресом другой

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

    • Указатели могут быть разыменованы для доступа к значению переменной, на которую они указывают, в то время как ссылки используются для доступа к значению переменной, на которую они ссылаются.

    • Переменную можно скопировать или присвоить другой переменной, указатель можно скопировать или присвоить другому указателю, а

    ссылку можно только проинициализировать один раз и не может быть скопирована или присвоена другой ссылке.

    Понимание различий между переменной, указателем и ссылкой поможет выбрать правильный подход к работе с значениями переменных в зависимости от поставленной задачи.

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

    ссылками, которые могут возникнуть при использовании указателей. В

    итоге, использование ссылок в конструкторе копирования обеспечивает безопасное и эффективное копирование объектов.

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