Веб программирование

Классы.

 
 

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

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


Есть вопросы? Спроси на нашем форуме!!
Barabas [15.07.2012 05:33]

Толково и доходчиво написано

Кулхацкер [15.07.2012 06:37]

Спасиобо, очень приятно!

edward [16.07.2012 20:52]

Автор ты чувак)) наконецто 1 толковый программист по с++)))



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.