Воскресенье, 24.11.2024, 18:06
Приветствую Вас Гость | RSS
Главная | Классы. | Регистрация | Вход
Языки Программирования (adsbygoogle = window.adsbygoogle || []).push({});
Форма входа
Меню сайта

Календарь
«  Ноябрь 2024  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930

Наш опрос
Оцените мой сайт
Всего ответов: 101

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    reklama

    Классы.

     
     

    Приветствую! Сейчас поговорим о классах. Я решил прерваться с написанием и переводом туториалов про 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 */
    

    Разбираю код:

    1. Блоки IFNDEF-DEFINE-ENDIF - это защита от повторных включений.
    2. human(); - это конструктор класса. Он задает начальные параметры членов при создании экземпляра класса.
    3. ~human(); - это деструктор класса. Он уничтожает класс после использования.
    4. Остальное - это члены класса. В секции PUBLIC только функции, которые будут работать с классом, а в секции PRIVATE - данные-члены, с которыми мы будем работать.

    Исходя из этого заключите: у каждого правильного класса должен быть конструктор и деструктор.

    Теперь разберем определение:

    #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;
    }
    

    Здесь мы реализуем основной код программы. К слову говоря, его можно сократить, но я старался показать КАК МОЖНО это реализовать, а не КАК КРАСИВО это реализовать. В общем, вот такая статья про классы. Удачи и спасибо за внимание!


    Copyright MyCorp © 2024
    Бесплатный хостинг uCoz