Автор: Пользователь скрыл имя, 02 Декабря 2011 в 18:34, курсовая работа
Шифрование — способ преобразования открытой информации в закрытую и обратно. Применяется для хранения важной информации в ненадёжных источниках или передачи её по незащищённым каналам связи. Согласно ГОСТ 28147-89, шифрование подразделяется на процесс зашифровывания и расшифровывания.
ВВЕДЕНИЕ 2
1. ОСНОВНЫЕ ПОНЯТИЯ ЗАЩИТЫ ИНФОРМАЦИИ 4
1.1. Принципы ООП 5
2. АНАЛИЗ ТЕХНИЧЕСКОГО ЗАДАНИЯ И ПОСТАНОВКА ЗАДАЧИ ПРОЕКТИРОВАНИЯ. 12
2.1. Постановка задачи. 12
2.2. Разработка экранных форм и алгоритма программы 13
2.3. Описание программы. 14
Заключение. 16
Список использованной литературы. 17
Приложение 1. 18
Begin
. . .
End;
Var
01, 02, 03: TSimpleObject; {создаем три объекта – то есть набора полей}
xl,yl: integer;
Begin
. . .
01.SetXY(10,20) ; {устанавливаем значения полей первого объекта}
02.SetXY(ll,22) ; { устанавливаем значения полей второго объекта }
03.SetXY (-10, 0) ; { устанавливаем значения полей третьего объекта }
02.GetXY(xl,yl); {xl,yl примут значения 11,22, т.к. работаем с объектом 02}
End;
Как видно из примера, указатель Self явно используется крайне редко, хотя и постоянно подразумевается.
Классы могут быть описаны либо в секции интерфейса модуля, либо на верхнем уровне вложенности секции реализации. Не допускается описания классов внутри процедур и других блоков кода.
Разрешено опережающее объявление классов, как в следующем пример
Type
TFirstObject = class;
TSecondObject = class (TOsject);
First: TFirstOsject;
. . .
end;
TFirstObject = class (TObject)
. . .
end;
Чтобы использовать новый тип в программе, нужно, как минимум, объявить переменную этого типа, которая как уже было сказано называется экземпляром класса или объектом:
Var
AMyObject: TMyObject;
Вызов методов класса и доступ к его полям осуществляется аналогично доступу к полям записи. Например:
AMyObject.Field:=10;
Writeln(AMyObject.
Между терминами класс и объект существует четка граница: класс - это описание, объект - то, что создано в соответствии с этим описанием.
Рассмотрим
следующий пример: стек, который
является широко распространенным в
программировании объектом. Стек, как
известно можно организовать либо на
основе динамического списка, либо
путем использования
TObStack= class(TObject)
procedure InStack(Elem:TElem);
function OutStack(var Elem:TElem):boolean;
. . .
End;
Для использования данного класса программисту достаточно этих двух методов, то как именно организованы данные значения не имеет.
Если сравнить описание этих процедур с теми, которые были без использования ООП, то будет видно различие. В том случае у процедур будет еще параметры отвечающие за организацию данных. В случае использования массива нужны переменная, указывающая на сам массив и номер элемента, соответствующего вершине стека:
procedure InStack(var Stack:TStack,var TopStack:integer, Elem: TElem);
function OutStack(var Stack:TStack,var TopStack:integer, var Elem: TElem) : boolean;
При использовании динамики:
procedure InStack(var TopStack:TTopStack, Elem:TElem);
function OutStack(var TopStack:TTopStack, var Elem: TElem) :boolean;
В
этих случаях для использования
стека программисту нужно: во-первых
самому организовать структуры данных,
во-вторых, вызывать подпрограммы работы
со стеком с нужными переменными
(если например стеков несколько). Таким
образом никакой независимости
от реализации стека у использующей
ее программы нет.
Описание объекта не является полным, отсутствуют элементы, отвечающие за создание и уничтожение объекта. .
Описание объекта также не является полным.
Использование:
Var
DSStack:TDObStack;
SStack:TSObStack;
. . .
A:TElem;
Begin
. . .
DStack.InStack(a);
SStack.InStack(a);
. . .
if not (DStack.OutStack(a)) writeln(‘Динамический стек пуст’);
if not (SStack.OutStack(a)) writeln(‘Статический стек пуст’);
. . .
End;
Программисту,
использующему любой из этих объектов
достаточно создать один или несколько
экземпляров объекта (как именно
рассмотрим далее) и вызывать нужный
метод. Особенности реализации стека
при этом остаются скрытыми и не
оказывают влияния на написание
программы. Связь между конкретным
набором данных (конкретным стеком
с занесенными в него элементами)
и вызываемыми методами, как уже
было сказано ранее будет
Правило
инкапсуляции утверждает, что для
обеспечения надежности нежелателен
прямой доступ к полям объекта: чтение
и обновление их содержимого должно
производиться вызовом
Целью данной курсовой работы является создание программы шифрования и дешифрования текстового файла в среде Delphi.
Программа
должна обладать интуитивно понятным
интерфейсом и иметь
Для удобства и практичность необходимо создать функцию чтения из файла, а так же запись уже закодированного текста в файл.
«Borland Delphi» может использовать объекты, содержащее множество однотипных элементов, которые называются массивами. Массив – это формальное обледенение нескольких однотипных объектов (чисел, символов, строк и т.п.), рассматриваемое как единое целое. Для хранения содержимого типизированного файла и обработки удобно использовать массивы с элементами типа запись. Удобство массивов заключается в том, что можно обращаться к отдельному элементу массива по номеру. Дополнительное удобство привносят динамические массивы, отличительной особенностью которых является возможность динамического изменения размерности массива, то есть динамическое выделение или освобождение памяти под требуемое в данный момент количество элементов массива.
Поскольку данная программа является приложением Windows, то для ее реализации будем использовать стандартный подход при написании программ под Windows с использованием графического интерфейса. Так отдельно создадим форму с визуальными компонентами, для различных визуальных компонент сопоставляем процедуры – обработчики. Далее, как только происходит событие на каком-то из визуальных компонент, (щелчок мыши, нажатие на кнопку или пункт меню), операционная система посылает приложению соответствующее сообщение, и запускается соответствующий обработчик именно для этого события. Тогда решение задачи можно разбить на 3 этапа:
Программа должна быть реализована с графическим интерфейсом пользователя в среде Borland Delphi и должна выполнять следующие функции:
Как
было описано выше, дня начала необходимо
разработать внешний вид окна
программы. Внешне окно будет разделено
на три функциональные части: в двух из
них будет отображаться текст(исходный
и прошедший кодировку), а в правой части
будут располагаться вкладки выбора и
функциональные кнопки. Так же в верхней
части окна будет располагаться традиционная
для Windows – приложений строка меню.
Рис.1 Внешний вид окна программы.
Таблица 1.1. – Объекты экранной формы, отображенной на рис.1.
Имя | Назначение |
RichEdit1 | Поле ввода исходного сообщения |
RichEdit2 | Поле вывода сообщения после кодировки |
RadioButton1- RadioButton8 | Пункт
выбора способа шифрования\ |
Button1 | Кнопка запуска процесса |
TabSheet1 | Вкладка выбора действий |
TabSheet2 | Вкладка выбора действий |
TabSheet3 | Вкладка выбора действий |
После формирования интерфейса и написания кода программы (приложенного к данной курсовой работе в Приложении 1). На выходе мы получаем исполняемый файл DeCoder.exe размером 602112 байт.
При
запуске данного файла
После этого необходимо выбрать наиболее подходящий способ шифрования и нажать кнопку «Начать»
В нижней части окна появится зашифрованное сообщение, которое можно сохранить в файл.
В меню «Дополнительно» содержится информация о разработчике программы.
Данный курсовой проект был выполнен в полном соответствии поставленному заданию и отлажен в среде DELPHI 7.0. В ходе выполнения курсовой работы была разработана программа для шифрования файлов и текстовых сообщений с графическим интерфейсом.
В дальнейшем можно доработать программу, расширив ее возможности в виде поддержки файлов других форматов, включая документы, созданные в последних версиях пакета программ Microsoft Office.
В ходе выполнения данной курсовой работы я научился использовать встроеные функции, освоил работу с компонентами Delphi, улучшил умение работать в визуальной среде разработки, закрепил навыки работы с компонентами.