- •Конспект по "Объектно-ориентированному программированию".
- •1. Что такое объект? Понятия "состояние" и "поведение"?
- •2. Понятия "интерфейс" и "реализация"?
- •3. Понятия "класс" и "абстрактный тип данных"?
- •4. Основные категории классов?
- •5. Объявление класса? Общий вид объявления класса? Включение кода метода внутри объявления класса?
- •6. Особенности локальных классов?
- •7. Понятие inline-метода. Способы создания?
- •9. Константный объект? Константный метод?
- •10. Конструктор. Его назначение и синтаксические конструкции вызова конструктора?
- •11. Конструктор копирования. Общий вид и случаи вызова?
- •12. Что называется конструктором по умолчанию? Конструктором преобразования?
- •13. Основные свойства и правила использования конструкторов.
- •14. Деструктор. Вызов деструкторов (автоматический и явный).
- •15. Основные свойства и правила использования деструкторов.
- •16. Создание и уничтожение объектов.
- •17. Что такое наследование?
- •18. Понятия "базовый класс" и "производный класс"?
- •19. Принцип подстановки. Различие между понятиями "подкласс" и "подтип"?
- •20. Основные формы наследования?
- •21. Преимущества наследования?
- •22. Недостатки наследования?
- •23. Общая форма наследования классов? Спецификаторы доступа при наследовании?
- •24. Конструкторы и деструкторы производных классов? Порядок вызова конструкторов и деструкторов при множественном наследовании?
- •25. Множественное наследование. Общая форма?
- •26. Передача параметров в базовый класс. Назначение. Общая форма?
- •27. Указатели и ссылки на производные классы?
- •28. Виртуальная функция. Объявление виртуальной функции?
- •29. Чисто виртуальная функция. Общая форма чисто виртуальной функции?
- •30. Понятие "абстрактный класс".
- •31. Что такое полиморфизм? в каких формах он может существовать?
- •32. Понятие "перегрузка"?
- •33. Приведение типа. Неопределенность. Причины возникновения неопределенности и способы ее устранения?
- •34. Понятие "параметрическая перегрузка"?
- •35. Понятие "переопределение"? в чем заключается различие между перегрузкой и переопределением?
- •36. В чем заключается процесс уточнения?
- •37. Что такое шаблоны (или обобщенные функции)? Их назначение?
- •38. Функция-шаблон. Назначение функции-шаблона? Общий вид функции-шаблона?
- •39. Класс-шаблон. Общая форма класса-шаблона и экземпляра такого класса?
7. Понятие inline-метода. Способы создания?
Метод является встроенным (inline), если его тело определено внутри класса.
Тело inline-метода (inline-функции) подставляется в каждую точку вызова, вместо того, чтобы генерировать код вызова. Как правило, встроенными делают короткие методы. Большие методы реализуются обычным способом.
Есть два способа создания inline-метода:
– с использованием директивы inline;
– включением кода метода внутри объявления класса.
С помощью директивы inline(как и для обычных функций, директива имеет рекомендательный характер) методы можно определять как встроенные и вне класса.
Общий вид объявления inline-метода:
inline объявление_метода
Модификатор inline предшествует всем частям объявления функции.
Например:
inline int monstr::get_ammo()
{return ammo;}
inline не является командой. Технически inline– это запрос к компилятору сгенерировать подставляемый код.
8. Описание объектов в C++ ? Формы создания объектов класса?
Конкретные представители класса называютсяобъектамиили экземплярами класса.
В C++ объект–это переменная типа class.
Поведение объекта ассоциируется с классом, т. е. все экземпляры класса воспринимают одни и те же команды и выполняют их сходным образом. Состояние объекта при этом остается индивидуальным, т. е. все объекты могут выполнять одни и те же действия, но используют различные данные.
Для обозначения внутренних переменных, содержащихся в экземпляре класса, используется термин "переменная экземпляра". Каждый экземпляр имеет свою собственную совокупность переменных. Эти значения не должны изменяться клиентами напрямую, а только с помощью методов, ассоциированных с классами, т. е.объект является комбинацией состояния и поведения.Состояниеописывается переменными экземпляра, а поведениехарактеризуется методами. Снаружи клиент может узнать только о поведении объектов. Изнутри доступна полная информация о том, как методы обеспечивают необходимое поведение, изменяют состояние и взаимодействуют с другими объектами.
Создание новых объектов называется порождением класса.
Порождение класса может рассматриваться как разновидность объявления переменных. Различие между этими понятиями отчасти маскируется тем, что в языках с контролем типов данных (например, С++) определение, порождающее переменную, выглядит так же, как и чистое объявление.
Общая форма создания объекта:
имя_классаобъект;
Объекты могут быть созданы в следующих формах:
– глобальные объекты– создаются в начале выполняемой программы и разрушаются при ее завершении;
– локальные (автоматические) объекты– создаются, когда объекты объявляются как некоторые локальные переменные в блоке (например, в функции) и разрушаются, когда блок программы, в котором они были объявлены, разрушается или удаляется из памяти;
– статические объекты– создаются один раз при запуске программы, к которой они относятся, и разрушаются тоже один раз при завершении выполнения программы;
– объекты в динамически выделяемой области памяти – создаются при выделении памяти и разрушаются при освобождении памяти;
– объекты-компоненты классов– создаются при построении объекта класса, в котором они описаны, и разрушаются при разрушении объекта класса, в котором они описаны;
– объекты-элементы массивов– создаются при создании массива объектов одного типа.