пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

93. Понятие классов. Свойства, поля, события, методы.

 

«Класс» наряду с понятием «Объект», является важным понятием объектно-ориентированного подхода в программировании (хотя существуют и беcклассовые объектно-ориентированные языки, например, JavaScript). Под классом подразумевается некая сущность, которая задает некоторое общее поведение для объектов. Фактически классы – это специальные блоки кода, предназначенные для выполнения тех или иных часто встречающихся задач. Объекты являются конкретными реализациями (экземплярами) классов. Таким образом, любой объект может принадлежать или не принадлежать определенному классу, то есть обладать или не обладать поведением, которое данный класс подразумевает. Класс определяет для объекта контракт, то есть правила, с помощью которых с объектом могут работать другие объекты (обычно это делается с помощью определения методов класса). Кроме того, классы могут находиться друг с другом в различных отношениях, таких как Наследование или Агрегация.

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

 

Отношения между классами:

Наследование (Генерализация) — объекты одного класса наследуют все свойства другого класса.

Ассоциация — объекты классов вступают во взаимодействие между собой.

Агрегация — объекты одного класса, входят в объекты другого.

Композиция — объекты одного класса, входят в объекты другого и зависят друг от друга по времени жизни.

Класс-Метакласс — отношение, при котором экземплярами одного класса являются другие классы.

 

Виды классов:

  • Базовый (родительский) класс

  • Производный класс (наследник, потомок)

  • Абстрактный (виртуальный) класс

 

Члены классов:

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

private (закрытый, внутренний член класса) — обращения к члену допускаются только из кода методов класса, в котором этот член определён. Любые наследники класса уже не смогут получить доступ к этому члену;

protected (защищённый, внутренний член иерархии классов) — обращения к члену допускаются из кода методов класса, в котором этот член определён, или из любых его классов-наследников;

public (открытый член класса) — обращения к члену допускаются из любого кода.

 

Область видимости:

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

Область видимости самого класса по-разному определяется в разных языках программирования. В одних языках (таких как Delphi) все классы имеют глобальную видимость(с учетом видимости модуля), в других (таких как Java) область видимости класса связана с содержащей его единицей компиляции (в Java — с пакетом), в третьих (таких как C++ и C#) область видимости класса определяется пространствами имён (namespaces), которые задаются программистом явно и могут совпадать или не совпадать с единицами компиляции.

 

Классы в языке Delphi:

На языке Delphi класс описывается следующим образом:

 

TMyClass = class(TObject)

private

[Описанные в этой секции элементы не доступны извне (за пределами класса).]

[Здесь обычно находятся поля класса.]

protected

[Описанные в этой секции элементы доступны только классу и всем его потомкам.]

public

[Описанные в этой секции элементы доступны всем.]

published

[Описанные в этой секции элементы доступны всем и отображаются в Object Inspector'e.]

end;

 

TMyClass — имя класса;

class — ключевое слово, начинающее определение класса;

TObject — класс-предок, если есть наследование;

private, protected, public, published — ключевые слова, обозначающие секции областей доступа.

 

Создается экземпляр (объект) класса так:

MyClass := TMyClass.Create;

Уничтожается так:

MyClass.Free;

 

Свойства объекта – это специализированные средства доступа к полям объекта, позволяющие изменять его данные и выполнять его код. По отношению к компонентам свойства являются теми элементами, сведения о которых отображаются в окне Object Inspector.

Пример объекта, для которого определено свойство:

TMyObject = class

private

SomeValue: Integer;

procedure SetSomeValue(AValue: Integer);

public

Property Value: Integer read SomeValue write SetSomeValue;

end;

 

procedure TmyObject.SetSomeValue(AVallue: Integer);

begin

If SomeValue <> Avalue then

SomeValue := AValue;

end;

 

Поле класса (переменная-член, data member, class field, instance variable) в объектно-ориентированном программировании — переменная, связанная с классом или объектом. Все данные объекта хранятся в его полях. Доступ к полям осуществляется по их имени. Обычно тип данных каждого поля задаётся в описании класса, членом которого является поле.

Пример полей в Delphi:

type foo = class

private

x: Integer; // закрытое поле

public

y: Integer; // открытое поле

 

// для доступа к закрытому полю в Delphi можно использовать свойства

function get_x: Integer;

procedure set_x (x: Integer);

property _x: Integer read get_x write set_x;

end;

Методы представляют собой процедуры и функции, принадлежащие заданному объекту. Можно сказать что методы определяют поведение объекта. Создание метода состоит из 2-х шагов. Сначала следует описать метод в объявлении типа, а затем создать текст его реализации.Пример описания и определения метода:

type

TBoogieNights = class

Dance: Boolean;

Procedure DoTheHustle;

end;

procedure TBoogieNights.DoTheHustle;

begin

Dance:=True;

end;

 

Методы объекта могут быть описаны как статические (static), виртуальные (virtual), динамические (dinamic) или как методы-сообщения (message).

Статический метод работает подобно обычной процедуре или функции. Этот тип методов принимается по умолчанию. Адрес такого метода известен уже на стадии компиляции, и компилятор в тексте программы оформляет все вызовы данного метода как статические. Такие методы работают быстрее других, однако не могут быть перегружены с целью поддержки полиморфизма объектов.

Виртуальный метод — метод (функция) класса, который может быть переопределён в классах-наследниках так, что конкретная реализация метода для вызова будет определяться во время исполнения. Таким образом, программисту необязательно знать точный тип объекта для работы с ним через виртуальные методы: достаточно лишь знать, что объект принадлежит классу или наследнику класса, в котором метод объявлен.

Динамический метод в целом подобен виртуальным методам, но обслуживается другой диспетчерской системой.

Методы-сообщения служат для создания реакции на те или иные сообщения операционной системы Windows.

 

События

Сама операционная система Windows и программы, работающие под ее управлением, для обеспечением взаимодействия между программой и пользователем используют подход называемый обработкой событий. Например, двойной щелчок указателем мыши по пиктограмме в окне Windows запускает процедуру загрузки объекта, связанного с пиктограммой. Здесь событие двойной щелчок обрабатывается как команда запуска процедуры загрузки.

Среда Delphi, также используя обработку событий, обеспечивает возможность отвечать как на действия пользователя, так и на действия операционной системы. Значительная часть программного кода, который пишется в Delphi, обеспечивает реакцию на события, создаваемые пользователем или системные события. При разработке программы требуется определить, на какие именно события должно реагировать создаваемое приложение. В Delphi процедура, которая реагирует на событие, называется обработчиком события (Event Handler). Delphi работает с событиями, генерируемыми разными объектами, например, мышью, клавиатурой или операционной системой путем вызова определенных процедур.

В Delphi можно легко связать событие с обработчиком этого события, который представляет собой фрагмент программного кода, написанный для реализации пользовательского интерфейса приложения. Обработчики событий — это те связующие элементы, через которые события, генерируемые вне приложения, могут взаимодействовать с его программным кодом.

Практически все объекты среды Delphi реагируют на события. Хотя многие базовые объекты, например,текстовые строки, могут отвечать лишь на некоторые события, можно провести дополнительную настройку реакции объекта на нужное событие и реализовать его в своем приложении.

Возможны две реакции объекта на событие:

  • Игнорировать событие. Данная реакция установлена для всех объектов по умолчанию.

  • Обработать событие. Это значит связать его с процедурой-обработчиком и запрограммировать необходимое поведение, зависящее от дополнительных условий.

 


12.06.2014; 21:54
хиты: 5265
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь