Разработка приложения для шифра Цезаря и Виженера на языке программирования Visual C++
Изучение современных методов шифрования информации. Описание объектно-ориентированного подхода. Описание предметной области. Описание объектов системы, их свойств и методов. Построение диаграммы классов. Результаты тестирования программного продукта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 15.02.2018 |
Размер файла | 145,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ВВЕДЕНИЕ
То, что информация имеет ценность, люди осознали очень давно - недаром переписка сильных мира сего издавна была объектом пристального внимания их недругов и друзей. Тогда-то и возникла задача защиты этой переписки от чрезмерно любопытных глаз. Древние пытались использовать для решения этой задачи самые разнообразные методы, и одним из них была тайнопись - умение составлять сообщения таким образом, чтобы его смысл был недоступен никому кроме посвященных в тайну. Есть свидетельства тому, что искусство тайнописи зародилось еще в доантичные времена. На протяжении всей своей многовековой истории, вплоть до совсем недавнего времени, это искусство служило немногим, в основном верхушке общества, не выходя за пределы резиденций глав государств, посольств и - конечно же - разведывательных миссий. И лишь несколько десятилетий назад все изменилось коренным образом - информация приобрела самостоятельную коммерческую ценность и стала широко распространенным, почти обычным товаром. Ее производят, хранят, транспортируют, продают и покупают, а значит - воруют и подделывают - и, следовательно, ее необходимо защищать. Современное общество все в большей степени становится информационно обусловленным, успех любого вида деятельности все сильней зависит от обладания определенными сведениями и от отсутствия их у конкурентов. И чем сильней проявляется указанный эффект, тем больше потенциальные убытки от злоупотреблений в информационной сфере, и тем больше потребность в защите информации.
Широкое применение компьютерных технологий и постоянное увеличение объема информационных потоков вызывает постоянный рост интереса к криптографии. В последнее время увеличивается роль программных средств защиты информации, не требующих крупных финансовых затрат в сравнении с аппаратными криптосистемами. Современные методы шифрования гарантируют практически абсолютную защиту данных.
Целью данной работы является знакомство с шифрами Цезаря и Виженера.
информация шифрование программа
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Шифр Цезаря, также известный как шифр сдвига, код Цезаря или сдвиг Цезаря -- один из самых простых и наиболее широко известных методов шифрования.
Шифр Цезаря -- это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. Например, в шифре со сдвигом вправо на 3, А была бы заменена на Г, Б станет Д, и так далее.
Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами.
Шаг шифрования, выполняемый шифром Цезаря, часто включается как часть более сложных схем, таких как шифр Виженера, и всё ещё имеет современное приложение в системе ROT13. Как и все моноалфавитные шифры, шифр Цезаря легко взламывается и не имеет почти никакого применения на практике.
Шифр Виженера (фр. Chiffre de Vigenиre) -- метод полиалфавитного шифрования буквенного текста с использованием ключевого слова.
Этот метод является простой формой многоалфавитной замены. Шифр Виженера изобретался многократно. Впервые этот метод описал Джовани Баттиста Беллазо (итал. Giovan Battista Bellaso) в книге La cifra del. Sig. Giovan Battista Bellasо в 1553 году, однако в XIX веке получил имя Блеза Виженера, французского дипломата. Метод прост для понимания и реализации, он является недоступным для простых методов криптоанализа.
Хотя шифр легко понять и реализовать, на протяжении трех столетий он сопротивлялся всем попыткам его сломать; чем и заработал название le chiffre indйchiffrable (с французского 'неразгаданный шифр'). Многие люди пытались реализовать схемы шифрования, которые по сути являлись шифрами Виженера.
1.1 Постановка задачи
Разработать приложение для шифра Цезаря и Виженера на языке программирования Visual C++/С#.
1.2 Описание объектно-ориентированного подхода
Объемктно-ориентимрованное программимрование (ООП) -- методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
Идеологически ООП -- подход к программированию как к моделированию информационных объектов, решающий на новом уровне основную задачу структурного программирования: структурирование информации с точки зрения управляемости, что существенно улучшает управляемость самим процессом моделирования, что в свою очередь особенно важно при реализации крупных проектов. Управляемость для иерархических систем предполагает минимизацию избыточности данных (аналогичную нормализации) и их целостность, поэтому созданное удобно управляемым -- будет и удобно пониматься. Таким образом через тактическую задачу управляемости решается стратегическая задача -- транслировать понимание задачи программистом в наиболее удобную для дальнейшего использования форму. Основные принципы структурирования в случае ООП связаны с различными аспектами базового понимания предметной задачи, которое требуется для оптимального управления соответствующей моделью: - абстрагирование для выделения в моделируемом предмете важного для решения конкретной задачи по предмету, в конечном счете -- контекстное понимание предмета, формализуемое в виде класса; - инкапсуляция для быстрой и безопасной организации собственно иерархической управляемости: чтобы было достаточно простой команды «что делать», без одновременного уточнения как именно делать, так как это уже другой уровень управления; - наследование для быстрой и безопасной организации родственных понятий: чтобы было достаточно на каждом иерархическом шаге учитывать только изменения, не дублируя все остальное, учтенное на предыдущих шагах; - полиморфизм для определения точки, в которой единое управление лучше распараллелить или наоборот -- собрать воедино. То есть фактически речь идет о прогрессирующей организации информации согласно первичным семантическим критериям: «важное/неважное», «ключевое/подробности», «родительское/дочернее», «единое/множественное». Прогрессирование, в частности, на последнем этапе дает возможность перехода на следующий уровень детализации, что замыкает общий процесс. Обычный человеческий язык в целом отражает идеологию ООП, начиная с инкапсуляции представления о предмете в виде его имени и заканчивая полиморфизмом использования слова в переносном смысле, что в итоге развивает выражение представления через имя предмета до полноценного понятия-класса.
Поля данных
Параметры объекта (конечно, не все, а только необходимые в программе), задающие его состояние (свойства объекта предметной области). Иногда поля данных объекта называют свойствами объекта, из-за чего возможна путаница. Фактически поля представляют собой значения (переменные, константы), объявленные как принадлежащие классу.
Методы
Процедуры и функции, связанные с классом. Они определяют действия, которые можно выполнять над объектом такого типа, и которые сам объект может выполнять.
Классы могут наследоваться друг от друга. Класс-потомок получает все поля и методы класса-родителя, но может дополнять их собственными либо переопределять уже имеющиеся. Большинство языков программирования поддерживает только единичное наследование (класс может иметь только один класс-родитель), лишь в некоторых допускается множественное наследование -- порождение класса от двух или более классов-родителей. Множественное наследование создаёт целый ряд проблем, как логических, так и чисто реализационных, поэтому в полном объёме его поддержка не распространена. Вместо этого в 1990-е годы появилось и стало активно вводиться в объектно-ориентированные языки понятие интерфейса. Интерфейс -- это класс без полей и без реализации, включающий только заголовки методов. Если некий класс наследует (или, как говорят, реализует) интерфейс, он должен реализовать все входящие в него методы. Использование интерфейсов предоставляет относительно дешёвую альтернативу множественному наследованию.
Взаимодействие объектов в абсолютном большинстве случаев обеспечивается вызовом ими методов друг друга.
В данной лабораторной было создано 5 классов, каждый из которых выполняет свою определённую функцию: класс Program выполняет функцию входа в программу и создаёт окно; класс Form1 выполняет обработку всех действий с окном и инструментами управления, а также выполняет кодирование и декодирование текста с помощью шифра Виженера; класс Client служит для реализации смещения шифра Цезаря; класс Cezar выполняет кодирование и декодирование текстовой информации с помощью шифра Цезаря; класс Form1.Designer.cs служит для создания элементов управления проекта.
1.3 Описание предметной области
Windows Forms -- интерфейс программирования приложений (API), отвечающий за графический интерфейс пользователя и являющийся частью Microsoft .NET Framework. Данный интерфейс упрощает доступ к элементам интерфейса Microsoft Windows за счет создания обёртки для существующего Win32 API в управляемом коде. Причём управляемый код -- классы, реализующие API для Windows Forms, не зависят от языка разработки. То есть программист одинаково может использовать Windows Forms как при написании ПО на C#, С++, так и на VB.Net, J# и др.
С одной стороны, Windows Forms рассматривается как замена более старой и сложной библиотеке MFC, изначально написанной на языке C++. С другой стороны, WF не предлагает парадигму, сравнимую с MVC. Для исправления этой ситуации и реализации данной функциональности в WF существуют сторонние библиотеки. Одной из наиболее используемых подобных библиотек является User Interface Process Application Block, выпущенная специальной группой Microsoft, занимающейся примерами и рекомендациями, для бесплатного скачивания. Эта библиотека также содержит исходный код и обучающие примеры для ускорения обучения.
2. ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Описание объектов системы, их свойств и методов
Главными объектами данного программного обеспечения являются шифр Цезаря и шифр Виженера. У шифра Цезаря есть два основных метода: Codec, repl. Метод кодек описывает сам шифр, а repl выполняет вспомогательные перестановки. У шифра Виженера же все действия происходят по нажатию кнопки “кодировать” в области шифра Виженера.
2.2 Построение диаграммы классов
2.3 Результаты тестирования программного продукта
Тестирование программного продукта было выполнено способ проверки на кодируемость и декодируемость введённых значений. Как мы видим результат декодирования совпал с результатом кодирования, следовательно, программа работает корректно.
Рис 2.3.1 Тестирование программного продукта
ЗАКЛЮЧЕНИЕ
Криптография - наука о математических методах обеспечения конфиденциальности (невозможности прочтения информации посторонним) и аутентичности (целостности и подлинности авторства, а также невозможности отказа от авторства) информации. Изначально криптография изучала методы шифрования информации - обратимого преобразования открытого (исходного) текста на основе секретного алгоритма и ключа в шифрованный текст. Традиционная криптография образует раздел симметричных криптосистем, в которых зашифрование и расшифрование проводится с использованием одного и того же секретного ключа. Помимо этого раздела современная криптография включает в себя асимметричные криптосистемы, системы электронной цифровой подписи (ЭЦП), хеш-функции, управление ключами, получение скрытой информации, квантовую криптографию.
Криптография является одним из наиболее мощных средств обеспечения конфиденциальности и контроля целостности информации. Во многих отношениях она занимает центральное место среди программно-технических регуляторов безопасности. Например, для портативных компьютеров, физически защитить которые крайне трудно, только криптография позволяет гарантировать конфиденциальность информации даже в случае кражи.
В данной лабораторной работе были исследованы и изучены шифры Цезаря и Виженера, а также разработано оконное приложение для кодирования и декодирования информации.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Златопольский Д.М. Простейшие методы шифрования текста. /Д.М. Златопольский - М.: Чистые пруды, 2007
2. Молдовян А. Криптография. /А. Молдовян, Н.А. Молдовян, Б.Я. Советов - СПб: Лань, 2001
3. Яковлев А.В., Безбогов А.А., Родин В.В., Шамкин В.Н. Криптографическая защита информации. /Учебное пособие - Тамбов: Изд-во Тамб. гос. техн. ун-та, 2006
4. Молдовян А. Криптография./А. Молдовян, Н. А. Молдовян, Б. Я. Советов - СПб: Лань, 2001
5. А.В. Яковлев, А.А. Безбогов, В.В. Родин, В.Н. Шамкин «Криптографическая защита информации». Учебное пособие - Тамбов: Изд-во Тамб. гос. техн. ун-та, 2006
6. Златопольский Д. М. Простейшие методы шифрования текста./Д. М. Златопольский - М.: Чистые пруды, 2007
ПРИЛОЖЕНИE A
Cezar.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CezarCS
{
class Cezar : System.Collections.Generic.List<Clent>
{
public Cezar()
{ //в конструкторе формирую коллекцию лент
this.Add(new Clent("abcdefghijklmnopqrstuvwxyz"));
this.Add(new Clent("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
this.Add(new Clent("абвгдеёжзийклмнопрстуфхцчшщъыьэюя"));
this.Add(new Clent("АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"));
this.Add(new Clent("0123456789"));
this.Add(new Clent("!\"#$%^&*()+=-_'?.,|/`~№:;@[]{}"));
}
public string Codeс(string m, int key) //кодирование и декодирование в зависимости от знака ключа
{
string res = "", tmp = "";
for (int i = 0; i < m.Length; i++)
{
foreach (Clent v in this)
{
tmp = v.Repl(m.Substring(i, 1), key);
if (tmp != "") //нужная лента найдена, замена символу определена
{
res += tmp;
break; // прерывается foreach (перебор лент)
}
}
if (tmp == "") res += m.Substring(i, 1); //незнакомый символ оставляю без изменений
}
return res;
}
}
}
ПРИЛОЖЕНИE B
Client.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CezarCS
{
class Clent
{
string le;
public Clent(string m)
{
le = m;
}
public string Repl(string m, int key) //замена символа m на символ со смещением
{
int pos = le.IndexOf(m);
if (pos == -1) return ""; //символ в этой ленте не найден
pos = (pos + key) % le.Length; //если смещение больше одного круга
if (pos < 0) pos += le.Length;
return le.Substring(pos, 1);
}
}
}
ПРИЛОЖЕНИE C
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CezarCS
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private TextBox textBox1;
private TextBox textBox2;
private TextBox textBox3;
private Button button1;
private Button button2;
private NumericUpDown numericUpDown1;
private Label label1;
private Label label2;
private Label label3;
private TextBox textBox4;
private TextBox textBox5;
private TextBox textBox6;
private Button button3;
private Button button4;
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.textBox3 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.numericUpDown1 = new System.Windows.Forms.NumericUpDown();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.textBox4 = new System.Windows.Forms.TextBox();
this.textBox5 = new System.Windows.Forms.TextBox();
this.textBox6 = new System.Windows.Forms.TextBox();
this.button3 = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button();
this.textBox7 = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(50, 42);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(220, 22);
this.textBox1.TabIndex = 0;
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(50, 173);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(220, 22);
this.textBox2.TabIndex = 1;
//
// textBox3
//
this.textBox3.Location = new System.Drawing.Point(50, 304);
this.textBox3.Name = "textBox3";
this.textBox3.Size = new System.Drawing.Size(220, 22);
this.textBox3.TabIndex = 2;
//
// button1
//
this.button1.Location = new System.Drawing.Point(95, 79);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(129, 28);
this.button1.TabIndex = 3;
this.button1.Text = "Кодировать";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click_1);
//
// button2
//
this.button2.Location = new System.Drawing.Point(95, 260);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(129, 29);
this.button2.TabIndex = 4;
this.button2.Text = "Декодировать";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click_1);
//
// numericUpDown1
//
this.numericUpDown1.Location = new System.Drawing.Point(150, 9);
this.numericUpDown1.Name = "numericUpDown1";
this.numericUpDown1.Size = new System.Drawing.Size(120, 22);
this.numericUpDown1.TabIndex = 5;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(101, 14);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(43, 17);
this.label1.TabIndex = 6;
this.label1.Text = "Ключ";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(13, 13);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(57, 17);
this.label2.TabIndex = 7;
this.label2.Text = "Цезарь";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(446, 14);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(66, 17);
this.label3.TabIndex = 8;
this.label3.Text = "Виженер";
//
// textBox4
//
this.textBox4.Location = new System.Drawing.Point(445, 42);
this.textBox4.Name = "textBox4";
this.textBox4.Size = new System.Drawing.Size(202, 22);
this.textBox4.TabIndex = 9;
//
// textBox5
//
this.textBox5.Location = new System.Drawing.Point(449, 173);
this.textBox5.Name = "textBox5";
this.textBox5.Size = new System.Drawing.Size(198, 22);
this.textBox5.TabIndex = 10;
//
// textBox6
//
this.textBox6.Location = new System.Drawing.Point(449, 303);
this.textBox6.Name = "textBox6";
this.textBox6.Size = new System.Drawing.Size(198, 22);
this.textBox6.TabIndex = 11;
//
// button3
//
this.button3.Location = new System.Drawing.Point(481, 126);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(138, 23);
this.button3.TabIndex = 12;
this.button3.Text = "Кодировать";
this.button3.UseVisualStyleBackColor = true;
this.button3.Click += new System.EventHandler(this.button3_Click);
//
// button4
//
this.button4.Location = new System.Drawing.Point(481, 265);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(138, 23);
this.button4.TabIndex = 13;
this.button4.Text = "Декодировать";
this.button4.UseVisualStyleBackColor = true;
this.button4.Click += new System.EventHandler(this.button4_Click);
//
// textBox7
//
this.textBox7.Location = new System.Drawing.Point(445, 79);
this.textBox7.Name = "textBox7";
this.textBox7.Size = new System.Drawing.Size(202, 22);
this.textBox7.TabIndex = 14;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(391, 82);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(43, 17);
this.label4.TabIndex = 15;
this.label4.Text = "Ключ";
//
// Form1
//
this.ClientSize = new System.Drawing.Size(721, 390);
this.Controls.Add(this.label4);
this.Controls.Add(this.textBox7);
this.Controls.Add(this.button4);
this.Controls.Add(this.button3);
this.Controls.Add(this.textBox6);
this.Controls.Add(this.textBox5);
this.Controls.Add(this.textBox4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.numericUpDown1);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox3);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.Name = "Form1";
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
private void button1_Click_1(object sender, EventArgs e)
{
textBox2.Text = Me.Codeс(textBox1.Text, (int)numericUpDown1.Value);
}
private void button2_Click_1(object sender, EventArgs e)
{
textBox3.Text = Me.Codeс(textBox2.Text, -(int)numericUpDown1.Value);
}
private void button3_Click(object sender, EventArgs e)
{
string s = textBox4.Text;
string res;
res = Encode(s, textBox7.Text);
textBox5.Text = res;
}
char[] characters = new char[] { 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И',
'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С',
'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ь', 'Ы', 'Ъ',
'Э', 'Ю', 'Я', ' ', '1', '2', '3', '4', '5', '6', '7',
'8', '9', '0'};
public string Encode(string input, string keyword)
{
int N = characters.Length;
input = input.ToUpper();
keyword = keyword.ToUpper();
string result = "";
int keyword_index = 0;
foreach (char symbol in input)
{
int c = (Array.IndexOf(characters, symbol) +
Array.IndexOf(characters, keyword[keyword_index])) % N;
result += characters[c];
keyword_index++;
if ((keyword_index + 1) == keyword.Length)
keyword_index = 0;
}
return result;
}
public string Decode(string input, string keyword)
{
int N = characters.Length;
input = input.ToUpper();
keyword = keyword.ToUpper();
string result = "";
int keyword_index = 0;
foreach (char symbol in input)
{
int p = (Array.IndexOf(characters, symbol) + N -
Array.IndexOf(characters, keyword[keyword_index])) % N;
result += characters[p];
keyword_index++;
if ((keyword_index + 1) == keyword.Length)
keyword_index = 0;
}
return result;
}
private void button4_Click(object sender, EventArgs e)
{
string s = textBox5.Text;
string res;
res = Decode(s, textBox7.Text);
textBox6.Text = res;
}
}
}
ПРИЛОЖЕНИE D
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CezarCS
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
ПРИЛОЖЕНИE E
Form1.Designer.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CezarCS
{
public partial class Form1 : Form
{
Cezar Me = new Cezar();
private TextBox textBox7;
private Label label4;
}
}
Размещено на Allbest.ru
...Подобные документы
Анализ предметной области "Конкурс поэтов" на основе объектно-ориентированного подхода. Разработка оконного приложения и описание информационной модели предметной области. Описание разработанных процедур С++ и результатов тестирования приложения.
курсовая работа [355,9 K], добавлен 18.06.2013Изучение объектно-ориентированного языка программирования Java, его функциональные возможности. Создание программного кода. Описание классов и методов, использованных в программе. Руководство пользователя, запуск сервера и клиентского приложения.
курсовая работа [1,8 M], добавлен 16.09.2015Исследование принципов объектно-ориентированного программирования на базе языка программирования С++. Разработка программного комплекса для ведения учёта памятников города. Описание процессов сортировки, поиска, формирования статистики по памятникам.
курсовая работа [782,4 K], добавлен 26.05.2014Изучение базовых понятий объектно-ориентированного программирования. Исследование принципов работы с классами и объектами. Построение системы классов для описания плоских геометрических фигур. Анализ методов создания объектов, перемещения на плоскости.
лабораторная работа [212,0 K], добавлен 10.03.2013Основные теоретические положения объектно–ориентированной технологии программирования. Характеристика языка и словарь моделирования UML. Представление управления моделью. Построение диаграммы классов и описание функционирования предметной области.
курсовая работа [859,4 K], добавлен 11.05.2015Особенности реализации главных элементов разрабатываемой программы (цифровые элементы) с помощью объектно-ориентированного подхода. Применение принципа инкапсуляции для защиты данных. Конструирование классов, описание и тестирование программного продукта.
курсовая работа [2,3 M], добавлен 10.05.2015Описания объектов, свойств, методов, формы и основных модулей текста программы в среде Delphi. Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования. Анализ результатов тестирования программного продукта.
курсовая работа [2,4 M], добавлен 27.08.2012Описание структуры бинарного дерева поиска на языке C# среды Visual Studio. Требования к интерфейсу пользователя, структуре данных и программным средствам. Компоненты программных средств, результаты тестирования, диаграммы вариантов использования классов.
курсовая работа [968,2 K], добавлен 26.01.2013Приемы практического использования объектно-ориентированного подхода в создании законченного программного продукта. Разработка кроссплатформенной компьютерной игры "Морской бой". Принципы "хорошего стиля программирования C++/Qt". Описание классов игры.
курсовая работа [2,7 M], добавлен 12.08.2014Особенности объектно-ориентированного проектирования. Основные понятия объектно-ориентированного подхода. Основы языка UML, варианты его использования. Диаграммы классов и взаимодействия. Разработка диаграммы прецедентов (вариантов использования).
курсовая работа [1,1 M], добавлен 13.05.2014Обзор основных используемых языков программирования (С++, Java, Pascal). Анализ существующих методов шифрования паролей. Основные понятия объектно-ориентированного программирования. Реализация приложения для генерирования паролей на языке Object Pascal.
курсовая работа [822,4 K], добавлен 07.07.2012Проблема скрытия и защиты информации от несанкционированного использования. История создания шифра. Решения задачи шифрования текста и кодирования данных. Тестирование полученного приложения и анализ работы программы с точки зрения пользователя.
курсовая работа [3,0 M], добавлен 24.11.2013Изучение принципов объектно-ориентированного программирования, в котором основными концепциями являются понятия классов и объектов. Свойства этого вида программирования: инкапсуляция, полиморфизм, наследование. Описание класса. Конструкторы и деструкторы.
презентация [74,8 K], добавлен 14.10.2013Понятие объектно-ориентированного программирования, характеристика используемых языков. Практическая разработка средств объектно-ориентированного программирования в задачах защиты информации: программная реализация на языке С++, а также Turbo Pascal.
курсовая работа [275,9 K], добавлен 22.12.2011Общая характеристика объектно-ориентированного подхода в программировании, его основные свойства и принципы. Разработка программы для автоматизация деятельности кафе на основе объектно-ориентированного подхода, проектирования и реализации схемы данных.
курсовая работа [1,2 M], добавлен 22.01.2012Анализ предметной области. Основание, назначение для разработки, требования к программному средству. Выбор подхода и модели разработки ПС. Анализ требований, разработка и определение вариантов спецификаций. Описание объектов, свойств и методов.
курсовая работа [510,3 K], добавлен 23.02.2011Разработка программного продукта с помощью языка программирования Visual Basic. Описание интерфейса пользователя и возможностей программы. Исходный код основных модулей. Программа, демонстрирующая основные возможности диаграмм и среды Visual Basic.
контрольная работа [989,9 K], добавлен 29.03.2011Описание предметной области. Характеристика программных средств. Описание компонентов, интерфейс программы. Описание процедур и функций. Вызов и загрузка программы. Испытание методом белого и черного ящика на ошибки кода программного приложения.
курсовая работа [2,2 M], добавлен 26.04.2015Анализ объектно-ориентированного программирования, имитирующего способы выполнения предметов. Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Понятие классов, полей, методов, сообщений, событий.
контрольная работа [51,7 K], добавлен 22.01.2013Технология создания многопоточных приложений в современных системах программирования с использованием языка C# в Visual Studio.NET. Разработка алгоритма и структуры программы. Описание и особенности тестирования приложения с разным количеством потоков.
курсовая работа [773,0 K], добавлен 14.03.2013