Top.Mail.Ru

Язык С#. ООП. Классы

ООП – технология разработки сложного программного обеспечения, в которой программа строится в виде совокупности объектов и их взаимосвязей.

ООП  характеризуется  тремя основными принципами:

  • Инкапсуляция  - объединение в одном объекте данных и методов их обработки.
  • Наследование - создание новых объектов на базе ранее определенных. Новые объекты – потомки - сохраняют свойства своих родителей и обладают специфическими свойствами.
  • Полиморфизм – возможность замещения методов объекта родителя одноименными методами объекта-потомка.

Технология ООП запрещает работать с объектом иначе, чем через методы, то есть внутренняя структура объекта скрыта от внешнего пользователя. В программе для представления объекта используется понятие класса.

Классы

Класс является абстрактным типом данных, определяемым пользователем и представляет собой модель реального объекта  в виде данных и функций для работы с данными. Данные класса  называются полями, а функции, работающие с данными,  методами.

Формат описания класса:

 спецификатор  class имя_класса { тело_класса }

 

Спецификатор Описание
new Задает новое описание класса
public Доступ к классу не ограничен
protected Доступ только из данного или производного класса
internal Доступ только из данной программы (сборки)
protected internal Доступ только из данного или производного класса и из данной программы (сборки)
private Доступ только из элементов класса
static Статический класс. Позволяет обращаться к методам класса без создания экземпляра класса
sealed Бесплодный класс. Запрещает наследование данного класса
abstract Абстрактный класс. Применяется в иерархии объектов
  • По умолчанию элементы класса считаются закрытыми private.
  • Поля, описанные со спецификатором static, а также константы, существуют в единственном экземпляре для всех объектов класса, поэтому к ним обращаются не через имя экземпляра, а через имя класса.
  • Методы находятся в памяти в единственном экземпляре и используются всеми объектами одного класса совместно.
  • Конструктор экземпляра для статического класса задавать запрещается.

 

После определения класса мы можем объявлять переменные типа этого класса, называемые объектами.

  Имя_класса имя_объекта = new конструктор;

Для обращения к элементам класса (как к данным, так и к функциям) используют оператор точку.

Конструктор

Конструктор представляет собой метод класса, который предназначен для инициализации элементов данных класса. Конструктор экземпляра вызывается автоматически при создании объекта класса с помощью операции new. Имя конструктора совпадает с именем класса.

  1. Конструктор не возвращает значение, даже типа void.
  2. Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации.
  3. Если программист не указал ни одного конструктора или какие-то поля не были инициализированы, полям значимых типов присваивается нуль, полям ссылочных типов - значение null.

Деструктор

В С# существует специальный  метод, называемый деструктором, который вызывается сборщиком мусора непосредственно перед удалением объекта из памяти.

~имя_класса() {тело_деструктора}

Деструктор не имеет параметров, не возвращает значения и не требует указания спецификаторов доступа. Его имя совпадает с именем класса и предваряется тильдой (~),

Методы

Методы объявляются в классе:

Спецификатор  тип имя_метода (список формальных параметров)

{  тело функции  }

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

 Свойства

Для обеспечения корректной работы с полями класса в С#  введено такое понятие, как свойство.

  спецификатор тип имя_свойства
{
 get код
 set код
}

get код, set код – блоки кода для установки или чтения свойства.

Может отсутствовать либо часть get, либо set, но не обе одновременно.

Если отсутствует часть set, то свойство доступно только для чтения.

Если отсутствует часть get, то свойство доступно только для записи.