Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР20-С++-16-сентября-2012 (1).doc
Скачиваний:
33
Добавлен:
12.11.2019
Размер:
1.18 Mб
Скачать

Министерство финансов Российской Федерации

Всероссийская государственная налоговая академия

ИНФОРМАТИКА И ПРОГРАММИРОВАНИЕ

Бакалавры: 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, будет выполнено сохранение информации.

Также к основным терминам ООП нужно отнести такие понятия, как инкапсуляция, наследование и полиморфизм, которые будут рассмотрены далее.