Автор: Пользователь скрыл имя, 23 Марта 2012 в 14:31, курсовая работа
В идеальном случае подход к разработке программы делится на три части: вначале получить ясное понимание задачи, потом выделить ключевые идеи, входящие в ее решение, и наконец выразить решение в виде программы.
Объект - это совокупность данных и способов работы с ними. Инкапсуляция - это механизм объединения и защиты данных и кода. Объект - это то, что поддерживает инкапсуляцию. Объединение кода и данных представляет собой "черный" ящик. Объект характеризуется свойствами. Свойства объекта - это данные, методы обра-щения с данными объекта, события, на которые объект может реагировать.
1. Ключевые положения объектно-ориентированного программирования.
2. Расширения файлов, принятые в среде разработки C++Builder 6.
3. Алгоритм создания программного кода на C++.
4. Создание и сохранение нового проекта.
5. Открытие и использование менеджера проектов.
6. Планирование работ - список to-do list.
7. Задание информации о версии программы.
8. Работа с формами.
1. Включение в проект новой формы.
2. Просмотр форм и модулей без включения их в проект.
3. Размещение компонентов на форме.
4. Repository - Депозитарий - Хранилище форм и проектов.
9. Инструментальные средства поддержки разработки кода.
1. Применение Code Insight - знатока кода.
2. Исследователь классов ClassExplorer.
3. Поддержка разработки, встроенная в окно редактора кода.
4. Справочная система C++Builder и программа ее конфигурирования OpenHelp.
10. Отладка приложений.
1. Компиляция и компоновка проекта.
2. Сообщения компилятора и компоновщика.
3. Выполнение приложения по шагам.
4. Точки прерывания.
5. Использование окна инспектора отладки bug Inspector.
11. Разработка графического интерфейса пользователя.
1. Требования к интерфейсу пользователя приложений для Windows.
Если HelpContext компонента равен нулю, то данный компонент наследует это свойство от своего родительского компонента. Например, для всех компонентов, размещенных на некоторой панели можно задать Help-Context = 0, а для самой панели задать отличное от нуля значение HelpContext, соответствующее теме, описывающей назначение всех компонентов панели.
Для того чтобы все это работало, надо выполнить команду Pro|ect | Options и в окне Project Options (опции проекта) на странице Application (приложение) установить значение опции Help file, равное имени подготовленного файла .hlp. Это приведет к тому, что в головном файле проекта появится оператор вида:
Application->HelpFile = "<имя файла>.hlp";
В этом операторе используется метод HelpFiIe, определяющий файл справки, к которому обращается проект. Этот метод и подобный оператор можно использовать в приложении в любом обработчике события, если в какие-то моменты требуется сменить используемый файл справки.
Если предполагается, что файл справки будет расположен в том же каталоге, где находится само приложение, то имя файла и в окне Опции проекта, и в приведенном выше операторе надо задавать без указания пути. Иначе приложение, работающее на вашем компьютере, перестанет работать на компьютере пользователя, у которого каталоги не совпадают с вашими.
Для того чтобы приложение в свойствах HelpContext могло ссылаться на какой-то номер контекстной справки, в файле проекта справки .hpj в разделе [MAP] надо поместить таблицу соответствия использованных значений HelpContext и тем файла .hlp.
В заключение поговорим о традиционном разделе меню Справка, позволяющем пользователю открыть файл справки .hlp и получить развернутую информацию по всем вопросам, связанным с данным приложением. В обработчик события при выборе данного раздела меню или при нажатии соответствующих кнопок помощи вставляются операторы вида
Application->HelpContext(<
Задаваемые в этих операторах номера тем аналогичны используемым при задании свойств HelpContext. Это номер той темы, которая первой отобразится при открытии окна справки. А в дальнейшем пользователь, как обычно, может перейти, работая с программой справки, к любой интересующей его теме.
Имеется еще несколько методов объекта Application, обеспечивающих работу со справочными файлами.
Еще один механизм подсказок, связанный с файлом справок .hlp - кнопка справки, присутствующая в заголовках многих современных окон Windows. Нажав ее, пользователь может подвести курсор мыши, изменивший свою форму на вопросительный знак, к какому-то компоненту, щелкнуть и во всплывшем окне появится развернутая подсказка, поясняющая назначение данного компонента. Для того чтобы ввести такую возможность в свое приложение, надо установить в true подсвойство byHelp свойства BorderIcons вашей формы. Однако не для всех форм это вызовет появление в заголовке окна кнопки справки. Кнопка появится только в случае, если свойство BorderStyle формы установлено в bsDialog. Никакого программирования работа с кнопкой справки не требует. Все будет выполняться автоматически. Достаточно предусмотреть в файле .hlp соответствующие темы и сделать на них ссылки в свойствах HelpContext компонентов. Эти темы будут появляться при соответствующих действиях пользователя во всплывающих окнах.
Палитра компонентов (рис. ) - это витрина библиотеки визуальных компонентов (Visual Component Library - VCL). Она позволяет сгруппировать компоненты в соответствии с их смыслом и назначением. Эти группы или страницы снабжены закладками. Вы можете изменять комплектацию страниц, вводить новые страницы, переставлять их, вносить на страницы разработанные вами шаблоны и компоненты и т.д.
Standard | Стандартная, содержащая наиболее часто используемые компоненты |
Additional | Дополнительная, являющаяся дополнением стандартной |
Win32 | 32-битные компоненты в стиле Windows 95/98 и NT |
System | Системная, содержащая такие компоненты, как таймеры, плееры и ряд других |
Data Access | Доступ к данным, в C++Builder 6 большинство компонентов, размещавшихся ранее на этой странице, перенесено на страницу BDE |
Data Controls | Компоненты отображения и редактирования данных |
dbExpress | Связь с данными с помощью dbExpress (начиная с C++Builder 6) |
DataSnap | Компоненты для связи с сервером приложений при построении многопоточных приложений, работающих с данными (начиная с C++Builder 6 и не во всех вариантах C++Builder) |
BDE | Доступ к данным через Borland Database Engine - BDE (начиная с C++Builder 6, ранее эти компоненты размещались на странице Data Access) |
ADO | Связь с базами данных через Active Data Objects (ADO) - множество компонентов ActiveX, использующих для доступа к информации баз данных Microsoft OLE DB (начиная с C++Builder 5) |
InterBase | Прямая связь с Interbase, минуя Borland Database Engine (BDE) и Active Data Objects (ADO) (начиная с C++Builder 5) |
WebServices | Компоненты клиентский приложений Web, использующие доступ к службам Web с помощью SOAP (начиная с C++Builder 6) |
InternetExpress | Построение приложений InternetExpress - одновременно приложений сервера Web и клиента баз данных с параллельными потоками (начиная с C++Builder 5) |
Internet | Компоненты для создания серверов Web |
WebSnap | Компоненты для создания серверов Web, содержащих сложные страницы, управляемые данными (начиная с C++Builder 6 и не во всех вариантах C++Builder) |
FastNet | Различные протоколы доступа к Интернет (начиная с C++Builder 5) |
Decision Cube | Компоненты для многомерного анализа данных (не во всех вариантах C++Builder) |
QReport | Компоненты для подготовки отчетов |
Dialogs | Диалоги, системные диалоги типа "Открыть файл" и др. |
Win 3.1 | Windows 3.x, компоненты в стиле Windows 3.x |
Samples | Образцы, различные интересные, но не до конца документированные компоненты |
ActiveX | Примеры компонентов ActiveX |
COM+ | Компонент, дающий доступ к каталогу СОМ+, содержащему данные по конфигурации СОМ+ |
Servers | Компоненты связи с серверами СОМ (начиная с C++Builder 6, в C++Builder 5 на этой странице размещались компоненты, перенесенные теперь на страницу Office2k) |
IndyClients | Компоненты клиентских приложений Internet Direct (Indy), дающих доступ к различным протоколам Интернет из приложений Delphi, C++Builder, Kylix (начиная с C++Builder 6) |
IndyServers | Компоненты серверных приложений Internet Direct (Indy) (начиная с C++Builder 6) |
IndyMisk | Различные вспомогательные компоненты приложений Internet Direct (Indy) (начиная с C++Builder 6) |
InterBase Admin | Компоненты доступа к службам InterBase |
Office2k или Office97 | Оболочки VCL для распространенных серверов СОМ офисных приложений Microsoft (начиная с C++Builder 5, но там эти компонента размещались на странице Servers) |
Поскольку число страниц в C++Builder 6 велико и не все закладки видны на экране одновременно, в правой части палитры компонентов имеются две кнопки со стрелками, направленными влево и вправо. Эти кнопки позволяют перемещать отображаемую на экране часть палитры. Кроме того, в C++Builder 6 в контекстном меню палитры компонентов, всплывающем при щелчке на палитре правой кнопкой мыши, имеется раздел Tabs. При выборе этого раздела вы увидите алфавитный перечень страниц библиотеки и сможете переключиться на указанную вами страницу.
Чтобы перенести компонент на форму, надо открыть соответствующую страницу библиотеки и указать курсором мыши необходимый компонент. При этом кнопка-указатель , размещенная в левой части палитры компонентов, приобретет вид не нажатой кнопки. Это значит, что вы находитесь в состоянии, когда собираетесь поместить компонент на форму. Если вы нажмете эту кнопку, это будет означать, что вы отказались от размещения выбранного компонента.
Поместить выбранный в палитре компонент на форму очень просто - надо сделать щелчок мышью в нужном месте формы. Есть и другой способ поместить компонент на форму - достаточно сделать двойной щелчок на пиктограмме компонента в палитре, и он автоматически разместится в центре вашей формы. Если вы выбрали компонент, а затем изменили ваше намерение размещать его, вам достаточно нажать кнопку указателя. Это прервет процесс размещения компонента, и программа вернется в нормальный режим, в котором вы можете выбирать другой компонент или выполнять какую-то команду.
Имена компонентов, соответствующих той или иной пиктограмме, вы можете узнать из ярлычка, появляющегося, если вы задержите над этой пиктограммой курсор мыши. Если вы выберете в палитре компонент и нажмете клавишу F1, то вам будет показана справка по типу данного компонента. Тут надо сразу сделать одно замечание. Имена на ярлычках выглядят, например, так: MainMenu, Button и т.д. Однако в C++Builder все имена классов в действительности начинаются с символа "Т", например, TMainMenu, TButton. Под такими именами вы можете найти описания соответствующих компонентов во встроенной в C++Builder справочной системе.
Отладка программы в любом случае предполагает обдумывание и логическое осмысление всей имеющейся информации об ошибке. Большинство ошибок можно обнаружить по косвенным признакам посредством тщательного анализа текстов программ и результатов тестирования без получения дополнительной информации. При этом используют различные методы:
ручного тестирования;
индукции;
дедукции;
обратного прослеживания.
Метод ручного тестирования. Это — самый простой и естественный способ данной группы. При обнаружении ошибки необходимо выполнить тестируемую программу вручную, используя тестовый набор, при работе с которым была обнаружена ошибка.
Метод очень эффективен, но не применим для больших программ, программ со сложными вычислениями и в тех случаях, когда ошибка связана с неверным представлением программиста о выполнении некоторых операций.
Данный метод часто используют как составную часть других методов отладки.
Метод индукции. Метод основан на тщательном анализе симптомов ошибки, которые могут проявляться как неверные результаты вычислений или как сообщение об ошибке. Если компьютер просто «зависает», то фрагмент проявления ошибки вычисляют, исходя из последних полученных результатов и действий пользователя. Полученную таким образом информацию организуют и тщательно изучают, просматривая соответствующий фрагмент программы. В результате этих действий выдвигают гипотезы об ошибках, каждую из которых проверяют. Если гипотеза верна, то детализируют информацию об ошибке, иначе — выдвигают другую гипотезу. Последовательность выполнения отладки методом индукции показана на рис. 1 в виде схемы алгоритма.
Рис. 1. Схема процесса отладки методом индукции
Самый ответственный этап — выявление симптомов ошибки. Организуя данные об ошибке, целесообразно записать все, что известно о ее проявлениях, причем фиксируют, как ситуации, в которых фрагмент с ошибкой выполняется нормально, так и ситуации, в которых ошибка проявляется. Если в результате изучения данных никаких гипотез не появляется, то необходима дополнительная информация об ошибке. Дополнительную информацию можно получить, например, в результате выполнения схожих тестов. В процессе доказательства пытаются выяснить, все ли проявления ошибки объясняет данная гипотеза, если не все, то либо гипотеза не верна, либо ошибок несколько.
Метод дедукции. По методу дедукции вначале формируют множество причин, которые могли бы вызвать данное проявление ошибки. Затем анализируя причины, исключают те, которые противоречат имеющимся данным. Если все причины исключены, то следует выполнить дополнительное тестирование исследуемого фрагмента. В противном случае наиболее вероятную гипотезу пытаются доказать. Если гипотеза объясняет полученные признаки ошибки, то ошибка найдена, иначе — проверяют следующую причину (рис. 2).
Рис. 2. Схема процесса отладки методом дедукции
Метод обратного прослеживания. Для небольших программ эффективно применение метода обратного прослеживания. Начинают с точки вывода неправильного результата. Для этой точки строится гипотеза о значениях основных переменных, которые могли бы привести к получению имеющегося результата. Далее, исходя из этой гипотезы, делают предположения о значениях переменных в предыдущей точке. Процесс продолжают, пока не обнаружат причину ошибки.
Методы и средства получения дополнительной информации при отладке.
Для получения дополнительной информации об ошибке можно выполнить добавочные тесты или использовать специальные методы и средства:
отладочный вывод;
интегрированные средства отладки;
независимые отладчики.
Отладочный вывод. Метод требует включения в программу дополнительного отладочного вывода в узловых точках. Узловыми считают точки алгоритма, в которых основные переменные программы меняют свои значения. Например, отладочный вывод следует предусмотреть до и после завершения цикла изменения некоторого массива значений. (Если отладочный вывод предусмотреть в цикле, то будет выведено слишком много значений, в которых, как правило, сложно разбираться.) При этом предполагается, что, выполнив анализ выведенных значений, программист уточнит момент, когда были получены неправильные значения, и сможет сделать вывод о причине ошибки.
Данный метод не очень эффективен и в настоящее время практически не используется, так как в сложных случаях в процессе отладки может потребоваться вывод большого количества — «трассы» значений многих переменных, которые выводятся при каждом изменении. Кроме того, внесение в программы дополнительных операторов может привести к изменению проявления ошибки, что нежелательно, хотя и позволяет сделать определенный вывод о ее природе.
Примечание. Ошибки, исчезающие при включении в программу или удалению из нее каких-либо «безобидных» операторов, как правило, связаны с «затиранием» памяти. В результате добавления или удаления операторов область затирания может сместиться в другое место и ошибка либо перестанет проявляться, либо будет проявляться по-другому.
Интегрированные средства отладки. Большинство современных сред программирования (Delphi, Builder C++, Visual Studio и т.д.) включают средства отладки, которые обеспечивают максимально эффективную отладку. Они позволяют:
выполнять программу по шагам, причем как с заходом в подпрограммы, так и выполняя их целиком;
предусматривать точки останова;
выполнять программу до оператора, указанного курсором;
отображать содержимое любых переменных при пошаговом выполнении;
отслеживать поток сообщений и т.п.
На рис. 3 показан вид программы в момент перехода в режим пошагового выполнения по достижении точки останова в Delphi. В этот момент программист имеет возможность посмотреть значения интересующих его переменных.
Рис. 3. Переход в режим пошагового выполнения по достижении точки останова в Delphi (в рамке указано значение переменной «под курсором»)
Информация о работе Практическая работа с компилятором С++Builder 6