Letysite.ru

IT Новости с интернет пространства
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

Статьи о Delphi

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

Большим шагом вперёд в развитии технологий программирования было появление объектно-ориентированного программирования. Здесь программный код перестал быть «плоским» и программист оперирует не просто процедурами и функциями, а целыми объектами.

Объект — совокупность свойств, методов, событий. Что означает «совокупность»? Это значит, что объект как бы состоит из методов, свойств и событий, и они обеспечивают его полноценную работу. Представим себе кнопку. Она обладает:

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

Если все это объединить, то получается автономный объект, который может работать в различных условиях. В этом случае достаточно только установить кнопку на форме, и она уже готова к применению. Как же оформляются свойства, методы и события объекта в программах?

Свойства — это переменные, которые влияют на состояние объекта. Например, ширина и высота объекта.

Методы — это те же процедуры и функции, т. е. это то, что объект умеет делать. Например, объект может иметь процедуру для вывода какого-то текста на экран. Эта процедура и есть метод, который принадлежит объекту.

События — это те же процедуры и функции, которые вызываются при наступлении определенного события. Например, если изменилось какое-то свойство объекта, может быть сгенерировано соответствующее событие и вызвана процедура, которая инициализирует реакцию приложения на это событие.

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

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

Теперь рассмотрим работу свойств, методов и событий как единого целого. И снова для примера возьмем объект — кнопку. Такой объект должен обладать следующим минимальным набором.

1. Свойства:

  • левая позиция Left;
  • верхняя позиция Top;
  • ширина Width;
  • высота Height;
  • заголовок Caption;

2. Методы:

  • создать кнопку;
  • нарисовать кнопку;
  • уничтожить кнопку.

3. События:

  • кнопка нажата;
  • кнопка отпущена;
  • заголовок кнопки изменен.

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

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

Теперь рассмотрим использования нашей кнопки. Он выглядит следующим образом:

  1. Создание кнопки с помощью вызова конструктора;
  2. Изменение необходимых свойств;
  3. Все. Наша кнопка готова к работе.

Объект — сложный тип данных. Это значит, что вы можете объявлять переменные типа «объект» (точно так же, как объявлялись переменные типа «число» или «строка») и обращаться к объекту через эту переменную. На языке программирования это будет выглядеть немного сложнее:

  1. Объявить переменную типа «кнопка».
  2. В эту переменную проинициализировать объект.
  3. Изменить нужные свойства.
  4. Можно использовать объект.

Вот тут нужно собрать все, что вы поняли об объектах, в одно целое. Итак, мы можем объявлять переменные типа «объект». Давайте объявим переменную-объект типа Кнопка. Теперь можно создать кнопку, для чего есть конструктор (метод для создания объекта), который выделяет свободную память под этот объект. Процесс инициализации объекта-кнопки выглядит так: переменной Объект нужно присвоить результат работы конструктора объекта Кнопка. Конструктор выделит необходимую объекту память и присвоит свойствам значения по умолчанию. Результат этого действия будет присвоен переменной Объект. Эта переменная будет указывать на область памяти в которой находится созданная кнопка, и ее свойства. После всех этих действий мы можем получить доступ к созданному объекту через переменную Объект.

Давайте напишем прототип небольшой программы, которая пояснит весь процесс создания объекта.

Начало программы

Переменные:
Объект1: Кнопка;
Начало кода
Объект1:= Кнопка.Создать объект;
Объект1.Заголовок:=’Привет’;
Объект1.Уничтожить объект.
Конец кода;

Доступ к свойствам и методам объектов осуществляется при помощи записи

ИмяОбъекта.Свойство
или
ИмяОбъекта.Метод

т.е. в записи имя объекта и его свойства или методы объекта разделяются точкой.

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

Неправильное использование объекта

Начало программы
Переменные:
Объект1: Кнопка;
Начало кода
Объект1.Заголовок:=’Привет’;
Конец кода;

Здесь мы пытаемся изменить заголовок без создания и уничтожения объекта, а это ошибка! В данном случае переменная Объект1 ещё ничего не хранит и ни на что не указывает. Её необходимо сначала проинициализировать и создать для нее объект-кнопку или присвоить адрес расположения в памяти уже существующей кнопки.

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

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

Объект в виде шаблона

Начало программы
Переменные:
Объект1 — Кнопка;
Объект2 — Кнопка;
Начало кода
Объект1:= Кнопка.Создать объект;
Объект2:= Кнопка.Создать объект;
Объект1.Заголовок:=’Привет’;
Объект2.Заголовок:=’Пока’;
Объект1.Уничтожить объект;
Объект2.Уничтожить объект;
Конец кода;

Инициализацию объекта еще очень часто называют созданием экземпляра объекта. И это тоже правильно. Когда вы вызываете конструктор, в памяти создается новый экземпляр объекта. В данном примере можно сказать, что наши переменные объект1 и Объект2 указывают на собственные экземпляры объекта Кнопка, т. е. в памяти получается две независимые копии объекта (кнопки). Любую из них можно независимо менять и она не будет влиять на другую переменную.

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

Информационные технологии 1

Программирование на Delphi

1. Введение

На нашем курсе мы будем изучать Delphi 7, наиболее стабильную версию языка программирования для Win32 – то есть 32-разрядных версий Windows. Появились и новые версии Delphi, но они ориентированны на технологию .NET, за которую начинающим программистам браться рановато. Тем более, что эта технология еще не применяется широко, и рынок программного обеспечения, созданного с помощью Delphi, все равно составляют программные продукты, написанные на Delphi 7, и даже более ранних версий.

Основу Delphi составляет не только сам язык, но и RAD (Rapid Application Development) – среда быстрой разработки программ . Благодаря визуальному программированию, а также достаточно большой библиотеке визуальных компонентов, Delphi позволяет создавать программы наиболее быстро и эффективно, принимая на себя основную работу, и оставляя программисту творческий процесс. Разумеется, возможность быстрого создания профессиональных приложений для Windows делает Delphi – программистов востребованными во всех отраслях человеческой деятельности.

Читать еще:  Уроки программирования с нуля паскаль

Первая программа

Традиционно при изучении программирования принято создавать первую программу, которая выводит текст «Hello, world!». Не будем отступать от традиции и создадим программу, которая выводит этот текст тремя разными способами. Но вначале познакомимся с самой средой программирования Delphi. Предполагается, что на этот момент Delphi 7 уже установлена на вашем ПК. Если это не так, то перед дальнейшим прочтением лекции установите Delphi 7. При загрузке Delphi 7 вы видите такую картину:

Рис. 1.1. Рабочая среда Delphi 7

Познакомьтесь – это Delphi. У нее есть много окон, панелей, компонентов. С большинством из них мы познакомимся со временем, а пока нам нужно обратить внимание на 5 окон:

  1. Главное окно Delphi. Здесь находится основное меню, различные панели инструментов и палитра компонентов, состоящая из множества вкладок.
  2. Конструктор формы. Здесь мы визуально видим, как будет выглядеть форма программы, здесь мы будем создавать интерфейс, перенося на форму различные компоненты, и расставляя их таким образом, чтобы интерфейс выглядел привлекательным. Нам часто придется переключаться между конструктором форм и редактором кода, делается это клавишей F12.
  3. Редактор кода. Здесь мы видим исходный код программы, который создан самой Delphi. Тут же мы будем вводить наш собственный код.
  4. Объектный инспектор. Он предназначен для управления объектами проекта и состоит из двух вкладок – Properties (Свойства) и Events (События).
  5. Дерево объектов. Здесь мы видим, какой именно объект в данный момент является текущим. Это окно будет особенно полезно, когда на форме появится множество компонентов.

Когда открывается Delphi, она автоматически создает и отображает новый проект (программу). На рисунке вы видите проект , который содержит только одну стандартную форму . Форма – это тоже объект, который представляет собой окно программы. Чтобы программа делала что-то полезное, нам придется вносить изменения в нее. Выведем текст «Hello, world!» первым способом. Для этого в инспекторе объектов найдите свойство Caption. В данный момент текущим является объект – форма , и свойство Caption формы отвечает за надпись на системной строке программы (синяя полоса вверху любого программного окна). По умолчанию, свойство Caption содержит надпись «Form1», также называется и сама форма. Измените эту надпись на «Hello, world!» (конечно, без кавычек). Уже в процессе ввода текста вы видите, что надпись в системной строке принимает новый вид. Мы ввели этот текст одним способом.

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

    Выбираем команду меню «File – Save All» (сохранить все), либо нажимаем горячие клавиши , либо нажимаем одноименную кнопку на панели инструментов

Рис. 1.2. Кнопки Save (Сохранить) и Save All (Сохранить всё) на панели инструментов

  • Затем выходит окно с предложением сохранить модуль – текстовый файл с исходным кодом, принадлежащий форме. Файл имеет расширение *.pas. Имеем в виду, что каждый проект сохраняется в отдельную папку, поэтому вначале щелкнем правой кнопкой мыши по свободному месту окна с папками, и выберем команду «Создать — Папку». Дадим папке какое-либо имя, например, «01». После создания папки открываем ее.
  • Далее в поле «Имя файла» укажем имя сохраняемого модуля. Имя может быть любым, но обязательно латинскими символами. Еще имя модуля не должно совпадать с именем формы. Обычно, имена формам и модулям стараются делать информативными, то есть, по имени можно будет догадаться, что это за файл. Поскольку это главная форма проекта, дадим ей имя «Main», и нажмем кнопку «Сохранить».
  • Затем нам будет предложено дать имя проекту в целом. Имя проекта будет совпадать с именем исполняемого программного файла. Если мы хотим, к примеру, получить файл «hello.exe», то дадим проекту имя «hello». Нажмем кнопку «Сохранить».
  • Далее нам необходимо скомпилировать программу, то есть, перевести исходный код в выполняемый exe-файл. Для этого мы можем выбрать команду меню «Run — Run», либо нажать горячую клавишу F9, либо нажать кнопку «Run» на панели инструментов (на кнопке изображение зеленой стрелки, указывающей вправо). В результате, программа была не только скомпилирована, но и запущена. Если вы посмотрите на системную строку Delphi, то увидите надпись «Delphi 7 – hello [Running]», а окна инспектора объектов и дерева объектов исчезли. Это говорит о том, что программа находится в режиме выполнения. Выполняемая программа имеет точно такой же вид, как наша главная форма, только на форме отсутствует точечная сетка, предназначенная для облегчения дизайна. Окно полученной программы содержит все стандартные кнопки Windows – программы. Щелкнув по красному крестику в правой верхней части окна, закройте программу (но не Delphi), и вы увидите прежнюю форму.

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

    Попробуем второй способ. Обратите внимание на Палитру компонентов . Текущей является вкладка Standard , и на ней находится множество значков – компонентов. Когда вы подводите указатель мыши к какому-либо компоненту, через некоторое время выскакивает подсказка с именем компонента. Нам нужен компонент Label , который представлен на вкладке в виде кнопки с изображением жирной буквы «А». Щелкните по этой кнопке, затем щелкните по свободному месту на форме, чтобы вставить компонент. Лучше, если вы расположите его ближе к левому верхнему краю формы. Компонент Label появился на форме. Этот компонент представляет собой обычную надпись. Сейчас он выделен, и содержит надпись по умолчанию, — «Label1». Теперь объектный инспектор показывает свойства этого компонента, а не формы. Label также имеет свойство Caption , которое вы можете изменить в Инспекторе объектов. Найдите это свойство, и вместо «Label1» впишите «Hello, world!». Текст в компоненте Label изменился. Если вам не нравится место, в котором оказался компонент, вы можете перетащить его мышью на другое место. Кроме того, точное местоположение компонента вы можете задать, если выделите его, и будете нажимать клавиши перемещения курсора, удерживая при этом клавишу . Теперь попробуйте еще одно свойство компонента Label – свойство Font (шрифт). Найдите это свойство в инспекторе объектов, и выделите его. Справа появится кнопочка с тремя точками, нажмите ее. Откроется стандартное окно выбора шрифта. Здесь вы можете выбрать имя шрифта, его размеры, начертание (например, жирный курсив) и цвет текста. Поэкспериментируйте с размером компонента, его положением и шрифтом. Почти все компоненты, с которыми нам придется иметь дело, имеют эти свойства, так что в дальнейшем вам будет легче осваивать новый компонент.

    Снова сохраните проект и нажмите кнопку Run (или ). Убедитесь, что надпись появилась на форме, после чего закройте программу (но не Delphi) и вернитесь к форме.

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

    Для начала нужно установить на форму кнопку. Этот компонент также находится на вкладке Standard палитры компонентов, и выглядит как кнопочка с надписью «ОК». При наведении на него указателя мыши выскакивает подсказка «Button». Щелкнув по компоненту, щелкните затем по тому месту на форме, где вы хотели бы видеть эту кнопку. Изменим надпись на кнопке. Убедитесь, что кнопка выделена, и найдите в инспекторе объектов ее свойство Caption. Замените надпись «Button1» на «Нажми меня!». Если надпись не умещается на кнопке, вы можете растянуть кнопку мышью, или использовать для этого клавиши управления курсором с нажатой кнопкой .

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

    Читать еще:  Меры безопасности на электрифицированных участках

    Начала объектно-ориентированного программирования в Delphi (уроки 1–3)

    Урок 1: Объекты: свойства и методы. Проекты и приложения

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

    1. Теоретический материал.

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

    Основной единицей в ООП является программный объект, который соединяет в себе как описывающие его данные (свойства), так и средства обработки этих данных (методы).

    Например, рассмотрим рабочее окно приложения MS Word.

    В данном случае объектами будут как кнопки панели инструментов, так и элементы линейки и сама рабочая область, в которой набирается текст. Свойства элементов описывают их внешний вид, размеры, а также место положения на экране. Методы обозначают какие действия может производить тот или иной объект. Так кнопка отправляет открытый на экране документ на печать, другая кнопка будет выполнять другое действие. Кроме того, каждый объект реагирует на те или иные события, т.е. те действия, которые пользователь должен совершить, чтобы кнопка (или другой объект) начал выполнять свою задачу. Например, событием, вызывающим метод любой кнопки в MS Word является щелчок по левой кнопке мыши. Только после этого любая кнопка начинает работать.

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

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

    2. Показать учащимся внешний вид главного рабочего окна системы ООП Delphi (с помощью мультимедиапроектора), выдать распечатанные заранее заготовки с изображением главного окна. Показать примеры проектов созданных в среде ООП Delphi (простой проект “переменные”, тест, обучающую программу и т.д.).

    3. Проекты и приложения.

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

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

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

    Проект может быть запущен только из системы ООП.

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

    Для перевода программы на машинный язык служат программы-переводчики (трансляторы), для каждого языка программирования свой транслятор.

    Трансляторы языков программирования могут быть двух типов: интерпретаторы и компиляторы.

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

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

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

    4. Д/з: п.4.3. вопросы на стр. 200.

    Главное окно Delphi

    Цель: дать представление учащимся о простейших компонентах Delphi, их свойствах, правилах создания и сохранения проектов и приложений.

    1. Ответить на вопросы стр.200.

      В чем состоит различие между интерпретаторами и компиляторами?
    1. В чем состоит различие между проектом и приложением?

    2. Теоретический материал.

    Среда Delphi – это интегрированная среда для разработки и отладки приложений, в основе которой лежит язык Object Pascal.

    Для сохранения проекта обычно используют отдельную папку, т.к. проект состоит не из одного, а из нескольких файлов различных типов:

    Project1.dpr – сам проект;

    Unit1.pas – программная часть (файл кода);

    *.exe – исполняемый модуль.

    Можно сохранять файлы по отдельности с помощью команд Save as (Unit1)

    Save Project. Но для того, чтобы сохранить все изменения, выполненные в проекте, необходимо использовать команды File – Save all.

    Этапы разработки проектов:

  • Создание графического интерфейса проекта – установка на форму необходимых компонентов.
  • Установка значений свойств объектов графического интерфейса с помощью окна ИНСПЕКТОР ОБЪЕКТОВ.
  • Вызвать нужное событие для определенного компонента.
  • Прописать и отредактировать программный код, вызвав заготовку обработчика события для компонента двойным щелчком левой кнопки мыши по этому компоненту.
  • Запустить программу на выполнение для выявления ошибок (аварийное завершение программы Run – Program reset).
  • Сохранить проект с использованием команд File – Save all.
  • Для создания приложения требуется после создания проекта откомпилировать его, воспользовавшись командой Project – Compile all progect.

    Для создания нового приложения следует выполнить команду File – New – Application.

    Компоненты и их свойства.

    Вкладка Standart:

    1. TLabel — метка (текст на форме) используется для вывода информации на форму (подсказки, надписи, результаты вычислений);
    2. TEdit – поле ввода информации, используется для вода данных в программу с клавиатуры;
    3. TButton – кнопка, вызывающая выполнение какого-либо действия.

    Свойства:

    1. Caption – текст внутри компонента;
    2. Text — текст внутри компонента;
    3. Name – имя компонента, по которому к нему можно обращаться в программе;
    4. Left – расстояние от левой границы формы до компонента;
    5. Top – расстояние от верхней границы формы до компонента;
    6. Width – ширина компонента;
    7. Height – высота компонента;
    8. Color – цвет компонента;
    9. Font – шрифт, его характеристики;
    10. Visible – видимость компонента;
    11. Enabled – активность (доступность) компонента.

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

    Пример 1: Создать проект, который после ввода на форму имени пользователя здоровается и меняет цвет формы.

    3. Создадим графический интерфейс проекта.

    Установить свойства объектов в соответствии с таблицей:

    DelphiComponent.ru — бесплатно видеоуроки по Delphi, статьи, исходники

    Объектно-Приентированное Программирование в Delphi (ООП): основы

    Класс

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

    Вот пример объявления простого класса:

    Данные класса называются полями, процедуры и функции — методами.

    В приведенном примере

    • TPerson — это имя класса,
    • fname и faddress -имена полей,
    • show — имя метода.

    Примечание: Согласно принятому в Delphi соглашению, имена полей должны начинаться с буквы f (от слова field — поле).

    Описание класса помещают в программе в раздел описания типов (type)

    Объект

    Объекты как представители класса объявляются в программе в разделе var, например:

    Выделение памяти осуществляется при помощи специального метода класса — конструктора, которому обычно присваивают имя Create (создать). Для того чтобы подчеркнуть особую роль и поведение конструктора, в описании класса вместо слова procedure используется слово constructor.

    Ниже приведено описание класса TPerson, в состав которого введен конструктор:

    Выделение памяти для данных объекта происходит путем присваивания значения результата применения метода-конструктора к типу (классу) объекта.

    Например, после выполнения инструкции

    выделяется необходимая память для данных объекта professor.

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

    Ниже приведен пример реализации конструктора для объекта TPerson:

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

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

    Например, для доступа к полю fname объекта professor вместо

    Очевидно, что такой способ доступа к полям объекта более естественен.

    Если в программе какой-либо объект больше не используется, то можно освободить память, занимаемую полями данного объекта. Для выполнения этого действия используют метод-деструктор Free, Например, для того, чтобы освободить память, занимаемую полями объекта professor, достаточно записать professor . Free;

    Метод

    Например, инструкция professor . Show;

    вызывает применение метода Show к объекту professor. Фактически инструкция применения метода к объекту — это специфический способ записи инструкции вызова процедуры.

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

    Ниже приведен пример определения метода show класса TPerson:

    // метод Show класса TPerson

    Инкапсуляция и свойства объекта

    В описании класса перед именем свойства записывают слово property (свойство). После имени свойства указывается его тип, затем — имена методов, обеспечивающих доступ к значению свойства. После слова read указывается имя метода, обеспечивающего чтение свойства, после слова write — имя метода, отвечающего за запись свойства.

    Ниже приведен пример описания класса TPerson, содержащего два свойства: Name И Address.

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

    Компилятор перетранслирует приведенную инструкцию присваивания значения свойству в инструкцию вызова метода

    student . SetAddress(‘С.Петербург, ул.Садовая 21 , кв.ЗМ;

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

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

    Оформление данных объекта как свойства позволяет ограничить доступ к полям, хранящим значения свойств объекта: например, можно разрешить только чтение. Для того чтобы инструкции программы не могли изменить значение свойства, в описании свойства надо указать лишь имя метода чтения. Попытка присвоить значение свойству, предназначенному только для чтения, вызывает ошибку времени компиляции. В приведенном выше описании класса ТРеrson свойство кате доступно только для чтения, а свойство Address — для чтения и записи.

    Установить значение свойства, защищенного от записи, можно во время инициализации объекта. Ниже приведены методы класса ТРегзоп, обеспечивающие создание объекта класса ТРеrson и доступ к его свойствам.

    ООП – Объектно-Ориентированное Программирование

    Объект

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

    Свойствами – цвет, текст на кнопке, шрифт текста и так далее.

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

    Методами – обеспечивающими работу кнопки, например прорисовка кнопки в нажатом и не нажатом виде, прорисовка фокуса (то есть, фокус ввода находится на кнопке).

    Раньше приходилось затрачивать много времени и усилий, чтобы нарисовать такую кнопку на форме, код кнопки мог занимать страницу – полторы. Теперь мы имеем автономный объект , который достаточно бросить на форму, и он уже готов к употреблению. Нужно две кнопки? Три? Нет проблем – кидаем на форму столько кнопок, сколько нужно, и не заботимся о том, как программно эти объекты описаны в коде. Итак,

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

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

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

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

    Как у любого объекта, у него есть свойство Name – имя компонента, то имя, по которому мы будем в дальнейшем обращаться к этому объекту. Delphi по умолчанию присвоит ему текст «Чел1». Если мы установим на форму еще один такой компонент , то будет создан еще один автономный объект , у которого свойство Name будет содержать строку «Чел2». Итак, свойство Name – это переменная строкового типа, принадлежащая любому объекту, и являющаяся идентификатором (опознавателем), по которому к этому объекту нужно обращаться.

    Далее, у нашего воображаемого объекта есть и другие свойства. К примеру, свойства Имя, Фамилия, Отчество. Это также строковые переменные, принадлежащие этому объекту. Мы можем вписать в них нужный текст программно:

    Обратите внимание, что свойство Name содержит имя объекта , по которому мы к этому объекту обращаемся. Если бы мы изменили в свойстве Name Чел1 на Человек, то код выглядел бы иначе:

    Точно также, эти свойства мы можем менять в Инспекторе объектов, в момент создания программы. Так, мы меняли свойства Caption у кнопок, выводя на них нужный нам текст. А перемещая кнопку на нужную позицию, мы тем самым меняли свойства Left и Top .

    Далее, этот объект имеет не только строковые, но и другие типы свойств – переменных. Например, возраст (в годах) и рост (в сантиметрах) – это будут переменные целого типа:

    Объект может иметь и символьную переменную, например, свойство Пол (м – мужской, ж – женский):

    Также такой объект может иметь и логический тип данных, например, Военнообязанный, то есть, был в армии или нет:

    Ссылка на основную публикацию
    Adblock
    detector