Добавлен: 26.10.2023
Просмотров: 43
Скачиваний: 5
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
, как ваш класс будет использоваться другими программистами (или вами), и после разработки и реализации он должен, как правило, оставаться постоянным. Вы можете добавлять что-то в интерфейс, но как только вы начали использовать класс, будет трудно удалить функции из общего интерфейса (если только они не используются и не были необходимы в первую очередь).
Но это не означает, что вы должны включать больше функциональности в своем классе, только чтобы позже решить, что удалить из интерфейса. Если вы так делаете, вы просто усложняете использование класса. Люди будут задавать вопросы вроде: «Почему есть четыре способа сделать это? Какой из них лучше? Какой способ выбрать мне?» Как правило, легче делать все просто и обеспечить один способ, если нет веских причин предложить вашему классу несколько методов с одинаковой функциональностью.
В то же время, только потому, что добавление методов для открытого интерфейса (вероятно) ничего не испортит, это не означает, что вы должны начинать с крошечного интерфейса. Прежде всего, если кто-нибудь решит унаследоваться от вашего класса, а в последствии вы выберете функцию с тем же именем, то возникнет путаница. Во-первых, если вы не объявите функцию виртуальной, то объект подкласса выберет функцию в зависимости от статического типа указателя. Это может создать проблемы. Кроме того, если вы объявите ее виртуальной, то у вас, возможно, возникнет проблема с тем, что она может предоставлять другую функциональность, отличную от оригинальной реализации этой функции. И, наконец, вы просто не можете добавлять чисто виртуальные функции классу, который уже используется, потому что никто из унаследовавших от него не будет реализовывать эту функцию.
Открытый интерфейс должен оставаться постоянным как можно дольше. В самом деле, хороший подход к проектированию классов — написать интерфейс до реализации, потому что это то, что определяет, как ваш класс взаимодействует с остальным миром (что более важно для программы в целом, чем фактическая реализация класса). Кроме того, если вы сначала пишете интерфейс, вы можете увидеть, как класс будет работать с другими классами, прежде чем вы на самом деле погрузитесь в детали реализации.
Таблица 3 – Табличные компоненты программы
Отладка и тестирование программного продукта это один из самых важных этапов разработки, без которого не представляется возможным написание законченного, правильно работающего приложения.
Под отладкой программы понимается процесс испытания работы программы и исправления обнаруженных при этом ошибок.
Проверка на компьютере правильности алгоритма производиться с помощью тестов.
Тест – это конкретных вариант значений исходных данных, для которого известен ожидаемый результат.
Отладка программы – это процесс поиска и устранения ошибок в программе, который производится после её прогона на компьютере.
Тестирование – это процесс проверки правильности работы всей программы или ее составных частей.
Цель тестирования программы – поиск ошибок, которые могут препятствовать работе программы.
4 Руководство пользователя
Руководство пользователя — документ, назначение которого — предоставить людям помощь в использовании некоторой системы.
1) Запуск программы
Для того чтобы открыть программу нужной запустить файл “project1.сpp;"
2)Добавление и изменение букв местами
Заключение
В своей курсовой работе я показал некоторые возможности языка С++ на примере написания таблицы позволяющей менять соседние буквы местами. Это лишь малая доля тех возможностей, какие предоставляет этот язык. Различия с Паскалем очевидны и довольно существенны, причем эти отличия только усложняют работу программиста. Но функциональность C++ куда больше, и вариативность написания многих частей программы сводится к нескольким способам. C++ позволяет создать сложные приложения, не только работая в консольном режиме, но и в графическом. Многие приложения в Windows написаны именно на этом языке, поэтому о нем можно говорить как об очень мощном языке программирования.
В ходе написания курсового проекта были подробно рассмотрены профессиональные задачи.
В результате выполнения курсовой работы была разработана программа для «Перестановки двух соседних букв местами с помощью шифра»
Данная программа может пригодиться в образовательных учреждениях.
Программа была разработана на языке С++ в объектно-ориентированной среде программирования Visual Studio Code.
Список использованных источников:
Приложение А –
Листинг программы
(Обязательное)
class Transposition
{
private int[] key = null;
public void SetKey(int[] _key)
{
key = new int[_key.Length];
for (int i = 0; i < _key.Length; i++)
key[i] = _key[i];
}
public void SetKey(string[] _key)
{
key = new int[_key.Length];
for (int i = 0; i < _key.Length; i++)
key[i] = Convert.ToInt32(_key[i]);
}
public void SetKey(string _key)
{
SetKey(_key.Split(' '));
}
public string Encrypt(string input)
{
for (int i = 0; i < input.Length % key.Length; i++)
input += input[i];
string result = "";
for (int i = 0; i < input.Length; i += key.Length)
{
char[] transposition = new char[key.Length];
for (int j = 0; j < key.Length; j++)
transposition[key[j] - 1] = input[i + j];
for (int j = 0; j < key.Length; j++)
result += transposition[j];
}
return result;
}
public string Decrypt(string input)
{
string result = "";
for (int i = 0; i < input.Length; i += key.Length)
{
char[] transposition = new char[key.Length];
for (int j = 0; j < key.Length; j++)
transposition[j] = input[i + key[j] - 1];
for (int j = 0; j < key.Length; j++)
result += transposition[j];
}
return result;
}
Приложение Б
Интерфейс программы
(Обязательное)
Рисунок Б1 - Интерфейс программы
Рисунок Б2- Пример решения
Рисунок Б3 Пример решения
Рисунок Б4 Пример решения
Рисунок Б5 Пример решения
Рисунок Б6 Пример решения
Но это не означает, что вы должны включать больше функциональности в своем классе, только чтобы позже решить, что удалить из интерфейса. Если вы так делаете, вы просто усложняете использование класса. Люди будут задавать вопросы вроде: «Почему есть четыре способа сделать это? Какой из них лучше? Какой способ выбрать мне?» Как правило, легче делать все просто и обеспечить один способ, если нет веских причин предложить вашему классу несколько методов с одинаковой функциональностью.
В то же время, только потому, что добавление методов для открытого интерфейса (вероятно) ничего не испортит, это не означает, что вы должны начинать с крошечного интерфейса. Прежде всего, если кто-нибудь решит унаследоваться от вашего класса, а в последствии вы выберете функцию с тем же именем, то возникнет путаница. Во-первых, если вы не объявите функцию виртуальной, то объект подкласса выберет функцию в зависимости от статического типа указателя. Это может создать проблемы. Кроме того, если вы объявите ее виртуальной, то у вас, возможно, возникнет проблема с тем, что она может предоставлять другую функциональность, отличную от оригинальной реализации этой функции. И, наконец, вы просто не можете добавлять чисто виртуальные функции классу, который уже используется, потому что никто из унаследовавших от него не будет реализовывать эту функцию.
Открытый интерфейс должен оставаться постоянным как можно дольше. В самом деле, хороший подход к проектированию классов — написать интерфейс до реализации, потому что это то, что определяет, как ваш класс взаимодействует с остальным миром (что более важно для программы в целом, чем фактическая реализация класса). Кроме того, если вы сначала пишете интерфейс, вы можете увидеть, как класс будет работать с другими классами, прежде чем вы на самом деле погрузитесь в детали реализации.
Таблица 3 – Табличные компоненты программы
Компонент | Описание |
Form | Формы в С++ используются для размещения графических объектов, которые делают программу такой, какой она должна получиться при выполнении. |
TableEditor1 | для редактирования таблицы и сохранения её в формате XML |
DataGrid | решение для показа связанных таблиц в одной компоненте, в DataGridView такой возможности нет. Не все компоненты доступны по умолчанию, в том числе, и DataGrid. Щёлкаем правой кнопкой мыши на панели элементов управления, Выбрать элементы, на вкладке "Компоненты .NET Framework" устанавливаем флажок возле элемента DataGrid пространства имен System.Windows.Forms, нажимаем ОК. |
Edit | Строка ввода. Предназначена для ввода пользователем текстовой информации в виде одной строки. Имеет возможности по управлению вводимой информацией, например, переопределению символов до их появления в поле ввода, что используется в формах для ввода пароля. |
StringGrid | Свойства RowCount и ColCount задают число строк и столбцов таблицы. Для доступа к ячейке таблицы используется свойство Cells, которое является двухмерным массивом всех ячеек таблицы (нумерация начинается с нуля). |
Отладка и тестирование программного продукта это один из самых важных этапов разработки, без которого не представляется возможным написание законченного, правильно работающего приложения.
Под отладкой программы понимается процесс испытания работы программы и исправления обнаруженных при этом ошибок.
Проверка на компьютере правильности алгоритма производиться с помощью тестов.
Тест – это конкретных вариант значений исходных данных, для которого известен ожидаемый результат.
Отладка программы – это процесс поиска и устранения ошибок в программе, который производится после её прогона на компьютере.
Тестирование – это процесс проверки правильности работы всей программы или ее составных частей.
Цель тестирования программы – поиск ошибок, которые могут препятствовать работе программы.
4 Руководство пользователя
Руководство пользователя — документ, назначение которого — предоставить людям помощь в использовании некоторой системы.
1) Запуск программы
Для того чтобы открыть программу нужной запустить файл “project1.сpp;"
2)Добавление и изменение букв местами
-
Далее выбераем пункт "Создать таблицу" чтобы построить таблицу. -
Водим значения в появившейся таблице и выбираем пункт "Расшифровка,Зашифровка" -
Готово в правой части интерфейса у вас появилась готовая таблица.
Заключение
В своей курсовой работе я показал некоторые возможности языка С++ на примере написания таблицы позволяющей менять соседние буквы местами. Это лишь малая доля тех возможностей, какие предоставляет этот язык. Различия с Паскалем очевидны и довольно существенны, причем эти отличия только усложняют работу программиста. Но функциональность C++ куда больше, и вариативность написания многих частей программы сводится к нескольким способам. C++ позволяет создать сложные приложения, не только работая в консольном режиме, но и в графическом. Многие приложения в Windows написаны именно на этом языке, поэтому о нем можно говорить как об очень мощном языке программирования.
В ходе написания курсового проекта были подробно рассмотрены профессиональные задачи.
В результате выполнения курсовой работы была разработана программа для «Перестановки двух соседних букв местами с помощью шифра»
Данная программа может пригодиться в образовательных учреждениях.
Программа была разработана на языке С++ в объектно-ориентированной среде программирования Visual Studio Code.
Список использованных источников:
-
Ростовцев А.Г., Маховенко Е.Б. Введение в теорию итерированных шифров.- СПб.:Мир и семья,2003. - 302 с. -
Уэзерелл Ч. Этюды для программистов. - М.: Мир, 1982. - 288 с. -
Шнайер Б. Подстановочные шифры // Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке С++ = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М.: Триумф, 2002. — С. 25—26. — 816 с. — 3000 экз. — ISBN 5-89392-055- -
статья: Чехова М.Р.: Кодирование информации. http://festival.1september.ru/articles/213248/ -
Microsoft Corporation. Разработка приложений на Microsoft Visual C++ 6.0. Учебный курс: Официальное пособие Microsoft для самостоятельной подготовки / Пер. с англ.- М.: Издательско-торговый дом «Русская Редакция», 2000. – 576 стр.: илл. -
C/С++. Программирование на языке высокого уровня / Т.А. Павловская — СПб.: Питер, 2011 . -
Абельсон Х., Сассман Д. Структура и интерпретация компьютерных программ. — М.: Добросвет, 2010. -
Архангельский А.Я. Программирование в C++ Builder 5 (или 6). – М.: ЗАО «Издательство БИНОМ», 2002 г. – 1152 с. -
Архангельский А.Я., Тагин М.А. Приемы программирования в C++ Builder. Механизмы Windows, сети. – М.: ООО «Бином-Пресс», 2004 г. – 656 с.
Приложение А –
Листинг программы
(Обязательное)
class Transposition
{
private int[] key = null;
public void SetKey(int[] _key)
{
key = new int[_key.Length];
for (int i = 0; i < _key.Length; i++)
key[i] = _key[i];
}
public void SetKey(string[] _key)
{
key = new int[_key.Length];
for (int i = 0; i < _key.Length; i++)
key[i] = Convert.ToInt32(_key[i]);
}
public void SetKey(string _key)
{
SetKey(_key.Split(' '));
}
public string Encrypt(string input)
{
for (int i = 0; i < input.Length % key.Length; i++)
input += input[i];
string result = "";
for (int i = 0; i < input.Length; i += key.Length)
{
char[] transposition = new char[key.Length];
for (int j = 0; j < key.Length; j++)
transposition[key[j] - 1] = input[i + j];
for (int j = 0; j < key.Length; j++)
result += transposition[j];
}
return result;
}
public string Decrypt(string input)
{
string result = "";
for (int i = 0; i < input.Length; i += key.Length)
{
char[] transposition = new char[key.Length];
for (int j = 0; j < key.Length; j++)
transposition[j] = input[i + key[j] - 1];
for (int j = 0; j < key.Length; j++)
result += transposition[j];
}
return result;
}
Приложение Б
Интерфейс программы
(Обязательное)
Рисунок Б1 - Интерфейс программы
Рисунок Б2- Пример решения
Рисунок Б3 Пример решения
Рисунок Б4 Пример решения
Рисунок Б5 Пример решения
Рисунок Б6 Пример решения