Классы и объекты – два ключевых компонента, с которыми предстоит работать, если программист пользуется ООП. Они тесно связаны между собой и представляют собой термины, с которыми должен познакомиться каждый разработчик.
В данной статье будет рассказано о том, как работать с классами и объектами. Это поможет при создании собственного приложения на базе объектно-ориентированного программирования на C++ и не только.
ООП – особенности
ООП – это парадигма разработки. Здесь приложения представляют собой объекты (экземпляры класса в ООП). Функционирование утилиты осуществляется за счет взаимодействия элементов.
Объекты – сущности, у которых имеется свойство и поведение. Они выступают экземплярами класса. Пример – персонаж (Class Character). Его экземплярами будут выступать hero и npc.
Свойства – это информация, которая связана с тем или иным объектом. Если рассмотреть пример с Character и игрой, можно отнести сюда:
- силу;
- меткость;
- ловкость;
- собранные деньги;
- интеллект;
- здоровье.
Поведение объекта будет определяться при помощи методов. Это – специальные блоки кода, которые могут вызываться из различных частей программы. Примеры у игрового персонажа:
- атака;
- использование;
- подбор предмета;
- разговор.
При помощи свойств и методов можно ускорить процесс программирования. Код получится более совершенным и читаемым.
Объектно-ориентированную парадигму используют в C#, JavaScript, PHP, C++, Python, Java и других языках. Именно поэтому важно разобраться с азами работы с объектами и классами. Это – база, без которой дальнейшая разработка бесполезна.
Объект – это…
Чтобы понимать, чем класс отличается от объекта (экземпляра класса в ООП) при разработке, нужно запомнить несколько ключевых терминов.
Объект – это своеобразная сущность в цифровом пространстве. Она обладает определенным состоянием. Имеет в своем составе поля и методы.
Соответствующий компонент может принадлежать к одному или нескольким классам, определяющих его поведение. Экземпляр класса – это и есть object.
Если провести аналогию в реальной жизни для лучшего понимания того, чем отличается рассматриваемый компонент, можно сказать так: object – это то, что сделано по чертежу. А класс – сама «схема действий».
Среди свойств выделяют:
- полиморфизм;
- инкапсуляцию;
- наследование.
Теперь должно быть ясно, в чем отличие рассматриваемых компонентов. Далее предстоит изучить азы работы с ними.
Класс – определение
Объект – это экземпляр класса. А Class представляет собой структурный тип данных. Он включает в себя: описание:
- полей данных;
- процедур;
- функций.
Понятие класса в ООП – это модель создания objects определенного типа. Она описывает их структуру и определяет алгоритмы для дальнейшей работы с соответствующим компонентом.
Понятие класса служит средством для введения абстрактных типов данных в исходный код проекта. Суть отличия рассматриваемого элемента заключается в том, что при задании типа данных класс будет определять одновременно не только интерфейс, но и реализацию всех своих имеющихся экземпляров.
Непосредственная работа
Рассматривая классы и объекты, рекомендуется действовать на наглядном примере. Это поможет не запутаться в соответствующих понятиях.
Реальный мир состоит из экземпляров класса в ООП (objects): города – из районов, в каждом – свои улицы и дома. Все это – objects. Практически любой материальный предмет можно выразить совокупностью objects.
В качестве примера напишем программы учета успеваемости учеников на базе C++. Этот код поможет лучше рассмотреть отличие изучаемых элементов:
Выше – пример класса, который носит название Students. Он будет использован далее в качестве «базы».
Ключевые понятия
Объекты – это экземпляры класса. Последние состоят из свойств и методов:
- Свойство – любые данные, которыми можно описать компонент. В случае со студентами – имя, фамилия, средние баллы и оценки. Простыми словами – переменные.
- Методы – это функции, способные выполнять те или иные операции над данными (свойствами) класса.
Каждый студент имеет имя – name, а также фамилию – last_name. У него есть определенные промежуточные оценки за семестр. Они будут записываться в целочисленный массив из 5 составляющих. Все пять оценок проставляются, а затем происходит определение балла успеваемости. В качестве свойства выступит average_ball.
Для того, чтобы рассчитать «средний балл», нужно добавить в класс функцию calculate_average_ball:
Она поделит сумму всех промежуточных оценок на их количество.
Модификаторы доступа
Рассматривая классы и объекты, нельзя обойти вниманием модификаторы доступа. Они являются крайне важными компонентами при работе с кодом.
Все свойства и варианты методов классов имеют те или иные права доступа. По умолчанию все содержимое класса – доступно для чтения и записи только в пределах «самого себя». Чтобы разрешить доступ к информации извне, нужно задействовать модификатор доступа public.
Он позволяет создать «зону видимости» для функций и переменных. Все, что написано после модификатора – это доступные материалы из любой части программы.
Закрытые электронные материалы размещаются после модификатора private. Он отличается тем, что получить доступ к информации уже не получится. Если в приложении отсутствует модификатор public, то все переменные и функции будут по умолчанию закрытыми.
Работая с классами и объектами, стоит запомнить такие рекомендации:
- Свойства class создается приватным. Это общепринятый стандарт.
- Методы class имеют значение публичных.
- Все действия с закрытыми свойствами будут реализовываться через методы.
Пример выше объясняет, что нельзя напрямую обращаться к закрытым данным. С ними удается работать через методы. Функция get_average_ball помогает получить среднюю оценку, а set_average_ball – выставить ее. Она в виде параметра примет средний балл. Далее – присвоит его значение закрытой переменной average_ball. Далее за счет get_average_ball происходит возврат значения этой переменной.
Полноценный пример
Разница между классами и объектами понятна. Основные принципы работы с ними – тоже. Это не так сложно. Ниже – наглядный пример кода учета успеваемости:
Здесь:
- Удалось добавить в class новые методы. Его свойства стали приватными.
- Set_name позволяет сохранить имя студента в name, а get_name – отвечает за возврат значения соответствующей переменной.
- Аналогичным образом работают set_last_name и get_last_name.
- Функция set_scores отвечает за принятие массива с промежуточными оценками. Она сохранит их в приватную переменную.
Теперь, зная, как написать экземпляр объекта и работать с ним, нужно создать файл main.cpp. Он содержит такой код:
Здесь:
- В самом начале создается Students. Он описывает любого студента.
- Для того, чтобы охарактеризовать оценки всех учеников, требуется создание нового object (конкретного) для каждого человека.
- После создания student система предлагает ввести фамилию с клавиатуры, а также имя и оценки. По каждому человеку отдельно.
- Данные передаются set-функциям. Они присваивают их закрытым переменным.
- После ввода информации осуществляется расчет среднего балла.
Чтобы увидеть, как наглядно работает приложение, базирующееся на классах и объектах, остается скомпилировать его.
Быстрое вливание
Каждый программист пишет на конкретном языке разработки. Чтобы надписи типа string name, class, objects и другие не вызывали вопросов, рекомендуется закончить специализированные онлайн курсы. На них в кратчайшие сроки научат создавать разнообразные приложения с нуля.
Работа с классами и объектами будет упрощена по максимуму. На курсах пользователь познакомится с ключевыми понятиями разработки, сформирует первое портфолио и получит неплохую практику. Образовательный процесс рассчитан на срок до года. Можно выбрать одно или несколько направлений.
По завершении курсов объект класса, циклы и иные элементы кодов не будут вызывать вопросы. Подтвердить полученные навыки можно за счет электронного онлайн сертификата. Он выдается всем ученикам по завершении образовательной программы. А еще в процессе учебы клиента ждет постоянное кураторство опытными разработчиками.
Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus! Ниже – один из них: