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

Классы. Ввод и вывод инфы.

Помогите понять, что делают вот эти части класса, структуры попроще были, а тут стока всего.
Вроде как понимаю, а вроде не понятно как работает. Интересует любая информаци по этому коду, особенно про выделенную часть.
Заранее спасибо)
___________________________________________
объявления
using namespace std;

class Person{
private:
string name;
int height;
public:
string getName() const;
void setName(string);
int getHeight() const;
void setHeight(int);
};
string Person::getName() const
{return name;}
void Person::setName(string s){
if (s.length()==0)
name="No name assigned";
else
name=s;
}
int Person::getHeight() const
{return height;}
void Person::setHeight(int h){
if (h<0)
height=0;
else
height=h;
}
void setValues(Person&);
void getValues(const Person&);

int main(){...}

void setValues(Person& pers){...}

void getValues(const Person& pers){...}
___________________________________________
вот это типа прототипа я так понял ???
public:
string getName() const;
void setName(string);
int getHeight() const;
void setHeight(int);
_____________________________________________________________________
а вот это???? я примерно понимаю, что это, но конкретно, что делает каждое слов? |||
КАК ЭТО РАБОТАЕТ, ЧТО ДЕЛАЕТ КАЖДАЯ ЧАСТЬ? |||
string Person::getName() const |||
{return name;} |||
void Person::setName(string s){ |||
if (s.length()==0) |||
name="No name assigned"; |||
else |||
name=s; |||
} |||
_____________________________________________________________________
Все на самом деле очень просто.
В структурах у тебя были поля типа
Структура{
поле1, Поле2
}
В твоем классе методы типа getName(), setName() это аналог твоей структуры вида
Person{
string Name;
}
А делается это методами согласно "паттернам программирования" с заделом на будующее вот для чего.
Представь что у тебя большая программа, на много тысяч строк. и у тебя есть поле Name которое ты используешь во всех модулях. Все работает хорошо, но прошло немного времени и потребовалось что бы при установке Name оно к примеру автоматически преобразовывало первую букву в большую. ( это к примеру, требование может быть любое) . Если у тебя нет метода setName то тебе придется везде править код где используется Name. Это достаточно трудно и можно где то пропустить, поэтому делается сразу метод setName что бы всю логику установки определять в одном месте, а не раскидывать по модулям. Используется этот подход практически во всех нормальных языках программирования.
Valera Smirnji
Valera Smirnji
299
Лучший ответ
>Вроде как понимаю, а вроде не понятно как работает
На таком уровне не понятно, что обьяснять. Что 2x2=4 нет желания обьяснять. Это программирование, и знать нужно точно, а не наугад.
Про классы доступно для новичков:
AM
Alimzhan Mussa
35 996
public:
string getName() const;
void setName(string);
int getHeight() const;
void setHeight(int);
это прототипы функций класса,

string Person::getName() const |||
{return name;} |||
возвращает имя

void Person::setName(string s){ |||
if (s.length()==0) |||
name="No name assigned"; |||
сначала проверяет что переданное имя не из 0 символов, затем устанавливает имя