Федеральное государственное бюджетное образовательное учреждение высшего образования «Чувашский государственный университет имени И. Н. Ульянова»
Факультет информатики и вычислительной техники
Кафедра вычислительной техники
Отчет по курсовой работе
по дисциплине объектно-ориентированное программирование
на тему «Игровая программа “Пятнадцать”»
Работу выполнила: студентка группы ИВТ-41-15 Иванова Алена
Работу проверил: Обломов И.А.
г. Чебоксары, 2017
Оглавление
1. ВВЕДЕНИЕ………………………………………………………………………………………… | |
1.1. Цель курсовой работы…………………………………….………………………. | |
1.2. Основные сведения……………………………………….………………….…. | |
2. развернутое индивидуальное задание……………………………….…… | |
3. ВЫБор метода решения задачи ……………………….……………………….. | |
3.1. Выбор метода хранения данных об игровом поле….……………………….. | |
3.2. Обоснование метода решения задачи………………………………………………….. | |
3.2.1. Анализ задачи……………………………………………….…………………….. | |
3.2.2. Общий алгоритм работы………………………………….……………………. | |
3.2.3. Алгоритм работы программы…………………………………………………… | |
4. Описание классов……………….…………………………………………………………… | |
4.1. Диаграмма классов……………………………………………………………………………… | |
4.2. Структура классов…………………………………………………………………………. | |
5. Общие сведения о программе……………………………………………………………. | |
6. Функциональное назначение……………………………………………………………. | |
7. используемые технические средства…………………………………………………. | |
8. Вызов и загрузка……………………………………………………………………………………… | |
9. выводы………………………………………………………………………………………………………… | |
10. СПИСОК литературы………………………………………………………………………………………. | |
Приложение……………………………………………………………………………………. | |
1. Тестовые данные………………………………………………………………………………………….. | |
2. Тексты программ………………………………………………………………………………………….. |
Введение
Цель курсовой работы
Целью курсовой работы является углубление и закрепление у студентов теоретических знаний, навыков практического применения основных принципов объективно-ориентированных систем: наследования, инкапсуляции, полиморфизма, а также формирование новых взглядов на процессы программирования с учетом абстракции данных.
Основные сведения
Объективно-ориентированное программирование (в дальнейшем сокращено до ООП) возникло относительно недавно, но, не смотря на малый срок, завоевало ведущие позиции в области программирования. Объективно-ориентированная парадигма предлагает новый подход к разработке программного обеспечения, предназначенного для решения большого класса задач. Под парадигмой следует понимать модели разработки и реализации программ. Различные модели приводят к различным приёмам программирования.
Фундаментальная концепция ООП состоит в передаче сообщения объектам. Для этого необходимо, чтобы объекты определялись вместе с сообщениями, на которые они будут реагировать. Это и есть главное отличие ООП от императивного (процедурного) программирования, в котором сначала определяются структуры данных, а затем передаются соответствующим процедурам (функциям), как параметры.
Существует пять основных компонентов объективно-ориентированной парадигмы: объект, общение, класс, наследование, метод. Объективно-ориентированный язык программирования должен обладать свойствами абстракции, инкапсуляции, наследования и полиморфизма. Кроме этих обязательных свойств объективно-ориентированному языку желательно иметь возможности расширения за счёт введения новых классов, повторного использования программных компонентов, параметризации, а также некоторые формы коррекции.
Суть основных компонентов можно раскрыть следующим образом:
1. Объект (Object). Вот несколько определений объекта.
- В наиболее широком смысле это совокупность данных, существующих в машинном представлении как единое целое, допускающее обращение по имени, указателю или ссылке.
- С точки зрения ООП, объект – это сущность, обладающая состоянием и поведением.
- Объект – это инкапсулированная абстракция, которая включает информацию о состоянии и чётко определённое множество протоколов доступа.
2. Сообщение (Message) – это специальный символ, идентификатор или ключевое слово с параметром или без, которое представляет выполняемое объектом действие.
3. Класс (Class). Представляет тип данных, определяемых программистом, который специфицирует как представление объектов этого класса, так и операции, которые можно выполнять с объектами. Во многих случаях класс следует понимать, как абстрактный тип данных.
4. Экземпляр (Instance) – объект, принадлежащий конкретному классу.
5. Метод (Method) – функция, вызываемая в ответ на запрос к объекту некоторого класса совершить какое-либо действие. Можно сказать, что метод определяет реакцию объекта на общение. Совокупность методов класса определяет поведение объектов данного класса.
Несколько слов об основных свойствах ООП:
1. Инкапсуляция (Encapsulation) – сокрытие информации или определение пользователем новых типов данных. Каждый такой тип содержит определение набора значений и операций, которые могут быть выполнены над этими значениями, и образует так называемый абстрактный тип данных.
2. Наследование (Inheritance) – это механизм, позволяющий стоить иерархию типов. Механизм наследования предполагает определение базового типа, а затем использование его для построения производных типов. Причем каждый из производных типов наследует свойства базового типа, включая характеристики (данные) и набор операций (методов, функций).
3. Полиморфизм (Polymorphism) – свойство объекта отвечать на направленный к нему запрос сообразно своему типу.
Новизна ООП позволяет отбросить старые способы мышления и привычки, которые в течение многих лет были присущи традиционным языкам программирования.
Развернутое индивидуальное задание
Вариант 6. Игровая программа «Пятнадцать».
Разработать на языке C++ реализацию компьютерной версии игры «Пятнадцать», придерживаясь принципов объектно-ориентированного программирования. Игра ведется на поле, представляющем собой таблицу размером 4×4, разделенную на 16 ячеек одинакового размера, заполненных числами от 1 до 15, одна ячейка пустая. В свободную клетку можно передвигать соседние с ней заполненные ячейки. Цель игры – двигая ячейки по одной, упорядочить их по номерам, сделав как можно меньше перемещений.
Программа должна обеспечить вывод на экран игрового поля, перемещение числовой ячейки в пустую, если таковая есть в заданном направлении движения. В случае выстраивания чисел по порядку – завершения игры – необходимо предусмотреть вывод сообщения о победе.