Помощь в написании студенческих работ
Антистрессовый сервис

Разработка приложение на базе CLR средствами Microsoft Visual Studio 2008, используя технологию объектно-ориентированного программирования

РефератПомощь в написанииУзнать стоимостьмоей работы

Вместе с развитием объектно-ориентированного программирования стали развиваться и объектно-ориентированные методы разработки программного обеспечения, охватывающие стадии анализа и проектирования. Среди общепризнанных объектно-ориентированных подходов к анализу и проектированию следует выделить методы Г. Буча, Д. Рамбо, А. Джекобсона, Шлеера-Меллора и Коуда-Йордона. В результате объединения… Читать ещё >

Разработка приложение на базе CLR средствами Microsoft Visual Studio 2008, используя технологию объектно-ориентированного программирования (реферат, курсовая, диплом, контрольная)

Объектно-ориентированный подход в последнее десятилетие стал одним из наиболее интенсивно развивающихся направлений в программировании и наиболее популярным средством разработки программного обеспечения.

Начало развитию объектно-ориентированного подхода положил язык Simula 67, который был разработан в конце 60-х гг. в Норвегии. Несмотря на то, что язык намного опередил свое время, современники (программисты 60-х гг.) оказались не готовы воспринять ценности языка Simula 67, и он не выдержал конкуренции с другими языками программирования (прежде всего, с языком Fortran).

Но достоинства языка Simula 67 были замечены некоторыми программистами, и в 70-е гг. было разработано большое число экспериментальных объектно-ориентированных языков программирования. В результате исследования этих языков были разработаны современные объектно-ориентированные языки программирования: C++, Ada, Smalltalk и др.

Наиболее распространенным объектно-ориентированным языком программирования является язык C++ [1, 6, 8]. Он возник на базе соединения языков С и Simula. С++ был разработан в начале 80-х Бьерном Страуструпом, сотрудником компании AT&T. Все эти годы язык интенсивно развивался, и, наконец, в августе 1998 г. был принят международный стандарт языка С++.

Разработка новых объектно-ориентированных языков программирования продолжается и в настоящее время. Например, с 1995 г. стал широко распространяться объектно-ориентированный язык программирования Java, ориентированный на сети компьютеров и, прежде всего, на Internet. В настоящее время компанией Microsoft разрабатывается новый объектно-ориентированный язык C# (C Sharp), который во многом базируется на языке С++ и также ориентирован на разработку Internet-приложений.

Вместе с развитием объектно-ориентированного программирования стали развиваться и объектно-ориентированные методы разработки программного обеспечения, охватывающие стадии анализа и проектирования. Среди общепризнанных объектно-ориентированных подходов к анализу и проектированию следует выделить методы Г. Буча [3, 4], Д. Рамбо, А. Джекобсона, Шлеера-Меллора и Коуда-Йордона. В результате объединения усилий первых трех авторов появился на свет унифицированный язык моделирования UML [2, 5, 7, 9], который в 1997 г. был принят в качестве стандарта консорциумом Object Management Group и получил широкое распространение в сфере производства программного обеспечения.

Основные идеи объектно-ориентированного подхода опираются на следующие положения:

  • — программа представляет собой модель некоторого реального процесса, части реального мира; модель содержит не все признаки и свойства представляемой ею части реального мира, а только те, которые существенны для разрабатываемой программной системы;
  • — модель реального мира или его части может быть описана как совокупность взаимодействующих между собой объектов;
  • — объект описывается набором атрибутов (свойств), значения которых определяют состояние объекта, и набором операций (действий), которые может выполнять объект;
  • — взаимодействие между объектами осуществляется посылкой специальных сообщений от одного объекта к другому; сообщение, полученное объектом, может потребовать выполнения определенных действий, например изменения состояния объекта;
  • — объекты, описанные одним и тем же набором атрибутов и способные выполнять один и тот же набор операций, представляют собой класс однотипных объектов.

С точки зрения языка программирования класс объектов можно рассматривать как тип данных, а отдельные объекты — как данные этого типа. Определение программистом собственных классов объектов должно позволить описывать конкретную задачу в терминах ее предметной области (при соответствующем выборе имен типов и имен объектов, их атрибутов и выполняемых действий).

Объектно-ориентированный подход дает следующие основные преимущества:

  • — уменьшение сложности программного обеспечения;
  • — повышение его надежности;
  • — обеспечение возможности модификации отдельных компонент программ без изменения остальных компонент;
  • — обеспечение возможности повторного использования отдельных компонент программного обеспечения.

Систематическое применение объектно-ориентированного подхода позволяет разрабатывать хорошо структурированные, надежные в эксплуатации, достаточно просто модифицируемые программные системы. Этим объясняется интерес программистов к объектно-ориентированному подходу и объектно-ориентированным языкам программирования.

Целью данной работы является введение в объектно-ориентированный подход к разработке программного обеспечения. В рамках работы рассмотрены концепции и понятия объектно-ориентированного подхода, а также их выражение на унифицированном языке моделирования UML и языке программирования С++.

Постановка задачи

Целью курсовой работы является разработка приложения на базе CLR средствами Microsoft Visual Studio 2008 с использованием технологии ООП. В ходе курсового проектирования следует разработать базовый и производный классы и выполнить их тестирование.

Необходимо обработать исходный текст, сформировать список слов и сохранить его в однонаправленном линейном не кольцевом списке. Для каждого слова хранить также число согласных букв в слове.

В полученном линейном списке найти слова, в которых количество согласных превышает заданное значение. Заданное значение содержится в первой строке исходного файла.

Описание входных данных Исходный текст на русском языке. Вводится с клавиатуры, либо из текстового файла. Длина текста— не более 20 строк, длина строки — не более 20 символов, длина слова — не более 7 символов. Исходный текст должен заканчиваться точкой, «!» или '?'.

Описание выходных данных Вывод на экран, а также помещение в текстовый файл исходного текста, состояние сформированного линейного списка и найденные слова.

Описание интерфейса ПО Интерфейс пользователя, он же пользовательский интерфейс —представляет собой совокупность средств и методов, при помощи которых пользователь взаимодействует с различными, чаще всего сложными, машинами, устройствами и аппаратурой, программами.

В моем курсовом проекте пользовательский интерфейс представлен:

  • 1) Формы
  • 1.1 Form1 — основная форма, которая открывается при запуске программы, и содержит пользовательское меню, панель управления, область ввода данных, область вывода данных.
  • 1.2 Avtor — форма, вызываемая командами меню «О программе Об авторе».

Содержит информацию о разработчике программного обеспечения.

1.3 About — форма, вызываемая командами «О программе Возможности программы». Позволяет пользователю вызвать справку, для ознакомления с программой.

Разработка приложение на базе CLR средствами Microsoft Visual Studio 2008, используя технологию объектно-ориентированного программирования.
Разработка приложение на базе CLR средствами Microsoft Visual Studio 2008, используя технологию объектно-ориентированного программирования.
Разработка приложение на базе CLR средствами Microsoft Visual Studio 2008, используя технологию объектно-ориентированного программирования.
  • 2) Кнопки — выполняют следующие действия: «Открыть», «Сохранить», «О программе», «Выполнить».
  • 3) Меню — реализуют панель инструментов программы и выполняют следующие действия: «Сохранить», «Открыть», «Выход», «Об авторе», «О программе».
  • 3) Область ввода richTextBox1 — представляет собой поле ввода текста.
  • 5) Область вывода richTextBox2- представляет собой поле вывода результата выполнения программы.
  • 6) Переключатель — checkBox1 — представляет собой режим переключения для добавления текста в конец области вывода richTextBox2.

Классы интерфейса Программа содержит 3 класса интерфейса:

1) Класс Form1, содержащий следующие методы:

private: System: Windows:Forms:MenuStrip^ menuStrip1; - метод создания стандартного меню Form1.

private: System: Windows:Forms:ToolStripMenuItem^ -файлToolStripMenuItem;

— метод открытия меню файл.

private: System: Windows:Forms:CheckBox^ checkBox1;- метод добавления текста в файл.

private: System: Windows:Forms:ToolStripMenuItem^ открытьToolStripMenuItem; - метод, выполняющий заполнение области поля richTextBox1 из файла.

private: System: Windows:Forms:ToolStripMenuItem^ выходToolStripMenuItem;

— метод, организующий выход из программы.

private: System: Windows:Forms:ToolStripMenuItem^ сохранитьToolStripMenuItem;

— метод, выполняющий сохранение результата в файл.

private: System: Windows:Forms:Button^ button1; - метод выполнения основной задачи программы.

Основная задача реализуется на основе следующего алгоритма:

происходит проверка условий текста: латинские буквы, русские буквы, длина слова более 7 символов, длина строки более 20 символов, длина текстаболее 20 строк и латинские ли буквы, заканчивается ли текст точкой, «!» или «?». Если буквы не латинские, русские, длина слова не более 7 символов, длина строки не более 20 символов, длина текстане более 20 строк и текст заканчивается точкой, «!» или «?» то происходит переход к следующему циклу: проверяется не переход ли строки, если переход то к условию новое ли слово, а потом проверка длины нового слова; если не переход строки проверка длины строки и длины слов, не больше ли макс. ли длины они. если не больше то данные помещаются в массив Buffer[i], из которого потом формируют однонаправленный линейный не кольцевой список слов, для этого выбирают только слова, ищут пробел, либо переход строки, проверяют русские ли слова, если слова не получилось, то ищут дальше, если слово из одного символа — не берут, увеличивают позицию на длину слова и ищут в списке, слова число согласных в которых превышает заданное в тестовой строке значение, найденный результат помещают в pCurrentEntry, возвращающего его в поле 2.

private: System: Windows:Forms:ToolStripMenuItem^ оПрограммеToolStripMenuItem;

— метод открытия меню «О программе».

private: System: Windows:Forms:ToolStripMenuItem^ обАвтореToolStripMenuItem;

— метод вывода окна «Об авторе».

private: System: Windows:Forms:ToolStripMenuItem^ возможностиПрограммыToolStripMenuItem; - метод вывода окна «О программе».

private: System: Windows:Forms:OpenFileDialog^ openFileDialog1; - метод, позволяющий пользователю открыть сторонний файл.

private: System: Windows:Forms:SaveFileDialog^ saveFileDialog1; - метод, выполняющий сохранение результата в файл.

private: System: Windows:Forms:ToolStripButton^ helpToolStripButton;

— метод вывода окна «О программе».

Класс Avtor, содержащий следующие методы:

private: System: Windows:Forms:Label^ label1; - метод, выполняющий отображение сведений о разработчике программы.

private: System: Windows:Forms:PictureBox^ pictureBox1; - метод, выполняющий отображение картинки.

Класс About, содержащий следующие методы:

private: System: Windows:Forms:Label^ label1; - метод, выполняющий отображение надписей.

private: System: Windows:Forms:PictureBox^ pictureBox1; - метод, выполняющий отображение картинки.

Разработка UML-диаграмм классов ПО и методов.

UML диаграмма классов.

Рисунок 1 UML диаграмма классов.

UML диаграмма метода IsEnglish.

Рисунок 2 UML диаграмма метода IsEnglish.

UML диаграмма метода IsRussian.

Рисунок 3 UML диаграмма метода IsRussian.

UML диаграмма метода IsValidBuffer.

Рисунок 4 UML диаграмма метода IsValidBuffer.

UML диаграмма метода Init.

Рисунок 5 UML диаграмма метода Init.

UML диаграмма метода pCurrentEntry.

Рисунок 6 UML диаграмма метода pCurrentEntry.

UML диаграмма метода SpisokClass.

Рисунок 7 UML диаграмма метода SpisokClass.

Руководство пользователя После запуска программы, заполните область поля 1 (см. рис 1 Приложения Б) или откройте готовый файл с текстом с помощью команды «Открыть исходный файл» в «ФайлОткрыть исходный файл». Также можно открыть файл с результатом командой «Открыть файл с результатом» в «ФайлОткрыть файл с результатом «. Для выполнения основной задачи нажмите кнопку «Выполнить» и тогда заполнится область поля 2 (см. рис 1 Приложения Б). Текст в поле 1 (исходный текст) можно сохранить с помощью команды «ФайлСохранить исходный текст».

Текст в поле 2 (результат) можно сохранить с помощью команды «ФайлСохранить результат».

Заключение

Целью данной курсового проекта является разработка приложение на базе CLR средствами Microsoft Visual Studio 2008, используя технологию объектно-ориентированного программирования. Программа должна из текста исходного файла сформировать список слов и сохранить его в однонаправленном линейном не кольцевом списке. В полученном линейном списке найти слова, oбработать исходный текст файла, сформировать список слов и сохранить его в однонаправленном линейном не кольцевом списке. Для каждого слова хранить также число согласных букв в слове. В полученном линейном списке найти слова, в которых количество согласных превышает заданное значение. Заданное значение содержится в первой строке исходного файла. В файл результатов напечатать исходный текст, состояние сформированного линейного списка и найденные слова.

Выполнение курсовой работы было разделено на два этапа:

  • · теоретический анализ поставленной задачи, включающий в себя постановку задачи, выделение основных классов, выделение основных действия и алгоритмов их реализации.
  • · программная реализация задачи средствами Microsoft Visual Studio 2008, включающая в себя реализацию основных классов, реализацию основных действий, реализацию классов диалоговых форм, инструкцию по использовании программы.
  • 1. С++: базовый курс, 3-е издание.: Пер. с англ. М.: Издательский дом «Вильямс», 2010. 624 с.
  • 2. Visual C++ 2005: базовый курс.: Пер. с англ. М.: ООО «И.Д. Вильямс», 2007. 1152 с.
  • 3. Буч Г. Объектно-ориентированный анализ и проектирование приложений на С++. 2001.
  • 4. Секунов Н. Ю. Самоучитель Visual C++. 2002.
  • 5. Холзнер С. Visual C++. Учебный курс. 2007.
  • 6. Довбуш Г. Ф., Хомоненко А. Д. Visual C++ на примерах. 2007.

Приложение А

Листинг программы

#pragma once.

#include.

#include.

#include.

//максимальный размер строки.

#define MAX_SIZE_STRING (20).

//максимальное кол-во строк.

#define MAX_SIZE_COUNT_STRING (10).

//макмимальный размер исходного файла (20 строк по 20 символов).

#define MAX_SIZE_INPUT_FILE (MAX_SIZE_STRING*MAX_SIZE_COUNT_STRING).

//макмимальный размер слова.

#define MAX_SIZE_WORD (7).

namespace WinFormsSogl {.

/// Summary for MyClass.

public ref class BufferClass.

{.

public:

BufferClass (System:Windows:Forms:RichTextBox^ richTextBox).

{.

//получим длинну исходного текста.

Length = min (MAX_SIZE_INPUT_FILE, richTextBox->TextLength);

//массив байт из управляющего элемента.

Buffer = richTextBox->Text->ToCharArray (0, Length);

//проинициализируем переменные (кол-во строк, размер строки и т. д.).

Init ();

}.

~BufferClass (){}.

public:

int Length;

int MaxLenStr;

int MaxLenWord;

int CountStr;

BOOL fEnglish;

array^ Buffer;

Char GetChar (int i) {return Buffer[i]; }.

Char GetEndChar () {return GetChar (Length-1);}.

BOOL IsEnglish (int i) {.

if ((GetChar (i) >= L’a' && GetChar (i) <= L’z') ||.

(GetChar (i) >= L’A' && GetChar (i) <= L’Z')).

return TRUE;

else.

return FALSE;

}.

BOOL IsRussian (int i) {.

if ((GetChar (i) >= L’а' && GetChar (i) <= L’я') ||.

(GetChar (i) >= L’А' && GetChar (i) <= L’Я')).

return TRUE;

else.

return FALSE;

}.

BOOL IsValidBuffer () {.

//если есть слова больше 7 симовлов.

if ((MaxLenWord > MAX_SIZE_WORD) ||.

  • (MaxLenStr > MAX_SIZE_STRING) ||
  • (CountStr > MAX_SIZE_COUNT_STRING) ||
  • (fEnglish == TRUE))

{.

return FALSE;

}.

//если данные не заканчиваются знаком '.', '!', '?'.

if ((GetEndChar () ≠ L'.') &&.

  • (GetEndChar () ≠ L'!') &&
  • (GetEndChar () ≠ L'?'))

{.

return FALSE;

}.

if ((GetChar (0) == L'1') ||.

  • (GetChar (0) == L'2') ||
  • (GetChar (0) == L'3') ||
  • (GetChar (0) == L'4') ||
  • (GetChar (0) == L'5') ||
  • (GetChar (0) == L'6') ||
  • (GetChar (0) == L'7') ||
  • (GetChar (0) == L'8') ||
  • (GetChar (0) == L'9'))

{.

return TRUE;

}.

return FALSE;

}.

void Init (void) {.

int CurrentLenStr = 0;

int CurrentLenWord = 0;

CountStr = 1;

fEnglish = FALSE;

MaxLenStr = 0;

MaxLenWord = 0;

for (int i = 0; i < Length; i++).

{.

CurrentLenStr++;

CurrentLenWord++;

//если есть английские буквы.

if (IsEnglish (i) == TRUE).

{.

fEnglish = TRUE;

}.

//если переход на новую строку.

if (GetChar (i) == 0x0A).

{.

//если нашлась более длинная строка.

if (MaxLenStr < CurrentLenStr).

MaxLenStr = CurrentLenStr-1;

//если нашлось более длинное слово.

if (MaxLenWord < CurrentLenWord).

MaxLenWord = CurrentLenWord-1;

CurrentLenWord = 0;

CurrentLenStr = 0;

CountStr++;

continue;

}.

//если новое слово.

if (GetChar (i) == L' ').

{.

//если нашлось более длинное слово.

if (MaxLenWord < CurrentLenWord).

MaxLenWord = CurrentLenWord-1;

CurrentLenWord = 0;

continue;

}.

}.

}.

};

/// Summary for WordClass.

public ref class WordClass.

{.

public:

WordClass ().

{.

Word = (wchar_t*)calloc (1, MAX_SIZE_WORD+1);

}.

~WordClass (){.

free (Word);

}.

//слово.

wchar_t* Word;

BOOL fSelect;

int CountSoglChar;

WordClass^ pNextMyEntry;

};

/// Summary for SpisokClass.

public ref class SpisokClass.

{.

public:

SpisokClass (array^ Buffer, int Length).

{.

OneWord = gcnew WordClass ();

WordClass^ CurrentWord = OneWord;

int iChar = 0;

BOOL One = TRUE;

CountEntry = 1;

//сформируем одноноправленный линейный не кольцевой список из слов исходного файла.

for (int i = 0; i < Length; i++).

{.

//пробел не нужен.

if (Buffer[i] == L' ' || Buffer[i] == 0x0A).

{.

iChar = 0;

continue;

}.

if (i == 0).

{.

if (Buffer[i] == L'1').

InputSogl = 1;

if (Buffer[i] == L'2').

InputSogl = 2;

if (Buffer[i] == L'3').

InputSogl = 3;

if (Buffer[i] == L'4').

InputSogl = 4;

if (Buffer[i] == L'5').

InputSogl = 5;

if (Buffer[i] == L'6').

InputSogl = 6;

if (Buffer[i] == L'7').

InputSogl = 7;

if (Buffer[i] == L'8').

InputSogl = 8;

if (Buffer[i] == L'9').

InputSogl = 9;

continue;

}.

//если это создание нового элемента.

if ((iChar == 0) && (One == FALSE)).

{.

CurrentWord->pNextMyEntry = gcnew WordClass ();

CurrentWord = CurrentWord->pNextMyEntry;

CountEntry++;

}.

One = FALSE;

//увеличим счетчик согласных букв.

if (IsCharSogl (Buffer[i]) == TRUE).

CurrentWord->CountSoglChar++;

CurrentWord->Word[iChar] = Buffer[i];

CurrentWord->Word[iChar+1] = 0;

iChar++;

}.

Selected ();

}.

~SpisokClass (){.

}.

WordClass^ GetEntry (int dwNumEntry){.

WordClass^ CurrentWord = OneWord;

if (dwNumEntry >= CountEntry).

return CurrentWord;

for (int CurrentEntry = 0; CurrentEntry ≠ dwNumEntry; CurrentEntry++).

{.

CurrentWord = CurrentWord->pNextMyEntry;

}.

return CurrentWord;

}.

void Selected (void){.

WordClass^ CurrentWord = OneWord;

for (int CurrentEntry = 0; CurrentEntry < CountEntry; CurrentEntry++).

{.

if (CurrentWord->CountSoglChar > InputSogl).

CurrentWord->fSelect = TRUE;

CurrentWord = CurrentWord->pNextMyEntry;

}.

return;

}.

BOOL IsCharSogl (wchar_t c) {.

if ((c == L’б') ||.

  • (c == L’в') ||
  • (c == L’г') ||
  • (c == L’д') ||
  • (c == L’ж') ||
  • (c == L’з') ||
  • (c == L’к') ||
  • (c == L’л') ||
  • (c == L’м') ||
  • (c == L’н') ||
  • (c == L’п') ||
  • (c == L’р') ||
  • (c == L’с') ||
  • (c == L’т') ||
  • (c == L’ф') ||
  • (c == L’х') ||
  • (c == L’ц') ||
  • (c == L’ч') ||
  • (c == L’ш') ||
  • (c == L’щ'))

return TRUE;

if ((c == L’Б') ||.

  • (c == L’В') ||
  • (c == L’Г') ||
  • (c == L’Д') ||
  • (c == L’Ж') ||
  • (c == L’З') ||
  • (c == L’К') ||
  • (c == L’Л') ||
  • (c == L’М') ||
  • (c == L’Н') ||
  • (c == L’П') ||
  • (c == L’Р') ||
  • (c == L’С') ||
  • (c == L’Т') ||
  • (c == L’Ф') ||
  • (c == L’Х') ||
  • (c == L’Ц') ||
  • (c == L’Ч') ||
  • (c == L’Ш') ||
  • (c == L’Щ'))

return TRUE;

return FALSE;

}.

WordClass^ OneWord;

int CountEntry;

int InputSogl;

};

}.

Приложение B.

Экранные формы

1. Основное окно программы.

Разработка приложение на базе CLR средствами Microsoft Visual Studio 2008, используя технологию объектно-ориентированного программирования.

2. Окно работы программы.

Разработка приложение на базе CLR средствами Microsoft Visual Studio 2008, используя технологию объектно-ориентированного программирования.

3. Окно программы «О программе».

Разработка приложение на базе CLR средствами Microsoft Visual Studio 2008, используя технологию объектно-ориентированного программирования.

4. Окно программы «Об авторе».

Разработка приложение на базе CLR средствами Microsoft Visual Studio 2008, используя технологию объектно-ориентированного программирования.
Показать весь текст
Заполнить форму текущей работой