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

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

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

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

Библиотека интерфейсных компонентов содержитклассы, реализующие обобщенные объекты, вид и поведение которых, свя­занные с решением конкретной задачи, не определены. Для того чтобы уточ­нить вид компонентов интерфейса, обычно достаточно их соответствующимобразом инициализировать. Конкретизацию поведения компонентов в реаль­ной задаче выполняют за счет наследования классов реальной задачи от биб­лиотечных.На рис. 12.13 представлена полная диаграмма классов программы, накоторой показано наследование интерфейсных классов от описанных в биб­лиотеке и уточнены их ассоциации с классом TBase.Класс TIName будет использован для реализации объекта Ввод именифайла.

Он переопределяет метод Error класса TInput, задавая свой вариантпроверки правильности введенной информации.Класс TMain строится для реализации объекта Главное меню. Он пере­определяет метод Enter, конкретизируя поведение программы при выборепунктов главного меню. Количество пунктов меню регулируется соответст­вующей инициализацией поля nalt. Добавляемое поле may логического типабудет использовано для контроля открытия файла.Классы TAdd и TFind будут использованы для реализации форм Добав­ление и Поиск. Очевидно, что они должны переопределять абстрактный ме­тод Enter прародителя - класса TMenu.

Кроме этого в классе TFind необходи­мо переопределить метод ввода, который должен обеспечить ввод информа­ции не из всех полей, а только из поля фамилии и поля имени, и добавить ме­тод Show для вывода найденных данных (телефона и, при поиске по непол­ным данным, имени или фамилии) в окно поиска.377Часть 2, Объектно-ориентированное программированиетт."ТГILTINameTMainTFormТError()TAddEnter()mayEnter(), Init()2_TFindEnter(), Input(), Show()V ФормируетОткрывает •XBaseЛ ОбрабатываетРис.

12.13. Диаграмма классов программы «Записная книжка»Для реализации объекта Сообщение об отсутствии данных нового клас­са создавать не нужно, используем непосредственно класс TMessage.После объявления наследуемых классов перед описанием переопреде­ленных методов необходимо объявить объекты-переменные, так как методыбудут обращаться к этим переменным для программирования требуемыхдействий.Ниже представлен полный текст программы.Program Memory;Uses crt,WmJnput,Message,Menu,Form,Base;{объявление классов - потомков библиотечных классов}Туре TMain-Object (ТМепи) {главное меню}тау:Ьоо1еап;{признак открытия файла}Procedure Enter; virtual;end;Type TIName=Object(TInput){ввод имени файла}Function Error:boolean; virtual; {проверка имени файла}end;Type TAdd=Object(TForm){форма для добавления записей}Procedure Enter; virtual; {завершение ввода одной записи}end;37812, Разработка библиотеки интерфейсных компонентовТуре TFind=ObJect(TForm){форма для поиска телефонов}Procedure Input; virtual; {ввод данных поиска}Procedure Enter; virtual; {поиск одной записи}Procedure Show;{вывод результата поиска в окна}end;{объявление объектов-переменных}Var M:TMain;{объект Главное меню}N:TIName;{объект Ввод имени файла}A:TAdd;{объект Добавление записей}F:TFind;{объект Поиск записей}ND:TMessage;{объект Сообщение об отсутствии данных}B:TBase;{объект Файл}{описание дополнительных методов}Procedure TMain.Enter; {обработка выбора пунктов главного меню}Begincase проз ofl:beginN.Draw;{выводим окно ввода}NJnput;{вводим имя файла, проверяя его допустимость}B,Open(N.inpJext); {если файл существует, то открываем,иначе - создаем}may:=true; {устанавливаем признак открытия файла }end;2:if may then {если определен файл данных }A.Run;{осуществляем добавление записей}Зц/тау then{если определен файл данных }FRun;{осуществляем поиск записей}end;End;Function TIName.Error; {проверка имени файла}Var L'integer;Begin l:=Pos(\ \ inp.Text);if 1=0 then l:=length(inp.Text);if(l>0) and e<==8) then Error:=faheelse Error:=true;End;Procedure TAdd.Enter; {обработка пунктов меню добавления}Begincasenpos ofl:beginInput; {вводим фамилию, имя и телефон}B,Add(masinpf]J.

inp. text, masinp[2]. inp, text,masinp[3J.inp.text); {записываем в файл}379Часть 2. Объектно-ориентированное программированиеend;end; {case}End;Procedure TFindEnter; {обработка пунктов меню поиска}Begin case npos of]:beginInput; {вводим фамилию и имя }ifB,Find(masinp[l]AnpJexUmasinp[2]Anp.text) then Showelse ND.Run; {выводим сообщение об отсутствии данных }end;2:beginifB.FindNext then Showelse ND.Run; {выводим сообщение об отсутствии данных }end;end;End;Procedure TFindJnput; {ввод данных для поиска информации}BeginClear;{очищаем поля ввода}masinp[l].Input; {вводим фамилию}masinp[2],Input; (вводим имя}End;Procedure TFind.Show; {вывод найденной информации в окно}BeginClear;masinpfJJ,inpJext:=B,family; masinpflJ.Draw; {выводим фамилию}masinpf2], inp. text: =Я name; masinp[2J, Draw; {выводим имя}masinpf3JjnpJext:=BJelefon; masinp[3J,Draw; {выводим телефон}End;{описание констант для инициализации полей-массивов}Const menul:array[l.J]ofTWin=((xl:I0;yl:14;x2:23;y2:18;attr:113;xt:3;yt:2;text:'Создать / открытькниэюку*),(xl:26;yl:14;x2:39;y2:18;attr:113;xt:4;yt:2;text: 'Записатьтелефон'),(xl:42;yl:14;x2:55;y2:18;attr:113;xt:5;yt:2;text: 'Найтителефон'),(xl:58;yl:14;x2:71;y2:18;attr:113;xt:4;yt:2;text: 'Завершитьработу'));menu2:array[L.2] ofTWin^((xl:28;yl:18;x2:38;y2:21;attr:113;xt:2;yt:2;text: 'Добавить'),(xl:42;yl:18;x2:52;y2:2I;attr:113;xt:2;yt:2;text: 'Выход'));38012.

Разработка библиотеки интерфейсных компонентовтепиЗ: array[1.. 3] of TWin=((xl:23:yl:18;x2:33;y2:21;attr:113;xt:2;yt:2:text: 'Найти'),(xl:35:yl:18;x2:45;y2:21;attr:113;xt:2;yt:2:text: 'Следующий'),(xl:47;yl:18;x2:57:y2:21:attr:113;xt:2:yt:2;textrBbixod')):inpp:arrayfJ..3J ofTInput=((xl:22;yl:8:x2:32;y2:8;attr:94;xt:l;yt:l;text:'Фамилия';Inp:(xl:34;yl:8;x2:54;y2:8;attr:112;xt:l;yt:l;textr')),(xl:22;yl:10;x2:32;y2:10;attr:94;xt:l;yt:l;text:'Имя ';Inp:(xl:34:yl:10;x2:54:y2:10;attr:112;xt:l;yt:l;text:")),(xl:22;yl:12;x2:32;y2:12;attr:94;xt:l;yt:l;text:'Телефон';Inp:(xl:34;yl:12;x2:54;y2:12;attr:112;xt:l;yt:l;text:")));{основная программа}Begin{инициализируем объекты}M.Imt(5,5,76,20,30,5,3, 'Записная книж:ка',4,тепи1);A.Init(20,2,60,22,94,5,3, 'Добавление записей',2,menu2,3,inpp);N.Init(30,8,50,19,94,3,3, 'Введите имя файла:',35,12,45,12,112,1,1,' ');FJnit(20,2,60,22,94,5,3, 'Поиск записей',3, тепиЗ, 3, inpp);NDJnit(30,6,50,14,30,6,2, 'Нет данных',34,11,46,12,71,2,1, 'Продоллсить');{начинаем работу}М.тау:'=false; {устанавливаем признак «файл не открыт»}M,Run;{передаем управление Главному меню}if may then B.Closef;{закрываем файл}{очищаем экран}TextBackGround(O);TextColor(l);Window(l,1,80,25);Clrscr;End.К основным достоинствам объектно-ориентированного подхода следуетотнести:• уменьшение количества параметров подпрограмм;• увеличение объема повторно используемых кодов;• возможность унификации программных элементов (в том числе ин­терфейсных);• относительную простоту распределения разработки сложных про­граммных продуктов между несколькими программистами.Рассмотрим эти достоинства подробнее.Уменьшение количества параметров подпрограмм связано с тем, что привызове методов мы не должны указывать поля объекта.

В свою очередь, чем381Часть 2. Объектно-ориентированное программированиеменьше параметров, тем меньше вероятность ошибки при вызове подпро­граммы, а ведь именно такие ошибки обычно выявляются при сборке про­грамм из модулей, т.е. на последнем самом сложном этапе отладки програм­мы.Увеличение объема повторно используемых кодов вызвано появлениемвозможности использования уже суш.ествующих классов, приспособив их ксвоим целям без изменения текстов уже написанных программ. Методы, ко­торые нас не устраивают, мы просто заменяем при наследовании, сохраняявозможность вызвать их из заменяющего метода и даже из программы.Возможность унификации программных элементов также являетсяследствием появления средств построения новых классов на базе существу­ющих. Работать с такими элементами удобно, так как деталей реализации их,как правило, можно не знать.Поскольку независимость объектов существенно выше, чем подзадач,уменьшается количество вопросов, которые должны быть учтены при веде­нии разработки несколькими программистами.Однако у объектно-ориентированного подхода есть и недостатки.

И кним в первую очередь относят некоторое увеличение размера программы засчет большого числа небольших подпрограмм, которые вряд ли появилисьбы при использовании структурного подхода. Соответственно объектно-ори­ентированные программы медленнее работают, так как каждый вызов под­программы требует времени.Существует и еще один недостаток ~ сложность обработки нештатныхситуаций, таких как деление на нуль и т. п. Дело в том, что ситуации такогорода обнаруживаются обычно не в том месте и часто даже не во время рабо­ты того объекта, где определяются некорректные данные и соответственновозможна их корректировка. Этот недостаток исправлен в более развитыхобъектных моделях, например в Delphi Pascal, за счет реализации механизмаисключений.Задания для самопроверкиЗадание 1.

Разработайте программу, которая организует хранение в файле ин­формации о печатных изданиях. Для каждого издания определены: наименование,периодичность, тираж, типография. Программа должна в диалоговом режиме кор­ректировать информацию в файле и давать ответы на каждый из перечисленных во­просов:1) вывести наименования всех ежедневных изданий, печатаемых указанной ти­пографией;2) определить наименование издания данной периодичности с наибольшим ти­ражом;3) определить наименования всех изданий, печатаемых типографией, на кото­рую приходится максимальный суммарный тираж.38212.

Разработка библиотеки интерфейсных компонентовПри проектировании интерфейса используйте разработанные в настоящей гла­ве классы интерфейсных элементов.Задание 2. Разработайте программу, которая организует хранение в файле ин­формации о товарах на складе. По каждому товару необходимо хранить: наименова­ние, дату изготовления, сведения об изготовителе, дату поступления, количествоединиц хранения. Программа должна в диалоговом режиме корректировать инфор­мацию в файле при его отгрузке или постуУ1лении и давать ответы на каждый из пе­речисленных вопросов:1) вывести список товаров на складе на текущий момент времени;2) выполнить поиск товаров по наименованию;3) вывести список товаров, отсортированный по дате поступления.При проектировании интерфейса используйте разработанные в настоящей гла­ве классы интерфейсных элементов.Задание 3. Предложите собственную библиотеку интерфейсных элементов дляреализации интерфейса программы заданий 1и 2.ПриложениеП1.

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

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

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

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