Файл: Курсовой проект по дисциплине Основы объектноориентированного программирования.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.12.2023
Просмотров: 91
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство науки и высшего образования Российской Федерации
федеральное государственное бюджетное
образовательное учреждение высшего образования
«Российский экономический университет имени Г.В. Плеханова»
Высшая школа кибертехнологий, математики и статистики
Базовая кафедра цифровой экономики института развития информационного общества
КУРСОВОЙ ПРОЕКТ
по дисциплине «Основы объектно-ориентированного программирования»
на тему «Учёт пациентов в больнице с применением ООП»
Выполнил
обучающийся группы
15.11Д-ПИИП05/21б
очной формы обучения
высшей школы кибертехнологий, математики и статистики
Московский Григорий Дмитриевич
Научный руководитель:
ст. преподаватель Иванов Е. А.
Москва – 2022 г.
Содержание
Оглавление
ВВЕДЕНИЕ 3
ГЛАВА 1. ТЕОРИТЕЧЕСКИЕ ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ И АНАЛИЗ ТРЕБОВАНИЙ К ПРОГРАММЕ 5
1.1 Основы объектно-ориентированного программирования 5
1.2 Объектно-ориентированное программирование на языке C++ 9
1.3 Анализ требований к программе 10
ГЛАВА 2. РАЗРАБОТКА ПРОГРАММЫ 12
2.1 Архитектура программы 12
2.2 Реализация классов для учёта пациентов 12
2.3 Демонстрация работы программы 15
ЗАКЛЮЧЕНИЕ 21
СПИСОК ЛИТЕРАТУРЫ 22
ПРИЛОЖЕНИЯ 24
ВВЕДЕНИЕ
Объектно-ориентированное программирование появилось как реакция на очередную фазу кризиса программного обеспечения, когда методы структурное программирование уже не могло справиться с повышающейся сложностью программных продуктов.
Создание объектно-ориентированного программирования имело своей целью решение проблем, присущих процедурному подходу к программированию и алгоритмического подхода к декомпозиции.
Первые программисты писали программы посредством использования машинных кодов. Такой подход был довольно затруднительным, в связи с чем появилась необходимость создать программу, которая преобразовывала бы написанный человеком и понятный ему текст в машинные коды. Такую программу назвали «компилятор», а используемый для написания исходного текста программы язык — «языком программирования». «Assembeler» был первым компилятором.
Впоследствии было создано большое количество различных языков программирования, таких как: C, ADA, FoxPro, Fortran, Basic, Pascal и другие. Следующей же ступенью развития стало объектно-ориентированное программирование. Появились соответствующие данной парадигме языки, например: C++, Object Pascal.
Актуальность темы исследования обосновывается популярностью применения объектно-ориентированного программирования в настоящее время. Цель данной работы – создание программы, реализующей классы для ведения учёта пациентов в больнице.
Для достижения поставленной цели необходимо выполнить следующие задачи:
1. Рассмотреть основы объектно-ориентированного программирования
2. Выполнить анализ требований к разрабатываемой программе
3. Создать программу на языке C++ для ведения учёта пациентов в больнице.
Предметом исследования является применение объектно-ориентированного программирования при разработке программы для учёта пациентов в больнице.
Объектом исследование является создание программы для учёта пациентов в больнице.
При решении поставленной задачи использовался следующие методы исследования: анализ литературы и метод моделирования.
Работа состоит из введения, 2-х глав, заключения, списка литературы, а также приложения.
ГЛАВА 1. ТЕОРИТЕЧЕСКИЕ ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ И АНАЛИЗ ТРЕБОВАНИЙ К ПРОГРАММЕ
1.1 Основы объектно-ориентированного программирования
ООП — это методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного класса (типа особого вида), а классы образуют иерархию на принципах наследуемости.
При разработке приложений с использованием ООП может применяться объектно-ориентированная декомпозиция, тогда как прежде, в случае применения процедурного подхода к программированию, имела место алгоритмическая декомпозиция.
Первым бросающимся в глаза отличием ООП от структурного программирования является использование классов. Класс — это тип, определяемый программистом, в котором объединяются структуры данных и функции их обработки. Конкретные переменные типа данных «класс» называются экземплярами класса, или объектами.
Класс содержит константы и переменные, называемые полями, а также выполняемые над ними операции и функции. Функции класса называются методами (другое название — функции-члены). Предполагается, что доступ к полям класса возможен только через вызов соответствующих методов. Поля и методы являются элементами (членами) класса. Методы, расположенные в открытой части, формируют интерфейс класса и могут свободно вызываться клиентом через соответствующий объект класса. Доступ к закрытой секции класса возможен только из его собственных методов, а к защищенной — из его собственных методов, а также из методов классов-потомков.
Класс — это совокупность свойств, методов и событий. При этом «совокупность» означает, что функционирование класса обеспечивается в совокупности методами, свойствами и событиями. Под объектом понимается экземпляр класса. Объект функционирует как единое целое, реагируя соответствующими методами на соответствующие события класса. Разница между понятиями объекта и класса заключается в том, что посредством класса осуществляется описание какой-либо сущности, что работает как шаблон, основа.
Например, в случае с Delphi, для того, чтобы добавить на форму кнопку, следует объявить класс, описать свойства, методы и события, и, при переносе кнопки на форму, создается экземпляр этой кнопки, т.е. объект.
Немаловажно, что каждый класс должен включать в себя два обязательных метода: создать объект (конструктор), уничтожить объект (деструктор), а процесс создания объекта именуется инициализацией. Эти методы выделяют под свойства объекта память и освобождают ее, а также заполняют свойства значениями по умолчанию.
Существует так называемые права доступа, в зависимости от которых методы и классы видны другим классам. В C++ это private, protected и public. Открытыми для доступа должны быть лишь некоторые возможности класса.
Роль классов в ООП заключается в том, что они выполняют две функции, всегда разделенные до появления объектно-ориентированных технологий: класс — это одновременно и модуль и тип.
Под модулями понимаются структурные единицы, из которых состоит программа. Поскольку модуль всегда рассматривается как синтаксическая концепция, то разбиение них влияет только на форму записи исходных кодов, не определяя их функциональность. Тип — это статистическое описание определенных динамических объектов — элементов данных, обрабатываемых в процессе выполнения программы.
Одним из важнейших достижений в области ООП является методология паттернов проектирования, иногда называемых шаблонами проектирования.
Паттерн — это описание взаимодействия объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте. Паттерны выявляются по мере накопления опыта разработок, когда программист использует одну и ту же схему организации и взаимодействия объектов в разных контекстах. Паттерны предназначены, прежде всего, для инкапсуляции изменений.
Основные свойства ООП
К основным принципам ООП относятся: пакетирование или инкапсуляция; наследование; полиморфизм.
Наследование (или наследственность) — определение объекта и его дальнейшее использование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порождающих объектов.
Как структурная, так и объектно-ориентированная методологии ставят перед собой цель построения дерева иерархии взаимосвязей между объектами. При этом структурная иерархия формируется по простому принципу разделения целого на составляющие, тогда как в случае объектно-ориентированной иерархии отражается наследование свойств вышележащих типов объектов нижележащим типам объектов.
Абстрактными типами называют типы верхних уровней иерархии, которые, как правило, не имеют экземпляров. Конкретными экземплярами зачастую обладают типы нижних уровней иерархии.
Наследственность в ООП — это его основа. Следует понимать, что потомок — класс, от которого происходят другие классы, наследует свойства предка — класса, который происходит либо порожден из другого класса. Следовательно, потомок всегда «знает», какими он обладает свойствами, а предок не может «знать» свойства своего потомка, поскольку не может «знать» те свойства, которые будут добавлены в новый класс. Данный метод наследования и принят в объектно-ориентированных языках.
Именно наследование дает возможность повторно использовать уже существующий код, как отмечается автором. С целью применения существующего кода, программист создает новый класс на базе уже существующих классов. В итоге, наследование выполняет две функции: предотвращение дублирования кода, развитие работы в нужном направлении. Отношения между родительскими классами и его потомками именуется термином «Иерархия наследования».
Под полиморфизмом подразумевается свойство родственных объектов решать схожие по смыслу проблемы разными способами. Например, действие «бежать» свойственно большинству животных. Но каждое из них действует различным образом.
Полиморфизм — присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим. «Полиморфизм» представляет собой способность обладать несколькими формами. В объектно-ориентированной разработке это относится к сущностям (элементам структур данных), способным в процессе выполнения присоединяться к объектам разных типов.
Полиморфизм дает возможность применения одних и тех же функций для решения различных задач и находит свое отражение в том, что под одним именем содержатся разные действия, наполнение которых зависит от типа объекта. Производные одного базового класса считаются полиморфными. Это подразумевает, что им присущи как общие характеристики, так и собственные свойства.
Касательно средств, которые связаны с возможностью реализации полиморфизма, то следует упомянуть следующие виды методов в ООП:
Статические методы класса включаются в код программы в процессе ее компиляции. Таким образом, до запуска программы уже известно, какая процедура будет вызвана в определенной точке.
Виртуальные методы, которые подключаются к основному коду на этапе выполнения программы и дают возможность определить тип и конкретизировать экземпляр объекта в процессе исполнения, а затем вызвать методы этого объекта. Данный механизм обеспечивает полиморфизм и именуется также поздним связыванием.
Полиморфизм дает возможность создавать множественные определения для операций и функций. Какое именно определение будет использоваться, зависит от контекста программы. ООП предоставляет возможности, связанные с полиморфизмом, такие как: шаблоны функций, перегрузка функций, перегрузка операций, использование виртуальных методов, шаблоны классов. Перегрузка операций позволяет применять для собственных классов те же операции, что используются для встроенных типов C++. Виртуальные методы обеспечивают возможность выбрать на этапе выполнения нужный метод среди одноименных методов базового и производного классов. Шаблоны классов позволяют описать классы, инвариантные относительно типов данных.
1.2 Объектно-ориентированное программирование на языке C++
В языке программирования C++ для определения класса используется ключевое слово class, после которого следует название определяемого класса.