Понятие объекта


Объектно-ориентированное программирование

Развитие идей структурного и событийного программирования существенно подняло производительность труда программистов и позволило в разумные сроки (несколько месяцев) создавать приложения объемом в сотни тысяч строк. Однако такой объем уже приблизился к пределу возможностей человека, и потребовались новые технологии разработки программ.

В середине 80-х годов в программировании возникло новое направление, основанное на понятии объекта. До того времени основные ограничения на возможность создания больших систем накладывала разобщенность в программе данных и методов их обработки.

Реальные объекты окружающего мира обладают тремя базовыми характеристиками: они имеют набор свойств, способны разными методами изменять эти свойства и реагировать на события, возникающие как в окружающем мире, так и внутри самого объекта. Именно в таком виде в языках программирования и реализовано понятие объекты, как совокупности свойств (структур данных, характерных для этого объекта), методов их обработки (подпрограмм изменения свойств) и событий, на которые данный объект может реагировать и которые приводят, как правило, к изменению свойств объекта.

Появление возможности создания объектов в программах качественно повлияло на производительность труда программистов. Максимальный объем приложений, которые стали доступны для создания группой программистов из 10 человек, за несколько лет увеличился до миллионов строк кода, при этом одновременно удалось добиться высокой надежности программ и, что немаловажно, повторно использовать ранее созданные объекты в других задачах.

 

Класс

Объекты могут иметь идентичную структуру и отличаться только значениями свойств. В таких случаях в программе создается новый тип, основанный на единой структуре объекта (по аналогии с тем, как создаются новые типы для структур данных). Он называется классом, а каждый конкретный объект, имеющий структуру этого класса, называется экземпляром класса.

 

Описание нового класса

Описание нового класса похоже на описание новой структуры данных, только к полям (свойствам) добавляются методы - подпрограммы.

В Си++ и Паскале для описания класса используется ключевое слово class.

Паскаль:

class TMyClass

Item1: integer;

Item2 string;

function GetSum(n: integer): integer;

procedure Initialize;

end;

Си++:

class TMyClass

(

int Iteml;

int Item2;

int GetSum(int n);

void Initialize();

):

При определении подпрограмм, принадлежащих конкретному классу, его методов, в заголовке подпрограммы перед ее названием явно указывается, к какому классу она принадлежит. Название класса от названия метода отделяют специальные символы (точка в Паскале или два двоеточия в Си++).

Паскаль:

procedure TMyClass.Initialize;

begin

I teml: = 1;

Item2

end;

Си++:

void TMyClass::Initialize()

(

Iteml = 1;

Item2 = 0;

)

Класс - это тип данных, такой же, как любой другой базовый или сложный тип.

На его основе можно описывать конкретные объекты (экземпляры классов).

Паскаль:

var Cl, C2: TMyClass;

Си++:

TMyC1ass Cl, C2;

Доступ к свойствам объектов и к их методам осуществляется так же, как к полям записей, через точку:

Cl.Iteml := 5;

С2.Initialize;

х := Cl.GetSum(21);

Объединение данных с методами в одном типе (классе) называется инкапсуляцией.