Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.61/56: Рейтинг темы: голосов - 56, средняя оценка - 4.61
136 / 57 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
1

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

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


Обьяснити начинающему программисту зачем нужны классы???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2011, 13:05
Ответы с готовыми решениями:

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

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

Зачем нужны классы?
После Си решил попробовать Си++, после нескольких глав Дейтла понял что весь смысл плюсов в...

Зачем нужны классы и структуры?
1. Зачем нужны классы? 2. Зачем нужны аргументы в main()? 3. Зачем нужны структуры. struct...

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
34
return (true);
1973 / 1108 / 219
Регистрация: 19.04.2011
Сообщений: 2,345
10.11.2011, 13:14 2
Цитата Сообщение от Sylar9 Посмотреть сообщение
Обьяснити начинающему программисту зачем нужны классы???

Не по теме:

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


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

А на самом деле:
Классы придумали для того чтобы еще больше запутать программирование.
1
Эксперт C
25491 / 15874 / 3398
Регистрация: 24.12.2010
Сообщений: 34,736
10.11.2011, 13:20 4
Цитата Сообщение от programina Посмотреть сообщение
Классы нужны чтобы создавать своих типов. Например если тебе не хватит bool, int, float, double, то ты сделаешь себе сколько захочешь.

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

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

Не по теме:

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

0
136 / 57 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 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;
}
0
Эксперт C
25491 / 15874 / 3398
Регистрация: 24.12.2010
Сообщений: 34,736
10.11.2011, 13:24 6
Sylar9, Ошибок столько, что разбегаются глаза и вянут уши. Ты хоть посмотрел, что транслятор говорит?
0
136 / 57 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 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)
0
2061 / 617 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
10.11.2011, 13:30 8
Написано Class Homme
0
Фрилансер
Эксперт С++
5843 / 1224 / 499
Регистрация: 23.11.2010
Сообщений: 3,377
Записей в блоге: 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
0
2061 / 617 / 41
Регистрация: 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;
}
0
136 / 57 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 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
0
Фрилансер
Эксперт С++
5843 / 1224 / 499
Регистрация: 23.11.2010
Сообщений: 3,377
Записей в блоге: 1
10.11.2011, 13:38 12
Цитата Сообщение от programina Посмотреть сообщение
int GetAge (int a) {
Цитата Сообщение от programina Посмотреть сообщение
age = h.GetAge();
Ну и где int a потеряли?
1
2552 / 1317 / 178
Регистрация: 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 передаваемых там нет.
0
136 / 57 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
10.11.2011, 13:39  [ТС] 14
Цитата Сообщение от Dekio Посмотреть сообщение
Ну и где int a потеряли?
не могу понять что имеено надо исправить
0
Эксперт С++
1062 / 841 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
10.11.2011, 13:40 15
Цитата Сообщение от Байт Посмотреть сообщение
Чтобы создавать своих типов достаточно обычных struct
Не достаточно. Структ - это только структура данных. Нужно еще поведение - методы.
0
0 / 0 / 2
Регистрация: 18.05.2010
Сообщений: 5
10.11.2011, 13:48 16
Цитата Сообщение от Sylar9 Посмотреть сообщение
mme
имя класса одно, а в теле ты описываешь указатель другого имени класса
0
Форумчанин
Эксперт CЭксперт С++
8164 / 5012 / 1436
Регистрация: 29.11.2010
Сообщений: 13,455
10.11.2011, 15:54 17
Класс - абстрактный объект. Внутри содержит функции (методы) по работе с ним. Класс должен предоставлять пользователю лишь интерфейс и скрывать данные от лишних изменений.
Хорошее объяснение дается в книжке "C++ для чайников". Представим объект микроволновая печь. "Мне не нужно знать, что он делает, дабы разогреть курицу, его внутренне устройство меня не волнует. Во время приготовления блюда я смотрю на микроволновку как на железный ящик. И пока я управляю печью с помощью интерфейса, я не могу её сломать, "подвесить" или превратить блюдо в угли.... Я должен думать о том, как приготовить блюдо, не волнуясь о деталях работы печи..."
0
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
10.11.2011, 15:56 18
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Не достаточно. Структ - это только структура данных. Нужно еще поведение - методы.
Присоединяюсь и продолжаю: нужны ещё абстрактные интерфейсы (что подразумевает наследование и полиморфизм).
1
Эксперт C
25491 / 15874 / 3398
Регистрация: 24.12.2010
Сообщений: 34,736
10.11.2011, 20:08 19
Цитата Сообщение от MrGluck Посмотреть сообщение
я не могу её сломать, "подвесить" или превратить блюдо в угли....
Можешь! В том-то все и дело.

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

Добавлено через 13 минут
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Не достаточно. Структ - это только структура данных. Нужно еще поведение - методы.
Я имею в виду только создание типов. Как ими манипулировать - это уж другое дело. Можно создать набор функций, и они будут ничем не хуже методов. Только этим функциям надо будет параметром передавать экземпляр типа, а у метода он уже по умолчанию как бы есть (this). На один параметр меньше у методов будет.
Конечно, есть всякие штуки типа инкапсуляции, перегрузки, виртуальности и т.п. Но это в общем-то дело вкуса и привычки. Я как-то обхожусь тем, что пренебрежительно нынче называется процедурным программированием. Но! Когда дело доходит до инкапсуляции Вин-Апи, тут я сдаюсь. Эта Апи такая головоломка, такой чудовищный лабиринт, что спасибо любому, кто в этом разберется и хоть слегка скруглит углы
1
214 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2011, 20:46

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Зачем нужны абстрактные классы и методы?
Можете объяснить в чём смысл абстрактного класса? Ведь с тем же успехом я могу написать: ...

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

Не могу понять, зачем использовать return
Ув. программисты, Почему так часто используют функции, которые что-то возвращают ? Почему нельзя...

Зачем нужны абстрактные классы?
Серфил в нете %-) Нашел статейку на сайте:...

Зачем нужны модули и классы в VB
Сабж. В программе используется структура module module1 End module И классы public...

Классы - зачем они нужны?
Здраствуйте, я недавно начал изучать делфи и вроде бы все понятно пока не дошел до изучения...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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