Другие языки программирования и технологии

С++ Классы, пример из учебника.

class GradeBook
{
public:
GradeBook( string name )
{
setCourseName( name );
}
void setCourseName( string name )
{
courseName = name;
}
string getCourseName()
{
return courseName;
}
void displayMessage()
{
cout << "Welcome to the grade book for " << getCourseName() << "!" << endl;
}
private:
string courseName;
};

int main()
{
GradeBook gradeBook1( "CS101 Introduction to C++ Programming" );
GradeBook gradeBook2( "CS102 Data Structures in C++" );

cout << "gradeBook1 created for: " << gradeBook1.getCourseName() << "\ngradeBook2 created for: " << gradeBook2.getCourseName() << endl;

system("PAUSE");
return 0;
}

Кто может это объяснить? Читаю уже хрен знает какой учебник и никак не получается разобраться.
Прям по подробнее, как для дебила) Желательно поменьше терминологии)

Как это понимаю я:
Выполняется функция int main()
Объявляются две переменные со значениями "CS101 Introduction to C++ Programming" , "CS102 Data Structures in C++"
Далее идет вывод данных на монитор. а вот дальше.. .
переменная gradeBook1 обращается (или значение этой переменной переносится? ) к элементу класса getCourseName(), который возвращает courseName. но откуда он берет courseName;? вот дальше вообще не понимаю как это работает.
Farhod Dzhuraev
Farhod Dzhuraev
4 709
В объекте gradeBook1 внутри хранится значение, в поле courseName, из него и берется.
ДИ
Дима Иванкин
5 321
Лучший ответ
Farhod Dzhuraev т.е. мы просто печатаем переменную с неким значением? Я тогда вообще не понимаю нахрена нужны классы. Ну я понимаю что они нужны, что на них построено ООП. Можно хотя бы не большой пример на словах, где класс будет незаменим? Или значительно упростит программу? (уменьшит потребляемые ресурсы?)
При создании переменных в main() идет вызов setCourseName, котороый и ставит в courseName параметр при создании переменной (текст в скобках. )
На а дальше метод getCourseName() возвращает courseName для каждой переменной.
AB
Aleks Bulanov
52 779
Вот книжка, которая подходит для новичков. И вообще лучше никто не объяснит:
Это 800 страниц с упражнениями. Если возникнут трудности при прочтении- вам нужно вернуться к школьным учебникам математики и физики с 5 по 11 класс.
А что касается вашего вопроса - данные класса, а именно член courseName присваивается при создании объекта конструктором с параметром ( 1 и 2 строки после main).
> Читаю уже хрен знает какой учебник
Это какой такой? И да, приведите перечень учебников, которые вы прочитали. Их легион? Ни в одном про ООП не рассказывали?

И да, "хрен знает, какой учебник" читать - дело гиблое. Почитайте лучше Павловскую.
Мирас **
Мирас **
2 152
Farhod Dzhuraev Конкретно сейчас читаю дейтелов, про ООП говорится много и везде, но видимо я слишком туп чтобы понять :)
В смысле откуда он берет CourseName ?

Ты посмотри на структуру своего класса:

private:
string courseName;

То есть ты объявляешь приватное свойство класса GradeBook.

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

О 3х составляющих ООП узнаешь позже, сейчас хотя бы изучи общий принцип работы ООП.