Концепция объектно-ориентированного программирования
Концепцию ООП характеризует следующее:
1. В качестве строительных блоков разрабатываемых приложений используются объекты.
2. Каждому классу соответствует некоторый объектный тип, представляющий собой совокупность элементов данных и методов (для операций над данными), скомпонованных вместе для удобства использования.
3. Каждый объект – переменная, являющаяся представителем (экземпляром) определённого класса.
4. Классы связаны друг с другом соотношениями, с помощью которых объекты могут расширяться; при этом описания существующих объектов могут многократно использоваться при описании новых объектов.
5. Представителями класса могут быть представители, как непосредственного класса, так и любого класса предка.
Класс
Класс – это структура языка, включающая, помимо описания данных, описание процедур и функций, которые могут быть выполнены над представителем класса – объектом.
Переменные в зависимости от предназначения именуются полями или свойствами. Процедуры и функции класса – методами. Соответствующий классу тип называется объектным типом.
Пример объявления простого класса:
type TPerson = class (TObject) private fname: string[15]; faddress: string[35]; public procedure Show; end; |
TPerson – это имя класса, fname и faddress – имена полей, show – имя метода.
Согласно принятому в Delphi соглашению, имена полей должны начинаться с буквы f (от слова field – поле).
Описание класса помещают в программе в раздел описания типов (type).
Тексты на Object Pascal представляются в виде модулей (pas – файлов). Классы могут быть объявлены в секции интерфейса (interface) или в секции реализации (implementation) модуля. Определение классов внутри подпрограмм и других блоков не допускается.
Объект или экземпляр объекта – это конкретный экземпляр, созданный в соответствии с его объявлением с помощью класса.
Объект может содержать другой объект. Например, объект формы может содержать объект кнопки.
Объект может быть ассоциирован с другим объектом, т.е. содержать ссылку на другой объект. Он может вызывать его методы и использовать его поля.
Переменная типа класс – это переменная объектного типа и называется экземпляром класса или объектом.
Объекты как представители класса объявляются в программе в разделе var, например:
Var student: TPerson; professor: TPerson; |
Поля
Поля – это данные, уникальные для каждого экземпляра класса. Они предназначены для хранения данных во время работы экземпляра класса (объекта). Поле объявляется как обычная переменная и может быть любого типа. В описании класса поля должны предшествовать методам и свойствам.
При создании новых классов на базе ранее созданных класс-потомок наследует все поля класса-родителя. Удаление и переопределение полей невозможно. Допускается добавление новых полей.
Поля и методы у разных объектов одного типа одни и те же. Методы – это процедуры и функции, определённые внутри класса и предназначенные для операций над полями и свойствами.
В Delphi у всех стандартных классов все поля недоступны и заменены базирующимися на них свойствами. Свойства компонентов Delphi определяют их внешний вид и поведение.
Свойства
Свойства – это высокоуровневые атрибуты компонентов класса.
В объектах Delphi пользователь полностью отгорожен от полей объекта с помощью свойств. Внешне свойства напоминают поля, но внутри содержат методы, обеспечивающие доступ к свойствам. При каждом обращении к такому методу выполняются соответствующие действия, т.е. к свойствам класса доступ возможен только через методы.
Каждому свойству соответствует поле, содержащее значение свойства, и два метода, обеспечивающих доступ к значению поля.
Методы
Метод – это подпрограмма (процедура или функция), которая определена как элемент класса. Описание метода аналогично описанию обычной подпрограммы модуля. Внутри одного класса можно объявить столько методов, сколько надо.
В состав класса входит указатель на специальную таблицу, где содержится вся информация, нужная для вызова методов. От обычных процедур и функций методы отличаются тем, что им при вызове передается указатель на тот объект, который их вызвал. Поэтому обрабатываться будут поля именно того объекта, который вызвал метод. Внутри метода указатель на вызвавший его объект доступен под зарезервированным именем self.
Существует четкая граница между понятиями класс и объект: класс – это описание, объект – то, что создано в соответствии с этим описанием.
Концепция ООП базируется на трёх основных принципах:
инкапсуляция;
полиморфизм;
наследование.
Инкапсуляция
Инкапсуляция – объединение данных и действий над ними в одном объектном типе.
Под инкапсуляцией понимается скрытие полей объекта с целью обеспечения доступа к ним только посредством методов класса.
В Object Pascal ограничение доступа к полям объекта реализуется с помощью свойств объекта. Свойство объекта характеризуется полем, хранящим значение свойства, и двумя методами, обеспечивающими доступ к полю свойства. Метод установки значения свойства называется методом записи свойства (write), метод получения значения свойства называется методом чтения свойства (read).
Наследование
Наследование – это способность одного класса использовать характеристики (описание) другого. Наследование устанавливает между двумя классами отношение «предок – потомок». Предок – это класс, предоставляющий свои возможности и характеристики (описание) другим классам через механизм наследования. Класс, который использует характеристики класса посредством наследования, называется потомком. Непосредственный предок, от которого происходит данный класс, называется родителем.
В Object Pascal используется модель простого наследования, т.е. класс-потомок может иметь только одного родителя, класс-предок может иметь несколько потомков.
Полиморфизм
Полиморфизм – это возможность определения единого по имени действия (метода в виде процедуры или функции), применимого ко всем объектам иерархии наследования, т.е. возможность иметь несколько методов с одним и тем же именем для различных объектов одной иерархии. Это средство для развития объектов в потомках. Оно реализуется тем, что объект-потомок может добавлять и переопределять методы, т.е. заменять методы предка на новые с теми же именами.
Дата добавления: 2016-07-05; просмотров: 2243;