Астероиды на C++

Автор работы: Пользователь скрыл имя, 08 Марта 2014 в 18:14, курсовая работа

Описание работы

C++ — это попытка решения разработчиками языка С задач объектно-ориентированного программирования (Object Oriented Programming, OOP). Построенный на твердом фундаменте С, C++ помимо OOP поддерживает множество других полезных инструментов, не жертвуя при этом ни мощью, ни элегантностью, ни гибкостью С. C++ уже стал универсальным языком для программистов всего мира, языком, на котором будет написано следующее поколение высокоэффективного программного обеспечения. Это единственный серьезный язык, который просто обязан знать любой уважающий себя профессиональный программист.

Содержание работы

Введение
1. Теоретическая часть
1.1 Объектно –ориентированное программирование
1.2 Объект
1.3 Класс
1.4 Инкапсуляция
1.5 Наследование
1.6 Полиморфизм
2. Практическая часть
2.1 Постановка задачи
2.2 Интерфейс программы
Заключение
Список используемой литературы

Файлы: 1 файл

Курсовая ООП.doc

— 152.50 Кб (Скачать файл)

 

 

СОДЕРЖАНИЕ

 

  Введение

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

           1.1 Объектно  –ориентированное программирование

           1.2 Объект

           1.3 Класс

           1.4 Инкапсуляция

           1.5 Наследование

           1.6 Полиморфизм

    2. Практическая часть

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

           2.2 Интерфейс  программы

   Заключение

   Список используемой литературы

   Приложение. Листинг программы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                                     Введение

 

По мере развития компьютерной техники развивались также и методика, и технология программирования. Сначала возникает командное и операторное программирование, в 1960-х гг. бурно развивается структурное программирование, появляются линии логического и функционального программирования, а в последнее время — объектно-ориентированное и визуальное программирование. Задача, которую следует ставить при первоначальном изучении программирования, — освоение основ структурной методики программирования.

C++ — это попытка решения разработчиками языка С задач объектно-ориентированного программирования (Object Oriented Programming, OOP). Построенный на твердом фундаменте С, C++ помимо OOP поддерживает множество других полезных инструментов, не жертвуя при этом ни мощью, ни элегантностью, ни гибкостью С. C++ уже стал универсальным языком для программистов всего мира, языком, на котором будет написано следующее поколение высокоэффективного программного обеспечения. Это единственный серьезный язык, который просто обязан знать любой уважающий себя профессиональный программист.

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

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

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

        Первым  языком программирования, в котором  были предложены принципы объектной  ориентированности, была Симула. В  момент своего появления (в 1967 году), этот язык программирования предложил поистине революционные идеи: объекты, классы, виртуальные методы и др., однако это всё не было воспринято современниками как нечто грандиозное. Тем не менее, большинство концепций были развиты Аланом Кэйем и Дэном Ингаллсом в языке Smalltalk. Именно он стал первым широко распространённым объектно-ориентированным языком программирования.

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

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

        Наличие  инкапсуляции достаточно для  объектности языка программирования, но ещё не означает его объектной  ориентированности — для этого  требуется наличие наследования.

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

      

 

         По мнению Алана Кея, создателя  языка Smalltalk, которого считают одним  из «отцов-основателей» ООП, объектно-ориентированный  подход заключается в следующем  наборе основных принципов (цитируется  по вышеупомянутой книге Т. Бадда).

 

 

    1. Всё является объектом.
    2. Вычисления осуществляются путём взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие. Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия.
    3. Каждый объект имеет независимую память, которая состоит из других объектов.
    4. Каждый объект является представителем класса, который выражает общие свойства объектов (таких, как целые числа или списки).
    5. В классе задаётся поведение (функциональность) объекта. Тем самым все объекты, которые являются экземплярами одного класса, могут выполнять одни и те же действия.
    6. Классы организованы в единую древовидную структуру с общим корнем, называемую иерархией наследования. Память и поведение, связанное с экземплярами определённого класса, автоматически доступны любому классу, расположенному ниже в иерархическом дереве.

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

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

 

 

 

1.2 Объект

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

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

    • абстракция понятия: объект — это модель какого-то понятия предметной области;
    • абстракция действия: объект объединяет набор операций для выполнения какой-либо функции;
    • абстракция виртуальной машины: объект объединяет операции, которые используются другими, более высокими уровнями абстракции;
    • случайная абстракция: объект объединяет не связанные между собой операции.

1.3 Класс

              Класс (class) - это группа данных и методов(функций) для работы с этими данными. Это шаблон. Объекты с одинаковыми свойствами, то есть с одинаковыми наборами переменных состояния и методов, образуют класс.

             Структура класса.

Class  имя_класса  [ от кого унаследован]

{

private:

. . . . . . .

public:

. . . . . . .

protected:

. . . . . . .

}

            Класс должен иметь уникальное  имя. Если он наследован из  другого, то надо указать имя  родительского(их) класса(ов). Обычно  у класса бывают три раздела: private, public, protected. Указание на начало раздела private часто опускается и, если не объявлено начало ни одного из других разделов описания класса, считается, что данные относятся к разделу private.

           Методы  в классе могут быть объявлены  как дружественные (friend) или виртуальные (virtual). Иногда встречается объявление перегружаемых (overload) функций.

           Private(частный) раздел описания класса обычно  находится вначале описания класса  и содержит данные, доступ к  которым закрыт из внешнего  мира. Это и есть та самая "строго охраняемая" зона класса, доступ к которой можно получить только из методов самого класса. Она скрыта от внешнего мира глухой непробиваемой стеной и доступ к данным раздела private обеспечивается только с помощью, специально описанных в других разделах, методов. Скрытые в этом разделе данные также не доступны для всех производных классов.

             Protected(защищенный) - раздел описания  класса содержит данные и методы, доступ к которым закрыт из  внешней среды, но они напрямую  доступны производным классам.

             Таким образом, раздел protected используется  для описания данных и методов, которые будут доступны только  из производных классов. А в  производных классах эти данные  и методы воспринимаются, как  если бы они были описаны  в самом производном классе.

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

            Методы (methods)- это функции (процедуры), принадлежащие классу.

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

1.4 Инкапсуляция

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

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

         Можно сказать, что инкапсуляция подразумевает  под собой скрытие данных (data hiding), что позволяет защитить эти  данные.

        Переменные состояния объекта скрыты от внешнего мира. Изменение состояния объекта (его переменных) возможно ТОЛЬКО с помощью его методов(операций).

        Это существенно  ограничивает возможность введения  объекта в недопустимое состояние  и/или несанкционированное разрушение этого объекта.

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

Информация о работе Астероиды на C++