:: DELPHI :: ТЕОРИЯ  
 

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

 

Основные характеристики промышленного программного  обеспечения:

  • сложность;
  • сопровождение;
  • сохранение.

Сложные системы: непрерывные и дискретные.

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

Признаки сложной системы.

  1. Сложные системы часто являются иерархическими и состоят из взаимонезависимых подсистем, которые в свою очередь также могут быть разделены на подсистемы, и т.д., вплоть до самого низкого уровня.
  2. Выбор, какие компоненты в данной системе считаются элементарными, относительно произволен  и в большой степени оставляется на усмотрение исследователя.
  3. Внутри компонентная связь  обычно сильнее, чем связь между компонентами
  4. Иерархические системы обычно состоят из немногих типов подсистем, по-разному скомбинированных и организованных.
  5. Любая работающая сложная система является результатом развития работавшей более простой системы. Сложная система, спроектированная с «нуля», никогда не заработает. Следует начинать с работающей простой системы.

 Как отмечает Дейкстра, «Способ управления сложными системами был известен еще в древности – devide et impera (разделяй и властвуй)». При проектирований сложной системы необходимо разделять ее на все меньшие  и меньшие подсистемы, каждую из которых можно совершенствовать независимо. Это прежде всего связано с тем, что психологи доказали, что человек может одновременно следить за 7±2  структурными единицами информации. Этот тезис и является методологической основой декомпозиции.

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

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

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

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

Основные понятия объектно-ориентированного программирования.

Объект, object - 

  • нечто, чем можно оперировать;
  • имеет состояние, поведение, идентичность;
  • совокупность данных и способов работы с ними.

Структура и поведение сходных объектов определены в общем для них классе. Термины объект и экземпляр взаимозаменяемы. Данные можно рассматривать как поля записи.

Особым  “изобретением ” программистов для упрощения разработки сложных программ  и улучшения их качества являются классы.

                Классом в Object Pascal называется особый тип записи, который может иметь в своем составе поля, методы и свойства. Такой тип также будем называть объектным типом.

                                type        TmyObject  =                  class  (Object)  
                                        MyField                      :  integer;
                                        Function  MyMethod  :  integer;
                                  end;

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

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

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

                 var          AMyObject: TMyObject;

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

Однажды создав класс, программист может включить его экземпляры (копии) в разные программы или в разные места одной и той же программы.

Класс представляет собой единство трех сущностей: полей, методов и свойств.

Поля аналогичны полям записи. Это данные, уникальные для каждого экземпляра.

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

Объект «появляется на свет» в результате вызова специального метода, который инициализирует объект-конструктора. В Object Pascal конструкторов у класса может быть несколько. Общепринято называть конструктор Create. Созданный экземпляр уничтожается другим методом - деструктором. Типичное название деструктора    Destroy.

Вызов конструкторов и деструкторов, как правило, осуществляется автоматически для любых компонентов,  включенных в приложение из Палитры компонентов. Для объектов, создаваемых динамически (во время выполнения приложений), нужен явный вызов конструктора. 

Основные принципы ООП.

Суть ООП составляют 3 принципа:

  • инкапсуляция;
  • наследование;
  • полиморфизм.

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

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

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

Н а п р и м е р: класс TForm содержит (инкапсулирует) в себе все необходимое для создания Windows-окна; класс TMemo - полнофункциональный текстовый редактор; класс TTimer - обеспечение работы программы с таймером; класс TEdit – обеспечение ввода строковых данных и т.п.

Инкапсуляция - мощное средство обмена готовыми к работе программными заготовками.

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

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

В Delphi существует иерархия порождающих и порожденных объектов. Порожденные объекты имеют доступ к описаниям всех порождающих объектов. Любой класс может быть порожден от другого класса. Для этого необходимо объявить, что новый класс

TNew Object = class(TOld Object);

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

В Object Pascal все классы являются потомками класса TObject. Этот класс не имеет полей и свойств, но включает в себя методы самого общего назначения, обеспечивающие весь жизненный цикл любых объектов от их создания до уничтожения. Программист не может создать класс, который не был бы дочерним классом TObject. Поэтому следующие два выражения одинаково верны:

TMyObject = class(TObject);
TMyObject = class;

Принцип наследования приводит к созданию ветвящегося дерева классов, постепенно разрастающегося при перемещении от TObject к его потомкам. Каждый потомок дополняет возможности своего родителя новыми и передает их своим потомкам.

Полиморфизм.

Полиморфизм – это свойство классов решать сходные по смыслу проблемы разными способами.

В Object Pascal поведенческие свойства класса определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках класса, программист может предавать этим потомкам отсутствующие у предка специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т.е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте–родителе и объекте-потомке будут действовать два одноименных метода, имеющие разную алгоритмическую основу и придающие объектам разные свойства. Это называется полиморфизмом объектов.

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

Составляющие класса.

Поля.

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

    Например:               TMyClass = class
                                          AIntField: integer;
                                          AStrField: string;
                                          AObjField: TObject;
                                       end;    

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

Однако, в Object Pascal разрешается обращаться к полям напрямую.

       Например:            var        AObject: TMyClass;
                                  begin       
                                        …
                                       AObject. AIntField:= 0;
                                       AObject. AStrField:= ‘Строка’;
                                        …
                                    end;

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

Методы.

   Инкапсулированные в классе процедуры и функции называются методами. Они объявляются так же, как и обычные подпрограммы.

   Например:        type  TMyClass = class
                                       Function MyFunc (A Par: integer): integer;
                                       Procedure MyProc;
                               end;

Доступ к методам класса, как и к его полям, возможен с помощью составных имен.

    Например:         var   AObgect: TMyClass;
                           begin
                                  …
                                  AObgect. MyProc;
                                   …
                            end; 
                           … .Show; … . Hide;  … .Draw

Свойства.

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

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

Внешне свойство выглядит в точности как обычное поле, но за всяким обращением к нему могут стоять нужные вам действия. Например, если есть объект, представляющий квадрат на экране, и его свойству «цвет» присвоить значение «красный», то произойдет немедленная перерисовка, приводящая реальный цвет на экране в соответствие значению свойства.

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

События – это свойства процедурного типа, предназначенные для создания пользовательской реакции на те или иные входные воздействия.

     Все события в Delphi принято именовать с «On»:

       On Create, OnMouseMove, On Paint и т.п.

Все события собраны на закладке Events в Инспекторе объектов.

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

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

Object Pascal – язык программирования, предназначенный для создания приложений в стиле ООП.

С одной стороны, это прежний язык Pascal (все его основные конструкции сохранены).

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

Состав Интегрированной Среды Разработки (ИСР) Delphi

Запустить Delphi можно:

выбрав пиктограмму Delphi в главном меню Windows Пуск | Программы;

выбрав пиктограмму Delphi в главном меню Windows Пуск |  Выполнить | C:\Program Files\Borland\Delphi4\Bin\delphi32.exe

Общий вид окна ИСР

Интегрированная Среда Разработки (Integrated Development Environment — IDE, в дальнейшем мы будем использовать для нее аббревиатуру ИСР) - это среда, в которой есть все необходи­мое для проектирования, запуска и тестирования приложений и где все нацелено на облегчение процесса создания программ.

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

В верхней части окна ИСР находится полоса главного меню. Ниже расположены две инструмента­льные панели. Левая панель содержит два ряда быстрых кнопок, дублирую­щих некоторые наиболее часто используемые команды меню. Правая панель содержит палитру компонентов библиотеки визу­альных компонентов (Visual Component Library — VCL).

В основном поле  слева находится окно Инспекто­ра Объектов (Object Inspector), в  котором   задают свойства компонентов и обработчики собы­тий. Справа - окно пустой формы. Под ним расположено окно Редак­тора Кодов.

Полоса главного меню и всплывающее меню

Разделы меню File (файл) позволяют создать новый проект, новую форму, открыть ранее созданный проект или форму, сохра­нить проекты или формы в файлах с заданными именами.

Разделы меню Edit (правка, редактирование) позволяют вы­полнять обычные для приложений Windows операции обмена с "буфером Clipboard, а также дают возможность выравнивать груп­пы размещенных на форме компонентов по размерам и местопо­ложению.

Разделы меню Search (поиск) позволяют осуществлять в коде нашего приложения поиск и контекстные замены, которые свой­ственны большинству известных текстовых редакторов.

Разделы меню View (просмотр) позволяют вызывать на экран различные окна, необходимые для проектирования.

Раз­делы меню Project позволяют добавлять и убирать из проекта фор­мы, задавать опции проекта, компилировать проект без его вы­полнения и делать много других полезных операций.

Меню Run (выполнение) дает возможность выполнять проект в нормальном или отладочном режимах, продвигаясь по шагам, останавливаясь в указанных точках кода, просматривая значе­ния переменных и т.д.

Меню Component в Delphi 5 позволяют создавать и устанавливать новые компоненты, конфигурировать палитру компонентов, работать с па­кетами packages.

Разделы меню Database в Delphi 5 позволя­ют использовать инструментарий для работы с базами данных.

Меню Tools (инструментарий) включает ряд разделов, позволя­ющих выполнять различные вспомогательные программы, на­пример, вызывать Редактор Изображений (Image Editor), работать с программами, конфигурирующими базы данных и сети и т.д. Кроме того, в это меню вы можете сами включить любые разделы вызывающие те или иные приложения, и таким образом расширить возможности главного меню Delphi, приспособив его для своих задач.

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

Меню Help (справка) содержит разделы, помогающие работать со встроенной в Delphi справочной системой.

В Delphi имеется система контекстных всплывающих меню. Большинство разделов этих контекстных меню дублируют основные разделы главного меню.

Быстрые кнопки

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

Задание: составьте таблицу назначений быстрых кнопок.

Палитра компонентов

Палитра компонентов — это витрина библиотеки визуальных компонентов (Visual Component Library — VCL). Она позволяет сгруппировать компоненты в соответствии с их смыслом и назна­чением. Эти группы или страницы снабжены закладками.

Число предопределенных компонентов возрастает от версии к версии.

По умолчанию в ней имеются страницы:

Standard - Стандартная, содержащая наиболее часто использу­емые компоненты.

Additional- Дополнительная, являющаяся дополнением стан­дартной.

Win32-  32-битные компоненты в стиле Windows 95/98 и NT .

System -  Системная, содержащая такие компоненты, как таймеры, плееры и ряд других.

Data Access-Доступ к данным через Borland Database Engine (BDE)   Data Controls -Управление данными

Data controls с Interbase, минуя Borland Database Engine (BDE) и Active Data Objects (ADO) (только начиная с Delphi 5)

Midas  Построение приложений баз данных с параллельны­ми потоками (только в вариантах Client/Server и Enterprise и только начиная с Delphi 4)

Internet  Интернет, компоненты для приложений, работаю­щих с Интернет (только начиная с Delphi 2)

Qreport  Быстрая подготовка отчетов

Dialogs  Диалоги, системные диалоги типа «Открыть файл» и др.

Win З.1  Windows 3-х, компоненты в стиле Windows З.х

Samples Образцы, различные интересные, но не до конца документированные компоненты

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

Есть и другой способ поместить компонент на форму — доста­точно сделать двойной щелчок на пиктограмме компонента, и он автоматически разместится в центре вашей формы. Если вы вы­брали компонент, а затем изменили ваше намерение размещать его, вам достаточно нажать кнопку указателя. Это прервет про­цесс размещения компонента, и программа вернется в нормаль­ный режим, в котором вы можете выбирать другой компонент или выполнять какую-то команду.

Имена компонентов, соответствующих той или иной пиктог­рамме, вы можете узнать из ярлычка, появляющегося, если вы задержите над этой пиктограммой курсор мыши. Если вы выбе­рите в палитре компонент и нажмете клавишу F 1 то вам будет показана справка по типу данного компонента. Тут надо сразу сделать одно замечание. Имена на ярлычках выглядят, напри­мер, так: MainMenu, Button и т.д. Однако, в Delphi все имена классов в действительности начинаются с символа «Т», напри­мер, TMainMenu, TButton. Под такими именами вы можете най­ти описания соответствующих компонентов во встроенной в Del­phi справочной системе.

Окно формы

Основой почти всех приложений Delphi является форма. Ее можно понимать как типичное окно Windows. Форма является основой, на которой размещаются другие компоненты.

Форма имеет:

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

 Во время проектирования форма покрыта сеткой из точек. В узлах этой сетки размещаются те компоненты, которые вы поме­щаете на форму. Во время выполнения приложения эта сетка, конечно, не видна.

Для компонентов (или для формы в целом) можно получить контекстную справку, если выделить интересующий компонент и нажать клавишу F1.

Окно Редактора Кода

Редактор Кода является полноценным программным редактором. В редакторе применяется выделением цветом синтаксических элементов. Жирным шрифтом выделяются ключевые слова Object Pascal. Синим курсивом выделя­ются комментарии.

В заголовке окна Редактора Кода отображается имя текущего рабочего файла. Приложения Delphi могут использовать много исходных форм и файлов и закладки помогают вам переходить от одного из них к другому. Вы можете также открыть дополните­льное окно Редактора Кода (командой View | New Edit Window или щелчком в окне правой кнопкой мыши и выбором аналогичного раздела из контекстного меню) и одновременно работать с двумя модулями или с двумя разными фрагментами одного модуля.

В нижней части окна Редактора Кода вы можете видеть стро­ку состояния. В самой левой ее позиции находится индикатор строки и колонки. Это помогает вам понимать, в каком месте кода вы находитесь.

Второй элемент строки — индикатор модификации. Когда вы начинаете новый проект, то код, который Delphi автоматически написала для вас, еще не сохранен. Вы должны сделать это сами командой File | Save. Если код изменялся вами или Delphi с того момента, когда вы в последний раз сохраняли его в файле, то в индикаторе модификации (правее индикатора строки и колонки) появляется слово «Modified». Это слово показывает вам, что код, который вы видите, не тот же самый, что на диске.

Третий элемент строки состояния — индикатор режима вставки. Это стандартный индикатор большинства редакторов, который показывает вам, будут ли вводимые символы вставляться в текст или писаться поверх текста. Переключение режима «ставки производится клавишей Insert.

В окно Редактора Кода, как и в другие окна Delphi, встроена контекстная справка. Чтобы получить справку по какому-то сло­ну кода (ключевому слову, написанному имени функции и т.п.), достаточно установить курсор на это слово и нажать клавишу F1. Вам будет показана соответствующая тема справки.

Инспектор Объектов

Инспектор Объектов (Object Inspector) обеспечивает простой и удобный интерфейс для изменения свойств объектов Delphi и    управления событиями, на которые реагирует объект.

Окно Инспектора Объектов  имеет:

  • выпадающий список всех компонентов формы;
  • страница  свойств (Properties) выделенного компонента или формы;
  • страница  обработки событий (Events)  выделенного компонента или формы.

Изменение свойств можно выполнять несколькими способами:

  • непосредственно вводить значение произвольным образом. Например, свойство Caption.
  • выбирать значение из списка возможных значений. Например, свойство Color, Visible.
  • сложное свойство выделяется знаком  + слева и определяется множеством значений через диалоговое окно или через раскрывающийся дополнительный список под свойств. Например, свойство Font (шрифт).

На странице событий (Events)   указаны все события, на ко­торые может реагировать выбранный объект. Например, для формы определены события OnCreate,  OnShow, OnHide.

Пользуясь Инспектором Объектов,  можно получить кон­текстную справку по свойствам или событиям, если выдели­те интересующее свойство или событие и нажать клавишу F1.

   
::  

::


Rambler's Top100 Крапивна
 

(с)2005-2006 Web studio SEDUVAN

Hosted by uCoz