Постановка задачи и описание программного продукта

Автор работы: Пользователь скрыл имя, 04 Декабря 2011 в 11:58, курсовая работа

Описание

Работа с графикой в Delphi это не только линии и рисунки, но также и и печать текстовых документов. Поэтому в Delphi работе с графикой нужно уделить немного времени. Работа с графикой в Delphi предполагает обращение к Canvas - свойству Canvas компонентов. Canvas Delphi это холст, который позволяет программисту иметь доступ к каждой своей точке (пикселу), и словно художнику отображать то, что требуется. Конечно, рисовать попиксельно для работы с графикой в Delphi не приходится, система Delphi предоставляет для мощные средства работы с графикой, облегчающие задачу программиста.

Содержание

ВВЕДЕНИЕ 2
1. Объектно-ориентированное программирование в Delphi. 4
2. Постановка задачи и описание программного продукта. 10
2.1. Постановка задачи. 10
2.2. Описание компонент программы. 10
2.2.1. Компоненты GroupBox и CheckBox 10
2.2.2. Компонент TImage 10
2.2.3. Компоненты OpenDialog, SaveDialog. 12
Заключение. 13
Список использованной литературы. 14

Работа состоит из  1 файл

Курсовая работа.doc

— 240.77 Кб (Скачать документ)

ВВЕДЕНИЕ 2

1. Объектно-ориентированное программирование в Delphi. 4

2. Постановка задачи и описание программного продукта. 10

2.1. Постановка задачи. 10

    2.2.     Описание компонент программы. 10

    2.2.1. Компоненты GroupBox и CheckBox 10

    2.2.2. Компонент TImage 10

    2.2.3. Компоненты OpenDialog, SaveDialog. 12

Заключение. 13

Список использованной литературы. 14

Приложение. 15

 

    ВВЕДЕНИЕ

               Работа с графикой в Delphi это не только линии и рисунки, но также и и печать текстовых документов. Поэтому в Delphi работе с графикой нужно уделить немного времени. Работа с графикой в Delphi предполагает обращение к Canvas - свойству Canvas компонентов. Canvas Delphi это холст, который позволяет программисту иметь доступ к каждой своей точке (пикселу), и словно художнику отображать то, что требуется. Конечно, рисовать попиксельно для работы с графикой в Delphi не приходится, система Delphi предоставляет для мощные средства работы с графикой, облегчающие задачу программиста. 
          В работе с графикой в Delphi в распоряжении программиста находятся Canvas (холст, полотно - свойствоCanvas Delphi компонентов), карандаш (свойство Pen), кисть (свойство Brush) того компонента или объекта, на котором предполагается рисовать. У карандаша Pen и кисти Brush можно менять цвет (свойство Color) и стиль (свойство Style). Доступ к шрифтам предоставляет свойство Canvas Font. Эти инструменты позволяют отображать как текст, так и достаточно сложные графики математического и инженерного содержания, а также рисунки. Кроме этого, работа с графикой позволяет использовать в Delphi такие ресурсы Windows как графические и видеофайлы. 
          Конечно, не все компоненты в Delphi имеют эти свойства. На вкладке Additional расположен специализированный компонент TImage, специально предназначенный для рисования, но также свойство Canvas имеют, например, такие компоненты как ListBox, ComboBox, StringGrid, а также и сама Форма, которая размещает наши компоненты.  Кроме того, для печати документов Delphi обращается к свойству Canvas такого объекта как принтер. 
          Основное свойство такого объекта как Canvas Delphi - Pixels[i, j] типа TColor, то есть это двумерный массив точек (пикселов), задаваемых своим цветом. Рисование на Canvas происходит в момент присвоения какой-либо точке канвы заданного цвета. Каждому пикселу может быть присвоен любой доступный для Windows цвет.                                         

 

    ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В DELPHI.

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

    Основные механизмы ООП в Delphi - понятие класса и объекта;

    основные механизмы ООП: инкапсуляция, наследование и полиморфизм;.

    Класс и объект

    Классом называется структура языка, которая может иметь в своем составе переменные, функции и процедуры. Переменные, в зависимости от предназначения именуются полями или свойствами. Процедуры и функции класса - методами. Например:

    type TMyObject = class(TObject)  

     MyField: Integer;  

     function MyMethod: Integer;

    end;

    В этом примере описан класс "TMyObject", содержащий поле "MyField" и метод "MyMethod".

    Поля объекта аналогичны полям записи [record]. Методы - это процедуры и функции. описанные внутри класса и предназначенные для операций над его полями. От обычных процедур и функций методы отличаются тем, что им при вызове передается указатель на тот объект, который и вызвал. Внутри метода указатель на вызвавший его объект доступен пол зарезервированным именем "Self".

    Чтобы использовать класс в программе, нужно как минимум, объявить переменные этого типа. Переменная объектного типа называется экземпляром класса или объектом:

    var AMyObject: TMyObject;

    Класс - это описание, объект - то, что создано в соответствии с этим описанием. Объект "появляется на свет" в результате вызова специального метода, который инициализирует объект - конструктора. Созданный объект уничтожается другим методом - деструктором:

    AMyObject:= TMyObject.Create;  

     <действия с созданным объектом>

    AMyObject.Destroy;

    Взяв любой пример проекта в Delphi, вы почти не увидите там вызовов конструкторов и деструкторов. Дело в том, что любой компонент, попавший при визуальном проектировании в ваше приложение из Палитры компонентов, включается в определенную иерархию. Иерархия эта замыкается на форме [класс "TForm"]: для всех ее составных частей конструкторы и деструкторы вызываются автоматически, незримо для программиста. Кто создает и уничтожает формы? Это делает приложение [глобальный объект с именем "Application"]. В файле проекта [с расширением "dpr"] вы можете увидеть вызовы метода "Application.CreateForm", предназначенного для этой цели.

    Что же касается объектов, создаваемых динамически [во время выполнения приложения], то здесь нужен явный вызов конструктора и деструктора.

    Поля и методы

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

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

    Инкапсуляция

    В предыдущих разделах мы ввели ряд новых понятий, которыми будем пользоваться в дальнейшем. Теперь рассмотрим принципы, составляющие суть объектно-ориентрованного программирования. Таких принципов три - инкапсуляция, наследование и полиморфизм.

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

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

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

    Наследование

    Вторым принципом ООП является наследование. Это простой принцип означает , что если вы хотите создать новый класс, лишь немного отличающийся от старого, то совершенно нет необходимости в переписывании заново существующих полей и методов. Вы объявляете, что новый класс "TNewObject":

    TNewObject = class (TOldObject);

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

    Прекрасный пример, иллюстрирующий наследование, представляет собой иерархия классов VCL. В Delphi все классы являются потомками класса "TObject". Унаследованные от класса-предка поля и методы доступны в дочернем классе; если имеет место совпадение имен методов, то говорят что они перекрываются.

    Поведение методов при наследовании, без преувеличения, является "подводным камнем" объектно-ориентированного программирования. В зависимости от того, какие действия происходят при вызове, методы делятся на три группы. В первую группу относятся статические методы, во вторую - виртуальные [virtual] и динамические [dynamic] и, наконец, в третью - появившиеся только в Delphi 4 - перегружаемые [overload] методы.

    Методы первой группы полностью перекрываются в классах потомках при их переопределении. При этом можно полностью изменить объявление метода. Методы второй группы при наследовании должны сохранять наименование и тип. Перегружаемые методы дополняют механизм наследования возможностью использовать нужный вариант метода [собственный или родительский] в зависимости от условий применения.

    Полиморфизм

    Этот принцип представляет собой наиболее важный козырь ООП.

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

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

    Области видимости

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

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

    В модели языка Delphi существует механизм доступа к составным частям объекта, определяющий области, где ими можно пользоваться [области видимости]. Поля и методы могут относиться к четырем группам, отличающимися областями видимости. Методы и свойства могут быть общими [секция  "public"], личными [секция "private"], защищенными [секция "protected"] и опубликованными [секция "published"].

    Области видимости, определяемые директивами, таковы:

    поля, свойства и методы секции "public" не имеют ограничений на видимость. Они доступны из других функций и методов объектов как в данном модуле, так и во всех прочих, ссылающихся на него;

    поля, свойства и методы, находящиеся в секции "private", доступны только в методах класса и в функциях, содержащихся в том же модуле, что и описываемый класс. Такая директива позволяет полностью скрыть детали внутренней реализации класса. Свойства и методы из секции "private" можно изменять, и это не будет сказываться а программах, работающих с объектами этого класса;

    поля, свойства и методы секции "protected" также доступны только внутри модуля с описываемым классом. Но - и это главное - они доступны в классах, являющихся потомками данного класса, в том числе и в других модулях. Такие элементы особенно необходимы для разработчиков новых компонентов-потомков уже существующих. Оставляя свободу модернизации класса, они все же скрывают детали реализации то того, кто только пользуется объектами этого класса;

Информация о работе Постановка задачи и описание программного продукта