Описание объектно-ориентированного подхода
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ
«БАРАНОВИЧСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
ФакультетИнженерный
КафедраИнформационных систем и технологий
Дата регистрации работы в деканате _________
Дата регистрации работы на кафедре _________
Отметка о допуске к защите _________
Оценка за защиту _________
КУРСОВОЙ ПРОЕКТ
по дисциплинеОбъектно-ориентированное программирование
Тема: «Разработка программ на языке программирования Visual C++ c применением объектно-ориентированного подхода»
Исполнитель:
Инженерный, 2 курс, ИСТ-21
Сакута Денис Иванович
Преподаватель:
Рагозик Андрей Сергеевич
Барановичи 2014
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ
«БАРАНОВИЧСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
РЕЦЕНЗИЯ
на курсовой проект
(регистрационный №_____)
Студента Сакуты Дениса Иванович__
Факультет ИНЖЕНЕРНЫЙ__
Курс 2_
Дисциплина Основы алгоритмизации и программирования___
Рецензент Рогозик Андрей Сергеевич _
Дата получения к/р для рецензирования _____
Дата возвращения к/р после рецензирования _
Оценка______________ Подпись преподавателя-рецензента______________
Текст рецензии:
______
__
__
____
__
СОДЕРЖАНИЕ
ВВЕДЕНИЕ. 6
1.ТЕОРЕТИЧЕСКАЯ ЧАСТЬ. 8
1.1 Постановка задачи. 8
1.2 Описание объектно-ориентированного подхода. 8
1.3 Описание предметной области. 11
2. ПРАКТИЧЕСКАЯ ЧАСТЬ. 14
2.1 Описание объектов системы, их свойств и методов. 14
2.2 Результаты тестирования программного продукта. 15
ЗАКЛЮЧЕНИЕ. 21
СПИОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ.. 22
ПРИЛОЖЕНИЕ. 23
ВВЕДЕНИЕ
В последние десятилетия резко возрос интерес к программированию. Это связано с развитием и внедрением в повседневную жизнь цифровых технологий.
Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую "быструю разработку", среди которых можно выделить Visual C++.
Поскольку среда разработки Visual C++ является одной из самых удобных, то она прекрасно подходит для создания приложений для операционной системы Windows.
Основой целью курсовой работы является разработка программы для работы с матрицами реализованной стандартными средствами Visual C++.
Объект исследования - применение среды программирования Visual C++ с целью изучения возможности объектно-ориентированного программирования.
Предмет исследования - среда Visual Studio C++ 2012.
Концепция объектно-ориентированного программирования подразумевает, что основой управления процессом реализации программы является передача сообщений объектам. Поэтому объекты должны определяться совместно с сообщениями, на которые они должны реагировать при выполнении программы. В этом состоит главное отличие ООП от процедурного программирования, где отдельно определённые структуры данных передаются в процедуры (функции) в качестве параметров. Таким образом, объектно-ориентированная программа состоит из объектов – отдельных фрагментов кода, обрабатывающего данные, которые взаимодействуют друг с другом через определённые интерфейсы. Разработка объектно-ориентированных программ состоит из следующих последовательных работ:· определение основных объектов, необходимых для решения данной задачи;· определение закрытых данных (данных состояния) для выбранных объектов;· определение второстепенных объектов и их закрытых данных;· определение иерархической системы классов, представляющих выбранные объекты;· определение ключевых сообщений, которые должны обрабатывать объекты каждого класса;· разработка последовательности выражений, которые позволяют решить поставленную задачу;· разработка методов, обрабатывающих каждое сообщение;· очистка проекта, то есть устранение всех вспомогательных промежуточных материалов, использовавшихся при проектировании;· кодирование, отладка, компоновка и тестирование. Объектно-ориентированное программирование позволяет программисту моделировать объекты определённой предметной области путем программирования их содержания и поведения в пределах класса. Конструкция «класс» обеспечивает механизм инкапсуляции для реализации абстрактных типов данных. Инкапсуляция как бы скрывает и подробности внутренней реализации типов, и внешние операции и функции, допустимые для выполнения над объектами этого типа.Элементы объектно-ориентированного программирования (ООП) появились в начале 70-х годов в языке моделирования Симула, затем получили свое развитие, и в настоящее время ООП принадлежит к числу ведущих технологий программирования. Основная цель ООП, как и большинства других подходов к программированию – повышение эффективности разработки программ. Идеи ООП оказались плодотворными и нашли применение не только в языках программирования, но и в других областях Computer Science, например, в области разработки операционных систем.Появление ООП было связано с тем наблюдением, что компьютерные программы представляют собой описание действий, выполняемых над различными объектами. В роли последних могут выступать, например, графические объекты, записи в базах данных или совокупности числовых значений. В традиционных методах программирования изменение данных или правил и методов обработки часто приводило к необходимости значительного изменения программы. Всякое существенное изменения программы – это большая неприятность для программиста, так как при этом увеличивается вероятность ошибок, вследствие чего возрастает время, необходимое для «доводки» программы. Использование ООП позволяет выйти из такой ситуации с минимальными потерями, сводя необходимую модификацию программы к её расширению и дополнению.
Изучение идей и методов ООП может существенно упростить разработку и отладку сложных программ [2].
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Постановка задачи
Разработать класс для выполнения операций с матрицами на языке программирования Visual С++.
В программе должна быть предоставлена возможность указания размерности матрицы и заполнения её несколькими способами (вручную, из файла, случайными числами).
Необходимо определиться непосредственно с доступными пользователю действиями над матрицами:
· Сложение
· Вычитание
· Умножение
· Вычисление нормы
· Сохранение в файл
Описание объектно-ориентированного подхода
Определение классов и объектов — одна из самых сложных задач объектно-ориентированного проектирования.
Класс — это множество объектов, связанных общностью структуры и поведения. Любой объект является экземпляром класса.
Основополагающей идеей объектно-ориентированного подхода является объединениеданных идействий, производимых над этими данными, в единое целое, которое называетсяобъектом.
Объект имеет определённые свойства. Состояние объекта задаётся значениями его признаков. Объект «знает», как решать определённые задачи, то есть располагает методами решения. Программа, написанная с использованием ООП, состоит из объектов, которые могут взаимодействовать между собой.Ранее отмечалось, что программная реализация объекта представляет собой объединение данных и процедур их обработки. Переменные объектного типа называют экземплярами объекта.В отличие от типа «запись», объектный тип содержит не только поля, описывающие данные, но также процедуры и функции, описания которых содержится в описании объекта. Эти процедуры и функции называют методами.Методам объекта доступны его поля. Следует отметить, что методы и их параметры определяются в описании объекта, а их реализация даётся вне этого описания, в том мест программы, которое предшествует вызову данного метода. В описании объекта фактически содержаться лишь шаблоны обращения к методам, которые необходимы компилятору для проверки соответствия количества параметров и их типов при обращении к методам.Если необходимо считать какие-либо данные объекта, нужно вызвать соответствующий метод, который выполнит считывание и возвратит требуемое значение.
Прямой доступ к данным невозможен. Данные сокрыты от внешнего воздействия, что защищает их от случайного изменения. Говорят, что данные и методыинкапсулированы.
Инкапсуляция является важнейшим свойством объектов, на котором строится объектно-ориентированное программирование. Инкапсуляция заключается в том, что объект скрывает в себе детали, которые несущественны для использования объекта. В традиционном подходе к программированию с использованием глобальных переменных программист не был застрахован от ошибок, связанных с использованием процедур, не предназначенных для обработки данных, связанных с этими переменными.Наследование – это ещё одно базовое понятие объектно-ориентированного программирования. Наследование позволяет определять новые объекты, используя свойства прежних, дополняя или изменяя их. Объект-наследник получает все поля и методы «родителя», к которым он может добавить свои собственные поля и методы или заменить («перекрыть») их своими методами.Привлекательность наследования заключается в том, что если некий объект был уже определён и отлажен, он может быть использован и в других программах. При этом может оказаться, что новая задача отличается от предыдущей, и возникает необходимость некоторой модификации как данных, так и методов их обработки. Программисту приходится решать дилемму – создания объектов заново или использовать результаты предыдущей работы, применяя механизм наследования. Первый путь менее эффективен, так как требует дополнительных затрат времени на отладку и тестирование. Во втором случае часть этой работы оказывается выполненной, что сокращает время на разработку новой программы. Программист при этом может и не знать деталей реализации объекта-родителя. Наследование позволяет создавать иерархические, связанные отношениями подчинения, структуры данных [2].Виртуальный метод (виртуальная функция) — в объектно-ориентированном программировании метод (функция) класса, который может быть переопределён в классах-наследниках так, что конкретная реализация метода для вызова будет определяться во время исполнения. Таким образом, программисту необязательно знать точный тип объекта для работы с ним через виртуальные методы: достаточно лишь знать, что объект принадлежит классу или наследнику класса, в котором метод объявлен.
Виртуальные методы — один из важнейших приёмов реализации полиморфизма. Они позволяют создавать общий код, который может работать как с объектами базового класса, так и с объектами любого его класса-наследника. При этом базовый класс определяет способ работы с объектами и любые его наследники могут предоставлять конкретную реализацию этого способа.
Переменные объектного типа могут быть динамическими, то есть размещаться в памяти только во время их использования. Для работы с динамическими объектами используются расширенный синтаксис процедур New и Delete. Обе процедуры в этом случае содержат в качестве второго параметра вызов конструктора или деструктора для выделения или освобождения памяти переменной объектного типа.Полиморфизм заключается в том, что одно и то же имя может соответствовать различным действиям в зависимости от типа объекта. Полиморфизм напрямую связан с механизмом позднего связывания. Решение о том, какая операция должна быть выполнена в конкретной ситуации, принимается во время выполнения программы.Когда существующая операция, например = или +, наделяется возможностью совершать действия над операндами нового типа, говорят, что такая операция являетсяперегруженной. Перегрузка представляет собой частный случай полиморфизма и является важным инструментом ООП [1].Конструктор – функция-член класса, определяющая способ создания объекта. Имя конструктора должно совпадать с именем класса.
Существует несколько форм конструктора. Наиболее часто используется конструктор с параметрами. Эти параметры используются для одновременной инициализации создаваемых объектов.
Деструктор – специальная функция класса, которая отвечает за уничтожение объекта. Имя деструктора совпадает с именем класса, перед которым ставится символ «тильда» - ~ [4].
Типичная программа на языке C++ состоит из совокупности объектов, взаимодействующих между собой посредством вызова методов друг друга. Структура программы на C++ приводится на рис. 1.1.
Рисунок 1.1 – Структура программы