Главная » Просмотр файлов » Основы программирования

Основы программирования (947332), страница 65

Файл №947332 Основы программирования (Иванова Г.С. Основы программирования) 65 страницаОсновы программирования (947332) страница 652013-09-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 65)

Начинаем с объектной декомпозиции интерфейсной и пред­метной частей приложения. Интерфейсная часть включает только Окно при­ложения. Предметная - объект Число, который отвечает за инициализациючисла и возведение его в квадрат (рис. П5.3).При анализе реализуемыхСозда1ь ^^ функций учтем, что при вводе чиВычислить J^^^ ВОЗМОЖНЫ ошибки. СлсдоваI"^^^тельно, необходим интерфейс сУничтожить-('VРис.

П5.3. Объектная декомпозиция396IJтремя основными состояниями:Ввод числа, Демонстрация результата и Демонстрация сообще-ПриложениеOKДемонстрация]сообщенияВвод Enter[Число введеноневерно]Нормальное выполнениеВводчислаСледующееВвод Enter[Число введеноверно]Демонстрация]результатаВыходРис.

П5.4. Диаграмма переходов состояний интерфейсания об ошибке (рис. П5.4). Из двух первых состояний необходимо обеспе­чить возможность выхода, поэтому объединим их в дополнительное состоя­ние - Нормальное выполнение.П р о е к т и р о в а н и е и н т е р ф е й с а . Основное окно приложе­ния проектируем, используя средства визуальной среды Delphi (рис. П5.5),аналогично тому, как это было сделано в предыдущем примере.

Затем уточ­няем внешний вид приложения в каждом из состояний интерфейса (рис.П5.6): определение жестких ограничений на действия пользователя позволя­ет избежать некорректной работы программы в условиях событийного про­граммирования.Используя Инспектор объектов, определяем имена объектов (по умолча­нию Delphi, как было показано в предыдущем примере, называет объекты,используя имя компонента и номер объекта, что неудобно, если разных ком­понентов включается в форму много) и значения некоторых свойств:»1Я»^^^||^ш^яешTButtonTLabelTEditTBevelРис. П5.5.

Проектирование формы основного окна приложения397ПриложениеРяИИМ^ИшШ^ШЯИнЁз!яЮйЯШшвИШ!^3]^^ЙГ^'-ЧИ€;йО>;:.-:/"*:-1Г^ iii»ii»>w»>it>'^>ijiiii>^;^i./Ir^>.l...>..-l;l.'>:'.S'.J:..^...^....'^I;I-''5^;<[ij 625^'лЖШШ^:|й!Яу:|РвшШШШшШМШвиЕ!•;B^«fte-4MCif10^Рис. П5.6.

Интерфейс приложения «Возведение числа в квадрат»:а - ввод числа (исходное состояние); б - демонстрация результата;в - демонстрации сообщения об ошибкеForml - главная форма приложения:Name: MainForm ~ имя объекта-формы;Caption: 'Возведение числа в квадрат' - заголовок окна;Labell ~ первая метка:Name: InputLabel - имя объекта-метки;Caption: 'Введите значение' ~ текст метки;Label2 - вторая метка:Name: OutPutLabel - имя объекта-метки;Caption: 'Квадрат значения равен:' - текст метки;Editl - первый однострочный редактор:Name: InputEdit ~ имя объекта-редактора;Edit2 - второй однострочный редактор:Name: OutPutEdit - имя объекта-редактора;398ПрилоэюениеEnable: false - запрет активизации редактора пользователем;Readonly: true - запрет ввода текста в редактор;Button 1 - первая кнопка:Name: NextButton ~ имя объекта-кнопки;Caption: 'Следующее' - название кнопки;Button2 - вторая кнопка:Name: ExitButton - имя объекта-кнопки;Caption: 'Выход' - название кнопки.Проектирование объекта предметной области.Анализ взаимодействия объектов, полученных в процессе объектнойдекомпозиции показывает, что класс TNumber для реализации объекта Чис­ло должен включать поле Num для хранения введенного значения, конструк­тор и метод определения квадрата числа.

Деструктор он может наследоватьот класса TObject. Полная диаграмма классов приложения показана нарис. П5.7 (серым выделены стандартные классы Delphi). Классы TMainFormи TNumber связаны отношением ассоциации, так как класс формы посылаетклассу объекта сообщения.Р е а л и з а ц и я . Описание класса TNumber и его методов целесообраз­но поместить в специальном модуле:Unit UnitNumber;InterfaceTypeTNumber=class(TObject)private Num:single;public Constructor Create(aNum:single);Function SqrNumber:single;end;-;-'.-^'.';jV 'Sp¥0^- 1^ATMainFormШш^^:;М,—-оЩ^ШШ:ТТРодаMainFormActivateInputEditKeyPressedNextButtonClickExitButtonClickTNumber 1Управляет •NumCreate()Sqr( )Destroy()11Ш1Ши11Рис.

П5Л. Ди?1грамма классов приложения399ПриложениеVar N: TNumber;ImplementationConstructor TNumber. Create(aNum:single);begininherited Create;Num:=aNum;end;Function TNumber.SqrNumber:single;begin Result: ^Sqr(Num);end;end.В секции реализации модуля MainForm указываем использованиемодуля UnitNumber.О б р а б о т ч и к и с о б ы т и й . Привязываем проектируемые события,указанные на диаграмме переходов состояний интерфейса, к событиям, об­рабатываемым визуальными компонентами, и описываем необходимые дей­ствия приложения (табл. П5.1).Т а б л и ц а П5.1РеальныесобытияЗапускприложенияСобытия компонентовДействияНастройка интерфейсаMainForm: On Activate получение окном управления ввод числа (рис. П5.6, а)Ввод цифрнаОбрабатывается компонентомTEdit автоматическиЕсли введено не число, то вы­Ввод Enter IInputEdit: OnKeyPressedводсообщенияоб ошибке (рис.j ввод алфавитно-цифровой инП5.6,б),иначесоздание объекта1 формации в окно компонентаЧисло,генерациязапросао квадра­редактированияте числа, вывод результата (рис.П5.6, в) и уничтожение объектаjЩелчок поI кнопке ОКОбрабатывается окном сооб­щения автоматически1 Щелчок поNextButton: OnClick:кнопке Следу- щелчок мышью по кнопкеI ющееНастройка интерфейсаввод числа (рис.

П5.6, а)IЩелчок поExitButton: OnClicki кнопке Выход щелчок мышью по кнопке400Завершение приложениянаПриложениеПоследовательно выделяем компоненты, выбираем в списке событийEvents Инспектора объектов нужные события и дважды щелкаем мышью начистом поле рядом с ними. В результате создаются заготовки обработчиковсобытий, в которые необходимо вписать соответствующие фрагменты про­граммы. В конечном итоге получаем полный текст модуля MainForm, приве­денный ниже (операторы, вводимые программистом, выделены полужирнымшрифтом).Unit MainForm;InterfaceUses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls; {модули Delphi}TypeTMainForm= class(TForm){oimcdLUHQ формы - создано автоматически}InputLabel: TLabel; OutputLabel: TLabel; {метки}Input Edit: TEdit;Output Edit: TEdit;{редакторы}NextButton: TButton; ExitButton: TButton; {кнопки}Bevell: TBevel;{рамка}procedure FormActivatefSender: TObject);procedure InputEditKey Press (Sender: TObject; var Key: Char);procedure NextButtonClick(Sender: TObject);procedure ExitButtonClick(Sender: TObject);end;Var MainForm: TMainForm; {объект-создано автоматически }Implementationuses UnitNumber; {описание класса TNumber}{$R \DFM}Procedure TMainForm.FormActivate(Sender: TObject);beginOutputEdit Visible:=false; {сделать редактор вывода невидимым}OutputLabeLVisible:=false; {сделать метку вывода невидимой}NextButton.Enabled:=false; {слипать кнопку Следующийнедоступной}InputEdit.

Clear;{очистить редактор ввода}InputEdit.ReadOnfy:=false; {разрешить ввод}InputEditSetFocus;{установить фокус ввода на редактор ввода}end;Procedure TMainForm.InputEditKeyPress(Sender: TObject; var Key: Char);Var k:single; Codennteger;beginifKey-=#13 thenbeginKey:=#0; {чтобы не выдавался звуковой сигнал}401ПрилоэюениеVal(InputEdit. Text,k,Code);if Code-0 thenbeginN:-TNumber.Create(strtofloat(InputEdit.Text)); {создать объект}OutPutEditText:'=floattostr(N.SqrNumber); {вывести результат}KDestroy; {уничтожить объект - деструктор TObject}OutPutEditVisible:-true; {сделать редактор вывода видимым}OutputLabel,Visible:=true; {сделать метку вывода видимой}InputEdit.ReadOnly:-true; {запретить ввод}NextButton.Enabled:=true; {сделать кнопку Следующийдоступной}NextButtonSetFocus; {установить фокус ввода на кнопкуСледующий}endelse {вывести сообщение об ошибке}MessageDlgCCmpoKu codep:>/€um недопустимые символы',mtErrorJmbOkJyO)end;end;Procedure TMainForm.NextButtonClick(Sender: TObject);beginFormActivate(NextButton); end; {вызываем метод}Procedure TMainForm,ExitButtonClick(Sender: TObject);begin Close; end; {закрываем окно и завершаем приложение}End,Основную программу приложения - проект Delphi формирует автомати­чески:Program ProectXQ;UsesForms,MainFormUnit in 'MainFormUnit.pas', {Mainform}UnitNumber in 'UnitNumber.pas';{$R *.RES}BeginApplication.Initialize; {инициализация объекта Приложение}Application.CreateFormfTMainForm, MamForw);{создание формы}Application,Run;{запуск цикла обработки сообщений}End.Чтобы лучше показать возможности среды, в качестве третьего примерарассмотрим, как можно реализовать в Delphi уже знакомый нам пример сзаписной книжкой (см.

Характеристики

Тип файла
PDF-файл
Размер
13,06 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6294
Авторов
на СтудИзбе
314
Средний доход
с одного платного файла
Обучение Подробнее