Что такое класс в ООП

Класс – это ключевое понятие в объектно-ориентированном программировании. Не до конца понимая, что такое класс, невозможно успешно программировать в рамках парадигмы ООП. Данная статья посвящена понятию класса и его базовым элементам, таким как поля, методы и конструкторы.

Когда Вы переходите от процедурных языков (Си, Pascal, Basic) к объектно-ориентированным (C#, Java, C++), первое, что вам нужно сделать – это сломать своё мышление относительно того, что программирование – это написание функций и их последовательный вызов в некоторой главной (main). В рамках ООП вам придётся мыслить более абстрактно и работать с классами, которые являются воплощением объектов реального мира. Казалось бы, почему мыслить в рамках реальных объектов – это значит мыслить более абстрактно?

В программировании, которое изначально было процедурным, переход в объектам – это переход на один уровень абстракции выше. Парадоксально, но новичкам на первых порах довольно сложно перейти к мышлению в рамках реальных объектов при написании кода. Но освоив объектно-ориентированное программирование, вы, несомненно, останетесь довольны, потому что его мощь позволит вам создавать сложные программы значительно быстрее. Мы же со своей стороны постараемся на примерах доходчиво объяснить, что такое класс, и как его использовать. Приступим.

Что такое класс?

В объектно-ориентированном программировании (ООП) – класс это основной элемент, в рамках которого осуществляется конструирование программ. Класс содержит в себе данные и код, который управляет этими данными.

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

Оговоримся, что данная статья исключительно для начинающих. В ней не рассматривается наследование, абстрактные классы и т.д.

Создание класса

Что имеет автомобиль? В частности, это:

  • марка;
  • цвет;
  • мощность (в л/с);
  • максимальная скорость (км/ч);
  • объём бака (л);
  • расход топлива (л) на 100 км пути.

Напишем класс Car (автомобиль) на C# (аналогично на Java):

Как вы могли заменить класс объявляется так: модификатор доступа, ключевое слово class и имя класса. Тело класса определяется фигурными скобками. Внутри класса объявлены его поля.

Следует понимать, что класс – это каркас, иначе говоря, описание реального объекта. На основе этого “описания” создаются экземпляры реального объекта. Логично предположить, что необходим механизм для присваивания значениям полей характеристик объекта. Для этого существуют конструкторы класса.

Конструктор класса

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

Напишем конструктор для инициализации полей в классе Car:

Конструктор объявляется так: public Имя ([параметры]). Наличие параметров не обязательно. Соответственно выделяют конструкторы класса:

  • без параметров
  • с параметрами

Модификатор доступа обязательно public, поскольку конструктор всегда вызывается вне класса.

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

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

P.S. Ничего не запрещает написать в классе одновременно конструктор без параметров (явно; тогда им можно будет воспользоваться при создании нового экземпляра класса) и конструктор с параметрами.

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

Создадим экземпляр (объект) класса Car на примере автомобиля Форд. Для этого понадобится оператор new.

Что такое класс в ООП на примере автомобиля

  • Ford (марка)
  • Серый (цвет)
  • 150 (мощность)
  • 210 (максимальная скорость)
  • 55 (объём бака)
  • 6.4 (расход топлива в смешанном цикле)

Сам по себе класс является ссылочным типом данных.

Если бы наш класс не содержал конструктора с параметрами, то создание нового объекта происходило бы так:

Методы класса

В ООП методы класса схожи по назначению с функциями из процедурного программирования.

Общая схема объявления метода: [модификаторДоступа] типВозвращаемогоЗначения имяМетода ([аргументы]) { }.

  • Тип возвращаемого значения может быть void (ничего не возвращает);
  • Наличие аргументов необязательно.

Создадим метод, который рассчитает на сколько километров пути хватит полного бака бензина:

А также создадим метод с тем же именем, но с параметром – количеством топлива; рассчитаем на сколько километров пути его хватит:

Методы с одинаковым именем создавать можно, но они должны иметь разные аргументы (по количеству или типу данных; могут отсутствовать вовсе). Компилятор выберет тот, который подходит при вызове метода по аргументам. Методы с идентичными именами, но разными параметрами, иллюстрируют полиморфизм в ООП.

Вызовем данные методы для нашего Форда и выведем результат выполнения в консоль.

Результат вычислений:

Что такое класс в ООП - создаём методы

Приведём общую схему вызова метода для экземпляра класса (используется оператор “точка”): имяЭкземпляраКласса.ИмяМетода([аргументы]);

Итак, подводя итоги, отметим, что базовая структура класса в ООП, это (в любом порядке):

  • поля (данные);
  • конструктор(ы);
  • методы.

Модификаторы доступа private и public

Модификаторы доступа служат для определения полномочий доступа к членам класса извне. Если перед полем или методом стоит ключевое слово private, то обращаться к данному члену можно только внутри класса. Член с модификатором public доступен за пределами класса: то есть другие классы могут напрямую получить или модифицировать значение поля (категорически не рекомендуется поле делать public, для безопасного получения и установки значения нужно использовать геттеры и сеттеры), либо вызвать публичный метод.

С помощью модификаторов доступа реализуется ключевой принцип ООП – инкапсуляция данных (их сокрытие).

Если не указывать модификатор доступа, то по умолчанию он принимается равным:

  • private в C#;
  • public в Java.

Об именовании полей и методов

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

Верблюжий Регистр (CamelCase) при именовании членов класса

Слова в именах членов класса пишутся слитно и каждое новое начинается с заглавной буквы. Например: numberOfPeople. Запись получается “бугристая” и похожа на горбы верблюда, отсюда и появилось такое название.

Существует ряд особенностей:

  • имена классов (не объектов, а именно классов. Объект – это поле) всегда пишутся с Заглавной буквы;
  • первая буква в имени поля всегда маленькая;
  • в языке C# первая буква имени метода всегда Заглавная;
  • в языке Java первую букву имени метода всегда принято писать маленькой.

Вот мы и рассмотрели реализацию класса в ООП. Надеемся, что данный материал помог вам разобраться в этой теме.

Что такое класс в ООП
5 (100%) 7 votes

Поделиться в соц. сетях:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">