Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
все билеты ооп.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
932.08 Кб
Скачать

Билет 1. Время жизни объектов. Связь с типами памяти и областями видимости

Время жизни объектов

Время жизни объекта — интервал времени выполнения программы, в течение которого объект существует в памяти

Время жизни объекта:

- Глобальное - время работы программы (при этом не обязательно всегда видима)

- Локальное - время выполнения блока (при новом входе в блок обновляется)

Время жизни функций – глобальное

Область видимости

Область видимости переменной или функции — часть текста программы, в которой эта переменная или функция может быть использована

Области видимости переменной:

- Локальная — в блоке (и вложенных блоках)

- Файловая — в файле с места объявления

- Глобальная — межфайловая при объявлениях extern

Видимость функций:

- Файловая, с момента описания или объявления прототипа

- Функция может быть описана в другом файле ( должна быть объявлена как extern)

Типы памяти

Статическая память

- Для переменных, объявленных вне функций или с модификатором static

- Время жизни == время выполнения программы

Автоматическая память (стэк)

- Для переменных внутри функций и блоков (без static)

- Время жизни - блок

Динамическая память (куча)

- Выделяется по запросу

- Время жизни – от момента выделения с помощью new до момента освобождения с помощью delete

Билет 2. Области видимости. Связь с временем жизни и типами памяти.

Область видимости

Область видимости переменной или функции — часть текста программы, в которой эта переменная или функция может быть использована

Области видимости переменной:

- Локальная — в блоке (и вложенных блоках)

- Файловая — в файле с места объявления

- Глобальная — межфайловая при объявлениях extern

Видимость функций:

- Файловая, с момента описания или объявления прототипа

- Функция может быть описана в другом файле ( должна быть объявлена как extern)

Время жизни объектов

Время жизни объекта — интервал времени выполнения программы, в течение которого объект существует в памяти

Время жизни объекта:

- Глобальное - время работы программы (при этом не обязательно всегда видима)

- Локальное - время выполнения блока (при новом входе в блок обновляется)

Время жизни функций – глобальное

Типы памяти

Статическая память

- Для переменных, объявленных вне функций или с модификатором static

- Время жизни == время выполнения программы

Автоматическая память (стэк)

- Для переменных внутри функций и блоков (без static)

- Время жизни - блок

Динамическая память (куча)

- Выделяется по запросу

- Время жизни – от момента выделения с помощью new до момента освобождения с помощью delete

Билет №3. Принципы ооп: абстрагирование, инкапсуляция, иерархичность, модульность

Абстрагирование – выделение существенных характеристик некоторого объекта, которые отличают его от всех других видов объектов и четко определяют его концептуальные границы с точки зрения дальнейшего рассмотрения и анализа

Абстра́кция в объектно-ориентированном программировании — это существенные характеристики объекта, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов, подобно тому, как функциональная абстракция разделяет способ использования функции и деталей её реализации в терминах более примитивных функций (Данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня).

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

Инкапсуляция – объединение данных (атрибутов) и поведения (операций) в рамках класса

Инкапсуля́ция — свойство языка программирования, позволяющее объединить данные и код в объект и скрыть реализацию объекта от пользователя (прикладного программиста). При этом пользователю предоставляется только спецификация (интерфейс) объекта. Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью директив: public, private, protected.

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

Предостережение: Одна из наиболее распространенных ошибок — делать сокрытие реализации только ради сокрытия. Целями, достойными усилий, являются: предельная локализация изменений при необходимости таких изменений, прогнозируемость изменений (какие изменения в коде надо сделать для заданного изменения функциональности) и прогнозируемость последствий изменений.

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

Часто инкапсуляция может быть достигнута простейшими организационными мерами: знание того, что «вот так-то делать нельзя» иногда является самым эффективным средством инкапсуляции!

class A

{

private:

int a,b; //скрытые свойства

void DoSomething(); //скрытый метод.

public:

int ReturnSomething(); //открытый интерфейс

};

Класс А инкапсулирует свойства a, b и метод DoSomething, представляя внешний интерфейс ReturnSomething.

Модульность – свойство системы, связанное с возможностью ее декомпозиции на ряд внутренне связных, но слабо связанных между собой модулей

Модульность — в языках программирования — принцип, согласно которому программное средство (ПС, программа, библиотека, web-приложение и др.) разделяется на отдельные именованные сущности, называемые модулями. Модульность часто является средством упрощения задачи проектирования ПС и распределения процесса разработки ПС между группами разработчиков. При разбиении ПС на модули для каждого модуля указывается реализуемая им функциональность, а также связи с другими модулями.

Иерархия - ранжированная или упорядоченная система абстракций. Принцип иерархичности предполагает использование иерархии при разработке программных систем. В ООП используются два вида иерархии. Иерархия «целое/часть» - показывает, что некоторые абстракции включены в рассматриваемую абстракцию как ее части, например, лампа состоит из цоколя, нити накаливания и колбы. Этот вариант иерархии используется в процессе разбиения системы на разных этапах проектирования (на логическом уровне - при декомпозиции предметной области на объекты, на физическом уровне - при декомпозиции системы на модули и при выделении отдельных процессов в мультипроцессной системе). Иерархия «общее/частное» - показывает, что некоторая абстракция является частным случаем другой абстракции, например, «обеденный стол -конкретный вид стола», а «столы - конкретный вид мебели». Используется при разработке структуры классов, когда сложные классы строятся на базе более простых путем добавления к ним новых характеристик и, возможно, уточнения имеющихся.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]