Форум программистов, компьютерный форум CyberForum.ru

Классы - что это? - C++

Восстановить пароль Регистрация
 
Andrey040601
 Аватар для Andrey040601
2 / 2 / 3
Регистрация: 13.07.2014
Сообщений: 127
Завершенные тесты: 5
28.07.2014, 12:19     Классы - что это? #1
Что такое классы? Зачем они нужны? И как их использовать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
webnzero
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 6
28.07.2014, 12:29     Классы - что это? #2
1. класс это шаблон, макет, чертеж объекта.
2. нужен для создания конкретного объекта.
3. создаешь объекты и пишешь логику их взаимодействия.
Andrey040601
 Аватар для Andrey040601
2 / 2 / 3
Регистрация: 13.07.2014
Сообщений: 127
Завершенные тесты: 5
28.07.2014, 12:37  [ТС]     Классы - что это? #3
Цитата Сообщение от webnzero Посмотреть сообщение
1. класс это шаблон, макет, чертеж объекта.
2. нужен для создания конкретного объекта.
3. создаешь объекты и пишешь логику их взаимодействия.
Можно, пожалуйста, пример?
genock94
 Аватар для genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
28.07.2014, 12:40     Классы - что это? #4
Совету прочитать начало книги (а лучше всю книгу) Лафоре "Объектно-ориентированное программирование С++".
В данной книге понятие классов в языке С++ (и не только в С++) описано настолько хорошо, что у любого новичка сразу создастся представление о классах.
Процитирую определение класса из этой книги:
Класс - форма или образец для множества сходных между собой объектов.
От себя: класс - нечто общее, что объединяет схожие объекты, причем класс физически не существует. Это модель. А вот объекты класса (конкретные, существующие объекты) имеют характеристики своего класса. Объекты класса могут выполнять действия (методы), описанные в самом классе.
Таким образом, класс состоит из полей и методов. Полями являются характеристики объекта, а методами - действия, которые объект может совершать.
P.S. если я неправильно растолковал определение класса, то просьба поправить, дабы не вводить в заблуждение автора поста и меня.
GyroReaper
8 / 8 / 1
Регистрация: 20.10.2013
Сообщений: 49
28.07.2014, 12:42     Классы - что это? #5
Вот пример. И весь гугл в придачу.
http://code-live.ru/post/cpp-classes/
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
28.07.2014, 12:44     Классы - что это? #6
Цитата Сообщение от Andrey040601 Посмотреть сообщение
как их использовать?
В них надо ходить.
genock94
 Аватар для genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
28.07.2014, 12:47     Классы - что это? #7
Andrey040601, смотрите:
Возьмём, например, класс "Телефонная книга".
Телефонная книга, имеет ФИО, адрес и телефонный номер человека. Всё это поля класса (характеристики будущего объекта класса). А вот методами данного класса являются, например, добавление новой записи, удаление старой записи, изменение существующей записи, печать списка записей, поиск записей и т.д.
P.S. в приведённой мной книге описаны другие понятные примеры, которые помогут Вам понять суть классов и их назначение.
frostyfull
31 / 31 / 8
Регистрация: 13.06.2014
Сообщений: 508
28.07.2014, 12:49     Классы - что это? #8
это что-то вроде своего типа данных, в который ты можешь кучу всего напихать, а потом объявлять переменные своего типа, и в каждой такой переменной будет содержаться куча того всего напиханного
genock94
 Аватар для genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
28.07.2014, 12:52     Классы - что это? #9
frostyfull, это ближе к определению структуры. Согласен, структуры похожи на классы, однако структуры не имеют своих функций, работающих с переменными данной структуры. Хотя, реализовать это можно. Однако существуют классы, которые призваны "виртуализировать" реальность.
frostyfull
31 / 31 / 8
Регистрация: 13.06.2014
Сообщений: 508
28.07.2014, 12:55     Классы - что это? #10
genock94, мне кажется лучше сравнить его со страницей в тел. книге, типа на классе Страница у нас есть приведенные выше поля, типа ФИО и т.д.
И теперь чтобы не вписывать каждое поле вручную мы просто создаем массив страниц и у нас получается полноценная книга, созданная одной строчкой, что-то вроде)

Добавлено через 2 минуты
Цитата Сообщение от genock94 Посмотреть сообщение
frostyfull, это ближе к определению структуры. Согласен, структуры похожи на классы, однако структуры не имеют своих функций, работающих с переменными данной структуры. Хотя, реализовать это можно. Однако уже существуют классы, которые призваны "виртуализировать" реальность.
ну это да, ну в общих чертах они похожи, но у классов просто есть еще всякие приятные штуки, в которые уже надо углубляться по мере освоения классов
genock94
 Аватар для genock94
20 / 20 / 1
Регистрация: 16.11.2012
Сообщений: 348
28.07.2014, 12:55     Классы - что это? #11
frostyfull, согласен, можно. Вы углубляетесь в наследование) однако автору поста, судя по всему, рановато углубляться в эти дебри.
frostyfull
31 / 31 / 8
Регистрация: 13.06.2014
Сообщений: 508
28.07.2014, 13:22     Классы - что это? #12
Цитата Сообщение от genock94 Посмотреть сообщение
однако автору поста, судя по всему, рановато углубляться в эти дебри.
я на то и намекаю)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2014, 16:39     Классы - что это?
Еще ссылки по теме:

Объясните что именно делает "x%d, y%d: " или что это в даном коде C++
Изучаю классы, что-то не выходит C++
Классы Bar и Car, что не так? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gru74ik
Модератор
 Аватар для gru74ik
3122 / 1348 / 167
Регистрация: 20.02.2013
Сообщений: 3,866
Записей в блоге: 18
28.07.2014, 16:39     Классы - что это? #13
Рекомендую книгу Харви М. Дейтел, Пол Дж. Дейтел "Как программировать на C++" (2008, 5-е издание).
Там про классы почти что с самого начала всё разжёвано очень подробно. И в целом книга достойная.
Вот оттуда выдержка:
Кликните здесь для просмотра всего текста

3.2. Классы, объекты, элемент-функции и элементы данных
Чтобы помочь вам укрепить свое понимание классов и их содержимого,
о чем говорилось в разделе 1.17, мы начнем с простой аналогии.
Предположим, вы хотите поехать на машине; вы разгоняете ее, нажимая на
акселератор. Что должно произойти, прежде чем вы сможете это сделать? Вообще
говоря, чтобы вы могли ездить на машине, кто-то должен был спроектировать и
собрать ее. Автомобиль начинается с инженерных эскизов и чертежей, похожих
на планы дома. В эти чертежи входит конструкция педали акселератора, с
помощью которой водитель разгоняет машину. В некотором смысле эта педаль
«скрывает» за собой сложные механизмы, которые в действительности
заставляют машину ехать быстрее, точно так же, как педаль тормоза «скрывает»
механизмы, замедляющие машину, руль «скрывает» механизмы,
поворачивающие машину и т.д. Все это позволяет людям, мало или вообще ничего не
знающим о том, как устроен автомобиль, с легкостью водить его, просто нажимая
на акселератор и тормоз, поворачивая руль, переключая передачи и
манипулируя прочими простыми, привычными пользователю «интерфейсами»
сложных внутренних механизмов.
К сожалению, нельзя ездить на чертежах автомобиля; прежде чем вы
поедете, автомобиль должен быть собран согласно описывающим его чертежам.
В полностью собранном автомобиле будет настоящая педаль акселератора,
предназначенная для его ускорения. Но и этого недостаточно — автомобиль не
будет разгоняться сам собой; для этого нужно, чтобы водитель нажимал на эту
педаль, приказывая автомобилю ехать быстрее.
Теперь давайте воспользуемся примером с автомобилем, чтобы представить
ключевые концепции объектно-ориентированного программирования, которым
посвящен данный раздел. Чтобы выполнить в программе некоторую задачу,
требуется функция (такая, как функции main из 2-й главы). Функция
описывает механизмы, которые в действительности эту задачу выполняю!1. Функция
скрывает от пользователя выполняемые ею сложные задачи, точно так же как
акселератор скрывает от водителя сложные механизмы, заставляющие
автомобиль ускоряться. В C++ мы начинаем с создания программной единицы,
называемой классом, в которую входит функция — как в чертежи автомобиля
входит конструкция педали акселератора. Как вы помните, в разделе 1.17
функция, принадлежащая классу, называлась его элемент-функцией. В классе
предусматривают одну или более элемент-функций, предназначенных для
выполнения задач класса. Например, класс, представляющий банковский счет,
может содержать одну элемент-функцию для внесения денег на счет, другую
для снятия денег со счета и третью — для справок о текущем состоянии счета.
Точно так же, как нельзя ездить на чертежах автомобиля, нельзя «ездить»
на классе. Как кто-то должен был собрать автомобиль по чертежам, прежде
чем вы сможете на нем поехать, так и вы должны создать объект класса,
прежде чем программа сможет выполнять описываемые классом задачи. Заметьте,
что из одного класса можно точно так же породить много объектов, как по
одним и тем же чертежам — собрать много автомобилей.
Когда вы ведете машину, нажатие акселератора посылает машине
сообщение — ехать быстрее. Аналогичным образом вы посылаете объекту сообщения,
каждое из которых называется вызовом элемент-функции и приказывает эле-
мент-функции объекта выполнить ее задачу. Часто это называют запросом
услуг у объекта.
Выше мы пользовались аналогией с автомобилем, чтобы представить класс,
объекты и элементы-функции. Помимо предоставляемых автомобилем
возможностей, у него имеется также множество атрибутов, таких, как цвет,
число дверей, количество бензина в баке, текущая скорость и суммарный пробег
(т.е. показания счетчика-одометра). Как и возможности автомобиля, его
атрибуты представлены в проекте и чертежах. Когда вы ведете автомобиль, они все
время с ним ассоциируются. У каждого автомобиля имеются свои собственные
атрибуты. Например, каждый автомобиль знает о том, сколько бензина у него
в баке, но не о том, сколько бензина в баках других автомобилей.
Аналогичным образом объект имеет атрибуты, которые, в процессе использования его
в программе, всегда сопровождают объект. Спецификация этих атрибутов
является частью класса объекта. Например, объект банковского счета имеет
атрибут баланса, представляющий сумму денег на счете. Каждый объект
банковского счета знает баланс счета, им представляемого, но не балансы других
счетов банка. Атрибуты специфицируются элементами данных класса.


P.S. Если читаете на английском, то можно 9-е издание книги купить (у нас только 5-е переведено пока что).

Цены, правда, у них, прямо скажем, конские - $127.17 за бумажную версию и $65.15 за электронную.
Yandex
Объявления
28.07.2014, 16:39     Классы - что это?
Ответ Создать тему
Опции темы

Текущее время: 08:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru