С++ для начинающих Классы Первое знакомство

Сайт не является учебником по программированию. Это только небольшой авторский сборник информации в помощь начинающим программистам.

Введение в ООП всегда вызывает затруднение у большинства студентов.

  • В стандарте C++ под классом (class) подразумевается пользовательский тип, объявленный с использованием одного из ключевых слов class, struct или union, под структурой (structure) подразумевается класс, определённый через ключевое слово struct, и под объединением (union) подразумевается класс, определённый через ключевое слово union.

В качестве знакомства с классами я решил использовать обычное сложение двух чисел типа int
Кажется самый распространенный пример обучения — это привести пример на геометрических фигурах. Но на мой взгляд это никакой конкретики не вносит (сугубо личное мнение).

Задача: Сложить два числа через классы в C++

Этап первый. Пишем пустую программу.
Код C++ Пустая программа

Этап второй. Объявляем класс
Код C++ Объявление класса

Этап третий. Подготавливаем класс описывая внутри всё для работы
Код C++ Подготовка класса

Этап четвертый. Работа с классом

Код C++ Работа с классом

Теперь я подробнее расскажу про важные моменты в этом коде
1) Что такое класс и вообще зачем он нужен?

В первую очередь класс является собственным типом данных.

  • Класс — это некоторая идея еще не существующего объекта, в которой воедино собраны все детали, все свойства и все нужные действия необходимые для этого объекта

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

Создается класс с помощью слова class, за которым следует открывающаяся и закрывающаяся фигурные скобки. После закрывающейся фигурной скобки ставится точка с запятой. Внутри фигурных скобок пишется вся информация для класса. Создание пустого класса продемонстрировано на втором этапе

После создания пустого класса внутри этого класса прописывается вся информация для выполнения поставленной задачи. Важные моменты то, что внутри класса используются слова public, private и protected. Я заострю внимание на public и private
Это модификаторы доступа. То что описано внутри public доступно для всей программы, а то что написано внутри private доступно только внутри класса. Чем-то очень похоже на локальные и глобальные переменные. Модификатор доступа в классе по умолчанию private, поэтому слово private: писать не обязательно. Ниже написаны две равнозначные записи

 

Главный вопрос в том что, что прописывать в private, а что в public. Я если честно не знаю. Можно много спорить. Но попробую описать. В private стоит прописывать все детали вашей конструкции, в public только те функции и те данные, доступ к которым должен как-то происходить из функций вне класса.
В приведенном примере на третьем этапе было определено так, что к деталям я отнес переменные x,y и к ним доступа кроме как внутри класса не дал, прописав их внутри private (по умолчанию private). Вместе с этим мне потребовались две отдельные функции. Первая функция ввод чисел, Вторая функция складывает числа. Как ни крути, логично, что доступ к этим функциям мне нужен извне класса, поэтому я сделал обе функции доступными для всей программы и доступ к ним могу получить практически в любом месте программы вне класса.

Так как класс всего-лишь идея, то надо её перевоплотить в жизнь. Чтобы это сделать нужно объявить объект. Объект это экземпляр класса.
Если у вас есть класс, но нет объекта, то вы как депутат голословный пустословите и обещаете, но на практике дел не делаете. Чтобы не быть «пустословом» обязательно создать объект, т.к. работать вы будете через этот объект. На четвертом этапе приведен пример создания объекта

По сути класс есть структура. Отличается класс от структуры только модификатором доступа по умолчанию. Чтобы обратиться к элементу внутри класса нужно прописать объект и через точку тот элемент к которому обращаемся. Можно обращаться только к тем элементам класса, которые описаны внутри public: (имеется ввиду обращение извне)
На четвертом этапе, кроме создания объекта (экземпляр класса), я обратился к функциям вовнутрь класса summa через созданный объект. Так как я сделал доступными для всей программы две функции, то доступ к ним затруднений не вызывает.
Первая функция — ввод данных. При вводе данных я вывожу на экран нужную информацию и считываю с клавиатуры два числа. Эти числа запоминаются в переменных X,Y внутри класса. Напоминаю, что непосредственного доступа к этим X,Y из программы у меня нет. Функция внутри класса выступает в роли посредника
Вторая функция — сложение двух чисел. Вы прекрасно видите, что никаких параметров и ничего в функцию я не передавал. Просто обратился к переменным X,Y и просто их просуммировал. Во время ввода данных введенные значения присвоились в переменные X,Y вовнутрь private. После этого присвоения я могу работать с этими X,Y почти как с глобальными переменными, разница от глобальных в том, что могу только в классе

Еще один момент о котором я бы решил не отмалчиваться. В приведенном примере getch() и clrscr() надеюсь сможете поставить. (просто чтоб не отвлекать внимание не писал этих строчек). Я использовал немного разное написание функций. Я писал int main() и void get_xy() — функция main() всегда должна быть int, а другие функции не обязательно что-то обязаны вычислять и отдавать результаты. Если функция ничего не вычисляет для последующей обработки результата вычисления после завершения функции, то она не обязана отдавать результаты своих вычислений, это можно обозначать типом void, а вот сумма чисел обязана вернуть какое-то значение, так как произошло вычисление. В приведенном примере она возвращает сумму двух чисел, поэтому int sum_xy().

Подвожу итоги

  • Класс есть структура, в которой доступ по умолчанию private
  • Класс — это собственный тип данных
  • Класс — это некоторая идея еще не существующего объекта, в которой воедино собраны все детали, все свойства и все нужные действия необходимые для этого объекта
  • Создается класс с помощью слова class (struct,union)
  • В классе class модификатор доступа по умолчанию private:
  • В классе struct модификатор доступа по умолчанию public:
  • То что описано внутри public доступно для всей программы, а то что написано внутри private доступно только внутри класса
  • Функции внутри класса называют методами класса (это я не писал, но знать надо)
  • Объект — это экземпляр класса
  • Объект есть воплощение вашей идеи, описанной в классе во что-то реально существующее
  • Доступ вовнутрь класса осуществляется по конструкции Объект.Элемент класса

}

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

25 комментариев: С++ для начинающих Классы Первое знакомство

  • Anonymous говорит:

    Наконец-то кто-то все объяснил подробно и доходчиво, а то все уроки для начинающих сводятся к "вот класс, тут все просто. Вываливаем на страницу листинг без комментариев. Видите, все просто и понятно, урок окончен".

  • Anonymous говорит:

    Да, так и сводят. Спасибо

  • Kazan_siti говорит:

    Да, самое простое и лучшае объяснения!Спасибо огромное,теперь все понятно!

  • WilsoN говорит:

    отличная статья! сразу и по делу, без зауми и лишних слов! то что нужно
    автору респект и процветания)))

  • иван говорит:

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

  • Noname говорит:

    ну как тут не поблагодарить автора????

    Спасибо! Сразу появилось желание прочитать все ваши уроки!

  • Сергей говорит:

    Все супер! Идеальный урок, спасибо автору 😉 пойду читать остальные уроки..

  • Doc_AlekS говорит:

    коменты один и тот же пишет??? ))))

  • краз говорит:

    Отличнейшый урок по класах просто и понятно 😉

  • Lilu говорит:

    Спасибо огромное! Благодаря вашему сайту я поняла суть класса. Как правильно начинать работать с классами и как правильно разграничить основную программу, заголовочный файл и файл-реализацию. Ваша помощь НЕОЦЕНИМА!!! Ведь главное разобраться в первый раз, а потом наращивать опыт!!!

  • Lilu говорит:

    Спасибо огромное!!!

  • Аноним говорит:

    А ну что могу сказать подводя итоги, не плохая статья даже очень ни чего скажем на 4 с минусом прокатит под пиво.
    Да ладно классная статья спасибо большое!!!

  • Maddison говорит:

    Аааа ну что же подводя итоги скажу, что статья не плохая такая знаете 4 с минусом и то под пиво.
    Да ладно классно доходчиво на самом деле написано СПАСИБО!!!

  • Александр говорит:

    Отличная статья, автору огромное СПАСИБО)

  • МатвейПрогер228 говорит:

    Автору огромнейший респект! Только благодаря ему я понял эти классы буквально минут за 12!

  • Андрей говорит:

    спасибо автору!

  • Аноним говорит:

    У меня код не работает. Пишет «идентификатор не объявлен».

  • не панимаюю!!!!!!!!!!!!!!!!!!!!!!!!!1

  • не панимаюю бред ваще!! фу

  • Алексей говорит:

    Кто не понимает начинайте со структур. Материал изложен идеально как для новичка… сижу и сам прозреваю, что ж я с первого раза то не понял ))))

  • Stan говорит:

    Усё понятно ,спасибо )

  • Andrii говорит:

    Функции внутри класса называют методами класса или полями класса (это я не писал, но знать надо)
    насколько я знаю поле класа ето вроде переменная? разве нет?

  • Аноним говорит:

    Не понятно ни хреееена!((

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

Ваш e-mail не будет опубликован.

Поиск

 
     
Яндекс.Метрика

НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Кошки стали умнее людей — не регистрируются вконтакте, не заводят твиттер

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок