Конструктор и деструктор




Введение

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

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

Для написания более сложную программу, необходим был новый подход к программированию. В итоге были разработаны принципы объектно-ориентированного программирования. Объектно-ориентированное программирование позволяет вам разложить проблему на составные части. Каждая составляющая становится самостоятельным объектом, содержащим свои собственные коды и данные, которые относятся к этому объекту. В этом случае вся процедура в целом упрощается, и программист получает возможность оперировать с гораздо большими по объёму программами.

Наиболее распространенным объектно-ориентированным языком программирования, безусловно, является C++. Свободно распространяемые коммерческие системы программирования C++ существуют практически на любой платформе.

В данном документе описывается программа, написанная в соответствии с постановкой задачи по теме " Разработать программу в среде C++, прорисовывающую графический объект и реализующую возможность управляемого перемещения, с использованием основных средств ООП в соответствии с заданием" по дисциплине "Объектно-ориентированное программирование". Была выбрана игра «Тетрис». Данная программа осуществляет вывод на экран случайным образом падение различных фигур. Входными данными является ввод вариантов скорости движения фигур сверху вниз и управление падающими фигурами.

Назначение программы - развлечение играющих, совершенствование их координации и логического мышления. Программа может применяться в качестве игровой на разных типах персональных компьютеров.

История игры Тетрис начинается в июне 1985 года. Тетрис был изобретен Алексеем Пажитновым, а затем был интегрирован на ПК IBM Вадимом Герасимовым. После чего ига Тетрис начала распространяться по всей Москве, а затем уже и по всему миру. Сначала она была доставлена в Венгрию, где венгерские программисты интегрировали Тетрис для Apple II и Commodore 64.

Игра была замечена в мире, и несколько представителей крупных компаний, обращались к автору Тетриса, чтобы купить права на распространение игры. Алексей подписывает контракт с Mirrorsoft UK и Spectrum Holobyte, предоставляя им права на компьютерным версии Тетрис. После того, как первые копии Тетриса для домашних компьютеров были преданны, игра приобрела популярность среди населения и стала самой продаваемой компьютерной игрой в Англии и США в 1988 году.

 


 

Теоретическая часть

Основные понятия объектно-ориентированного программирования

Основополагающей идеей одного из современных подходов к программированию — объектно-ориентированному — является объединение данных и обрабатывающих их процедур в единое целое — объекты.

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

• наследование (Inheritance);

• инкапсуляция (Encapsulation);

• полиморфизм (Polymorphism).

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

Наследование — это процесс, посредством которого один объект может наследовать свойства другого объекта и добавлять к ним черты, характерные только для него. В итоге создается иерархия объектных типов, где поля данных и методов «предков» автоматически являются и полями данных и методов «потомков».

Полиморфизм — это свойство, которое позволяет одно и то же имя использовать для решения нескольких технически разных задач. Полиморфизм подразумевает такое определение методов в иерархии типов, при котором метод с одним именем может применяться к различным родственным объектам. В общем смысле концепцией полиморфизма является идея «один интерфейс — множество методов». Преимуществом полиморфизма является то, что он помогает снижать сложность программ, разрешая использование одного интерфейса для единого класса действий. Выбор конкретного действия в зависимости от ситуации возлагается на компилятор.

Класс

Класс — это структурированный тип, включающий в себя в качестве элементов типизированные данные и функции, применяемые по отношению к этим данным. Таким образом, инкапсуляция (объединение параметров и методов) заложена в составе элементов класса: типизированные данные — это параметры, а методы реализованы через функции. Тип «класс» устанавливается для объектов. Принято говорить: однотипные объекты принадлежат одному классу. Синтаксис объявления класса подобен синтаксису объявления структуры. Объявление начинается с ключевого слова class, за которым следует имя класса. В простейшем случае объявление класса имеет следующий формат:

c l a s s имя

{ тип1 переменная1

тип2 переменная2

public:

функция1;

функция2;

};

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

• private (частный);

• public (общедоступный);

• protected (защищенный).

Режим доступа private обозначает, что соответствующий элемент может использоваться только функциями данного класса. Этот режим доступа устанавливается по умолчанию. Элементы с режимом доступа public доступны в других частях программы.

Интерфейс класса

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

Объект

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

Пример:

Допустим, в программе необходимо работать со странами. Страна – это абстрактное понятие. У нее есть такие характеристики, как название, население, площадь, флаг и другое. Для описания такой страны будет использоваться класс с соответствующими полями данных. Такие страны, как Россия и Украина будут уже объектами (конкретными представителями типа страна).

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

Доступ к элементам объекта аналогичен доступу к полям структуры. Для этого используются операция «.» (точка) при обращении к элементу через имя объекта и операция «->» при обращении через указатель.

<переменная>.<имя члена класса>

<указатель>-><имя члена класса>

Конструктор и деструктор

При создании объектов одной из наиболее широко используемых операций которую вы будете выполнять в ваших программах, является инициализация элементов данных объекта. Чтобы упростить процесс инициализации элементов данных класса, C++ использует специальную функцию, называемую конструктором, которая запускается для каждого создаваемого вами объекта. Также C++ обеспечивает функцию, называемую деструктором, которая запускается при уничтожении объекта.

Конструктор представляет собой метод класса, который облегчает вашим программам инициализацию полей при создании объекта класса. Конструктор имеет такое же имя, как и сам класс. Конструктор не имеет возвращаемого значения (по сути, результатом его работы является ссылка на созданный объект). Каждый раз, когда программа создает объект, C++ вызывает конструктор класса, если подходящий (с соответствующими параметрами) конструктор существует. Конструкторы относят к интерфейсу класса, чтобы с их помощью можно было создавать объекты данного класса из внешней части программы.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-09-18 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: