Класс объекта

Класс объекта

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

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

Содержание

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

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

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

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

В современных объектно-ориентированных языков программирования (в том числе в php, Oberon, Ruby, Object Pascal) создание класса сводится к написанию некоторой структуры, содержащей набор полей и методов (среди последних особую роль играют конструкторы, деструкторы, финализаторы). Практически класс может пониматься как некий шаблон, по которому создаются объекты — экземпляры данного класса. Экземпляры одного класса созданы по одному шаблону, поэтому имеют один и тот же набор полей и методов.

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

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

Виды классов

  • Базовый (родительский) класс
  • Производный класс (наследник, потомок)
  • Абстрактный класс
  • Виртуальный класс
  • Интерфейс

Эти виды классов описаны в статье Наследование, так как связаны именно с этим отношением.

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

Класс определяется как список своих членов. К членам класса относятся его поля (свойства) и функции (методы) .

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

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

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

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

Область видимости самого класса по-разному определяется в разных языках программирования. В одних языках (таких как модуля), в других (таких как пакетом), в третьих (таких как 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;

Классы в языке C++

Класс в языке C++ создаётся следующим образом:

 class MyClass: ParentClass // ParentClass — класс-предок, если таковой имеется
 {
     public:
        // элементы в этой секции доступны из любой части программы
     protected:
        // элементы в этой секции доступны из класса и его потомков
     private:
        // элементы в этой секции доступны только из класса; это область доступа по умолчанию
     MyClass() // конструктор
     ~MyClass() // деструктор
 }

После своего создания класс считается полноценным типом данных и, следовательно экземпляры класса создаются следующим образом:

 MyClass myinstance;

Обращение к членам класса:

 myinstance.classmember

Уничтожается экземпляр класса, как и любая переменная, только в случае, если функция, в которой он был создан завершила работу или если была принудительно освобождена динамическая память, выделенная под класс.

Классы в языке C Sharp

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

public class MyClass
{
   public;
   //Члены, доступные любому классу программы
   internal;
   //Члены, доступные любому классу в том же модуле программы
   internal protected;
   //Члены, доступные текущему классу и всем его подклассам в том же модуле программы
   protected;
   //Члены, досутпные только текущему классу и всем его подклассам
   private;
   //Члены, доступные только из текущего класса (тип по умолчанию).
}

Классы в языке Python с помощью оператора class:

 class MyClass:
     def __init__(self, arg):
         """Конструктор"""
         self._arg = arg    # свойство объекта
     def method1(self, x):
         """метод, входящий в интерфейс класса""" 
     def _method2(self, x):
         """метод, не входящий в интерфейс класса"""

Создание экземпляра класса:

 myinstance = MyClass(4)

Уничтожение экземпляра класса:

 del myinstance

Классы в языке Java с помощью оператора class:

 class MyClass {
     String name = "Example";
     
     // "Конструктор"
     public MyClass(String name) {
         this.name = name;
     }
     
     // "Метод" 
     public String getName() {
         return name;
     }
 }

Создание экземпляра класса:

 MyClass my = new MyClass("Example 2");

Уничтожение экземпляра класса:

 происходит с помощью "сборщика мусора" автоматически.

Ссылки

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

См. Также



Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Полезное


Смотреть что такое "Класс объекта" в других словарях:

  • класс объекта — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN entity class …   Справочник технического переводчика

  • класс объекта — 14.3 класс объекта: Совокупность идей, абстракций и вещей реального мира, идентифицируемых в точно определенных границах замысла, и чьи свойства и поведение подчиняются одним и тем же правилам. Источник …   Словарь-справочник терминов нормативно-технической документации

  • Класс объекта выставочной недвижимости — Класс объекта выставочной недвижимости: группа однородных объектов, для которой характерен свой уровень качества... Источник: ДЕЯТЕЛЬНОСТЬ ВЫСТАВОЧНО ЯРМАРОЧНАЯ. ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ. ГОСТ Р 53103 2008 (утв. Приказом Ростехрегулирования от 18.12 …   Официальная терминология

  • класс объекта выставочной недвижимости — Группа однородных объектов, для которой характерен свой уровень качества. [ГОСТ Р 53103 2008] Тематики выставки, ярмарки …   Справочник технического переводчика

  • класс объекта размещения — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN layout object class …   Справочник технического переводчика

  • класс — 3.7 класс : Совокупность подобных предметов, построенная в соответствии с определенными правилами. Источник: ГОСТ Р 51079 2006: Технические средства реабилитации людей с ограничениями жизнедеятельности. Классификация …   Словарь-справочник терминов нормативно-технической документации

  • Класс (Java) — Класс, наряду с понятием «объект», является важным понятием объектно ориентированного подхода в программировании (хотя существуют и бесклассовые объектно ориентированные языки, например, Прототипное программирование). Под классом подразумевается… …   Википедия

  • Класс (ООП) — Класс, наряду с понятием «объект», является важным понятием объектно ориентированного подхода в программировании (хотя существуют и бесклассовые объектно ориентированные языки, например, Прототипное программирование). Под классом подразумевается… …   Википедия

  • Класс (объектно-ориентированное программирование) — Класс, наряду с понятием «объект», является важным понятием объектно ориентированного подхода в программировании (хотя существуют и бесклассовые объектно ориентированные языки, например, Прототипное программирование). Под классом подразумевается… …   Википедия

  • Класс опасности — вредных веществ  условная величина, предназначенная для упрощённой классификации потенциально опасных веществ. Класс опасности устанавливается в соответствии с нормативными отраслевыми документами. Для разных объектов  для химических… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»