Класс (программирование)

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

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

Содержание

Практический подход

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

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

  • Ассоциация - объекты классов вступают в заимодействие между собой
  • Агрегация - объекты одного класса, входят в объекты другого.
  • Композиция - объекты одного класса, входят в объекты другого и зависят друг от друга по времени жизни
  • Генерализация (Наследование) - объекты одного класса наследуют все свойства другого

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

Класс определяется как список своих членов. К членам класса относятся его поля, методы и свойства.

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

  • 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;

Ссылки

  • Creating Classes — Руководство по созданию классов в языке Java
  • Классы - PPT-файл одной из лекций курса «Объектно-ориентированный анализ и дизайн».

См. Также

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home