Тема: Наследование. Полиморфизм
Тема: Классы
Задание:
1. Разобрать пример
2. Создать собственный класс (не менее 5 полей и 3 методов) с указанной темой, к-во файлов как в примере:
1) встроенная (inline) функция;
2) определение методов класса вне класса;
3) Открытые и закрытие методы класса;
4) оператор глобального разрешения;
5) конструктор;
6) Конструктор и параметры по умолчанию;
7) Перегрузка функций;
8) Деструктор.
Теория:
1. Инкапсуляция
2. Наследование
3. Полиморфизм
Контрольные вопросы:
1. Модификаторы доступа.
2.Объясните, что значит полиморфизм в терминах объектно-ориентированного
программирования.
3. Какая область видимости у поля класса по умолчанию.
4. Что такое (inline) функция?
5. Что такое перегрузка функций?
6. Виды конструкторов в С++
7. Что такое виртуальная функция?
8. В чем отличие ссылки от указателя?
9. Определение ООП и его основные концепции
10. В чем заключается работа оператора глобального разрешения (::) ?
Тема: Наследование. Полиморфизм
Задание:
1. Создать класс-наследник.
2. Показать множественное наследование.
3. Описать абстрактный базовый класс для создания иерархии, создать список объектов этих классов. Примечание: использование виртуальных функций, чисто виртуальных функций.
Контрольные вопросы:
1. Что такое наследование?
2. Что такое множественное наследование?
3. Друзья-классы, особенности.
4. Что такое полиморфизм?
5. Что такое виртуальная функция?
6. Что такое чисто виртуальная функция?
7. Что такое абстрактный класс?
8. Что такое инкапсуляция?
Тема: Структуры, перечисления и объединения в C++. Строки
Задания:
1. Описать:
1) Структуру;
2) Перечисление;
3) Поле;
4) Объединение.
2. Опишите функции:
1) char *srtrstr (const char *s1, const char *s2)
2) char*strpbrk (const char *s1, const char *s2)
3) char *strncpy (char dst[], char src[], int len)
3. Напишите программу, которая принимает строку в качестве аргумента и читает ряд слов (последовательностей символов, разделенных пробелами) из стандартного ввода, распечатывая те из них, которые водят как подстроки в строку аргумента.
Контрольные вопросы:
1. Что такое структуры?
2. Что такое перечисления?
3. Что такое объединения
4. Что такое битовое поле?
5. Что такое строки?
6. Различие между строкой и массивом символов?
7. Операции над строковыми данными.
Операции над строковыми данными
Функция | Выполняемое действие |
Определение длины строки | |
strlen(CS) | Возвращает количество символов в строке S |
Формирование строк | |
strdup(CS) | Запрашивает память, копирует туда содержимое CS и возвращает указатель типа char*на новую строку |
strcpy(S1,CS2) | Копирует содержимое CS2 в S1, возвращает указатель на S1 |
strncpy(S1,CS2,k) | Копирует первые k символов из CS2 в S1, возвращает указатель на S1 |
stpcpy(S1,CS2) | Копирует CS2 в S1, возвращает указатель на конец S1 |
strset(S,ch) | Расписывает строку S символом ch, возвращает указатель на S1 |
strnset(S,ch,k) | Повторяет k раз символ ch в строке S, возвращает указатель на S1 |
Конкатенация строк | |
strcat(S1,CS2) | Приписывает содержимое CS2 в конец S1, возвращает указатель на S1 (длина массиваS1 должна предусматривать такое расширение) |
strncat(S1,CS2,k) | Присоединяет первые k символов CS2 к содержимому S1, возвращает указатель на S1 |
Смена регистра | |
strlwr(S) | замена символов строки S кодами малых букв, действует только на буквы латинского алфавита |
strupr(S) | замена символов строки S кодами больших букв, действует только на буквы латинского алфавита |
Переворот строки | |
strrev(S) | Перестановка символов строки S в обратном порядке |
Преобразование в числовые данные | |
strtol(CS,ptr,r) | Число, представленное в символьном виде в CS и записанное в системе счисления с основанием r, преобразуется в машинный формат числа типа long. В указатель ptrзаносится адрес символа, прервавшего преобразования. Возвращаемое значение – результат преобразования. |
strtoul(CS,ptr,r) | Аналогичное преобразование в длинное целое число без знака |
strtod(CS,ptr) | Преобразование вещественного числа из символьного представления в машинный формат числа типа double. |
Сравнение строк | |
strcmp(CS1,CS2) | Возвращаемое значение равно 0, если CS1=CS2, больше 0, если CS1>CS2, и меньше 0, если CS1<CS2 |
strncmp(CS1,CS2,k) | Сравниваются только первые k символов строк CS1 и CS2 |
stricmp(CS1,CS2) | При сравнении игнорируется разница между кодами больших и малых букв |
strcmpi(CS1,CS2) | Аналогичная операция, разница только в названии функций |
strnicmp(CS1,CS2,k) | Сравнение первых k символов с игнорированием разницы между кодами больших и малых букв |
strncmpi(CS1,CS2,k) | Аналогичная операция, разница только в названии функций |
Поиск символа | |
strchr(CS,ch) | Строка CS сканируется слева направо до обнаружения символа ch. Если он найден, возвращаемый указатель "смотрит" на этот символ в строке CS, если такого символа нет, то возвращаемый указатель равен null (т.е. 0) |
strrchr(CS,ch) | Аналогичный поиск с конца строки CS. |
Поиск строки | |
strstr(CS1,CS2) | Поиск первого вхождения строки CS2 в строку CS1. Если поиск завершен успешно, возвращается указатель на первый символ найденной подстроки. В противном случае возвращается null |
Специальный поиск | |
strpbrk(CS1,CS2) | В строке CS1 ищется первый символ, содержащийся в CS2. Возвращается указатель на найденный символ или null. |
strspn(CS1,CS2) | Определяется длина начального фрагмента CS1, целиком состоящая из символов CS2(порядок символов роли не играет) |
strcspn(CS1,CS2) | Определяется длина начального фрагмента CS1, который не содержит ни одного символа из CS2 |
strtok(S1,CS2) | Поиск в строке S1 лексем, разделенных символами CS2 |
Литература
http://programmersforum.ru/showthread.php?t=31602