- •1. Краткие теоретические сведения
- •1.1. Объектно-ориентированный подход-Бузюков
- •1.2. Этапы разработки ооп систем
- •1.3. Декомпозиция
- •1.5. Концепции ооп
- •1.6. Синтаксис объявления класса
- •1.7. Методы класса
- •1.8. Объявление объектов
- •1.9. Конструктор
- •1.10. Деструктор
- •1.11. Инкапсуляция
- •1.12. Полиморфизм
- •1.13. Указатель this
- •1.14. Статические члены класса
- •1.15. Дружественные функции и классы
- •1.16. Вложенные классы
- •1.17. Элементы класса
- •1.17.1. Данные-элементы
- •1.17.2. Элементы-функции
- •1.17.3. Доступ к данным-элементам
- •1.17.4. Вызов функций-элементов
- •1.17.5. Указатели на компоненты-функции.
- •2. Задание
- •2.4.1.2. Пример для варианта 30
- •2.4.1.2.1. Разработка алгоритма решения.
- •2.4.1.2.2. Описание структуры класса.
- •2.4.1.2.2.1. Описание полей класса.
- •2.4.1.2.2.2. Функции-аксессоры.
- •2.4.1.3. Программа
- •2.4.1.4. Тестирование
- •2.4.2. Задание 2. Простейшие классы и объекты
- •2.4.2.1. Условие задания
- •2.4.2.2. Пример
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Простейший класс. Объединение данных и методов
- •2.4.3.1. Условие задания
- •2.4.3.2. Пример
- •2.4.3.3. Программы
- •2.4.3.3.1. Первый принцип инкапсуляции: объединение данных и методов
- •2.4.3.3.2. Второй принцип инкапсуляции: защита от внешнего вмешательства
- •2.4.3.3.3. Независимость интерфейса от реализации
- •2.4.3.3.4. Конструктор, деструктор
- •2.4.3.3.5. Определение методов вне класса
- •2.4.3.3.6. Конcтантные поля, методы и объекты
- •2.4.3.4. Тестирование
- •2.4.4. Задание 4. Пользовательский класс
- •2.4.4.1. Условие задания
- •2.4.4.2. Методические указания.
- •1. Пример определения класса.
- •2. Пример реализации конструктора с выдачей сообщения.
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Объектно-ориентированный подход-Бузюков 2
1.14. Статические члены класса
Глобальные данные и глобальные методы класса называют статическими.
Статические члены класса являются глобальными, принадлежат всему классу и существуют в единственном экземпляре.
В объявлении класса перед оператором описания типа глобальной компоненты записывается спецификатор static.
Статические данные класса полезны, когда необходимо, чтобы все объекты включали в себя какое-либо одинаковое значение.
Статические данные-члены класса
являются частью класса, но не является частью объекта этого класса.
объявляются внутри класса.
должны быть определены вне класса.
Статические функции-члены класса
функции, общие для всех объектов этого класса
имеют доступ только к статическим членам класса
для доступа к нестатическим членам они должны получить адрес объекта как параметр
не могут быть константными и виртуальными
1.15. Дружественные функции и классы
Переменные–члены классов являются закрытыми, доступ к ним через методы класса.
Дружественные функции объявляются в описании класса с помощью ключевого слова friend, получают доступ к переменным-членам класса, сами не будучи его членами.
Дружественная функция становится расширением интерфейса класса, и этот интерфейс реализует взаимодействие объекта с другими объектами программы.
Дружественная функция – это не член класса и она не может быть задана через имя объекта. Она должна вызываться точно также как и обычная функция.
В качестве параметра такой функции должен передаваться объект или ссылка на объект класса, т.к. указатель this ей не передается.
Объявление дружественности может помещаться в любое место описания класса (спецификаторы доступа не имеют отношения к объявлению дружественности).
Одна функция может быть дружественной нескольким классам.
Прототип дружественной функции записывается в объявлении всех классов, с которыми она дружит.
Дружественная функция не наследуется.
Если все методы класса должны иметь доступ к скрытым полям другого, то весь класс объявляется дружественным.
1.16. Вложенные классы
Класс, объявленный внутри другого класса, называется вложенным классом.
Класс, в котором объявлен вложенный класс, называется объемлющим классом.
Функции-члены объемлющего класса не имеют прав доступа к закрытым членам своего вложенного класса.
Также и функции-члены вложенного класса не имеют прав доступа к закрытым членам класса, внутри которого он объявлен.
Чтобы предоставить такие права вложенному или объемлющему классу, нужно объявить такой класс другом соответственно объемлющего или вложенного класса.
1.17. Элементы класса
Элементы класса делятся на две основные категории:
данные, называемые элементами-данными;
код, называемый элементами-функциями или методами.