Классы в С: методы, свойства класса, примеры

Классы в С: методы, свойства класса, примеры

Классы в C++ — урок 10.

Весь реальный мир состоит из объектов. Городка состоят из районов, в каждом районе есть свои наименования улиц, на каждой улице находятся жилые у себя дома, которые также состоят из объектов.

Фактически хоть какой вещественный предмет можно представить в форме совокупы объектов, из которых он состоит. Допустим, что нам необходимо написать программку для учета успеваемости студентов. Можно представить группу студентов, как класс языка C++. Назовем его Students .

Главные понятия.

Классы в программировании состоят из параметров и способов. Характеристики — это любые данные, которыми можно охарактеризовывать объект класса. В нашем случае, объектом класса является студент, а его качествами — имя, фамилия, оценки и средний балл.

У каждого студента есть имя — name и фамилия last_name . По дефлоту, все содержимое класса является легкодоступным для чтения и записи только для него самого. Для того, чтоб разрешить доступ к данным класса снаружи, употребляют модификатор доступа public .

Добавим в наш класс функцию calculate_average_ball() , которая будет определять средний балл успеваемости ученика.

Способы класса — это его функции. Характеристики класса — его переменные.

Функция calculate_average_ball() просто разделяет сумму всех промежных оценок на их количество.

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

Все характеристики и способы классов имеют права доступа. Также, у него есть промежные оценки за весь семестр. Эти оценки мы будем записывать в целочисленный массив из 5 частей. Впоследствии того, как все 5 оценок будут проставлены, определим средний балл успеваемости студента за весь семестр — свойство average_ball .Способы — это функции, которые могут делать какие-либо деяния над данными (качествами) класса. Все функции и переменные, которые находятся впоследствии модификатора public , становится ясно доступными из всех частей программки.

Закрытые данные класса располагаются впоследствии модификатора доступа private . Если отсутствует модификатор public , то все функции и переменные, по дефлоту являются закрытыми (как в первом примере).

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

Мы не можем впрямую обращаться к закрытым данными класса. Он не имеет типа возвращаемого значения и должен называться также, как класс, в каком он располагается. По дефлоту, заполним двойками массив с промежными оценками студента.Мы можем поправить двойки, если ученик будет отлично себя вести, и впору сдавать домашние задания. А на «нет» и суда нет 🙂

Функция set_average_ball() воспринимает средний балл в качестве параметра и присваивает его значение закрытой переменной average_ball . Функция get_average_ball() просто возвращает значение этой переменной.

Программка учета успеваемости студентов.

Сделаем программку, которая будет заниматься учетом успеваемости студентов в группе. Сделайте заголовочный файл students.h , в каком будет находиться класс Students .

Мы добавили в наш класс новые способы, также сделали приватными все его характеристики.А в заголовочном файле students.h оставим только макеты этих способов.Таковой подход именуется абстракцией данных — 1-го из базовых принципов объектно-ориентированного программирования. Например, если кто-то другой захотит пользоваться наш класс в собственном коде, ему не непременно понимать, как конкретно высчитывается средний балл.

Классы в С: методы, свойства класса, примеры

В самом начале программки создается объект класса Students . Дело в том, что сам класс является только описанием его объекта. Класс Students является описанием хоть какого из студентов, у которого есть имя, фамилия и возможность получения оценок.

Объект класса Students охарактеризовывает определенного студента. Если мы захотим выставить оценки всем ученикам в группе, то будем создавать последний объект для каждого из их. Внедрение классов очень отлично подходит для описания объектов реального мира.

Впоследствии сотворения объекта student , мы вводим с клавиатуры фамилию, имя и промежные оценки для определенного ученика.При создании объекта, лучше не копировать память для него, а можно выделить ее в в куче при помощи указателя. И освобождать ее впоследствии того, как мы окончили работу с объектом. Реализуем это в нашей программке, малость изменив содержимое файла main.cpp .

Отделение данных от логики.

Вынесем реализацию всех способов класса в отдельный файл students.cpp .

Функция set_name() сохраняет имя студента в переменной name , а get_name() возвращает значение этой переменной. Механизм работы функций set_last_name() и get_last_name() аналогичен.Функция set_scores() воспринимает массив с промежными оценками и сохраняет их в приватную переменную int scores[5] .Сейчас сделайте файл main.cpp со последующим содержимым.

Он просто будет пользоваться функцию calculate_average_ball() из второго примера, не вникая в метод ее работы.

Над большими проектами так обычно работает несколько программистов. Любой из их занимается написанием определенной части продукта. В таких масштабах кода, одному человеку фактически нереально уяснить, как работает любая из внутренних функций проекта. В нашей программке, мы используем оператор потокового вывода cout , не задумываясь о том, как он реализован на малом уровне. Ещё, отделение данных от логики является неплохим тоном программирования.

Сначала обучения мы гласили о местах имен (namespaces). Каждый класс в C++ употребляет свое место имен. Это изготовлено для того, чтоб избежать конфликтов при именовании переменных и функций. В файле students.cpp мы используем оператор принадлежности :: перед именованием каждой функции. Это делается для того, чтоб указать компилятору, что эти функции принадлежат классу Students .

Создание объекта через указатель.

Пускай это будет Вася Пупкин, у которого есть 5 оценок за семестр — две тройки, две четверки и одна пятерка.Введенные данные мы передаем set -функциям, которые присваивают их закрытым переменным класса. Впоследствии того, как были введены промежные оценки, мы высчитываем средний балл на базе этих оценок, а потом сохраняем это значение в закрытом свойстве average_ball , при помощи функции set_average_ball() .Скомпилируйте и запустите программку.

При разработке статического объекта, для доступа к его способам и свойствам, употребляют операция прямого воззвания — « . » (знак точки). Если же память для объекта выделяется средством указателя, то для доступа к его способам и свойствам употребляется оператор косвенного воззвания — « -> ».

Конструктор и деструктор класса.

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

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

Метки: Метки