1.5 Методы борьбы со сложностью

Мы уже обсуждали в лекции 2 сущность вопроса борьбы со сложностью при разработке ПС. Известны два общих метода борьбы со сложностью систем:

· обеспечения независимости компонент системы;

· использование в системах иерархических структур.

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

1.6 Обеспечение точности перевода

Обеспечение точности перевода направлено на достижение однозначности интерпретации документов различными разработчиками, а также пользователями ПС. Это требует придерживаться при переводе определенной дисциплины. Майерс предлагает использовать общую дисциплину решения задач, рассматривая перевод как решение задачи. Лучшим руководством по решению задач он считает книгу Пойа "Как решать задачу". В соответствии с этим весь процесс перевода можно разбить на следующие этапы:

· Поймите задачу;

· Составьте план (включая цели и методы решения);

· Выполните план (проверяя правильность каждого шага);

· Проанализируйте полученное решение.

Подробно обсуждать этот вопрос мы здесь не будем.

1.7 Преодоление барьера между пользователем и разработчиком

Как обеспечить, чтобы ПС выполняла то, что пользователю разумно ожидать от нее? Для этого разработчикам необходимо правильно понять, во-первых, чего хочет пользователь, и, во-вторых, его уровень подготовки и окружающую его обстановку. Ясное описание соответствующей сферы деятельности пользователя или интересующей его проблемной области во многом облегчает достижение разработчиками этой цели. При разработке ПС следует привлекать пользователя для участия в процессах принятия решений, а также тщательно освоить особенности его работы (лучше всего  побывать в его "шкуре").

1.8 Контроль принимаемых решений

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

С учетом специфики разработки ПС необходимо применять везде, где это возможно,

· смежный контроль,

· сочетание как статических, так и динамических методов контроля.

 Смежный контроль означает, проверку полученного документа лицами, не участвующими в его разработке, с двух сторон: во-первых, со стороны автора исходного для контролируемого процесса документа, и, во-вторых, лицами, которые будут использовать полученный документ в качестве исходного в последующих технологических процессах. Такой контроль позволяет обеспечивать однозначность интерпретации полученного документа.

Сочетание статических и динамических методов контроля означает, что нужно не только контролировать документ как таковой, но и проверять, какой процесс обработки данных он описывает. Это отражает одну из специфических особенность ПС (статическая форма, динамическое содержание).


2. Практическая часть: Разработать форму и интерфейс приложений, реализовать алгоритмы решения задач на языке Delphi

2.1 Программа «Треугольники» определяет, может ли быть построен прямоугольный треугольник по заданным длинам сторон а,b,с и выводит соответствующее сообщение

2.2. В заданных массивах А и В поменять местами максимальные элементы. Вывести на экран преобразованные массивы.

2.3. Разместить на форме объект “Shape”( эллипс) и кнопку “Button” с названием «Цвет формы». При запуске (выполнении) программы при нажатии на кнопку выводится стандартное диалоговое окно выбора цвета и цвет формы изменяется соответственно.

Для решения этой задачи, мы разработаем форму и интерфейс приложений на языке Delphi. Разработаем форму, которая будет основным меню для решения поставленных задач. Вызова форм colorshape, parray и тugol, которые будут реализовывать задачи. Программа построенна на модальных окнах.

Анализ технического задания и постановка задачи проектирования.

Так, согласно заданию, программа должна быть реализована в среде Delphi и должна выполнять следующие функции:

- вывод на экран информации о задании и назначении программы;

- ввод пользователем значений, определяющих параметры;

-  проверка полученного от пользователя значения и вывод результатов работы программы;

Составим следующий алгоритм:

1.  По запуску программы вывести диалоговое окно с выбором программ которые нужно выполнить.

2.  Программа треугольник при запуске запрашивает у пользователя значение сторон и выводит сообщение о возможности построения прямоугольного треугольника.

3.  В заданных массивах А и В поменять местами максимальные элементы. Вывести на экран преобразованные массивы.

4.  Программа цвет формы выводит пользователю диалоговое окно, меняет цвет формы и фигуры при нажатии кнопку соответственно.

Наиболее важными свойствами формы (всего их 38) являются:

Caption – заголовок, указывающий наименование формы;

Color – цвет фона формы;

Height – высота окна формы в пикселях;

Left – смещение по горизонтали в пикселях левого верхне

Top – смещение по вертикали в пикселях левого верхнего

Width – ширина окна формы в пикселях.

BorderStyle - тип рамки;

Font - шрифт и его атрибуты;

Icon - пиктограмма для изображения свернутой формы;

Visible - задает видимую или невидимую форму;

Для создания интерфейса можно использовать базовые компоненты к ним можно отнести:

Label — поле вывода текста;

Edit — поле ввода/редактирования текста;

Button — командная кнопка;

GroupBox – рамка группы

CheckBox — «флажок», независимая кнопка выбора;

RadioGroup – рамка группы переключателей

RadioButton – радиокнопка , «переключатель»,

ListВox — список выбора;

Combo Box— комбинированный список выбора.

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

Caption заголовок, указывающий наименование формы;

Color цвет фона формы;

Height высота окна формы в пикселях;

Left смещение по горизонтали в пикселях левого верхне

Top смещение по вертикали в пикселях левого верхнего

Width ширина окна формы в пикселях.

BorderStyle - тип рамки;

Font - шрифт и его атрибуты;

Icon - пиктограмма для изображения свернутой формы;

Visible - задает видимую или невидимую форму;

Position - задает расположение формы при выполнении приложения

Событий, которые могут произойти с каким-либо элементом управления не так уж и много. Для кнопки, например, есть два основных события: 1) – одинарный щелчок мышью на ней (click), 2) – двойной щелчок мышью на ней (double click). Программист, если необходимо реакция на нажатие кнопки (а иначе зачем она нужна?), должен написать процедуру-обработчик сообщения (Event handler), вызывающую определенные ответные действия.

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

Визуальный Компонент TEdit позволяет пользователю ввести с клавиатуры строку символов, или вывести в их поле редактирования. При вводе-выводе данных изменяется значение свойства Text компонента типа TEdit. Заметим, что введенный текст будет типа string, и выводимый текст должен быть типа string. Для преобразования строки символов в число и обратно существуют специальные функции, например, некоторые из них:

1) StrToInt(Text_String) – преобразует строку Text_String в целое число (конечно, если она состоит из символов, которые соответствуют цифрам, иначе, преобразование бессмысленно);

2) IntToStr(Number_Integer) – преобразует целое число Number_Integer в строку эквивалентных символов;

·  Листинг программы содержится в приложении А.

·  Результат тестового запуска приведен в приложении В.

·  Программа разработана с использованием языка Delphi.


Приложение А

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

unit tmain;

{$mode objfpc}{$H+}

interface

uses

 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

 StdCtrls;

type

 { TForm1 }

 TForm1 = class(TForm)

 Button1: TButton;

 Button2: TButton;

 Button3: TButton;

 Button4: TButton;

 procedure Button1Click(Sender: TObject);

 procedure Button2Click(Sender: TObject);

 procedure Button3Click(Sender: TObject);

 procedure Button4Click(Sender: TObject);

 private

 { private declarations }

 public

 { public declarations }

 end;

var

 Form1: TForm1;

implementation

uses Tugol, parray, colorshape;

{ TForm1 }

procedure TForm1.Button1Click(Sender: Tobject);

begin

 Form1.Hide; // закрыть объект 1

 Form2.ShowModal; // открыть объект 2

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

 Form1.Hide;

 Form3.ShowModal; // открыть объект 3

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

 Form1.Hide;

 Form4.ShowModal; // открыть объект 4

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

 Form1.Close; // закрыть объект 1

end;

initialization

 {$I tmain.lrs}

end.

unit Tugol;

{$mode objfpc}{$H+}

interface

uses

 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

 StdCtrls;

type

 { TForm2 }

 TForm2 = class(TForm)

 Button1: TButton;

 Edit1: TEdit;

 Edit2: TEdit;

 Edit3: TEdit;

 Label1: TLabel;

 Label2: TLabel;

 Label3: TLabel;

 Label4: TLabel;

 procedure Button1Click(Sender: TObject);

 procedure Edit1KeyPress(Sender: TObject; var Key: char);

 procedure Edit2KeyPress(Sender: TObject; var Key: char);

 procedure Edit3KeyPress(Sender: TObject; var Key: char);

 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);

 private

 { private declarations }

 public

 { public declarations }

 end;

var

 Form2: TForm2;

implementation

uses tmain;

{ TForm2 }

procedure TForm2.FormClose(Sender: TObject; var CloseAction: TCloseAction);

begin

Form1.Show;

end;

procedure TForm2.Button1Click(Sender: TObject);

 var a,b,c,max,min,srd:integer; //переменные для сторон прямоугольника и вычислений

begin

// преобразование строковых значений в числовые

a:=StrToInt(Edit1.Text);

b:=StrToInt(Edit2.Text);

c:=StrToInt(Edit3.Text);

 //Находим максимальную по длине стророну

 max:=a;

 if b>max then max:=b;

 if c>max then max:=c;

 // Находим минимальную по длине сторону

 min:=a;

 if b<min then min:=b;

 if c<min then min:=c;

 // Находим среднию по длине сторону

 srd:=a+b+c-min-max;

 if (sqr(max)=sqr(srd)+sqr(min)) then //Проверяем теорему Пифагора a2 + b2 = c2

 Showmessage('Это прямоугольный треугольник!'

 +' Стороны в порядке возрастания их длины: '

 +IntToStr(min)+' '

 +IntToStr(srd)+' '

 +IntToStr(max))

 else ShowMessage('Это не может быть прямоугольный треугольник!');

end;

procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: char);

begin

case key of

 '0'..'9': ; //можно вводить только цифры

 ',': ; //или дробный числа

 #8 : ; // клавиша Back Space

 #13 : Edit2.SetFocus ; // клавиша Enter, и переход на другое окно ввода

 // Остальные символы - запрещены !

 else key := Chr(0); // запрещаем отображать символ

 end;

end;

procedure TForm2.Edit2KeyPress(Sender: TObject; var Key: char);

begin

 case key of

 '0'..'9': ; //можно вводить только цифры

 ',': ; //или дробный числа

 #8 : ; // клавиша Back Space

 #13 : Edit3.SetFocus ; // клавиша Enter, и переход на другое окно ввода

 // Остальные символы - запрещены !

 else key := Chr(0); // запрещаем отображать символ

 end;

end;

procedure TForm2.Edit3KeyPress(Sender: TObject; var Key: char);

begin

 case key of

 '0'..'9': ; //можно вводить только цифры

 ',': ; //или дробный числа

 #8 : ; // клавиша Back Space

 #13 : Button1.SetFocus ; // клавиша Enter, и переход на кнопку вычисления

 // Остальные символы - запрещены !

 else key := Chr(0); // запрещаем отображать символ

 end;

end;

initialization

 {$I tugol.lrs}

end.

unit parray;

{$mode objfpc}{$H+}

interface

uses

 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

 Grids, StdCtrls;

type

 { TForm3 }

 TForm3 = class(TForm)

 Button1: TButton;

 Label1: TLabel;

 Label2: TLabel;

 Label3: TLabel;

 Label4: TLabel;

 Label5: TLabel;

 Label6: TLabel;

 Label7: TLabel;

 Label8: TLabel;

 StringGrid1: TStringGrid;

 StringGrid2: TStringGrid;

 procedure Button1Click(Sender: TObject);

 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);

 procedure FormShow(Sender: TObject);

 private

 { private declarations }

 public

 { public declarations }

 end;

const

 size = 6;

var

 Form3: TForm3;

 a:array [1..size] of integer;

 b:array [1..size] of integer;

 max_a,max_b,buf:integer;

 i:integer;

implementation

uses tmain;


{ TForm3 }

procedure TForm3.FormShow(Sender: TObject);

begin

 with StringGrid1 do

 for i:=1 to size do

 begin

 Cells[i-1,0]:='';

 Cells[i-1,1]:='';

 end;

 with StringGrid2 do

 for i:=1 to size do

 begin

 Cells[i-1,0]:='';

 Cells[i-1,1]:='';

 end;

 for i := 1 to size do

 begin

 a[i] := 1 + Random(99); // заполняем массив случайными числами

 b[i] := 1 + Random(99); // заполняем массив случайными числами

 end;

 Label7.Visible:=False;

 Label8.Visible:=False;

end;

procedure TForm3.Button1Click(Sender: TObject);

begin

with StringGrid1 do

 for i:=1 to size do

 begin

 Cells[i-1,0]:=IntToStr(a[i]);

 Cells[i-1,1]:=IntToStr(b[i]);

 end;

 max_a :=1;

 max_b :=1;

 for i:=2 to size do

 begin

 if a[i] > a[max_a] then max_a := i;

 if b[i] > b[max_b] then max_b := i;

 end;

 Label7.Visible:=True;

 Label7.Caption:='Максимальный элемент массива А :'+IntToStr(a[max_a])

 +#13+'Номер элемента в массиве А :'+ IntToStr(max_a)

 +#13+'Максимальный элемент массива В :'+IntToStr(b[max_b])

 +#13+'Номер элемента в массиве В :'+ IntToStr(max_b);

 buf:= a[max_a];

 a[max_a]:= b[max_b];

 b[max_b]:= buf;

 with StringGrid2 do

 for i:=1 to size do

 begin

 Cells[i-1,0]:=IntToStr(a[i]);

 Cells[i-1,1]:=IntToStr(b[i]);

 end;

 max_a :=1;

 max_b :=1;

 for i:=2 to size do

 begin

 if a[i] > a[max_a] then max_a := i;

 if b[i] > b[max_b] then max_b := i;

 end;

 Label8.Visible:=True;

 Label8.Caption:='Максимальный элемент массива А :'+IntToStr(a[max_a])

 +#13+'Номер элемента в массиве А :'+ IntToStr(max_a)

 +#13+'Максимальный элемент массива В :'+IntToStr(b[max_b])

 +#13+'Номер элемента в массиве В :'+ IntToStr(max_b);

end;

procedure TForm3.FormClose(Sender: TObject; var CloseAction: TCloseAction);

begin

 Form1.Show;

end;

initialization

 {$I parray.lrs}

end.


unit colorshape;

{$mode objfpc}{$H+}

interface

uses

 Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

 StdCtrls, ExtCtrls;

type

 { TForm4 }

 TForm4 = class(TForm)

 Button1: TButton;

 Button2: TButton;

 ColorDialog1: TColorDialog;

 Label1: TLabel;

 Panel1: TPanel;

 Shape1: TShape;

 procedure Button1Click(Sender: TObject);

 procedure Button2Click(Sender: TObject);

 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);

 private

 { private declarations }

 public

 { public declarations }

 end;

var

 Form4: TForm4;

implementation

uses tmain;

{ TForm4 }

procedure TForm4.Button1Click(Sender: TObject);

begin

 if ColorDialog1.Execute then // вызываем окно диолого выборы цвета

 Shape1.Brush.Color:=ColorDialog1.Color; // меняем цвет фигуры

end;

procedure TForm4.Button2Click(Sender: TObject);

begin

 if ColorDialog1.Execute then // вызываем окно диолого выборы цвета

 Form4.Color:= ColorDialog1.Color; // меняем цвет формы

end;

procedure TForm4.FormClose(Sender: TObject; var CloseAction: TCloseAction);

begin

 Form1.Show;

end;

initialization

 {$I colorshape.lrs}

end.

Приложение В

Результаты работы программ:

1.  Работа программы tmain.

2. Работа программы Tugol


 

3. Работа программы parray

 


4. Работа программы colorshape.

 


 


ВЫВОДЫ

Данная курсовая работа была выполнена в полном соответствии поставленному заданию и отлажена в среде Лазарус. В ходе выполнения курсовой работы была разработана программа на модальных окнах.

В ходе выполнения курсового проекта были проведены - анализ технического задания и постановка задачи проектирования.

Были выделены функции, которыми должна обладать разрабатываемая программа.

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

Согласно разработанному алгоритму была составлена и отлажена программа алгоритмическом языке программирования Delphi. В ходе разработки программы проводилось ее тестирование и отладка на тестовых наборах.

Результаты работы оформлены в виде пояснительной записки.

В ходе разработки программы были закреплены навыки работы:

- командами ввода-вывода как на экран, так и в текстовые файлы,

- использования процедур,

- команды обработки массивов,

- команды для реализации циклов с заданным числом повторений;

В результате выполнения данной курсовой работы, мы убедились в широких возможностях языка программирования Delphi, закрепили практические навыки программирования в cреде Лазарус.


Список Использованной Литературы:

 

1.  Е.А. Жоголев. Введение в технологию программирования (конспект лекций). - М.: "ДИАЛОГ-МГУ", 1994.

2.  М. Зелковец, А. Шоу, Дж. Гэннон. Принципы разработки программного обеспечения. - М.: Мир, 1982. - С. 11.

3.  К. Зиглер. Методы проектирования программных систем. - М.: Мир, 1985. - С. 15-23.

4.  Дж. Фокс. Программное обеспечение и его разработка. - М.: Мир, 1985. - С. 53-67, 125-130.

5.  И. Ю. Баженова Delphi 7 самоучитель программиста Москва 2003.


Информация о работе «Объектно-ориентированная разработка программ»
Раздел: Информатика, программирование
Количество знаков с пробелами: 32434
Количество таблиц: 0
Количество изображений: 8

Похожие работы

Скачать
25708
0
15

... Еще в октябре 1996 г. Microsoft и Rational Software Corporation объявили о своем стратегическом партнерстве, которое, по их общему мнению, способно оказать решающее влияние на рынок средств объектно-ориентированной разработки программ. При этом Microsoft лицензировала у Rational Software некоторые технологии визуального моделирования, в результате чего был разработан Microsoft Visual Modeler for ...

Скачать
42857
3
6

... как для С++, так и для Smalltalk. ·     Versant Object Technology, Inc. (СУБД Versant) проводит двойную стратегию, предлагая средство обеспечения объектно-ориентированной СУБД высокого класса для телекоммуникаций и инструментальные средства Smalltalk для более общих случаев разработки приложений. Используя разработанный фирмой интерфейс VERSANT Smalltalk Language Interface, СУБД совместима как с ...

Скачать
29390
0
1

... используется вниз и вверх по иерархии объектов, причем каждый объект иерархии выполняет это действие способом, именно ему подходящим.     2.  Объект - как базовое понятие в объектно-ориентированном программировании Понятию “объект” сопоставляют ряд дополняющих друг друга определений. Ниже приведены некоторые из них. Объект - это осязаемая реальность, характеризующаяся четко определяемым ...

Скачать
43002
9
11

... ; case "vyx1_0": vyx1_0(main_prog); break; case "vyx0_1": vyx0_1(main_prog); break; } } 6. Организация процесса проектирования Г. Буч [12] выделяет в процессе проектирования программного приложения микро и макропроцессы. Микропроцесс объектно-ориентированной разработки приводится в движение потоком сценариев и архитектурных продуктов, которые порождаются и последовательно уточняются в ...

0 комментариев


Наверх