Файл: Применение объектно-ориентированного подхода при проектировании информационной системы.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 88

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

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

ООП демонстрирует следующие свойства: абстракция данных, инкапсуляция, наследование и полиморфизм.

Абстракция данных

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

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

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


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

Наследование – это возможность определения для базового класса (предка) иерархии производных классов (наследников), в каждом из которых доступны элементы базового класса (их описание становится частью описания производного класса). Иначе говоря, наследование – механизм, посредством которого класс может наследовать элементы другого класса и добавлять к ним свои элементы.

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

Если имеется иерархия классов, то можно рассматривать защищенные (protected) элементы класса, которые доступны для методов своего класса и его наследников.

Одиночное наследование – это случай, когда каждый производный класс может наследовать только от одного базового класса, тогда как множественное наследование – это случай, когда класс может наследовать от двух или более базовых классов. В современных объектно-ориентированных языках, таких как Java и C++, предусмотрено множественное наследование [3.].

Полиморфизм

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

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

Таблица 1 – Различия между структурной и ООП-парадигмой

Структурное программирование

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

Нисходящий подход

Восходящий подход

Фокус на алгоритме и инструкциях

Фокус на объектной модели

Программа делится на подмодули, функции, процедуры

Программа организована с помощью ряда классов и объектов

Функции не зависят друг от друга

Классы могут образовать иерархию

Данные и функции рассматриваются как отдельные объекты

Данные и функции – единое целое

Повторное использование методов невозможно

Возможно повторное использование методов

Используется вызов функции

Сообщения передаются объектам

Абстракция функций

Абстракция данных

Главное – алгоритм

Главное – данные

Инкапсуляция отсутствует

Данные и функциональные возможности – единая сущность

Ключевое отношение – между программистом и программой

Ключевое отношение – между программистом и пользователем


3. Проектирование информационно-справочной системы на объектно-ориентированном языке программирования

Анализ предметной области

Информационно-справочная система (ИСС) – это интегрированный набор компонентов для сбора, хранения и обработки данных, а также для предоставления информации, знаний и цифровых продуктов. Как правило, в информационно-справочных системах нет сложных алгоритмов обработки данных, а целью системы является поиск и выдача информации в удобном виде. Коммерческие фирмы и другие организации полагаются на информационно-справочные системы для осуществления и управления своей деятельностью, взаимодействия со своими клиентами и поставщиками, а также для конкуренции на рынке. Информационно-справочные системы используются для управления цепочками поставок и электронными рынками. Например, корпорации используют информационно-справочные системы для обработки финансовых счетов, управления своими человеческими ресурсами и привлечения потенциальных клиентов с помощью онлайн-акций. Многие крупные компании построены исключительно вокруг информационно-справочных систем. К ним относится Google, компания поисковых систем, которая получает большую часть своего дохода от рекламы по некоторым ключевым словам с помощью поисковых запросов в Интернете. Цифровые товары, такие как электронные книги, видеопродукция и программное обеспечение, а также онлайн-сервисы, такие как игры и социальные сети, поставляются с информационно-справочными системами. Люди полагаются на информационно-справочные системы, обычно использующие Интернет, для ведения большей части своей личной жизни: для общения, учебы, покупок, банковских операций и развлечений.

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


Для достижения поставленной цели в работе была выполнена программа на языке С++ в виде консольного приложения. В главной функции main() реализовано меню пользователя, в котором каждому действию соответствует определенная цифра. Реализованы следующие функции для работы с данными: добавление, редактирование, удаление записи, поиск сотрудников по фамилии, сохранение данных в текстовый файл и ввод данных из файла, вывод на экран.

В разрабатываемом приложении пользователю необходимо:

  1. Ввести записи в информационно-справочную систему с клавиатуры либо занести готовую базу из текстового файла в программу для дальнейшей обработки;
  2. Выбрать в интерактивном меню необходимую операцию для обработки информационно-справочной системы;
  3. После этого с системой можно производить все предложенные операции, в том числе записывать созданные базы в текстовые файлы формата txt.
  4. Для окончания работы приложения выбрать соответствующий пункт меню.

Описание программы

Для функционирования данного программного обеспечения необходим компьютер с установленным на нем средством разработки программного обеспечения MS Visual Studio 2019. В программе могут обрабатываться не только данные, введенные пользователем с клавиатуры, но и текстовые документы – каждая строка такого документа содержит набор атрибутов (данные), описывающих сотрудника (фамилия и имя, знак зодиака, дата рождения). Программное средство также может выгружать созданную информацию в текстовый документ.

Разработанное приложение поддерживается на большинстве операционных систем, среди которых Windows XP, Windows Vista, Windows 7, 8, 10.

Помимо этого, программа корректно работает как на 32-разрядных системах, так и на 64-разрядных системах.

Для положительной работы программы необходимо всего 220 Кб свободной памяти на жестком диске компьютера и 1 Мб оперативной памяти. Исходя расчетных данных, каждый пользователь современного ПК может позволить себе использование разработанного программного продукта.

Запуск программы осуществляется так же, как и запуск любой другой программы в среде Windows, то есть для ее запуска необходимо щелкнуть мышью по пиктограмме запускающего файла.

Входными данными являются поля, из которых создается запись с информацией о сотруднике (фамилия, имя, знак зодиака, дата рождения), выходными – строки созданной информационно-справочной системы.


Руководство пользователя (оператора)

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

Запуск программы осуществляется так же, как и запуск любой другой программы в среде Windows, то есть для ее запуска необходимо щелкнуть мышью по пиктограмме запускающего файла.

Управление работой программы осуществляется путем выбора того или иного пункта меню.

Ввод информации может осуществляться с клавиатуры.

Для выхода из программы (завершения работы программы) необходимо закрыть окно с помощью кнопки «Выход».

Для функционирования данной системы необходим следующий минимальный состав аппаратных средств:

  • ПЭВМ не ниже PentiumIV;
  • Объем ОЗУ не менее 512 Мб;
  • Монитор;
  • Клавиатура;
  • Мышь.

Программа содержит следующий набор команд:

1 – Добавить в конец

2 – Вывод списка

3 – Добавить в начало

4 – Поиск

5 – Поиск по фамилии

6 – Удаление

7 – Редактировать

8 – Сохранить в файл

9 – Считать из файла

0 – Выход

Руководство программиста

Программа решает задачу автоматизации процесса хранения информации о сотрудниках. С помощью данной программы можно вносить новые сведения, удалять устаревшие, просматривать текущие данные. Программу можно использовать на любом типе ПК с установленной системой Windows. Для положительной работы программы необходимо всего 220 Кб свободной памяти на жестком диске компьютера и 1 Мб оперативной памяти.

Программа написана на языке C++с помощью среды разработки MS Visual Studio 2019.

Для хранения данных о сотруднике был спроектирован класс, поля которого позволяют управлять всеми атрибутами сотрудника. Кроме того, реализованы функции-члены для ввода и вывода данных. Исходный код класса приведен в листинге 1.

Листинг 1. Класс ZNAK, описывающий сотрудника некоторого предприятия

class ZNAK

{

public:

string name; // фамилия, имя

string zodiak; // знак зодиака

int birthday[3]; // дата рождения

ZNAK(){}

void inputData()

{

cin.ignore(cin.rdbuf()->in_avail());

string name, surname;

cout << "Введите фамилию: ";

getline(cin, surname);

while (cin.fail() || isEmpty(surname))

{