Разработка приложения для шифра Цезаря и Виженера на языке программирования 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.