Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №2 2015.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
221.17 Кб
Скачать

Виды классов

Существуют следующие, основные виды классов:

  • Базовый (родительский класс). Базовый класс содержит данные и методы, общие для всех его потомков. Например: класс «Автомобиль» может содержать свойство «Количество колёс», которое будет общим для всех его потомков, если подразумевается, что все автомобили имеют колёса;

  • Производный класс (наследник, потомок). Производный класс содержит собственные методы и данные, которые расширяют функциональность базового класса. Например: класс «Автобус» может хранить номер маршрута;

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

Структура класса

В качестве основных составляющих класса (общих для всех объектно-ориентированных языков программирования) являются:

  • Поля. В полях хранятся данные класса. Все данные объекта хранятся в его полях. Доступ к полям осуществляется по их имени;

Определение поля выглядит следующим образом:

class Parent

{

int _value;

}

В данном примере объявлено поле класса с именем «_value» с типом int

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

Определение статического поля выглядит следующим образом:

class Parent

{

static int _value;

}

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

Parent._value = 10;

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

Определение свойства для поля выглядит следующим образом:

class Parent

{

int _value;

int Value

{

get

{

Return _value;

}

set

{

_value = value;

}

}

}

В данном примере, в разделе «get» возвращается значение свойства, а в разделе «set» устанавливается. Один из разделов может отсутствовать, тогда свойство будет либо только на чтение, либо только на запись. То, что возврат и установка значений делается в блоке кода, даёт возможность контроля за значениями.

  • Методы. Методы позволяют управлять данными класса и производить различные вычисления.

Определение метода выглядит следующим образом:

class Parent

{

int _value;

int Calculate(int parAmount)

{

return _value + parAmount;

}

}

В данном примере объявлено поле класса с именем «_value» с типом int

  • Конструктор. Специальный метод класса в объектно-ориентированном программировании, служащий для инициализации объекта при его создании. Конструктором класса называется функция, имеющая то же имя, что и сам класс, и не возвращающая никакого значения. Говоря более простым языком, конструктором называется тот метод класса, который вызывается автоматически при создании экземпляра класса. Имя конструктора должно совпадать с именем класса. Допускается использовать несколько конструкторов с одинаковым именем, но различными параметрами.

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

class Parent

{

Parent()

{

}

}

Различают следующие, основные, виды конструкторов:

    • Конструктор по умолчанию. Конструктор не имеющий аргументов. В отсутствие явно заданного конструктора по умолчанию его код генерируется компилятором (что в исходном тексте, не отражается). Пример конструктора по умолчанию указан выше;

    • Конструктор копирования. Конструктор, аргументом которого является ссылка на объект того же класса. Используется, если при создании нового объекта, в него нужно скопировать данные из другого, аналогичного типа.

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

class Parent

{

int _value = 0;

Parent(Parent parParentCopy)

{

_value = parParentCopy._value;

}

}

  • Деструктор. Специальный метод класса, служащий для деинициализации объекта (например освобождения памяти). Имя деструктора должно совпадать с именем класса и иметь префикс ~. У класса может быть только один деструктор. Деструктор не имеет модификатора доступа и параметров.

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

class Parent

{

~Parent()

{

}

}