- •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
Министерство финансов Российской Федерации
Всероссийская государственная налоговая академия
ИНФОРМАТИКА И ПРОГРАММИРОВАНИЕ
Бакалавры: 230700 "Прикладная информатика"
Язык программирования С++
Лабораторная работа № 20(04-3)
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++
С ИСПОЛЬЗОВАНИЕМ КЛАССОВ.
Автор профессор кафедры "Прикладной информатики в экономике"
кандидат технических наук Л.К. Кузнецов
16 сентября 2012 г.
Москва
ВГНА
2012
Лабораторная работа № 20
Программирование на языке С++ с использованием классов.
Цель работы:
Ознакомиться:
с объектно-ориентированным подходом программирования (ООП);
с этапами разработки ООП-систем;
с концепциями ООП;
с понятием инкапсуляции;
с понятием полиморфизма;
с понятием наследования;
с понятием класса;
с назначением классов;
с синтаксисом класса;
с понятием спецификатора доступа и их видами;
с методами класса;
с методами класса;
с объявлением объектов;
с понятием конструктора;
с понятием деструктора;
с указателем this;
со статическими членами класса;
с дружественными функциями;
с вложенными классами.
Изучить средства работы с классами на языке С++.
Научиться разрабатывать и отлаживать в среде программирования программы, содержащие классы.
Получить практические навыки по реализации простых классов на С++ при разработке программ.
Познакомиться с основой объектного подхода в языке C#, созданием объектов, классов и механизмом наследования.
1. Краткие теоретические сведения
Ниже приводятся минимальные сведения, необходимые только для выполнения лабораторной работы.
1.1. Объектно-ориентированный подход-Бузюков
В настоящее время в программировании существуют четыре принципиально отличающихся подхода:
процедурный (алгоритмический),
логический (декларативный),
функциональный,
объектно-ориентированный.
Объектно-ориентированный подход в разработке программ [10–12] появился позже других. Его появление стало следствием все возрастающей сложности программного обеспечения, необходимости его регулярного обновления из-за постоянно изменяющихся требований к программам и условиям их функционирования. Именно объектно-ориентированный подход позволяет решать задачи наивысшей сложности, повышает надежность программ, облегчает их модернизацию.
Логическая единица объектно-ориентированной программы – объект. Объект в реальной жизни – это сущность, обладающая некоторым набором свойств и моделью поведения. Объект в программе представляет собой абстракцию реального объекта, т. е. в программе объект наделяется теми чертами и характеристиками реального времени, которые существенны для решаемой задачи. Второстепенные же характеристики в программную абстракцию не включаются, при этом характеристики одного и того же реального объекта, существенные для одной задачи, оказываются второстепенными в другой задаче. Рассмотрим хорошо знакомый нам объект – принтер (табл. 20.1). Если разрабатывать программу для обслуживания магазина, продающего принтеры, существенными будут модель принтера, цена, габариты, скорость печати, цвет корпуса и т. д. Если рассматривать принтер с точки зрения администратора вычислительной сети, то существенными характеристиками будут логическое имя устройства в сети, его IP-адрес, драйверы, обеспечивающие работу принтера.
Объект в программе имеет имя, ограниченный набор свойств, набор допустимых состояний (т. е. набор конкретных значений свойств), набор методов (операций), определяющих модель поведения объекта (действия объекта).
Таблица 20.1
Пример абстракции: |
Модель принтера |
Имя: |
HP_5P |
Набор свойств: |
Модель, год выпуска, состояние готовности |
Значения свойств: |
Модель = "HP 5P", |
|
Год выпуска = 2004, |
|
Состояние готовности=Ready (готов к печати) |
Действия объекта: |
Печатает |
Как видно, эта абстракция включает в себя далеко не полный перечень свойств принтера, но для определенной задачи этого набора будет достаточно. Если задача изменится (усложнится), в модель принтера можно будет добавить недостающие свойства и описания новых действий.
В программе свойства объекта представлены с помощью переменных, а действия объекта – с помощью подпрограмм (в C++ – функций). Подпрограммы, содержащие описания действий объекта, называются методами. Набор конкретных значений переменных, характеризующих объект, определяет состояние объекта. Объект имеет ограниченный набор допустимых состояний. Например, в нашей модели принтера возможны два состояния: «готов к печати» и «печатает». Остальные свойства задаются для конкретного принтера изначально и не изменяются в процессе работы программы.
Таким образом, объект в объектно-ориентированном программировании (ООП) – это совокупность переменных состояния и связанных с ними методов (операций). Эти методы, с одной стороны, определяют, как объект взаимодействует с внешним миром. С другой стороны, методы осуществляют переход объекта из одного состояния в другое, причем метод проверяет, возможен ли такой переход в данной ситуации. Например, принтеру дается команда отпечатать документ. Если принтер находился в этот момент в состоянии «готов к печати», изменит свое состояние на состояние «печатает». Если принтер в момент получения команды печатал другой документ, то он остается в прежнем состоянии «печатает», а наш документ ставится в очередь на печать. Когда принтер закончит печатать один документ, он приступит к печати нашего документа. Отпечатав наш документ, принтер проверит, есть ли еще документы в очереди на печать, и, если очередь пуста, перейдет в режим «готов к печати». Таким образом, в ответ на наше действие принтер сам определил свои дальнейшие действия, и его выбор зависел от предыдущего состояния принтера. Объектно-ориентированный подход позволяет объектам самим решать, как выполнить ту или иную задачу.
В основе разработки программы с использованием методов ООП применяется объектная декомпозиция задачи. Объектная декомпозиция задачи включает в себя разбиение задачи на отдельные объекты, выявление существенных свойств объектов и способов их взаимодействия. Программа представляет при этом совокупность объектов, взаимодействующих между собой.
В процессе декомпозиции задачи могут быть выявлены объекты с одинаковыми наборами свойств и поведением. Например, для программы, моделирующей футбольный матч, необходимы две команды объектов-«футболистов». Каждого игрока матча можно охарактеризовать следующими свойствами: название команды, форма одежды, номер, координаты на поле. Поведение игроков на поле можно описать следующими действиями: стоит, бежит, отдает мяч, получает мяч. Объекты с одинаковым набором свойств и методов образуют класс. Класс – основа объектно-ориентированной методологии – служит для создания в программе любого количества объектов с заданным набором свойств и заданной моделью поведения. Если проводить параллель с алгоритмической методологией, то класс выступает в роли типа данных, однако это специфический тип, так как кроме данных в класс включаются действия (функции-члены класса, манипулирующие с данными).
Теперь рассмотрим основные термины ООП.
Класс (class) – это тип данных, включающий в себя группу данных различных типов (свойства) и методы работы с этими данными.
Объект (object) – это экземпляр класса, обладающий набором свойств с заданными значениями.
Свойство (property) – характеристика объекта, представленная в виде переменной, являющейся членом класса.
Метод (method) – это подпрограмма, входящая в состав класса и управляющая данными объекта.
Событие (event) – какое-либо происшествие в программе, системе, например, была нажата кнопка мыши.
Сообщение (message) – адресованная конкретному объекту информация о происшедшем событии; объект, получивший сообщение, должен на него ответить своими действиями, вызвав метод, соответствующий этому событию. Например, если получено сообщение о том, что была нажата левая кнопка мыши на пункте меню Exit, произойдет завершение программы, если был выбран пункт меню Save, будет выполнено сохранение информации.
Также к основным терминам ООП нужно отнести такие понятия, как инкапсуляция, наследование и полиморфизм, которые будут рассмотрены далее.