Лекция №11 для дисциплин: «Прикладное программирование» и «Языки
программирования»
1
Лекция 11 (ч.7)
Синтаксис и программные конструкции Visual C
Подготовительный этап
Практическую часть следует начинать с подготовительного этапа.
1. Создать отдельную папку для проекта.
2. Запустить C++ Builder. Сохранить «пустой» проект в подготовленной папке.
3. Расположить на форме (или на формах) выбранные визуальные компоненты.
4. Задать значения свойств визуальных компонентов, влияющие на внешний вид и
функционирование.
Разработка классов
Именно вопросам разработки классов или вопросам создания абстрактных типов данных
(АТД) требуется максимальное время при создании программы. Проекты, использующие
принципы ООП и предназначенные для решения математических задач, рекомендуется
разрабатывать в следующем порядке.
1. Анализ задачи.
На этом этапе выделяются математические объекты, с помощью которых можно описать
решение задачи. Между ними устанавливаются отношения:
Создавая математическую модель для решения задачи, нужно:
- сформулировать предположения, на которых будет основываться математическая
модель;
- определить, что считать исходными данными и результатами;
- записать математические соотношения, связывающие результаты и исходные данные.
2. Программная постановка задачи.
Устанавливает соответствие между возможностями программы и требованиями
пользователя.
3. Разработка интерфейсов класса.
При создании программы, как и при проектировании классов, разработчик должен
изначально исходить из предположения, что предложенная задача со временем может
претерпевать изменения, связанные с возрастанием и изменением запросов пользователя.
Поэтому необходимо предусмотреть механизм, который бы позволял мобильно изменять
интерфейсы классов. Не затрагивая их реализацию. С этой целью имеет смысл сразу
проектировать семейства классов.
В интерфейс вписываются поля и прототипы методов. Для них устанавливаются правила
доступа - public, private, protected. Методы можно разделить на две группы:
· Стандартные методы – конструкторы, в том числе конструктор копирования,
деструкторы, свойства, унарные и бинарные операторы;
· Специфичные методы, которые следуют из логики задачи.
Лекция №11 для дисциплин: «Прикладное программирование» и «Языки
программирования»
2
Особое внимание необходимо уделить конструкторам – методам конструирования
объектов. Конструкторы класса требуют тщательной проработки. Их может быть много – «на все
случаи жизни».
4. Формализация методов класса.
Формализация методов класса – это переход от спецификации метода, представляющего
собой словесное описание назначенного метода, представляющего собой словесное описание
назначения метода, к разработке алгоритма, обеспечивающего выполнение соответствующих
действий.
Этап «формализации методов класса» включает в себя разработку алгоритмов и запись
программной реализации этих алгоритмов. Если эти алгоритмы сложные, то их разработку
следует производить в соответствии с технологией нисходящего проектирования программ:
задача разбивается на новые подзадачи и так далее до тех пор, пока на очередном уровне
решение подзадачи не становиться очевидным. В соответствии с такой технологией интерфейсы
классов дополняются новыми методами со своими правилами доступа. Формализация методов
классов – важнейший элемент программирования.
Разработка алгоритма начинается с его словесного описания. В непростых случаях это
словесное описание в учебнике сопровождается демонстрационным примером. Возможным
шагом может быть написание блок-схемы алгоритма. В простом случае можно ограничиться
комментариями в описании кода метода. Иногда спецификация может быть выражена простой
фразой в контексте интерфейса класса. В сложных случаях в учебнике спецификация выводиться
из контекста интерфейса и более подробно описывается.
Разработка интерфейса приложения и его дизайна
Подразумевается, что соответствие интерфейса задачам пользователя является
неотъемлемым его свойством. Существует четыре основных критерия оценивания качества
любого интерфейса, а именно:
· Скорость работы пользователей;
· Количество человеческих ошибок;
· Скорость обучения; субъективное удовлетворение.
Скорость выполнения работ является важным критерием эффективности интерфейса.
Длительность выполнения работы пользователем состоит из длительности восприятия исходной
информации, длительности интеллектуальной работы (пользователь думает, что он должен
сделать), длительность физических действий пользователя и длительности реакции системы. Как
правило, длительность реакции системы является наименее значимым фактором.
Лекция №11 для дисциплин: «Прикладное программирование» и «Языки
программирования»
3
Согласно Дональду Норману, взаимодействие пользователя с системой (не только
компьютерной) состоит из семи шагов: формирование цели действий; определение общей
направленности действий; определение конкретных действий; выполнение действий; восприятие
нового состояния системы; интерпретация состояния системы; оценка результата.
Согласно этому списку процесс размышления занимает почти все время, в течение
которого пользователь работает с компьютером. Во всяком случае, шесть из семи этапов
полностью заняты умственной деятельностью. Соответственно, повышение скорости этих
размышлений приводит к существенному улучшению скорости работы.
К сожалению, существенно повысить скорость мышления пользователей не возможно. Тем
не менее, уменьшить влияние факторов, усложняющих процесс мышления, вполне возможно.
Пользователь должен знать:
· Что он хочет получить на выходе (решение задачи);
· Как минимум одну последовательность действий, приводящую к
успешному результату;
· Где ему найти все объекты, участвующие в процедуре решения;
· Как определять пригодность объектов для их использования;
· Как управляться с объектами.
Список довольно внушителен. И если с первым пунктом проблем обычно не возникает, то
остальные требуют определенных усилий. А помочь разобраться в этом должен интерфейс со
встроенной системой подсказок действий. Следовательно, должен быть продуман механизм
управления программой через элементы интерфейса.
Обеспечение функциональности приложения
Обеспечение функциональности приложения связано с разработкой кода программы,
предназначенного для:
· Операций с объектами класса, обеспечивающих их взаимодействие и
согласованную работу;
· Управление программой через элементы интерфейса.
Тестирование приложения
Тестирование программного продукта следует начинать с разработки плана тестирования. При
этом следует помнить, что весь процесс тестирования можно разделить на три этапа:
Лекция №11 для дисциплин: «Прикладное программирование» и «Языки
программирования»
4
· Проверка в нормальных условиях. Предполагает тестирование на основе данных, которые
характерны для условий функционирования программы.
· Проверка в экстремальных условиях. Тестовые данные включают граничные значения
области изменения входных переменных, которые должны восприниматься программой
как правильные данные. Типичными параметрами таких значений являются очень малые
или очень большие числа и отсутствие данных. Если один тип экстремальных условий –
это граничные объемы данных, когда массивы состоят из слишком малого или слишком
большого числа элементов.
· Проверка в исключительных ситуациях. Проводится с использованием данных, значения
которых лежат за пределами допустимой области изменений.
Известно, что все программы разрабатываются в расчете на обработку ограниченного
набора данных. Поэтому важно получить ответ на следующие вопросы:
· Что произойдет, если в программе, не рассчитанной на обработку отрицательных и
нулевых значений переменных, в результате какой-либо ошибки придется иметь
дело как раз с такими данными?
· Как будет вести себя программа, работающая с массивами, если количество их
элементов превысит величину, указанную в объявлении массива?
· Что произойдет, если числа будут слишком малыми или слишком большими?
Наихудшая ситуация складывается тогда, когда программа воспринимает не верные
данные как правильные и выдает не верный результат, но правдоподобный результат.
Хорошая программа должна сама отвергать любые данные, которые она не в
состоянии обрабатывать правильно.
Следует попытаться представить возможные типы ошибок, которые пользователь способен
допустить при работе с Вашей программой и которые могут иметь неприятные для нее
последствия. Нужно не забывать, что способ мышления пользователя отличается от способа
мышления программиста. Нужно предусмотреть обработку ошибок типа: отсутствие нудного
файла, неправильные форматы даты и т,д, Список действий, которые могут привести к
неправильному функционированию программы, довольно длинный и зависит от того, что делает
приложение в данный момент времени.
Для тестирования можно изготовить программу, которая будет вызывать выполняемую
процедуру и следить за ходом ее выполнения. Эта подпрограмма должна содержать: подготовку
входных данных, которые должны быть прочитаны из файла для запуска тестируемой
программы; сравнение выходных данных отдельных подпрограмм с контрольными значениями,
которые также извлекаются из файла.

лек11 7

  • 1.
    Лекция №11 длядисциплин: «Прикладное программирование» и «Языки программирования» 1 Лекция 11 (ч.7) Синтаксис и программные конструкции Visual C Подготовительный этап Практическую часть следует начинать с подготовительного этапа. 1. Создать отдельную папку для проекта. 2. Запустить C++ Builder. Сохранить «пустой» проект в подготовленной папке. 3. Расположить на форме (или на формах) выбранные визуальные компоненты. 4. Задать значения свойств визуальных компонентов, влияющие на внешний вид и функционирование. Разработка классов Именно вопросам разработки классов или вопросам создания абстрактных типов данных (АТД) требуется максимальное время при создании программы. Проекты, использующие принципы ООП и предназначенные для решения математических задач, рекомендуется разрабатывать в следующем порядке. 1. Анализ задачи. На этом этапе выделяются математические объекты, с помощью которых можно описать решение задачи. Между ними устанавливаются отношения: Создавая математическую модель для решения задачи, нужно: - сформулировать предположения, на которых будет основываться математическая модель; - определить, что считать исходными данными и результатами; - записать математические соотношения, связывающие результаты и исходные данные. 2. Программная постановка задачи. Устанавливает соответствие между возможностями программы и требованиями пользователя. 3. Разработка интерфейсов класса. При создании программы, как и при проектировании классов, разработчик должен изначально исходить из предположения, что предложенная задача со временем может претерпевать изменения, связанные с возрастанием и изменением запросов пользователя. Поэтому необходимо предусмотреть механизм, который бы позволял мобильно изменять интерфейсы классов. Не затрагивая их реализацию. С этой целью имеет смысл сразу проектировать семейства классов. В интерфейс вписываются поля и прототипы методов. Для них устанавливаются правила доступа - public, private, protected. Методы можно разделить на две группы: · Стандартные методы – конструкторы, в том числе конструктор копирования, деструкторы, свойства, унарные и бинарные операторы; · Специфичные методы, которые следуют из логики задачи.
  • 2.
    Лекция №11 длядисциплин: «Прикладное программирование» и «Языки программирования» 2 Особое внимание необходимо уделить конструкторам – методам конструирования объектов. Конструкторы класса требуют тщательной проработки. Их может быть много – «на все случаи жизни». 4. Формализация методов класса. Формализация методов класса – это переход от спецификации метода, представляющего собой словесное описание назначенного метода, представляющего собой словесное описание назначения метода, к разработке алгоритма, обеспечивающего выполнение соответствующих действий. Этап «формализации методов класса» включает в себя разработку алгоритмов и запись программной реализации этих алгоритмов. Если эти алгоритмы сложные, то их разработку следует производить в соответствии с технологией нисходящего проектирования программ: задача разбивается на новые подзадачи и так далее до тех пор, пока на очередном уровне решение подзадачи не становиться очевидным. В соответствии с такой технологией интерфейсы классов дополняются новыми методами со своими правилами доступа. Формализация методов классов – важнейший элемент программирования. Разработка алгоритма начинается с его словесного описания. В непростых случаях это словесное описание в учебнике сопровождается демонстрационным примером. Возможным шагом может быть написание блок-схемы алгоритма. В простом случае можно ограничиться комментариями в описании кода метода. Иногда спецификация может быть выражена простой фразой в контексте интерфейса класса. В сложных случаях в учебнике спецификация выводиться из контекста интерфейса и более подробно описывается. Разработка интерфейса приложения и его дизайна Подразумевается, что соответствие интерфейса задачам пользователя является неотъемлемым его свойством. Существует четыре основных критерия оценивания качества любого интерфейса, а именно: · Скорость работы пользователей; · Количество человеческих ошибок; · Скорость обучения; субъективное удовлетворение. Скорость выполнения работ является важным критерием эффективности интерфейса. Длительность выполнения работы пользователем состоит из длительности восприятия исходной информации, длительности интеллектуальной работы (пользователь думает, что он должен сделать), длительность физических действий пользователя и длительности реакции системы. Как правило, длительность реакции системы является наименее значимым фактором.
  • 3.
    Лекция №11 длядисциплин: «Прикладное программирование» и «Языки программирования» 3 Согласно Дональду Норману, взаимодействие пользователя с системой (не только компьютерной) состоит из семи шагов: формирование цели действий; определение общей направленности действий; определение конкретных действий; выполнение действий; восприятие нового состояния системы; интерпретация состояния системы; оценка результата. Согласно этому списку процесс размышления занимает почти все время, в течение которого пользователь работает с компьютером. Во всяком случае, шесть из семи этапов полностью заняты умственной деятельностью. Соответственно, повышение скорости этих размышлений приводит к существенному улучшению скорости работы. К сожалению, существенно повысить скорость мышления пользователей не возможно. Тем не менее, уменьшить влияние факторов, усложняющих процесс мышления, вполне возможно. Пользователь должен знать: · Что он хочет получить на выходе (решение задачи); · Как минимум одну последовательность действий, приводящую к успешному результату; · Где ему найти все объекты, участвующие в процедуре решения; · Как определять пригодность объектов для их использования; · Как управляться с объектами. Список довольно внушителен. И если с первым пунктом проблем обычно не возникает, то остальные требуют определенных усилий. А помочь разобраться в этом должен интерфейс со встроенной системой подсказок действий. Следовательно, должен быть продуман механизм управления программой через элементы интерфейса. Обеспечение функциональности приложения Обеспечение функциональности приложения связано с разработкой кода программы, предназначенного для: · Операций с объектами класса, обеспечивающих их взаимодействие и согласованную работу; · Управление программой через элементы интерфейса. Тестирование приложения Тестирование программного продукта следует начинать с разработки плана тестирования. При этом следует помнить, что весь процесс тестирования можно разделить на три этапа:
  • 4.
    Лекция №11 длядисциплин: «Прикладное программирование» и «Языки программирования» 4 · Проверка в нормальных условиях. Предполагает тестирование на основе данных, которые характерны для условий функционирования программы. · Проверка в экстремальных условиях. Тестовые данные включают граничные значения области изменения входных переменных, которые должны восприниматься программой как правильные данные. Типичными параметрами таких значений являются очень малые или очень большие числа и отсутствие данных. Если один тип экстремальных условий – это граничные объемы данных, когда массивы состоят из слишком малого или слишком большого числа элементов. · Проверка в исключительных ситуациях. Проводится с использованием данных, значения которых лежат за пределами допустимой области изменений. Известно, что все программы разрабатываются в расчете на обработку ограниченного набора данных. Поэтому важно получить ответ на следующие вопросы: · Что произойдет, если в программе, не рассчитанной на обработку отрицательных и нулевых значений переменных, в результате какой-либо ошибки придется иметь дело как раз с такими данными? · Как будет вести себя программа, работающая с массивами, если количество их элементов превысит величину, указанную в объявлении массива? · Что произойдет, если числа будут слишком малыми или слишком большими? Наихудшая ситуация складывается тогда, когда программа воспринимает не верные данные как правильные и выдает не верный результат, но правдоподобный результат. Хорошая программа должна сама отвергать любые данные, которые она не в состоянии обрабатывать правильно. Следует попытаться представить возможные типы ошибок, которые пользователь способен допустить при работе с Вашей программой и которые могут иметь неприятные для нее последствия. Нужно не забывать, что способ мышления пользователя отличается от способа мышления программиста. Нужно предусмотреть обработку ошибок типа: отсутствие нудного файла, неправильные форматы даты и т,д, Список действий, которые могут привести к неправильному функционированию программы, довольно длинный и зависит от того, что делает приложение в данный момент времени. Для тестирования можно изготовить программу, которая будет вызывать выполняемую процедуру и следить за ходом ее выполнения. Эта подпрограмма должна содержать: подготовку входных данных, которые должны быть прочитаны из файла для запуска тестируемой программы; сравнение выходных данных отдельных подпрограмм с контрольными значениями, которые также извлекаются из файла.