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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 59, средняя оценка - 4.78
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
10.11.2011, 13:05     Не могу понять зачем нужны классы #1
Обьяснити начинающему программисту зачем нужны классы???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
10.11.2011, 13:14     Не могу понять зачем нужны классы #2
Цитата Сообщение от Sylar9 Посмотреть сообщение
Обьяснити начинающему программисту зачем нужны классы???

Не по теме:

Основное правило классов - если Вы не понимаете, зачем нужны классы, то они вам ещё не нужны


ООП придумали для упрощения разработки сложных проектов, при написании Hello world они вам точно не понадобятся.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
10.11.2011, 13:14     Не могу понять зачем нужны классы #3
Классы нужны чтобы создавать своих типов. Например если тебе не хватит bool, int, float, double, то ты сделаешь себе сколько захочешь.

А на самом деле:
Классы придумали для того чтобы еще больше запутать программирование.
Байт
 Аватар для Байт
14007 / 8838 / 1234
Регистрация: 24.12.2010
Сообщений: 16,017
10.11.2011, 13:20     Не могу понять зачем нужны классы #4
Цитата Сообщение от programina Посмотреть сообщение
Классы нужны чтобы создавать своих типов. Например если тебе не хватит bool, int, float, double, то ты сделаешь себе сколько захочешь.

А на самом деле:
Классы придумали для того чтобы еще больше запутать программирование.
Чтобы создавать своих типов достаточно обычных struct

Добавлено через 1 минуту
Цитата Сообщение от Sylar9 Посмотреть сообщение
Обьяснити начинающему программисту зачем нужны классы???

Не по теме:

Как писал поэт "Сапоги, ну куда от них денешься..."

Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
10.11.2011, 13:21  [ТС]     Не могу понять зачем нужны классы #5
Цитата Сообщение от programina Посмотреть сообщение
Классы нужны чтобы создавать своих типов. Например если тебе не хватит bool, int, float, double, то ты сделаешь себе сколько захочешь.

А на самом деле:
Классы придумали для того чтобы еще больше запутать программирование.
В чем тут ошибка
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
#include <iostream>
#include <string>
using namespace std;
class Homme
{
      public:
            GetName();
             GetAge();
  
  private:
          string name;
          int  age;  
 
};
string GetName (string n) 
{return n;}
int GetAge (int a)
{return a;}
int main()
{
   int age;
   cin >> age;
   Home h;
   age=h.GetAge();
   cout << "Возраст"<< h.GetAge() << endl;
 
system("pause");
return 0;
}
Байт
 Аватар для Байт
14007 / 8838 / 1234
Регистрация: 24.12.2010
Сообщений: 16,017
10.11.2011, 13:24     Не могу понять зачем нужны классы #6
Sylar9, Ошибок столько, что разбегаются глаза и вянут уши. Ты хоть посмотрел, что транслятор говорит?
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
10.11.2011, 13:27  [ТС]     Не могу понять зачем нужны классы #7
Цитата Сообщение от Байт Посмотреть сообщение
Sylar9, Ошибок столько, что разбегаются глаза и вянут уши. Ты хоть посмотрел, что транслятор говорит?
Вот код:
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
#include <iostream>
#include <string>
using namespace std;
class Homme
{
      public:
            GetName();
             GetAge();
  
  private:
          string name;
          int  age;  
 
};
Homme::Home(string nn, int ag)
{
    name=nn;
    age=ag;
}
string GetName (string n) 
{return n;}
int GetAge (int a)
{return a;}
int main()
{
   int age;
   cin >> age;
   Home h;
   age=h.GetAge();
   cout << "Возраст"<< h.GetAge() << endl;
 
system("pause");
return 0;
}
Вот ощибки:
7 C:\Documents and Settings\111\Рабочий стол\Класс.cpp ISO C++ forbids declaration of `GetName' with no type

8 C:\Documents and Settings\111\Рабочий стол\Класс.cpp ISO C++ forbids declaration of `GetAge' with no type

16 C:\Documents and Settings\111\Рабочий стол\Класс.cpp ISO C++ forbids declaration of `Home' with no type

16 C:\Documents and Settings\111\Рабочий стол\Класс.cpp no `int Homme::Home(std::string, int)' member function declared in class `Homme'

C:\Documents and Settings\111\Рабочий стол\Класс.cpp In function `int main()':

28 C:\Documents and Settings\111\Рабочий стол\Класс.cpp `Home' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)

28 C:\Documents and Settings\111\Рабочий стол\Класс.cpp expected `;' before "h"

29 C:\Documents and Settings\111\Рабочий стол\Класс.cpp `h' undeclared (first use this function)
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
10.11.2011, 13:30     Не могу понять зачем нужны классы #8
Написано Class Homme
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
10.11.2011, 13:34     Не могу понять зачем нужны классы #9
Sylar9, сплошной бред, а не код

Цитата Сообщение от Sylar9 Посмотреть сообщение
public: GetName(); GetAge();
где типы функций?


Цитата Сообщение от Sylar9 Посмотреть сообщение
Homme::Home(string nn, int ag) { name=nn; age=ag; }
Это что такое, конструктор?


Цитата Сообщение от Sylar9 Посмотреть сообщение
Home h;
Класс Homme
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
10.11.2011, 13:34     Не могу понять зачем нужны классы #10
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
#include <iostream>
#include <string>
 
using namespace std;
 
class Home
{
    public:
        string GetName();
        int GetAge();
 
    private:
        string name;
        int  age;
 
};
 
string GetName (string n) {
    return n;
    }
 
int GetAge (int a) {
    return a;
    }
 
int main()
{
    int age;
    cin >> age;
 
    Home h;
    age = h.GetAge();
    cout << "Возраст" << h.GetAge() << endl;
 
    system("pause");
    return 0;
}
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
10.11.2011, 13:36  [ТС]     Не могу понять зачем нужны классы #11
Цитата Сообщение от Dekio Посмотреть сообщение
Sylar9, сплошной бред, а не код


где типы функций?



Это что такое, конструктор?



Класс Homme

Испаввил все равно ошибки
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
#include <iostream>
#include <string>
using namespace std;
class Homme
{
      public:
          string  GetName();
            int  GetAge();
  
  private:
          string name;
          int  age;  
 
};
 
string GetName (string n) 
{return n;}
int GetAge (int a)
{return a;}
int main()
{
   int age;
   cin >> age;
   Homme h;
   age=h.GetAge();
   cout << "Возраст"<< h.GetAge() << endl;
 
system("pause");
return 0;
}
[Linker error] undefined reference to `Homme::GetAge()'
[Linker error] undefined reference to `Homme::GetAge()'
ld returned 1 exit status
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
10.11.2011, 13:38     Не могу понять зачем нужны классы #12
Цитата Сообщение от programina Посмотреть сообщение
int GetAge (int a) {
Цитата Сообщение от programina Посмотреть сообщение
age = h.GetAge();
Ну и где int a потеряли?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
10.11.2011, 13:39     Не могу понять зачем нужны классы #13
Цитата Сообщение от Sylar9 Посмотреть сообщение
string GetName (string n)
В конце концов, книгу откройте.
C++
1
string Homme::GetName(string n)
И на прототипы функций в классе гляньте. Ни int, ни string передаваемых там нет.
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
10.11.2011, 13:39  [ТС]     Не могу понять зачем нужны классы #14
Цитата Сообщение от Dekio Посмотреть сообщение
Ну и где int a потеряли?
не могу понять что имеено надо исправить
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
10.11.2011, 13:40     Не могу понять зачем нужны классы #15
Цитата Сообщение от Байт Посмотреть сообщение
Чтобы создавать своих типов достаточно обычных struct
Не достаточно. Структ - это только структура данных. Нужно еще поведение - методы.
fai250890
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 5
10.11.2011, 13:48     Не могу понять зачем нужны классы #16
Цитата Сообщение от Sylar9 Посмотреть сообщение
mme
имя класса одно, а в теле ты описываешь указатель другого имени класса
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
10.11.2011, 15:54     Не могу понять зачем нужны классы #17
Класс - абстрактный объект. Внутри содержит функции (методы) по работе с ним. Класс должен предоставлять пользователю лишь интерфейс и скрывать данные от лишних изменений.
Хорошее объяснение дается в книжке "C++ для чайников". Представим объект микроволновая печь. "Мне не нужно знать, что он делает, дабы разогреть курицу, его внутренне устройство меня не волнует. Во время приготовления блюда я смотрю на микроволновку как на железный ящик. И пока я управляю печью с помощью интерфейса, я не могу её сломать, "подвесить" или превратить блюдо в угли.... Я должен думать о том, как приготовить блюдо, не волнуясь о деталях работы печи..."
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
10.11.2011, 15:56     Не могу понять зачем нужны классы #18
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Не достаточно. Структ - это только структура данных. Нужно еще поведение - методы.
Присоединяюсь и продолжаю: нужны ещё абстрактные интерфейсы (что подразумевает наследование и полиморфизм).
Байт
 Аватар для Байт
14007 / 8838 / 1234
Регистрация: 24.12.2010
Сообщений: 16,017
10.11.2011, 20:08     Не могу понять зачем нужны классы #19
Цитата Сообщение от MrGluck Посмотреть сообщение
я не могу её сломать, "подвесить" или превратить блюдо в угли....
Можешь! В том-то все и дело.

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

Добавлено через 13 минут
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Не достаточно. Структ - это только структура данных. Нужно еще поведение - методы.
Я имею в виду только создание типов. Как ими манипулировать - это уж другое дело. Можно создать набор функций, и они будут ничем не хуже методов. Только этим функциям надо будет параметром передавать экземпляр типа, а у метода он уже по умолчанию как бы есть (this). На один параметр меньше у методов будет.
Конечно, есть всякие штуки типа инкапсуляции, перегрузки, виртуальности и т.п. Но это в общем-то дело вкуса и привычки. Я как-то обхожусь тем, что пренебрежительно нынче называется процедурным программированием. Но! Когда дело доходит до инкапсуляции Вин-Апи, тут я сдаюсь. Эта Апи такая головоломка, такой чудовищный лабиринт, что спасибо любому, кто в этом разберется и хоть слегка скруглит углы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2011, 20:46     Не могу понять зачем нужны классы
Еще ссылки по теме:

Не могу понять классы. Как их наполнить данными? C++
Зачем нужны классы и структуры? C++
Не могу понять задание,пожалуйста.Классы C++

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

Или воспользуйтесь поиском по форуму:
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 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;
//конструкторы деструктор и т д
};
неправо ли это гораздо элегантней выглядит чем просто набор переменных плюс правильно смоделированный класс даёт очень большие плюсы по сравнению с обычным набором переменных
Yandex
Объявления
10.11.2011, 20:46     Не могу понять зачем нужны классы
Ответ Создать тему
Опции темы

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