- •Вопрос 1. Ссылки и ссылочные параметры.
- •Вопрос 2. Перегрузка функций.
- •Вопрос 3. Шаблоны функций.
- •Вопрос 4. Использование const с указателями.
- •Вопрос 5. Область действия класса. Управление доступом к членам класса. Отделение интерфейса от реализации.
- •Вопрос 6. Понятие конструктора .Использование констр-ра с аргументами по умолчанию. Конструктор по умолчанию.
- •Вопрос 7. Понятие деструктора. Когда вызывается конструктор и деструктор.
- •Вопрос 8. Константные объекты и функции-члены.
- •Вопрос 9. Дружественные функции и друж. Классы.
- •Вопрос 10. Указатель this.
- •Вопрос 11. Операции new и delete.
- •Вопрос 12. Статические члены класса.
- •Вопрос 13. Понятие перегрузки операций.
- •Вопрос 14. Функции-операции как члены класса и как друж-е функции
- •Вопрос 15. Перегрузка операций ввода/вывода в поток, бинар и унар операций.
- •Вопрос 17. Перегрузка операций индексации массива.
- •Вопрос 18. Понятие наследования. Механизм ограничения доступа при наследовании.
- •Вопрос 19. Приведение типа указателя базового класса к указателю производного класса и наоборот.
- •Вопрос 21. Конструкторы и деструкторы в производных классах.
- •Вопрос 22. Неявное преобразование объектов производных классов в объекты базового класса.
- •Вопрос 23. Иерархия классов. Уровни наследования.
- •Вопрос 24. Множественное наследование.
- •Вопрос 25. Неопределённость при множ-м наследовании. Включение «классы в классах».
- •Вопрос 26. Понятие виртуальной функции.
- •Вопрос 27. Понятие полиморфизма.
- •Вопрос 28. Абстрактные и конкретные базовые классы.
- •Вопрос 29. Статическое и динамическое связывание.
- •Вопрос 30. Виртуальные деструкторы.
- •Вопрос 31. Шаблоны классов.
- •Вопрос 32. Шаблоны классов и пользовательские типы
- •Вопрос 33. Шаблоны и наследование.
- •Вопрос 34. Классы и объекты потоков ввода/вывода. Иерархия потоковых классов.
- •Вопрос 35, 38. Предопределённые потоковые объекты. Состояние ошибок потока.
- •Вопрос 36. Манипуляторы потоков.
- •Вопрос 37. Неформатированный ввод/вывод с помощью read/ write
- •Вопрос 38. Состояние ошибок ввода/вывода
- •Вопрос 39. Понятие исключения. Когда должна использоваться обработка исключений.
- •Вопрос 40. Генерация исключений. Повторная генерация исключений.
- •Вопрос 41. Перехват исключений.
- •Вопрос 42. Спецификация исключений. Обработка неожиданных исключений.
- •Вопрос 43. «Раскручивание» стека. Иерархия исключений стандартной библиотеки.
- •Вопрос 44. Конструкторы, деструкторы и исключения. Исключения и наследование.
- •Вопрос 45. Обработка неуспешного выполнения new.
- •Вопрос 46. Класс auto_ptr и динамич выделение памяти.
- •Вопрос 47. Static_cast, reinterpret_cast
- •Вопрос 48. Инфо о типе времени выполнения. Оператор dynamic_cast
- •Вопрос 49. Ключевое слово explicit.
- •Вопрос 50. Ключевое слово mutable.
- •Вопрос 51. Указатели на члены класса.
- •Вопрос 52. Множественное наследование. Виртуальные базовые классы.
- •Вопрос 53. Классы-контейнеры и классы-итераторы.
- •Вопрос 54. Понятие ооп. Три условия ооп-программы. Парадигмы ооп.
- •Вопрос 55.Основные составляющие объектного подхода: абстрагирование, инкапсуляция, модульность.
- •Вопрос 56. Основные составляющие объектного подхода: иерархия, типизация, полиморфизм.
- •Вопрос 57. Природа объекта. Состояние, поведение, идентичность объекта.
- •Вопрос 58. Отношения между объектами. Связи. Агрегация.
- •Вопрос 59. Природа классов. Отношения между классами. Типы отношений.
Вопрос 5. Область действия класса. Управление доступом к членам класса. Отделение интерфейса от реализации.
Одним из основных понятий ООП явл понятие класса.
Осн идея класса как абстрактного типа заключается в разделении интерфейса и реализации. Интерфейс показ, как можно использовать класс. При этом соверш не важно, как соответств ф-ии реализованы внутри класса.
Данные-эл-ты класса (переменные, объявленные в определении класса) и ф-ции-эл-ты (ф-ции, объявленные в определении класса) явл-ся областью действия класса. Ф-ции, не являющиеся эл-том класса, явл-ся областью действия файла.
При области действия класса эл-ты класса непосредственно доступны всем ф-циям-эл-там этого класса и на них можно ссылаться просто по имени. Вне области действия класса к элементам класса можно обращаться либо ч/з имя объекта, либо ссылкой на объект, либо с помощью указателя на объект.
Ф-ции-э-ты класса можно перегружать, но только с помощью других ф-ций-эл-тов класса.
Операции, использованные для доступа к элементам класса, аналогичны операциям, используемым для доступа к элементам структуры. Операция выбора элемента точка (.) комбинируется для доступа к элементам объекта с именем объекта или со ссылкой на объект. Операция выбора элемента стрелка (->) комбинируется для доступа к элементам объекта с указателем на объект.
Отделение интерфейса от реализации. Облегчает модификацию программ. Изменения в реализации класса не влияют на клиента до тех пор, пока интерфейс класса, изначально предназначенный для клиента, остается неизменным.
Каждое определение класса обычно помещается в заголовочный файл, а определения функций-элементов этого класса помещаются в файлы исходных кодов с теми же базовыми именами. Заголовочные файлы включаются (посредством #include) в каждый файл, в к-ом используется класс.
Управление доступом к Эл-там Спецификаторы доступа к элементу public (открытая часть класса (интерфейс). В интерфейсе описываются операции, которые класс предоставляет своим клиентам.) и private protected ( защищенные, закрытая часть класса наз-ся реализацией класса. В ней обычно описываются данные класса.)
Закрытые элементы класса могут быть доступны только для ф-ций-эл-тов (и дружественных функций) этого класса. Открытые элементы класса могут быть доступны для любых ф-ций в программе.
Основная задача открытых эл-тов: дать клиентам класса представление о возможностях (услугах), к-ые обеспечивает класс. Этот набор услуг составляет открытый интерфейс класса. Клиентов класса не должно касаться, каким образом класс выполняет их задачи. Клиент класса может быть ф-цией-эл-том другого класса или глобальной функцией. Из того, что данные класса закрытые, не следует, что клиенты не могут изменять эти данные. Данные могут быть изменены ф-циями-эл-тами или друзьями этого класса. Эти ф-ции должны быть спроектированы так, чтобы гарантировать целостность данных.
Доступ к закрытым данным класса должен тщательно контролироваться использованием функций-элементов, называемых функциями доступа.
class Time { public:
Time();
void setTime(int,int,int);
void printMilitary();
void printStandart();
private:
int hour; int minute; int second; };