Понятие класса в ООП. Синтаксис объявления класса. Члены класса. Полный

Член класса — данные об объекте или действиях с ним, описанные в классе.

Члены класса: поля (переменные), методы, свойства, события (?).

Синтаксис:

<атрибуты> <модификаторы> class <имя_класса>: <родители класса>

{

<тело_класса>

}

Атрибут — некоторая дополнительная информация, которая может быть приписана к конструкциям языка (тип, поле, метод, свойство).

Все атрибуты являются классами (потомками класса System.Attribute). Возможно создание своих атрибутов и применение их к коду.

Модификатор — средство ограничения доступа к членам класса.

Синтаксис некоторых членов класса (“внутренностей” класса):

public class A

{

public A()

{

// Определение конструктора без параметров

}

// ↓ Перегруз коснтруктора

public A(int a, int b)

{

// Определение конструктора с параметрами

}

public int k;

// Член, доступный любому классу программы.

internal int l;

// Член, доступный любому классу в том же модуле программы.

protected internal int m;

// Член, доступный любому классу в том же модуле программы либо только текущему классу и всем его подклассам в другом модуле.

protected int n;

// Член, доступный только текущему классу и всем его подклассам.

private int p;

// Член, доступный только из текущего класса (по умолчанию).

}

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

· Базовый класс (суперкласс / родитель) — класс, на основе которого создаются другие классы.

· Производный класс (дочерний / потомок) — класс, наследуюший поля и методы другого класса.

· Абстрактный класс — класс, не предполагающий создания экземпляров (объектов класса).

· Интерфейс — семантическая и синтаксическая конструкция в коде программы, используемая для специфицирования услуг, предоставляемых классом или компонентом.

4. Объекты в ООП. Принадлежность объекта типу (связь между типом и объектом). Жизненный цикл объектов: создание и разрушение объектов. Garbage Collector и разрушение объектов. Полный.

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

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

Конструктор — метод, вызываемый при создании объекта.

Чтобы создать конструктор для класса, нужно создать метод, название которого совпадает с названием класса, в любом месте в определении класса.

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

Деструктор отличается от конструктора тем, что имеет символ ~ перед именем деструктора, которое также совпадает с именем класса.

Сборщик мусора (Garbage Collector).

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

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

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

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

После освобождения памяти прерванная операция выделения памяти возобновляется и программа продолжает исполняться дальше. Если же оказывается, что освободить память невозможно, среда исполнения останавливает программу с сообщением об ошибке «Недостаточно памяти».

5. Конструкторы: понятие, назначение, примеры применения. Параметризованные конструкторы. Конструкторы «по-умолчанию». Скрытые (private) конструкторы. Полный.

Конструктор — метод, вызываемый при создании объекта.

Чтобы создать конструктор для класса, нужно создать метод, название которого совпадает с названием класса, в любом месте в определении класса.

Конструктор не имеет явным образом определенного типа возвращаемых данных.

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

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

Конструктор без параметров обычно переопределяется в классе-потомке.

Для создания конструктора с параметрами нужно задать имена и типы данных аргументов.

Если конструктор не определен вообще, он автоматически наследует конструктор от класса “Object” (в C#).

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

Деструктор отличается от конструктора тем, что имеет символ ~ перед именем деструктора, которое также совпадает с именем класса.

Закрытый конструктор. Особый конструктор экземпляров.

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

6. Инкапсуляция: понятие, назначение, примеры применения. Ограничение области видимости членов класса (private, public, protected, internal). Полный.

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

  • Пользователь может взаимодействовать с объектом только через этот интерфейс. Внутренние поля объекта напрямую недоступны, и пользователь может работать с объектом только как с единым целым. Реализуется с помощью ключевого слова: public.
  • Пользователь не может использовать закрытые данные и методы. Реализуется с помощью ключевых слов (модификаторов): private, protected, internal.

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

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

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

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

Модификатор — средство ограничения доступа к членам класса.

В зависимости от того, какой уровень доступа нужно предоставляеть члену класса, выделяют:

· public — обеспечение доступа из любого места программы.

· internal — ограничение видимости внутри сборки (сборка — код программы после компиляции). // в C#

· protected — обеспечение доступа наследникам, но запрет доступа пользователю.

· private — обеспечение доступа только внутри класса.

Наши рекомендации