Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
готовый отчет курсовая 2011.doc
Скачиваний:
6
Добавлен:
05.12.2018
Размер:
1.18 Mб
Скачать

Постановка задачи

Используя ООП, написать программу, реализующую идею игры. Выполнить переопределение стандартных операций для абстрактных типов данных. Использовать конструкторы, деструкторы. Использовать графический режим.

Выбор и проработка программных средств

Язык C был разработан в начале семидесятых небольшой группой инженеров, работающих в лабораториях Белла, для создания операционной системы Unix. Язык С оказался достаточно мощным и очень скоро завоевал передовые позиции среди средств разработки программного обеспечения. Однако со временем в программировании появились новые технологии (например, объектно-ориентированное программирование), которые постепенно вытесняли язык С.

Язык программирования С++ был разработан на основе языка С Бьярном Страуструпом (Bjarne Stroustrup) и вышел за пределы его исследовательской группы в начале 80-х годов. Язык С++ является надмножеством языка Си, поэтому программы, написанные на языке Си могут обрабатываться компилятором языка С++. В программах на языке С++ можно использовать тексты на языке С и обращаться к библиотечным функциям языка Си. Язык С++ был создан с учетом следующих целей: улучшить язык Си, поддержать абстракцию данных и обеспечить объектно-ориентированное программирование.

Объектно-ориентированное программирование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.

Объектно-ориентированное программирование — это обобщение структурного и модульного программирования для оптимизации создания программ и программных комплексов. ООП позволяет быстро и с минимальным количеством ошибок написать программу, код которой легко понять другим и самому, и, следовательно, изменить при необходимости. Язык программирования является объектно-ориентированным, когда выполняются условия:

  • поддерживаются объекты или абстракции данных, имеющие интерфейс в виде именованных операций и собственные данные с ограничением доступа к ним;

  • объекты относятся к соответствующим типам;

  • типы (классы) могут наследовать атрибуты супертипов (базовых классов);

Три основные положения объектно-ориентированного программирования:

  • инкапсуляция

  • наследование

  • полиморфизм

В языке C++ программист имеет возможность вводить собственные типы данных и определять операции над ними с помощью классов. Классы — это производные структурированные типы, введенные программистом на основе уже существующих типов. Механизм классов позволяет вводить собственные типы данных, т.е. класс задает некоторую структурированную совокупность типизированных данных и позволяет определить набор операций над этими данными. Закрытые данные - члены класса и определения всех функций членов класса входят во внутреннюю используемую часть класса private. Для возможности работы с этим классом часть членов должна быть открытой. Эта часть класса называется интерфейсом (public). В отличие от прототипов функции членов класса, объявленных открытыми, определение этих функций не входит в интерфейс класса. Класс инкапсулирует информацию, связывая вместе члены и методы и обращаясь с ними как с одним целым. Возможность изменения используемой части класса, без опасности возникновения ошибок в программах, использующих этот класс, называется инкапсуляцией. Важность инкапсуляции заключается в том, что каждый класс может изменяться в процессе разработки или даже после ее завершения без нарушения работоспособности остальных частей программы.

Инкапсуляция – это максимально возможная независимость каждого объекта. Внутренняя структура объекта скрыта для всех остальных объектов. Одним из способов организации взаимодействия объектов является обмен сообщениями. Структура этих сообщений не зависит от конкретных объектов, которым или от которых они передаются. Имя функции обрабатывающей одно и то же событие для всех объектов одинаково, но ее реализация зависит от объекта, точнее от класса этого объекта, и определяется во время выполнения программы. Конкретная реализация функции с учетом объекта будет выполняться во время выполнения программы. Это свойство называется полиморфизмом и поддерживается с помощью механизма виртуальных функций. Общая концепция виртуальных функций поддерживает наследование в том, что позволяет двум или более объектам в иерархии наследования иметь методы с одним и тем же объявлением, выполняющие различные задачи.

Объекты разных классов и сами классы могут находиться в отношении наследования, при котором формируется иерархия объектов, соответствующая заранее предусмотренной иерархии классов. Иерархия классов позволяет определять новые классы на основе уже имеющихся. Производный класс получает данные и методы базового класса – и, кроме того, может пополняться собственными компонентами (данными или методами). Наследуемые компоненты не перемещаются в производный класс, а остаются в базовом классе. Сообщение, обработку которого не могут выполнить методы производного класса, автоматически передается в базовый класс.