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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 59, средняя оценка - 4.78
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,931
Записей в блоге: 1
#1

Не могу понять зачем нужны классы - C++

10.11.2011, 13:05. Просмотров 7857. Ответов 34
Метки нет (Все метки)

Обьяснити начинающему программисту зачем нужны классы???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2011, 13:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу понять зачем нужны классы (C++):

Не могу понять зачем нужны указатели? - C++
Не как не могу понять зачем нужны указатели. Я знаю что их надо использовать для выделения памяти, но раньше я и без них обходился

Зачем нужны классы? - C++
Изучаю СИ++ после изучения СИ. Не пойму какой смысл в классах. То что они делают можно реализовать с помощью функций, структур и обычных...

Зачем нужны классы и структуры? - C++
1. Зачем нужны классы? 2. Зачем нужны аргументы в main()? 3. Зачем нужны структуры. struct *имя*{}?

Не могу понять зачем строчка - C++
вот допустим задание Написать программу на языке Си, которая состоит из следующих действий: 1. Создание заголовочного файла (с...

НЕ могу понять классы - C++
Помогите реализовать с коментарии: "Разработайте и реализуйте класс Name_pa±rs, содержащий пару (имя,возраст), где имя— объект класса...

Не могу понять задание,пожалуйста.Классы - C++
Реализовать в задании три конструктора (без аргументов, инициализации, копирования) и деструктор. Реализовать в конструкторе...

34
fai250890
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 5
10.11.2011, 13:48 #16
Цитата Сообщение от Sylar9 Посмотреть сообщение
mme
имя класса одно, а в теле ты описываешь указатель другого имени класса
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,019
10.11.2011, 15:54 #17
Класс - абстрактный объект. Внутри содержит функции (методы) по работе с ним. Класс должен предоставлять пользователю лишь интерфейс и скрывать данные от лишних изменений.
Хорошее объяснение дается в книжке "C++ для чайников". Представим объект микроволновая печь. "Мне не нужно знать, что он делает, дабы разогреть курицу, его внутренне устройство меня не волнует. Во время приготовления блюда я смотрю на микроволновку как на железный ящик. И пока я управляю печью с помощью интерфейса, я не могу её сломать, "подвесить" или превратить блюдо в угли.... Я должен думать о том, как приготовить блюдо, не волнуясь о деталях работы печи..."
0
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
10.11.2011, 15:56 #18
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Не достаточно. Структ - это только структура данных. Нужно еще поведение - методы.
Присоединяюсь и продолжаю: нужны ещё абстрактные интерфейсы (что подразумевает наследование и полиморфизм).
1
Байт
Эксперт C
16149 / 10427 / 1556
Регистрация: 24.12.2010
Сообщений: 19,759
10.11.2011, 20:08 #19
Цитата Сообщение от MrGluck Посмотреть сообщение
я не могу её сломать, "подвесить" или превратить блюдо в угли....
Можешь! В том-то все и дело.

Добавлено через 2 минуты
Да и сломать можешь, и подвесить, особенно если это печка made in China

Добавлено через 13 минут
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Не достаточно. Структ - это только структура данных. Нужно еще поведение - методы.
Я имею в виду только создание типов. Как ими манипулировать - это уж другое дело. Можно создать набор функций, и они будут ничем не хуже методов. Только этим функциям надо будет параметром передавать экземпляр типа, а у метода он уже по умолчанию как бы есть (this). На один параметр меньше у методов будет.
Конечно, есть всякие штуки типа инкапсуляции, перегрузки, виртуальности и т.п. Но это в общем-то дело вкуса и привычки. Я как-то обхожусь тем, что пренебрежительно нынче называется процедурным программированием. Но! Когда дело доходит до инкапсуляции Вин-Апи, тут я сдаюсь. Эта Апи такая головоломка, такой чудовищный лабиринт, что спасибо любому, кто в этом разберется и хоть слегка скруглит углы
1
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
10.11.2011, 20:46 #20
Цитата Сообщение от Sylar9 Посмотреть сообщение
Объясните начинающему программисту зачем нужны классы???
ну вот смотри у тебя есть допустим объекты (свой пример прошу отнестись снисходительно)
точка на координатной плоскости
C++
1
int tochka_x;int tochka_y;
вот допустим как бес класса
C++
1
int pram_x1;int pram_x2;int pram_y1;int pram_y2;int pram_plochad;int pram_perimetr;
потом появятся треугольники квадраты и так далее
вот как с классом
class tochka
{
C++
1
2
3
int x,y;
//конструкторы деструктор и т д
};
C++
1
2
3
4
5
class pram:: public tochka //скарее наследование синтаксически объявил неправильно. [b]Sylar9[/b],  тут класс pram наследует (тупо вбирает код) всё что есть у класса tochka
{
int x2,y2,plochad,perimetr;
//конструкторы деструктор и т д
};
неправо ли это гораздо элегантней выглядит чем просто набор переменных плюс правильно смоделированный класс даёт очень большие плюсы по сравнению с обычным набором переменных
0
ValeryLaptev
Эксперт С++
1041 / 820 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
10.11.2011, 21:25 #21
Цитата Сообщение от Байт Посмотреть сообщение
Я имею в виду только создание типов. Как ими манипулировать - это уж другое дело. Можно создать набор функций, и они будут ничем не хуже методов. Только этим функциям надо будет параметром передавать экземпляр типа, а у метода он уже по умолчанию как бы есть (this). На один параметр меньше у методов будет.
Конечно, есть всякие штуки типа инкапсуляции, перегрузки, виртуальности и т.п. Но это в общем-то дело вкуса и привычки. Я как-то обхожусь тем, что пренебрежительно нынче называется процедурным программированием. Но! Когда дело доходит до инкапсуляции Вин-Апи, тут я сдаюсь. Эта Апи такая головоломка, такой чудовищный лабиринт, что спасибо любому, кто в этом разберется и хоть слегка скруглит углы
В том - то и дело, что тип - это не просто набор объектов. Но и операции с этими объектами.
Нам вообще-то говоря, числа нафиг не нужны. Только операции придают числам смысл. Так и со всеми типами данных.

Прочитайте первую главу моей книжки по ООП. Я там прямо целый раздел в начале написал, который так и называется: Зачем нужны классы.
2
Байт
Эксперт C
16149 / 10427 / 1556
Регистрация: 24.12.2010
Сообщений: 19,759
11.11.2011, 00:31 #22
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Нам вообще-то говоря, числа нафиг не нужны.
Не обижайте товарища Пеано.

Не по теме:

И если по-честному, кто мы были бы такие без этой первичной абстракции - бесконечного ряда натуральных чисел Так бы и ходили на четырех ногах, и невдомек было б посчитать пальцы на ногах передних.

0
Bers
Заблокирован
11.11.2011, 01:11 #23
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Прочитайте первую главу моей книжки по ООП. Я там прямо целый раздел в начале написал, который так и называется: Зачем нужны классы.
простите, каким образом можно почитать?
0
silent_1991
11.11.2011, 07:55
  #24

Не по теме:

Цитата Сообщение от Bers Посмотреть сообщение
простите, каким образом можно почитать?
Заранее прошу прощения у ув. ValeryLaptev за то, что отвечаю за него.

Bers, возможно, с помощью глаз?

0
Bers
11.11.2011, 07:57
  #25

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
Заранее прошу прощения у ув. ValeryLaptev за то, что отвечаю за него.
Bers, возможно, с помощью глаз?
Ух ты. клева. А куда мне этими самыми глазами смотреть?
Не, я конечно понимаю, что бы прочитать книгу, надо смотреть в эту самую книгу.

Вопрос: где её взять?

0
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
11.11.2011, 08:08 #26
Цитата Сообщение от Bers Посмотреть сообщение
Вопрос: где её взять?

Не по теме:

Гугл отменили?


Ссылка не на ozon, потому как там нет в наличии
0
Bers
Заблокирован
11.11.2011, 08:17 #27
Цитата Сообщение от mimicria Посмотреть сообщение
Не по теме:
Гугл отменили?
Я конечно подозревал, что Валерий Лаптев издал книгу под собственным реальным именем.
Но во-первых, мне не было известно точное название книги.

Если загуглить "Валерий Лаптев", то всяких разных Валериев будит очень много.
А что касается с++, то вот например вот такая ссылка:
http://www.kniga.ru/books/346483

И это совсем не похоже на то, что вылезло по вашей ссылочке. Ну и как узнать какая книга - та самая?

Во-вторых, не известно где её можно купить/скачать/заказать. Например, по вашей ссылке "книга в наличии отсутствует"

В третьих, я подумал, может быть автор сам любезно предоставит мне такую возможность. Или хотя бы сообщит точно, где её можно гарантированно раздобыть.
Меня интересует конкретно вот этот вот материал:

Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Прочитайте первую главу моей книжки по ООП. Я там прямо целый раздел в начале написал, который так и называется: Зачем нужны классы.
0
ValeryLaptev
Эксперт С++
1041 / 820 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
11.11.2011, 08:47 #28
Bers, и эту книгу тоже я написал Это первая моя книжка. Но зачем нужны классы я написал в первой главе книжки по ООП. Кстати, в сети дежавю болтается - очень хорошо сделан, с оглавлением. Мы студентам его раздаем...
1
RASHFor
6 / 6 / 0
Регистрация: 12.02.2012
Сообщений: 224
06.06.2012, 13:49 #29
programina,не работает что то твой код пишет:error LNK2019: ссылка на неразрешенный внешний символ
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
06.06.2012, 17:39 #30
RASHFor, попробуйте вот это:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <string>
#include <stdlib.h>
 
using namespace std;
 
class Home
{
    public:
        string  name;
        int     age;
 
        void GetName (void)
        {
                cout << "Imya:\t\t" << name << endl;
        }
 
        void GetAge (void)
        {
                cout << "Vozrast:\t" << age << endl;;
        }
};
 
//===========================================================
// Name: main
// Desc: Главная функция
//===========================================================
int main()
{
    Home stat;
 
    cout << "Vvedite imya:";
    cin >> stat.name;
 
    cout << "Vvedite vozrast:";
    cin >> stat.age;
 
    cout << "\n\n\n-------------------------------------\n\n\n";
 
    stat.GetName();
    stat.GetAge();
 
    cout << "\n\n\n-------------------------------------\n\n\n";
 
    system("pause");
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2012, 17:39
Привет! Вот еще темы с ответами:

Не могу понять классы. Как их наполнить данными? - C++
Добрый день, форумчане. Пытаюсь изучить классы в ООП, и не могу понять, как с ними работать. Помогите разобраться, к примеру, есть два...

Учу классы. Не запускается простейшая прога.Не могу понять причину - C++
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class MyDogs{ public: int...

Зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может больше 4 байт весить? - C++
Вот еще один вопрос зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может...

Зачем нужны макросы? - C++
Зачем нужны макросы?


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

Или воспользуйтесь поиском по форуму:
30
Yandex
Объявления
06.06.2012, 17:39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru