Классы.
Приветствую! Сейчас поговорим о классах. Я решил прерваться с написанием и переводом туториалов про HGE на некоторое время, ибо у меня померла операционная система и я, уставший от глюков Windows решил поставить Linux. Когда разберусь с HGE под линуксами, продолжу писать.
Теперь же коснемся объектного стиля программирования, который мне очень нравится, и надеюсь, что понравится и вам.
Итак, класс состоит из объявления и определения. Оные, как правило, происходят в разных файлах. Как пример возьмем класс human и представим, что мы заполняем карточку (любую, медицинскую, учетную, как хотите...) о человеке. Давайте объявим наш класс:
/* Файл HUMAN.H */ #ifndef HUMAN_H #define HUMAN_H class human { public: human(); ~human(); void setFirstName(std::string newFirstName); void setLastName(std::string newLastName); void setWeight(int newWeight); void setAge(int newAge); std::string getFirstName(); std::string getLastName(); int getWeight(); int getAge(); private: std::string firstName; std::string lastName; int weight; int age; }; #endif /* HUMAN_H */
Разбираю код:
Исходя из этого заключите: у каждого правильного класса должен быть конструктор и деструктор.
Теперь разберем определение:
#include <iostream> #include <string> #include "human.h" human::human() { firstName = ""; lastName = ""; weight = 0; age = 0; } human::~human() {} void human::setFirstName(std::string newFirstName) { firstName = newFirstName; } void human::setLastName(std::string newLastName) { lastName = newLastName; } void human::setWeight(int newWeight) { weight = newWeight; } void human::setAge(int newAge) { age = newAge; } std::string human::getFirstName() { return firstName; } std::string human::getLastName() { return lastName; } int human::getWeight() { return weight; } int human::getAge() { return age; }
Это простой код, который не требует объяснения. Он реализует конструктор, деструктор и функции класса.
Исходя из этого заключите: каждый правильный класс должен иметь свое определение.
Теперь посмотрим на главный файл. Предупреждаю, кода в нем ОЧЕНЬ МНОГО:
/* Файл MAIN.CPP */ #include <iostream> #include <string> #include "human.h" using namespace std; human TestHuman; int choice; string inFirstName; string inLastName; int inWeight; int inAge; int cont = 1; void setHumanFirstName() { cout << "Введите имя человека: "; cin >> inFirstName; TestHuman.setFirstName(inFirstName); cout << endl; return; } void setHumanLastName() { cout << "Введите фамилию человека: "; cin >> inLastName; TestHuman.setLastName(inLastName); cout << endl; return; } void setHumanWeight() { cout << "Введите вес человека: "; cin >> inWeight; TestHuman.setWeight(inWeight); cout << endl; return; } void setHumanAge() { cout << "Введите возраст человека: "; cin >> inAge; TestHuman.setAge(inAge); cout << endl; return; } void getHumanFirstName() { cout << "Имя: " << TestHuman.getFirstName() << endl; cout << endl; return; } void getHumanLastName() { cout << "Фамилия: " << TestHuman.getLastName() << endl; cout << endl; return; } void getHumanWeight() { cout << "Вес: " << TestHuman.getWeight() << endl; cout << endl; return; } void getHumanAge() { cout << "Возраст: " << TestHuman.getAge() << endl; cout << endl; return; } void getAllHumanParameters() { cout << "Имя: " << TestHuman.getFirstName() << endl; cout << "Фамилия: " << TestHuman.getLastName() << endl; cout << "Вес: " << TestHuman.getWeight() << endl; cout << "Возраст: " << TestHuman.getAge() << endl; cout << endl; return; } void exit() { cont = 0; return; } int main(int argc, char ** argv) { do { cout << "Класс Человек. Написал Кулхацкер. Версия 1.0" << endl; cout << "--------------------------------------------" << endl; cout << "1) Задать имя" << endl; cout << "2) Задать фамилию" << endl; cout << "3) Задать вес" << endl; cout << "4) Задать возраст" << endl; cout << "--------------------------------------------" << endl; cout << "5) Вывести имя" << endl; cout << "6) Вывести фамилию" << endl; cout << "7) Вывести вес" << endl; cout << "8) Вывести возраст" << endl; cout << "9) Вывести все" << endl; cout << "--------------------------------------------" << endl; cout << "0) Выйти" << endl; cout << "--------------------------------------------" << endl; cout << "> "; cin >> choice; switch(choice) { case 1: setHumanFirstName(); break; case 2: setHumanLastName(); break; case 3: setHumanWeight(); break; case 4: setHumanAge(); break; case 5: getHumanFirstName(); break; case 6: getHumanLastName(); break; case 7: getHumanWeight(); break; case 8: getHumanAge(); break; case 9: getAllHumanParameters(); break; case 0: exit(); break; } } while(cont != 0); return 0; }
Здесь мы реализуем основной код программы. К слову говоря, его можно сократить, но я старался показать КАК МОЖНО это реализовать, а не КАК КРАСИВО это реализовать. В общем, вот такая статья про классы. Удачи и спасибо за внимание!