Объекты
и классы
В этой главе мы кратко
рассмотрим основы объектно-ориентированного программирования. Изучим такие понятия,
как инкапсуляция, наследование и полиморфизм. Рассмотрим классы, поля, свойства,
события, методы объектов. В заключение мы узнаем, что такое типы времени выполнения
(RTTI).
Основы объектно-ориентированного
программирования
Язык Object Pascal является
объектно-ориентированным языком. Таким образом, готовое приложение, написанное
на данном языке, будет иметь в своем составе объекты.
Итак, рассмотрим, что такое
класс. Класс — это тип данных, который включает в себя какие-либо данные
и операции над ними.
Объект — это экземпляр
какого-либо класса.
Таким образом, класс —
это описание (тип), а объект — это то, что создано в соответствии с этим описанием.
Например, все вы хорошо представляете, что такое стол. Стол — это нечто, имеющее
столешницу и четыре ножки. Такое вот описание стола и будет классом, а конкретный
экземпляр стола, за которым вы сейчас сидите, читая эту книгу, является объектом
данного класса.
До создания объектно-ориентированных
языков программирования данные и операции над данными рассматривали как отдельные
элементы. Что такое объект, достаточно просто можно понять, если вспомнить работу
с записями. Записи состоят из областей, которые содержат данные разных типов
(каждая область записи имеет собственный тип данных).
Объекты — это тоже хранилища
разных типов данных. Данные объекта называются полем (field) и аналогичны
полям записи. Но объекты, в отличие от записей, содержат еще процедуры и функции,
которые применимы к полям данного объекта. Эти процедуры и функции называются
методами (methods). Изменять поля объекта можно при помощи свойств
(properties) объекта. Каждое свойство объекта в Kylix представляет собой
поле и методы (так называемые методы доступа), которые позволяют считывать
значение поля и задавать
его. Свойства можно изменять в процессе разработки приложения с помощью инспектора
объектов.
Примечание
Информацию о работе с инспектором объектов Kylix, а также другими окнами вы найдете во второй части этой книги.
К основным принципам объектно-ориентированного
программирования относятся:
Инкапсуляция — это
объединение данных и обрабатывающих их методов внутри одного класса.
Наследование обозначает,
что объекты могут получать свои свойства и методы от других объектов (которые
называют в данном случае предками). Объекты-наследники берут от предков все
свойства, методы и поля. Эти свойства, методы и поля в объекте-наследнике могут
сохраняться либо в неизменном виде, либо в измененном. Кроме того, объекты-наследники
могут иметь в своем составе дополнительно новые поля, методы или свойства.
Полиморфизм подразумевает,
что методы различных объектов могут иметь одинаковые имена, но отличаться по
своему содержанию. Это получается в результате переопределения метода объекта-предка
в объекте-наследнике. При этом обращение к одному и тому же методу у объекта-предка
и объекта-потомка может привести к разным результатам.