Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по программ(мои).doc
Скачиваний:
10
Добавлен:
01.03.2025
Размер:
969.73 Кб
Скачать

2.Агрегаты данных, описание агрегатов через шаблоны, вложенные описания

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

struct идентификатор

{ деклараторы членов } деклараторы_инициализаторы;

Такое объявление выполняет две функции, во-первых объявляется структурный тип, во-вторых объявляются переменные этого типа.

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

3. Интерфейс класса. Свойство защищенности интерфейса класса

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

C++ поддерживает множественное наследование и абстрактные классы, поэтому, как уже упоминалось выше, отдельная синтаксическая конструкция для интерфейсов в этом языке не нужна. Интерфейсы определяются при помощи абстрактных классов, а реализация интерфейса производится путём наследования этих классов.

Пример определения интерфейса:

/**

* interface.Openable.hpp

*

*/

#ifndef INTERFACE_OPENABLE_HPP

#define INTERFACE_OPENABLE_HPP

// Класс интерфейса iOpenable. Определяет возможность открытия/закрытия чего либо.

class iOpenable

{

public:

virtual ~iOpenable(){}

virtual void open()=0;

virtual void close()=0;

};

#endif

Интерфейс реализуется через наследование. Благодаря наличию множественного наследования, ничто не мешает реализовать в одном классе несколько интерфейсов, если в этом есть необходимость.

Билет 4

1. Классификация функций, функции пользователя и стандартные.

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

Стандартные функциями - это функций для выполнения общих математических вычислений, обработки строк и символов, ввода/вывода и т.д.

scanf("%d", &n); ввод десятичной перем n

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

void swap (int x, int y)

{ int z = x;

x = y;

y = z;

} - это пользовательская функция, которая меняет местами значения у элементов.