![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Концепции объектно-ориентированного программирования
Объектно-ориентированное программирование может быть описано как парадигма программирования; методология программирования, перенимаемая программистом. Ещё одним примером парадигмы программирования будет процедурное (или иногда называемое императивным) программирование. Процедурное программирование включает просмотр компьютерной программы в виде последовательного списка вычислительных этапов (или процедур), подлежащих выполнению. В процедурном программировании, список процедур может в дальнейшем быть разбит на подпрограммы и функции (не путать с математическими функциями, используемые в функциональном программировании). Это больше традиционный подход к программированию и он принят многими высокоуровневыми языками, например, BASIC. Также стоит заметить, что большинство базирующихся на Интернет-технологиях языков, таких как PHP, ASP и Javascript, могут быть написаны с использованием этого подхода — кстати, когда я только начинал как веб-разработчик, я использовал ASP скрипт, PHP и Javascript именно таким образом, пребывая в блаженном счастливом неведении о скрытом потенциале ООП. В ООП, программа рассматривается как содержащая набор отдельных модулей, или объектов, которые влияют друг на друга. Каждый из этих объектов может рассматриваться как по своей сути независимая программа, с определенной ролью или ответственностью. ООП обеспечивает большую гибкость и более легкое сопровождение через большие системы и иногда может значительно облегчить постижение и анализ сложных процессов. Здесь следует заметить, что большинство языков ООП (такие как C++ или Java) хранят состояние (state), в то время как языки процедурного программирования часто не имеют состояние. Объекты и классы Термин «объект», дающий название ООП, относится к понятийному объекту, который означает единицу в нашей программе или системе. Это может быть что угодно, начиная от экранной формы или компьютерного файла, и заканчивая объектом реального мира, например, машина. Это представление состоит из атрибутов — характеристики нашего объекта; и методов — набор функций и вычислений, которые или выполняются для изменения самого объекта, или содержаться в каком-либо внешнем воздействии. Термин «класс» означает определение (или классификацию — класс) нашего объекта. Например, если бы нам нужно было написать класс под названием «автомобиль», можно было создать любое количество экземпляров этого класса — например, «Porsche», «Ferrari» и «Jaguar». Каждый из этих экземпляров является объектом. Это иллюстрирует, что практически класс это множество объектов, все из которых имеют общие атрибуты. Удержание «в семействе» Одним из наибольших преимуществ для использования объектов является инкапсуляция. По существу, это означает, что данные в пределах объекта доступны/поддаются изменению только через методы объекта, общеизвестные как интерфейс объекта. Это являющееся следствием ограничение дает объектно-ориентированному программисту свободу описания атрибутов, переменных и методов, не волнуясь о конфликтах с ними в других объектах. Инкапсуляция также означает, что до тех пор, пока мы не внесем изменение в интерфейс, мы можем изменять то, как действует объект (увеличить производительность, добавить выполняемые функции) без влияния на остальную часть системы. А теперь давайте посмотрим, как объекты и классы соотносятся друг с другом. Примечание: С этого момента, понятия станут немного сложнее. Пожалуйста, помните, что сейчас я пишу введение — я собираюсь подробнее возвратиться к этим понятиям снова (с примерами), пока применяя их к Javascript и PHP в следующих учебных пособиях. Характеристики класса В процессе записи класса существует ряд характеристик, которые стоит принять во внимание. Конструктор.Конструктор — это особая операция, которая запускается при процессе создания экземпляра объекта заданного класса, при создании объекта. Их часто различают по имени, такому же, как и имя самого класса. Его главная задача состоит в том, чтобы настроить атрибуты класса и установить правило, устанавливающее взаимосвязи свойств объекта класса — в основном, убедиться, что атрибуты класса соответствуют интерфейсу класса. Он не может иметь тип возвращаемого значения.Правильно написанный конструктор никогда не будет включать в себя функциональные средства, которые могут дать сбой, таким образом, объект становится недействительным. Деструктор.Деструктор класса — это противоположный конструктору метод, который запускается при уничтожении объекта. Его функция состоит в том, чтобы очищать и освобождать ресурсы, которые использовались объектом во время исполнения и разъединить их от других объектов или ресурсов. Результатом будет недействительность любых ссылок в процессе. Объекты,классы,поля. Классом в Object Pascal называется структура языка, которая может иметь в своем составе переменные, функции и процедуры. Переменные в зависимости от предназначения именуются полями или свойствами (см. ниже). Процедуры и функции класса — методами. Соответствующий классу тип будем называть объектным типом: type TMyObject = class(TObject) MyField: Integer; function MyMethod: Integer; end; В этом примере описан класс TMyObject, содержащий поле MyField и метод MyMethod. Поля объекта аналогичны полям записи (record). Это данные, уникальные для каждого созданного в программе экземпляра класса. Описанный здесь класс TMyObject имеет одно поле — MyField. Методы — это процедуры и функции, описанные внутри класса и предназначенные для операций над его полями. В состав класса входит указатель на специальную таблицу, где содержится вся информация, нужная для вызова методов. От обычных процедур и функций методы отличаются тем, что им при вызове передается указатель на тот объект, который их вызвал. Поэтому обрабатываться будут поля именно того объекта, который вызвал метод. Внутри метода указатель на вызвавший его объект доступен под зарезервированным именем self. Понятие свойства будет подробно рассмотрено ниже. Пока можно определить его как поле, доступное для чтения и записи не напрямую, а через соответствующие методы. Классы могут быть описаны либо в секции интерфейса модуля, либо на верхнем уровне вложенности секции реализации. Не допускается описание классов "где попало", т. е. внутри процедур и других блоков кода. До введения термина "класс" в языке Pascal существовала двусмысленность определения "объект", который мог обозначать и тип, и переменную этого типа. Теперь же существует четкая граница: класс — это описание, объект — то, что создано в соответствии с этим описанием. Поля класса являются переменными, объявленными внутри класса. Они предназначены для хранения данных во время работы экземпляра класса (объекта). Ограничений на тип полей в классе не предусмотрено. В описании класса поля должны предшествовать методам и свойствам. Обычно поля используются для обеспечения выполнения операций внутри класса. При объявлении имен полей принято к названию добавлять заглавную букву F. Например FSomeField. Итак, поля предназначены для использования внутри класса. Однако класс должен каким-либо образом взаимодействовать с другими классами или программными элементами приложения. В подавляющем большинстве случаев класс должен выполнить с некоторыми данными определенные действия и представить результат. Для получения и передачи данных в классе применяются свойства. Для объявления свойств в классе используется зарезервированное слово property. Свойства представляют собой атрибуты, которые составляют индивидуальность объекта и помогают описать его. Например, обычная кнопка в окне приложения обладает такими свойствами, как цвет, размеры, положение. Для экземпляра класса "кнопка" значения этих атрибутов задаются при помощи свойств — специальных переменных, определяемых ключевым словом property. Цвет может задаваться свойством Color, размеры — свойствами Width и Height и т. д. 91)Свойтсва, методы, сообщения и события.Для получения и передачи данных в классе применяются свойства. Для объявления свойств в классе используется зарезервированное слово property. Свойства представляют собой атрибуты, которые составляют индивидуальность объекта и помогают описать его. Например, обычная кнопка в окне приложения обладает такими свойствами, как цвет, размеры, положение. Для экземпляра класса "кнопка" значения этих атрибутов задаются при помощи свойств — специальных переменных, определяемых ключевым словом property. Цвет может задаваться свойством Color, размеры — свойствами Width и Height и т. д. Методы – это процедуры и функции, описанные внутри класса и предназначенные для операций над его полями. В состав класса входит указатель на специальную таблицу, где содержится вся информация, нужная для вызова методов. От обычных процедур и функций методы отличаются тем, что им при вызове передается указатель на тот объект, который их вызвал. Поэтому обрабатываться будут поля именно того объекта, который вызвал метод. Внутри метода указатель на вызвавший его объект доступен под зарезервированным именем self. В методах, входящих в состав свойств, может осуществляться проверка устанавливаемой величины на попадание в допустимый диапазон значений и вызов других процедур, зависящих от вносимых изменений. Если же потребности в специальных процедурах чтения и/или записи нет, можно вместо имен методов применять имена полей. События имеют разное количество и тип параметров в зависимости от происхождения и предназначения. Общим для всех является параметр sender — он указывает на объект-источник события. Самый простой тип — TNotifyEvent — не имеет других параметров: Поскольку события — это свойства объекта, их значения можно изменять в любой момент во время выполнения программы. Эта замечательная возможность называется делегированием. Можно в любой момент взять способы реакции на события у одного объекта и присвоить (делегировать) их другомуПринцип делегирования позволяет избежать трудоемкого процесса порождения новых дочерних классов для каждого специфического случая, заменяя его простой подстановкой процедур. При необходимости можно выбирать один из нескольких возможных вариантов обработчиков событий.
![]() |