Begin
Begin
Public
Var
Public
Private
Раздел 1. Теоретические основы объектно-ориентированного программирования
Заключение
Отчет о прибылях и убытках является главным источником информации о формировании и использовании прибыли, где показаны статьи, формирующие финансовый результат от всех видов деятельности. Отчет о прибылях и убытках составляется за год и по внутригодовым периодам.
Тема 1.3. Основные средства разработки классов
План:
1. Конструктор. Деструктор.
2. Виртуальные средства разработки классов.
3. Наследование методов.
Класс — это множество объектов, имеющих одинаковую структуру. Его структура:
Поля данных: Параметры объекта, задающие его состояние. Физически поля представляют собой значения (переменные, константы), объявленные как принадлежащие классу.
Методы: Процедуры и функции, связанные с классом. Они определяют действия, которые можно выполнять над объектом такого типа, и которые сам объект может выполнять.
Пример объявления простого класса:
TPerson = class
fname: string[15]; faddress: string[35];
procedure Show;
end;
Данные класса называются полями, процедуры и функции — методами.
В Приведенном Примере TPerson — это имя класса, fname и faddress - имена полей, show — имя метода.
Примечание
Согласно принятому в Delphi соглашению, имена полей должны начинаться с буквы f (от слова field — поле).
Описание класса помещают в программе в раздел описания типов (type).
Объект
Объекты как представители класса объявляются в программе в разделе var, например:
student: TPerson; professor: TPerson;
Примечание
В Delphi объект — это динамическая структура. Переменная-объект содержит не данные, а ссылку на данные объекта. Поэтому программист должен позаботиться о выделении памяти для этих данных.
Выделение памяти осуществляется при помощи специального метода класса — конструктора, которому обычно присваивают имя Create (создать). Для того чтобы подчеркнуть особую роль и поведение конструктора, в описании класса вместо слова procedure используется слово constructor.
Ниже приведено описание класса TPerson, в состав которого введен конструктор:
TPerson = class private
fname: string [ 15 ];
faddress: string[35];
constructor Create; // конструктор
procedure show; // метод
end;
Выделение памяти для данных объекта происходит путем присваивания значения результата применения метода-конструктора к типу (классу) объекта. Например, после выполнения инструкции
professor:= TPerson.Create;
выделяется необходимая память для данных объекта professor.
Помимо выделения памяти, конструктор, как правило, решает задачу присваивания полям объекта начальных значений, т. е. осуществляет инициализацию объекта. Ниже приведен пример реализации конструктора для объекта TPerson:
constructor TPerson.Create;
fname:= '';
faddress:= '';
end;
После объявления и инициализации объект можно использовать, например, установить значение поля объекта. Доступ к полю объекта осуществляется указанием имени объекта и имени поля, которые отделяются друг от друга точкой. Например, для доступа к полю fname объекта professor надо писать professor.fname.
Если в программе какой-либо объект больше не используется, то можно освободить память, занимаемую полями данного объекта. Для выполнения этого действия используют метод- деструктор Free. Например, для того, чтобы освободить память, занимаемую полями объекта professor, достаточно записать
professor.Free;
Метод
Методы класса выполняют действия над объектами класса. Для того чтобы метод был выполнен, необходимо указать имя объекта и имя метода, отделив одно имя от другого точкой. Например, инструкция
professor. Show;
вызывает применение метода show к объекту professor.
Наследование
Концепция объектно-ориентированного программирования предполагает возможность определять новые классы посредством добавления полей, свойств и методов к уже существующим классам. Такой механизм получения новых классов называется порождением. При этом новый, порожденный класс (потомок) наследует свойства и методы своего базового, родительского класса.
В объявлении класса-потомка указывается класс родителя. Например, класс TEmployee (сотрудник) может быть порожден от рассмотренного выше класса TPerson путем добавления поля FDepartment (отдел). Объявление класса TEmplioyee в этом случае может выглядеть так:
TEmployee = class(TPerson)
FDepartment: integer; // номер отдела
constructor Create(Name:TName; Dep:integer);
end;
Заключенное в скобки имя класса TPerson показывает, что класс TEmployee является производным от класса TPerson. В свою очередь, класс TPerson является базовым для класса TEmployee.
Класс TEmpioyee должен иметь свой собственный конструктор, обеспечивающий инициализацию класса-родителя и своих полей. Вот пример реализации конструктора класса TEmployee:
constructor TEmpioyee.Create(Name:Tname;Dep:integer);
inherited Create(Name);
FDepartment:=Dep;
end;
В приведенном примере директивой inherited вызывается конструктор родительского класса. После этого присваивается значение полю класса-потомка.
После создания объекта производного класса в программе можно использовать поля и методы родительского класса. Например:
engineer:= TEmployee.Create('Сидоров',413);
engineer.address:= 'ул.Блохина, д.8, кв.10';
Первая инструкция создает объект типа TEmployee, вторая — устанавливает значение свойства, которое относится к родительскому классу.
Технология PHP. ООП в PHP.
PHP поддерживает широкие объектно-ориентированные возможности, полная поддержка которых была введена в пятой версии языка.
Класс - это базовое понятие в объектно-ориентированном программировании (ООП). Классы образуют синтаксическую базу ООП. Их можно рассматривать как своего рода "контейнеры" для логически связанных данных и функций (обычно называемых методами). Если сказать проще, то класс - это своеобразный тип данных.
Экземпляр класса - это объект. Объект - это совокупность данных (свойств) и функций (методов) для их обработки. Свойства и методы называются членами класса. Вообще, объектом является все то, что поддерживает инкапсуляцию.
Если класс можно рассматривать как тип данных, то объект — как переменную (по аналогии). Скрипт может одновременно работать с несколькими объектами одного класса, как с несколькими переменными.
Внутри объекта данные и код (члены класса) могут быть либо открыты, либо нет. Открытые данные и члены класса являются доступными для других частей программы, которые не являются частью объекта. А вот закрытые данные и члены класса доступны только внутри этого объекта.
PHP поддерживает классы. Методы и поля класса могут быть общедоступными (public, по умолчанию), защищёнными (protected) и скрытыми (private). PHP поддерживает все три основных механизма ООП — инкапсуляцию, полиморфизм и наследование (родительский класс указывается с помощью ключевого слова extends после имени класса). Поддерживаются интерфейсы (ставятся в соответствие с помощью implements). Разрешается объявление финальных, абстрактных методов и классов. Множественное наследование классов не поддерживается, однако класс может реализовывать несколько интерфейсов. Для обращения к методам родительского класса используется ключевое слово parent.
Классы в PHP имеют ряд специальных методов (англ. Magic methods), начинающихся с двух символов подчёркивания. Особо стоит отметить конструктор (__construct(), в версиях до 5.0 конструктором служил метод, одноимённый с классом) и деструктор (__destruct()), а также методы чтения (__get()) и записи (__set()), свёртывания (__sleep()) и развёртывания (__wake()), клонирования (__clone()) и др. Эти методы являются достаточно гибким инструментом: переопределяя их, можно добиться существенного изменения поведения объекта.
Экземпляры класса создаются с помощью ключевого слова new, обращение к полям и методам объекта производится с использованием оператора -> . Для доступа к членам класса из его методов используется переменная $this.
Описание классов
Описание классов в PHP начинаются служебным словом class:
class Имя_класса {
// описание членов класса - свойств и методов для их обработки
}
Для объявления объекта необходимо использовать оператор new:
Объект = new Имя_класса;
Данные описываются с помощью служебного слова var. Метод описывается так же, как и обыкновенная пользовательская функция. Методу также можно передавать параметры.
Пример класса на PHP:
<?php
// Создаем новый класс Coor:
class Coor {
// данные (свойства):
var $name;
var $addr;
// методы:
function Name() {
echo "<h3>John</h3>";
}
}
// Создаем объект класса Coor:
$object = new Coor;
?>
Для получения доступа к членам класса предназначен оператор ->. Приведем пример:
$object -> Name();
Чтобы получить доступ к членам класса внутри класса, необходимо использовать указатель $this, которы всегда относится к текущему объекту. Модифицированный метод Getname():
function Getname() {
echo $this->name;
}
Таким же образом, можно написать метод Setname():
function Setname($name) {
$this->name = $name;
}