Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Новые концепции ООП в языке Object Pascal
В языке OP, используемом в Delphi, произошёл ряд изменений по сравнению с последней версией BP. Эти изменения позволяют назвать объектную модель OP новой объектной моделью. изменения в синтаксисе объявления и использования объектов /// изменения в организации определений и вызовов методов///в ведение указателей на методы (function … of object)//// введение методов класса////введение ссылок на классы /// /введение поддержки процедурных полей/// введение раздела объявления интерфейса разработчика объектного типа (protected)/// ведение раздела объявления интерфейса временного (published)/// введение понятия property – свойство/// введение раздела RTTI – real time type information – информация о типах на этапе выполнения программ…__В отличие от объявления старых объектных типов, использовавших слово object, новые объектные типы используют слово class. Термины класс (class) и объект (object) используются достаточно часто, приведем определение этих понятий. Класс — это определенный пользователем тип данных, который обладает состоянием (представление класса) и набором операций (поведение класса). Класс обладает некоторыми внутренними данными и некоторым набором методов. Методы класса реализуются в форме процедур или функций. Данные и методы класса описывают универсальные характеристики и поведение некоторого набора похожих объектов. Объект — это экземпляр класса или, иными словами, переменная, принадлежащая типу данных, являющемуся классом. Любой объект — это фактически существующая в памяти запись. В процессе исполнения программы каждый объект требует для хранения своего внутреннего представления некоторый объем памяти. Объект относится к классу так же, как переменная относится к типу данных. В новой объектной модели программист работает только с динамическими экземплярами классов (то есть с теми, для которых выделяется память в heap-области), в отличие от старой модели, где можно было работать как с динамическими, так и со статическими экземплярами. По этой причине изменен синтаксис обращения к полям и методам объектов. Если раньше для работы с динамическими экземплярами объектов (инициализированными с использованием обращения к конструктору в сочетании с функцией New) программист должен был использовать обращение "по адресу" ( ^ ), то теперь такой доступ подразумевается автоматически. В качестве примера сравним два следующих фрагмента исходного текста: { Старая объектная модель } type PMyObject = ^TMyObject; TMyObject = object (TObject) MyField : TMyType; constructor Init; end; ... var MyObject : PMyObject; begin MyObject:=New(PMyObject, Init); MyObject^.MyField:= ... end; { Новая объектная модель } type TMyObject = class (TObject) MyField : TMyType; constructor Create; end; ... var MyObject : TMyObject; begin MyObject:=TMyObject. Create; MyObject. MyField:= ... end;
Объектно-ориентированный подход в программировании
ООП – методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализация определенного класса. А классы образуют иерархию на принципах наследуемости. Основные идеи объектно-ориентированного подхода опираются на следующие положения: - Программа представляет собой модель некоторого реального процесса, части реального мира. - Модель реального мира или его части может быть описана как совокупность взаимодействующих между собой объектов. - Объект описывается набором параметров, значения которых определяют состояние объекта, и набором операций (действий), которые может выполнять объект. - Взаимодействие между объектами осуществляется посылкой специальных сообщений от одного объекта к другому. Сообщение, полученное объектом, может потребовать выполнения определенных действий, например, изменения состояния объекта. - Объекты, описанные одним и тем же набором параметров и способные выполнять один и тот же набор действий представляют собой класс однотипных объектов. С точки зрения языка программирования класс объектов можно рассматривать как тип данного, а отдельный объект - как данное этого типа. Определение программистом собственных классов объектов для конкретного набора задач должно позволить описывать отдельные задачи в терминах самого класса задач (при соответствующем выборе имен типов и имен объектов, их параметров и выполняемых действий). Таким образом, объектно-ориентированный подход предполагает, что при разработке программы должны быть определены классы используемых в программе объектов и построены их описания, затем созданы экземпляры необходимых объектов и определено взаимодействие между ними. Объект – осязаемая сущность, которая четко проявляет свое поведение. Появление термина объект, связанно с тем, что требовалось уменьшить сложность программных систем. При этом объектами обозначались компоненты системы или фрагменты предоставляемых знаний. Возникновение и развитие ООП связанно со такими событиями, как прогресс в области архитектуры ЭВМ, развитие языков программирования, методологии программирования, включая принцип модульности и защиты информации. Основные концепции ООП 1)Инкапсулямция — свойство языка программирования, позволяющее объединить данные и код в объект и скрыть реализацию объекта от пользователя. При этом пользователю предоставляется только спецификация (интерфейс) объекта. Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью директив: public, private, protected. Инкапсуляция — один из четырёх важнейших механизмов объектно-ориентированного программирования. В Delphi для создания скрытых полей или методов их достаточно объявить в секции private. { TMyClass = class private FMyField: Integer; procedure SetMyField(const Value: Integer); function GetMyField: Integer; protected public property MyField: Integer read GetMyField write SetMyField; end; Для создания интерфейса доступа к скрытым полям в Delphi введены свойства. 2)Наследование. Объекты подкласса наследуют свойства и методы суперкласса. На примере видно как происходит наследование. Например, модель Ford LX например наследует большинство черт базовой модели, но отличается интерьером и деталями двигателя. Это и есть сущность иерархии наследования, когда типы объектов, наследуют большинство своих атрибутов из общего (родового) или менее специализированного типа. 3) Индивидуальность объекта (сущность объекта, отличающая его от всех других). Каждый автомобиль состоит из частей: двигатель, системы управления, т. е. структуру м описать в виде графа, где части автомобиля соединены с другими частями или на них ссылаются через другие части. Это возможно, благодаря существованию понятия индивидуальности.
Понятие класса и объекта
Класс – это определенный пользователем тип данных, который обладает состоянием (представление класса) и набором операций (поведение класса), т. е. класс обладает внутренними данными и некоторым набором методов.{TPerson = class private fname: string[15]; faddress: string[35]; public procedure Show; end; }Данные класса называются полями, процедуры и функции — методами. В Приведенном Примере TPerson — это имя класса, fname и faddress - имена полей, show — имя метода.
Методы класса реализуются функциями и процедурами. Данные и методы класса описывают универсальные характеристики и поведение некоторого набора похожих объектов. Для того чтобы метод был выполнен, необходимо указать имя объекта и имя метода, отделив одно имя от другого точкой. Например, инструкция {professor. Show;} вызывает применение метода show к объекту professor. Фактически инструкция применения метода к объекту — это специфический способ записи инструкции вызова процедуры. Методы класса определяются в программе точно так же, как и обычные процедуры и функции, за исключением того, что имя процедуры или функции, являющейся методом, состоит из двух частей: имени класса, к которому принадлежит метод, и имени метода. Имя класса от имени метода отделяется точкой. Определения метода show класса TPerson {TPerson procedure TPerson. Show; begin ShowMessage( 'Имя:' + fname + #13 + 'Адрес:' + faddress ); end;} Объект – экземпляр класса, или переменная, принадлежащая типу данных, являющемуся классом. В процессе выполнения программы каждый объект требует для хранения своего внутреннего представления некоторый объем памяти. Объекты как представители класса объявляются в программе в разделе var: {var student: TPerson; professor: TPerson;} В Delphi объект — это динамическая структура. Переменная-объект содержит не данные, а ссылку на данные объекта. Поэтому программист должен позаботиться о выделении памяти для этих данных. Выделение памяти осуществляется при помощи специального метода класса — конструктора, которому обычно присваивают имя Create (создать). Для того чтобы подчеркнуть особую роль и поведение конструктора, в описании класса вместо слова procedure используется слово constructor. {TPerson = class private fname: string [ 15 ]; faddress: string[35]; constructor Cireate; public procedure show; end;}
*Из прошлого семестра: Классы – это языковые конструкции, для определения АТД в большинстве языков программирование. Понятия класса и объекта тесно связаны. Объект определяет конкретную сущность, определяемую во времени и пространстве, а класс – это абстракция. В общеупотребительных терминах класс – это группа, множество или вид с общими свойствами или общим свойством, разновидностями, отличиями по качеству, возможностям или условиям. С точки зрения ООП, класс – это множество объектов, связанных общностью структуры и поведения. Каждый объект является экземпляром какого-либо класса.
Поля, методы и свойства объекта
Объект – экземпляр класса, или переменная, принадлежащая типу данных, являющемуся классом. Поле – некоторая переменная в рамках объекта. Методы – это процедуры и функции, которые определяют поведение объекта. Свойство – это имя, скрывающее реализацию доступа к информации объекта. Свойство позволяет существенно модифицировать внутреннее строение класса, не внося никаких изменений в код, использующий класс. Синонимом понятию свойства является термин «виртуальное поле». С точки зрения пользователя, свойство выглядит как поле и его значение можно читать и записывать. На самом деле, реализация свойства может быть различной. Во-первых, можно напрямую отобразить свойство на поле. (Упрощённая инкапсуляция). Во-вторых, можно назначить методы, которые будут использоваться для осуществления чтения и записи. Во втором случае в рамках этих методов может выполняться целый комплекс действий, связанных с доступом к значению свойств. (Расширенная инкапсуляция). Технически свойство – это идентификатор, который отображается на данные или методы при помощи специальных ключевых слов read и write. Например: property Month: integer read FMonth write SetMonth Часто связанные со свойством данные и методы являются частными (private) или защищенными (protected). Свойство является общедоступным (public), т. е. любой доступ к этим данным и методам может осуществляться только при помощи свойства. Благодаря этому инкапсуляция с помощью свойств является как расширенной, так и упрощенной. *Ограничение: свойство нельзя передавать процедуре или функции, ожидающей параметр-переменную. (Завести переменную того же типа, что и свойство, передать в процедуру или функцию, вернуть оттуда значение переменной и присвоить свойству.) {type TName = string[15]; TAddress = string[35]; TPerson = class private FName: TName; FAddress: TAddress; Constructor Create(Name:Tname); Procedure Show; Function GetName: TName; Function GetAddress: TAddress; Procedure SetAddress(NewAddress:TAddress); public Property Name: Tname read GetName; Property Address: TAddress read GetAddress write SetAddress; end;
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 |


