ВВЕДЕНИЕ
Объектно-ориентированное программирование (ООП) — подход к программированию, при котором основными концепциями являются понятия объектов и классов.
Необходимо обратить внимание на следующие важные части этого определения: 1) объектно-ориентированное программирование использует в качестве основных логических конструктивных элементов объекты, а не алгоритмы; 2) каждый объект является экземпляром определенного класса; 3) классы образуют иерархии. Программа считается объектно-ориентированной, только если выполнены все три указанных требования.
Класс — это определяемый разработчиком тип данных, описывающий устройство объектов, их поведение и способ представления. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области решаемой задачи.
В данном проекте разработка классов производится для реализации шифрования и дешифрования с помощью алгоритма моноалфавитной замены
Если каждой букве алфавита поставлена в соответствие буква алфавита замены, то такой шифр называется шифром простой однобуквенной замены.
ROT1, шифр Цезаря и азбука Морзе относятся к одному и тому же типу — моноалфавитной замене, а это означает, что каждая буква алфавита заменяется в соответствии с ключом, другой буквой или символом.
В отличие от большинства других шифров, код Морзе не используется для сокрытия сообщений.
Получение открытого сообщения по шифрованному без заранее известного ключа называется вскрытием шифра, в отличие от расшифрования – когда ключ известен. Во многих случаях вскрытие шифра возможно.
Целью данного курсового проекта является закрепление и углубление навыков использования объектно-ориентированного подхода к программированию в заданной сфере применения.
Для достижения поставленной выше цели, ставится задача, используя интегри́рованную среду разрабо́тки Visual Studio и средства объектно-ориентированного языка Visual C++, разработать программу шифрования и дешифрования с помощью алгоритма моноалфавитной замены.
В теоретической части проекта рассматривается постановка задачи, строится математическая модель объекта шифрования/дешифрования и разрабатывается алгоритм решения задачи.
В практической части проекта описываются свойства и методы объектов, основные модули программы, результаты её тестирования, а также анализируются достигнутые результаты.
Вариант 24.
Разработка класса для реализации шифрования и дешифрования с помощью алгоритма моноалфавитной замены на языке программирования Visual С++.
Программный продукт должен реализовать заданную тему и обладать графическим интерфейсом пользователя: разработаем настольное приложение (desktop application) с использованием MFC, работающее в среде Windows –создадим его на базе диалога.
Так как задачей данного проекта является разработка класса, рассмотрим особенности объектно-ориентированного подхода в связи с понятием класс.
Важнейшие концепции объектно-ориентированного программирования (инкапсуляция, наследование, полиморфизм) отражены в новом типе данных – class, который был разработан в С++,
Объектно-ориентированное программирование характеризуется тремя основными свойствами:
1. Инкапсуляция – это комбинирование записей с процедурами и функциями, манипулирующими полями этих записей. С данным термином тесно связаны понятия сокрытия информации и хорошо разработанного интерфейса.
Классы должны общаться к своим свойствам преимущественно через свои методы. Эти методы образуют интерфейс между классом и программой. После выполнения описания класса для программиста важно, чтобы он мог использовать класс только через его интерфейс. О корректной обработке вызова функции и корректном поведении класса заботится сам класс.
2. Наследование. Определение класса и его дальнейшее использование для построения иерархии порожденных классов с возможностью для каждого порожденного класса, относящегося к иерархии, доступа к коду и данным всех порождающих классов.
3. Полиморфизм. Присваивание действию одного имени, которое затем совместно используется вниз и вверх по иерархии классов, причем каждый класс иерархии выполняет это действие способом, именно ему подходящим.
Классы служат для того, чтобы свойства (данные-члены) и методы для обработки этих свойств (функции-члены) объединить в один тип данных. Классы могут предоставить различные права доступа к отдельным своим членам, они могут создавать иерархии классов посредством наследования.
Необходимо выполнить следующие этапы разработки:
В качестве объектов для создания классов будем использовать исходный текст, шифрованный текст и таблицу замены.
При разработке приложения будем использовать MFC (Microsoft Foundation Classes) – библиотеку классов языка C++. Создаём приложение, основанное на диалоге (Dialog Based Application) – это приложение в виде единого диалогового окна, с помощью которого может быть осуществлен доступ ко всем функциональным возможностям.[3]
CASE (англ. Computer-Aided Software Engineering – набор инструментов и методов программной инженерии для проектирования программного обеспечения, который помогает обеспечить высокое качество программ, отсутствие ошибок и простоту в обслуживании программных продуктов.Также под CASE понимают совокупность методов и средств проектирования информационных систем с использованием CASE-инструментов.
UML (англ. Unified Modeling Language — унифицированный язык моделирования) — язык графического описания для объектного моделирования в области разработки программного обеспечения, моделирования бизнес-процессов, системного проектирования и отображения организационных структур.
Моделирование – создание диаграммы классов) – будем проводить с применением CASE-инструмента StarUML.[4]
Разработка логической модели системы в виде диаграммы классов играет важную роль в объектно-ориентированном программировании. Диаграмма классов (class diagram) служит для представления статической структуры модели системы в терминологии классов объектно-ориентированного программирования. Диаграмма классов может отражать, в частности, различные взаимосвязи между отдельными сущностями предметной области, такими как объекты и подсистемы, а также описывать их внутреннюю структуру и типы отношений.
Диаграмма классов представляет собой граф, вершинами которого являются элементы типа «классификатор», связанные различными типами структурных отношений. Диаграмма классов может также содержать интерфейсы, пакеты, отношения и даже отдельные экземпляры, такие как объекты и связи.
Рассмотрим основные элементы диаграмм классов. процесс визуального
Объект – это некоторая сущность реального мира или концептуальная (абстрактная) сущность. Объект имеет четко определённые границы и значение для системы и характеризуется состоянием, поведением и индивидуальностью.
СКРИНШОТЫ РАБОТЫ ПРОГРАММЫ



В результате выполнения данного проекта был получен опыт практического использования объектно-ориентированного подхода в создании законченного программного продукта для шифрования сообщений. Программа написана на Visual C++, в среде Visual Studio, с использованием MFC.
ООП позволяет разложить проблему на связанные между собой задачи. Каждая проблема становится самостоятельным объектом, содержащим свои собственные коды и данные, которые относятся к этому объекту. В этом случае исходная задача в целом упрощается, и программист получает возможность оперировать с большими по объему программами. Три основных понятия ООП остаются неизменными: наследование, инкапсуляция, полиморфизм.
Название "Объектно-ориентированное программирование" говорит само за себя. Центром внимания ООП является объект. Понятие объекта в ООП во многом приближено к привычному определению понятия объекта в реальном мире. Объект – это совокупность отдельных информационных элементов и функций, которые им оперируют. Объект состоит из следующих трех частей: имя объекта; состояние (переменные состояния); методы (операции). Эти методы определяют – как объект взаимодействует с окружающим миром.
Возможность управлять состояниями объекта посредством вызова методов в итоге и определяет поведение объекта. Эту совокупность методов часто называют интерфейсом объекта.
Таким образом, объектно-ориентированное программирование – это программирование, сфокусированное на данных, причем данные и поведение неразрывно связаны. Вместе данные и поведение представляют собой класс, а объекты являются экземплярами класса. ООП рассматривает вычисления как моделирование поведения.
Шифрование – важнейшее средство обеспечения безопасности. Механизмы шифрования помогают защитить конфиденциальность и целостность информации, идентифицировать источник информации.
Криптография – наука о сокрытии информации с помощью шифрования.
Основная цель объектно-ориентированного программирования, как и большинства других подходов к программированию – повышение эффективности разработки программ.
Идеи объектно-ориентированного программирования оказались плодотворными, и нашли применение не только в языках программирования, но и в других областях, например, в информационной безопасности, где с самого начала фигурируют понятия объекта и субъекта.
Таким образом, объектно-ориентированный подход - универсальное средство борьбы со сложностью современных информационных систем