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

39. Препроцессор. Команды препроцессора. Использование макроподстановок и макроимен. Команды условной компиляции.

Препроцессором называется первая фаза компилятора. Инструкции препроцессора называются директивами. Они должны начинаться с символа #, перед которым в строке могут находиться только пробельные символы.

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

Директивы управляют поведением препроцессора. Каждая директива занимает одну строку и имеет следующий формат:

символ #

препроцессорная инструкция (одна из define, undef, include, if, ifdef, ifndef, else, elif, endif, line, error, warning, pragma)

аргументы (в зависимости от инструкции)

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

Директивы условной компиляции #if, #ifdef и #ifndef применяются для того, чтобы исключить компиляцию отдельных частей программы. Это бывает полезно при отладке или, например, при поддержке нескольких версий программы для различных платформ.

40. Объектно-ориентированное программирование. Инкапсуляция, наследование, полиморфизм.

Шаги к повышению абстракции:

  • использование функций;

  • описание собственных типов данных;

  • объединение в модули

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

Введение понятия класса является естественным развитием идей модульности. В классе структуры данных и функции их обработки объединяются. Клаcc используется только через его интерфейс — детали реализации для пользователя класса несущественны.

Класс является типом данных определяемым пользователем. В классе задаются свойства и поведение какого-либо предмета или процесса в виде полей данных (аналогично структуре) и функций для работы с ними.

Объединение данных с функциями их обработки в сочетании со скрытием ненужной для использования этих данных информации называется инкапсуляцией (encapsulation). В объектно-ориентированном программировании код и данные могут быть объединены вместе; в этом случае говорят, что создаётся так называемый "чёрный ящик". Когда коды и данные объединяются таким способом, создаётся объект (object). Другими словами, объект - это то, что поддерживает инкапсуляцию.

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

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