воскресенье, 8 февраля 2015 г.

Реализация классов в ООП

Реализацыя класса в С++ немного сложннее, чем в Java или C#. Вся сложность состоит в том что классы в С++ состоят из двух файлов: файл заголовка и файл исходника. Файл заголовка хранит в себе общекласовий переменные и структуру самого класса с модификаторами доступа. Файл исходников реализирует весь код класса и заполняет все данные. По сути заглавочний файл это додаток до файла исходникав, чтобы изолировать структуру и обявление переменных(полей), а все ради удобности записи кода. Название етих двух файлов дожни совпадат, а различаются лиш их разширениея. В заголовчном файле ето .h а в файле исходников(реализации) .срр.

 Свойства и методы.

Свойствами, в объектно-ориентированной парадигме программирования, называют блоки, которые хранят в себе какие либо значение, по сути, это обычные переменные.
Методы это фрагменты кода, которые исполняют некие действия в классе, например расчеты и заполнения свойств класса.
Для примера в классе «человек», свойствами будут его имя, фамилия, дата рождения, высота, масса и тому подобное. А вот методами будет ходьба, бег, умственная деятельность и тому подобное. Вот как это будет выгладить в коде С++

class people
{
public:
    double height;
    QDate date_birsdae;
    QString first_name;
    QString second_name;
    int mass;
    
    void Run();
    void Walking();
    void Thinking();
};

 Создание класса в Qt Creator

Как создават новый проект, я думая вам уже не надо, но добавить до существующего проекта новий клас можно двемя способами.
Первый виглядит так:

1)      В вкладке файл выбрат пункт «Новий файл или проект» либо просто нажав на комбинацыю клавиш Ctrl + N.
2)      В открившемся окне вибрать с раздела «Файли и классы» пункт «С++» и соответствено в изменившейся правой части выбрать пункт «Класс С++».
3)      Нажат на кнопку «Выбрать . . . »


4)      В поле «Имя класса» ввести свое название класса, а также возможно выбрать базовый класса и тип класса. Название заголовочного и файла исходников, а также путь, где будут размещены файлы, сгенерируются сами. После этого следует нажать на кнопку «Далее»


5)      Если у вас сейчас открыты несколько проектов, тогда можете выбрать именно тот проект, в который хотите добавить данный класс. После этого можете нажимать на кнопку «Завершить». После этого класс автоматически добавится в ваш проект.


Второй способ добавить класс более сложный и состоит в том, чтобы добавлять заголовочный файл и файл исходников отдельно, а потом уже их связывать между собой. Добавлять эти файлы можно аналогично до класса, а вот чтобы связать их вместе надо разобраться в самой структуре этих файлов.

Структура классов в С++


И так вот структура файла class1.h.

#ifndef CLASS1_H
#define CLASS1_H
class class1
{
public:
    class1();
};
#endif // CLASS1_H

Директивы компилятора

#ifndef CLASS1_H
#define CLASS1_H

#endif // CLASS1_H

Обеспечивает то, что при вызове #include "class1.h" несколько раз в одном проекте выполнится только один раз, а все остальные разы данную директиву компилятор будет игнорировать.

class class1

ключевое слово class обозначает объявление название самого класса, а class1 то самое название класса. В фигурных скобках записываются данные самого класса, такие как свойства и методы.
 
public:
 
этот рядок обозначает модификатор доступа до свойств и методов, а именно то, что все данные, что там записаны, есть доступными для всех процессов, что находятся вне класса.

class1();

обозначает функцию, что вызывается при создании объекта из данного класса. Такая функция называется конструктором класса и, по сути, содержит инструкции для создания самого объекта и начальные данные для полей объекта. Перед конструктором не ставиться никакого ключевого слова, так как он заведомо ничего не возвращает, а также стоит  помнить, что имя конструктора совпадает с названием самого класса, в котором он находится.

Второй файл это файл исходников class1.cpp:

#include "class1.h"
class1::class1()
{
}

Подключается заголовочный файл к файлу исходного кода с помощью всего одной директивы компилятора. #include "class1.h"

class1::class1()
{
}

Даная контракция позволяет получить доступ к конструктору class1() через класс class1. В Фигурных скобках записывается код самого конструктора класса.