Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные по Дельфи_2011.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
7.3 Mб
Скачать

Оглавление Оглавление

Теоретические основы Визуального программирования. 2

Лабораторная работа №1 Знакомство со средой Dеlphi. 5

Лабораторная работа №2. Объекты: Кнопка. Label 7

Лабораторная работа № 3. Свойства Объектов. 10

Лабораторная работа № 4. Программирование линейной структуры 12

Лабораторная работа №5. Оператор ветвление в дельфи.. 14

Лабораторная работа №6. Оператор ветвление в дельфи. 17

Лабораторная работа № 7 Программа "Квадратное уравнение" 19

Лабораторная работа № 8 «Программы с циклами в Delphi» 22

Лабораторная работа № 9 «Программа "Вклад"» 24

Лабораторная работа № 10 «Целочисленный Калькулятор». 27

Лабораторная работа № 11 «Графика в Дельфи». 30

Лабораторная работа № 1? «Графика в цикле». 40

Лабораторная работа № 1? «Графика в цикле». ????????? 43

Лаб работа . Дополнительный материал по теме графика. 44

Лабораторная работа №12. Обработка событий в графике. 50

Лабораторная работа № 13 «Графика в Дельфи». 52

Лабораторная работа № 14 «Графика в Дельфи». продолжение 55

Лабораторная работа № Светофор 55

Лабораторная работа № Летающий шарик. 57

Лабораторная работа Вывод графиков функций в Delphi 59

Цель научиться строить графика с использованием специальных средств среды Дельфи Для примера построим график функции y=10*sin(x), аналог Excel диаграммы приведен на рисунке. 60

Лабораторная работа № Метод базовой точки. Кораблик 62

Лабораторная работа № Метод базовой точки. Машина 66

Лабораторная работа Битовые образы 69

Самостоятельные программы 74

Теоретические основы Визуального программирования.

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

Две важнейшие характеристики Delphi: визуальное конструирование формы и богатый набор библиотек визуальных компонентов(Visual Component Library VCL). Визуальное конструирование формы избавляет от разработки интерфейса программы, так как Delphi автоматически создает необходимые программные заготовки и соответствующие файлы ресурсы. Для этого используется окно формы как прототип будущего окна программы которое наполняется объектами, реализующие нужные интерфейсные свойства.

Основное базовое понятие в языке Delphi является понятие объекта. Каждый объект имеет набор свойств, которые можно изменять как в процессе визуального проектирования так и в работающем приложении. Совокупность объектов с определенными свойствами образуют класс объектов. Каждый класс имеет свои, присущие только ему, свойства. Основной (базовый) класс называется родительским классом, порождающий все остальные классы. Наследники основного родительского классы, наследуют свойства своего родителя.

Каждый класс имеет свои методы, которые определяет поведение объектов этого класса. Методами являются функции и процедуры. Процедура представляет собой обработчик некоторого события, например щелчка мыши. Функция также представляет собой обработчик событие, но в отличие от процедуры при этом возвращает некоторое, вычислительное значение. Процедуры и функции создаются с помощью операторов, написанных на языке Object Pascal. Объект имеет определенный набор событий. События указывают на метод, используемый при наступлении этого события.

Основные понятия.

Класс (class) – это категория объектов, обладающих одинаковыми свойствами и поведением. Класс имеет поля (свойства), свойства и методы. Имя класса может быть любым допустимым идентификатором. Принято идентификаторы большинство классов начинать с символа «T». Например TButton – содержит все для создания кнопки.

Объект (odjeict) – конкретный, существующий в памяти компьютера, экземпляр класса. Объект всегда находится в определенном состоянии, которое определяет его свойства. Свойства бывают статическими и динамическими изменяемые во время выполнения программы. Идентифицирует объект поле хранящее его уникальные данные. Поле (field) – инкапсулированные (содержащиеся) в классе данные. Обращение к полям производится посредствам свойств и методов. У каждого объекта обязательно присутствуют два метода: «создать объект» и «уничтожить объект». Во время создания объекта происходит выделение памяти для хранения необходимых свойств, и заполняются значения по умолчанию. Во время уничтожения объекта происходит освобождение выделенной памяти. Метод для создания объекта называется конструктором (constructor). Метод для уничтожения объекта называется деструктором (destructor).

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

Свойство (property) – представляет собой механизм, регулирующий доступ к полям. Свойства определяют внешний вид формы или компонента (объекта на форме) и поведение формы или компонента. Различают несколько видов свойств.

Простые свойства – это свойства, значения которых являются числа или строками.

Перечисляемые свойства – это свойства, которые могут принимать значение из предопределенного набора (списка).

Вложенные свойства – это свойства, которые поддерживают вложенные значения. (Отмечается в ИСР знаком «+»). Свойство – это атрибут объекта, определяющий то как объект выглядит или как он может себя вести

Метод (method) – это процедура или функция, которая определена как часть инкапсулирована (содержится) в нем. Методы манипулируют полями и свойствами классов (могут работать с переменными) и имеют автоматический доступ к любым полям и свойствами своего класса.

Поведение объекта определяется тем, какие имеет обработчики и для каких событий. Создание приложение в среде программировании Delphi состоит из настройки свойств используемых объектов и создание обработчиков событий (event handler). Функции и процедуры являются методами, которые применяются для создания обработчиков событий

События (event) – свойство процедурного типа. Значением события является указатель на метод

Достоинства ООП

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

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

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

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

Полиморфизм оказывается полезным преимущественно в следующих ситуациях.

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

  • Изменение поведения во время исполнения. На этапе исполнения один объект может быть заменен другим, что позволяет легко, без изменения кода, адаптировать алгоритм в зависимости от того, какой используется объект.

  • Реализация работы с наследниками. Алгоритмы можно обобщить настолько, что они уже смогут работать более чем с одним видом объектов.

  • Создание "каркаса" (framework). Независимые от приложения части предметной области могут быть реализованы в виде набора универсальных классов, или каркаса (framework), и в дальнейшем расширены за счет добавления частей, специфичных для конкретного приложения.

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

  • Сокращается время на разработку, которое может быть отдано другим задачам.

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

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

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

Недостатки ООП

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

В сложных иерархиях классов поля и методы обычно наследуются с разных уровней. И не всегда легко определить, какие поля и методы фактически относятся к данному классу. Для получения такой информации нужны специальные инструменты, вроде навигаторов классов. Если конкретный класс расширяется, то каждый метод обычно сокращают перед передачей сообщения базовому классу. Реализация операции, таким образом, рассредотачивается по нескольким классам, и чтобы понять, как она работает, нам приходится внимательно просматривать весь код.

Методы, как правило, короче процедур, поскольку они осуществляют только одну операцию над данными, зато их намного больше. В коротких методах легче разобраться, но они неудобны тем, что код для обработки сообщения иногда "размазан" по многим маленьким методам.

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

Многие считают, что ООП является неэффективным. Как же обстоит дело в действительности? Мы должны проводить четкую грань между неэффективностью на этапе выполнения, неэффективностью в смысле распределения памяти и неэффективностью, связанной с излишней универсализацией.

  1. Неэффективность на этапе выполнения. В языках типа Smalltalk сообщения интерпретируются во время выполнения программы путем осуществления их поиска в одной или нескольких таблицах и за счет выбора подходящего метода. Конечно, это медленный процесс. И даже при использовании наилучших методов оптимизации Smalltalk-программы в десять раз медленнее оптимизированных C-программ.

  2. В гибридных языках типа Oberon-2, Object Pascal и C++ отправка сообщения приводит лишь к вызову через указатель процедурной переменной. На некоторых машинах сообщения выполняются лишь на 10% медленнее, чем обычные процедурные вызовы. И поскольку сообщения встречаются в программе гораздо реже других операций, их воздействие на время выполнения влияния практически не оказывает.

  3. Однако существует другой фактор, который влияет на время выполнения: это инкапсуляция данных. Рекомендуется не предоставлять прямой доступ к полям класса, а выполнять каждую операцию над данными через методы. Такая схема приводит к необходимости выполнения процедурного вызова каждый раз при доступе к данным. Однако если инкапсуляция используется только там, где она необходима (т.е. в тех случаях, когда это становится преимуществом), то замедление вполне приемлемое.

  4. Неэффективность в смысле распределения памяти. Динамическое связывание и проверка типа на этапе выполнения требуют по ходу работы информации о типе объекта. Такая информация хранится в дескрипторе типа и он выделяется один на класс. Каждый объект имеет невидимый указатель на дескриптор типа для своего класса. Таким образом, в объектно-ориентированных программах необходимая дополнительная память выражается в одном указателе для объекта и в одном дескрипторе типа для класса.

  5. Излишняя универсальность. Неэффективность также может означать, что в программе реализованы избыточные возможности. В библиотечном классе часто содержится больше методов, чем это реально необходимо. А поскольку лишние методы не могут быть удалены, они становятся мертвым грузом. Это не влияет на время выполнения, но сказывается на размере кода.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]