Skip to content

Курс Практического Программирования В Delphi Объектно-ориентированное Программирование, Е В Санников Скачать Pdf На Литрес

Многие разработчики рассматривают консервативность Delphi как достоинство, которое обеспечивает высокую переносимость кода, а также упрощает понимание языка начинающими программистами. Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора для GCC (GNU Pascal). Весь процесс создания приложений расписан очень подробно и иллюстрирован рисунками, а приведенный программный код в большинстве случаев снабжен комментариями. 2.Большая надёжность кода и возможность повторного использования отработанных объектов.

Под термином «инкапсуляция» подразумевается то, что мы работаем (взаимодействуем) с объектом, совершенно не зная об его устройстве. Синонимом инкапсуляции может служить термин «сокрытие информации» (information hiding) о конструкции объекта. Итак, объект можно определить как продукт инкапсуляции данных вместе с кодом, предназначенным для их обработки. В реальном мире объекты (object) — это все то, что нас окружает, и с чем мы можем взаимодействовать.

Первое объявление класса TDelimitedReader называется упреждающим (от англ. forward). Оно необходимо для того, чтобы компилятор нормально воспринял объявление поля Owner в классе TDelimitedReader. Компоненты в среде Delphi – это особые объекты, которые являются строительными кирпичиками визуальной среды разработки и приспособлены к визуальной установке свойств. Чтобы превратить объект в компонент, первый разрабатывается по определенным правилам, а затем помещается в палитру компонентов. Конструируя приложение, вы берете компоненты из Палитры Компонентов, располагаете на форме и устанавливаете их свойства в окне Инспектора Объектов. Внешне все выглядит просто, но чтобы достичь такой простоты, потребовалось создать механизмы, обеспечивающие функционирование объектов-компонентов уже на этапе проектирования приложения!

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

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

Изначально язык Object Pascal относился к несколько другому языку, который был разработан в фирме Apple в 1986 году группой Ларри Теслера[2]. Однако, начиная с Delphi 7[3], в официальных документах компании Borland название Delphi стало использоваться для обозначения языка, ранее известного как Object Pascal. 4.Ссылка на созданный объект возвращается в качестве значения конструктора.

Например, класс TDelimitedReader представляет собой “читатель” текстового файла с разбором считываемых строк на элементы (подстроки), которые отделены друг от друга некоторым символом, называемым разделителем. В программе, управляемой событиями, пишутся только обработчики нужных событий, а главная часть программы, включающая ожидание событий, диспетчер и т. Событием называется некоторое происшествие в системе, касающееся данной программы. Ю пользовательских событий в программах происходят программные события. Полиморфизм достигается не только механизмом наследования и перекрытия методов родителя, но и их виртуализацией (см. ниже), позволяющей родительским методам обращаться к методам своих потомков. В самом последнем варианте объем используемой во время работы памяти компьютера сократился до 7 с небольшим Мб, тогда как в начале приложение во всю веселилось с 30 Мб.

Видно, что конструктор класса TOverlappedPetal использует метод предка (inherited), но потом меняет значение поля PetalI, которым и задается коэффициент, влияющий на форму розы. При вычислении поля мы исключаем целые числа, чтобы не дублировать формы, уже имеющиеся у предка TPetal. Объединение и скрытие объектных данных, а также обрабатывающих их методов, внутри конкретного класса от пользователя называется инкапсуляцией. Операторы as и is применяются к типам, допускающим полиморфное поведение — экземплярам класса и интерфейсам.

Курс Практического Программирования В Delphi Объектно-ориентированное Программирование

Если да, то программа завершается, если нет — возвращается к ожиданию следующего события. Согласно принципам структурного программирования, программа должна начинать свою работу с начала, выполнить некоторые действия и закончиться. Однако с приходом визуальных многозадачных операционных систем, таких как Windows, ситуация изменилась. Объединение в объекте его свойств и методов называют инкапсуляцией (encapsulation).

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

После применения оператора as сам объект остается неизменным, но вызываются только те его методы, которые есть у присваиваемого класса. Присваиваемый фактически тип должен быть известен на стадии компиляции, поэтому на месте TObjectType (после is) и tAnotherType (после as) не может стоять переменная-указатель на класс. При вызове виртуальных и динамических методов адрес определяется не во время компиляции, а во время выполнения — это называется поздним связыванием (late binding). Позднее связывание реализуется с помощью таблицы виртуальных методов (Virtual Method Table, VMT) и таблицы динамических методов (Dynamic Method Table, DMT).

Для сравнения, объявление локальной переменной в любом месте функции поддерживалось в языке Си изначально, и было унаследовано практически всеми языками, которые придерживались Си-подобного стиля — C++, C#, Java и др. Однако в настоящее время ситуация такова, что новые технологии, парадигмы и даже языки программирования появляются (и набирают популярность) едва ли не каждый год. Развитие же языковых средств не всегда влечёт за собой отказ от обратной совместимости. 1.Эта концепция в наибольшей степени соответствует внутренней логике функционирования операционной системы Windows. Программа, состоящая из отдельных объектов, отлично приспособлена к реагированию на события, происходящие в операционной системе.

Программирование На Языке Delphi Глава Three Объектно-ориентированное Программирование (ооп) Часть 1

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

  • Еже само название концепции “объектно-ориентированное программирование” указывает на то, что ключевой фигурой в ООП является объект.
  • Современные программы, как правило, сложны и велики по объему исходного кода, и использования лишь обычных процедурных методов, описанных в первой части, недостаточно для написания полноценных Windows-приложений.
  • Кроме того, заказчику со временем наверняка захочется получить какие-либо дополнительные, ранее не предусмотренные возможности, изменить вид или тип поведения для тех или иных модулей и т.д.
  • При использовании виртуальных методов Show и Hide взаимодействие методов классов tPoint и tCircle можно проиллюстрировать схемой, приведенной на рис.
  • В этом случае каждому свойству назначается целочисленный индекс, который передается в метод чтения (записи) первым параметром.

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

Это возможно потому, что компилятор определяет тип передаваемого параметра (целый или с плавающей точкой) и в зависимости от этого подставляет вызов соответствующего метода. При использовании виртуальных методов Show и Hide взаимодействие методов классов tPoint и tCircle можно проиллюстрировать схемой, приведенной на рис. Для перекрытия и виртуальных, и динамических методов служит директива override, с помощью которой (и только с ней!) можно переопределять оба этих типа методов. Конструктор создает новый экземпляр класса только в том случае, если перед его именем указано имя класса. Любая переменная объектного типа есть указатель, причем для доступа к данным, на которые ссылается указатель объекта не нужно применять символ л. Свойство можно определить как поле, доступное для чтения и записи не напрямую, а через соответствующие методы.

На перегрузку методов накладывается ограничение — нельзя перегружать методы, находящиеся в области видимости printed. Подключение виртуальных методов осуществляется с помощью специальной таблицы виртуальных методов (VMT). Первый https://deveducation.com/ метод класса tClass2 создается заново, остальные два — перекрываются. Попытка применить директиву override к статическому методу вызовет ошибку компиляции. При построении дочернего класс прямо от TObject в определении его можно не упоминать.

одно из основополагающих понятий объектно-ориентированного

Если взять набор объектов, как правило, одного и того же типа, хотя и не обязательно, то мы получим семейство или коллекцию (collection), которая в свою очередь, тоже является объектом. Чтобы обращаться к элементам коллекции, каждому объекту присваивается уникальное имя или номер. Методы MethodName и MethodAddress используются для получения имени или адреса только опубликованных методов, это связано с тем, что система Delphi хранит имена только таких методов. Так как директива published предназначена для описания свойств, размещаемых в инспекторе объектов, где указываются их имена. Объявив метод Set Data перегружаемым, в программе можно использовать обе его реализации одновременно.

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

В методах, входящих в состав свойств, может осуществляться проверка устанавливаемой величины на попадание в допустимый диапазон значений, и вызов других процедур, зависящих от вносимых изменений. Если же потребности в специальных процедурах чтения и (или) записи нет, вместо имен методов можно применять имена полей. Разумеется, если вы поместили свойство в область non-public, «достать» его оттуда в потомках возможности уже нет. Все классы в Delphi являются наследниками базового класс TObject, который реализует наиболее общие для всех классов элементы, например, действия по созданию и удалению объекта. В корне этого дерева находится базовый класс ЮЬдесЧ который реализует наиболее общие для всех классов элементы, например, действия по созданию и удалению объекта.

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

Чуть позже мы научим вас превращать объекты в компоненты (см. главу 13). Об объектах можно думать как о полезных существах, которые “живут” в вашей программе и коллективно решают некоторую прикладную задачу. Вы, как Демиург, лепите этих существ, распределяете между ними обязанности и устанавливаете правила их взаимодействия. Следующий блок проверяет, не является ли событие событием «выход из программы».

Тип возвращаемого значения совпадает с типом класса, использованного при вызове (в нашем примере это тип TPeople). Оно необходимо для того, чтобы компилятор нормально воспринял объявление поля Name в классе THuman. Такое выражение будет допустимо, если у того класса, которому принадлежит объект User2 (т.е. TCustomUser), так же имеются свойства Login и Password, причем они должны быть такого же типа, как и у TUser.

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

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

Leave a Comment