C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Урок 11. Первый класс в первый раз или начало ООП / Основы Visual C++ / Visual C++

Основы Visual C++
Урок 11. Первый класс в первый раз или начало ООП

Начинаем изучать классы. Эта тема относится к объектно-ориентированному программированию. Классы есть в многих языках - C++, Java, Delphi. Давайте напишем наш первый класс на C++. Но для начала несколько слов, что такое класс вообще. В первом приближении класс - это некоторый набор переменных плюс некоторый набор функций. Они представляют из себя единое целое - класс. Функции класса имеют доступ ко всем переменным класса. Извне же часть класса открыта, а часть - закрыта. То, что у класса видно снаружи, можно использовать. И как он устроен изнутри мало кого интересут, разве что разработчика, который этот класс писал.

Класс можно рассматривать как форму для куличиков (в детстве все играли в песочнице). Следует различать сам класс и экземпляры класса. Продолжая аналогию с куличиками, отметим, что класс - это аналог формочки, а конкретный экземпляр класса - это куличик. Как из одной формочки вы можете слепить несколько куличиков, так и из одного класса можно сделать несколько экземпляров нашего класса.

С теорией все, переходим к практике. Создайте новое консольное приложение. Напечатайте следующий текст:

#include <iostream.h>
class CMyClass{
public:
    int m_N;
    int n2();
    void set_n(int);
};
void main(){
    CMyClass a;
    a.set_n(5);
    cout<<a.n2()<<"\n";
    cout<<a.m_N;
}
int CMyClass::n2(){
    return m_N*2;
}
void CMyClass::set_n(int n){
    m_N=n;
}

Класс мы вводим с помощью ключевого слова class. За ним идет имя класса (которое задаете вы сами). Далее в фигурных скобках пишем т. н. интерфейс класса. Обратите внимание на точку с запятой после закрывающей фигурной скобки класса. Её присутствие обязательно:

...
};
...

Интерфейс класса представляет из себя набор функций (они же методы) и переменных класса. У нас в интерфейсе одна переменная (m_N) и две функции (n2() и set_n()).

Обратите внимание на слово

...
public:
...

внутри нашего класса. Она определяет тип доступа к переменным и методам нашего класса. Всего возможных типов доступа - три штуки. Вот они:

ЗначениеОписание
private:Данная часть класса закрыта. Только сам класс имеет к ней доступ.
public:Данная часть класса открыта. Все имеют к ней доступ.
protected:Данная часть класса открыта только для потомков нашего класса (потомки будут рассмотрены позднее).

Если не написать ни какого слова для определения доступа, то по умолчанию будет private.

В конце текста мы написали реализацию функций:

int CMyClass::n2(){
    return m_N*2;
}
void CMyClass::set_n(int n){
    m_N=n;
}

Как понятно, метод класса n2 просто возвращет удвоенную переменую m_N нашего класса, а метод set_n позволяет задать переменной m_N новое значение. Обратите внимание, что так как мы пишем реализацию методов класса вне его, то перед именем метода пишем имя класса с двойным двоеточием:

int CMyClass::n2(){
    ...
}

В функции main() мы просто испытываем наш класс. Сначала мы заводим переменную типа нашего класса:

    CMyClass a;
    ...

Затем мы вызываем разные методы и используем переменные нашего класса:

...
    a.set_n(5);
    cout<<a.n2()<<"\n";
    cout<<a.m_N;

Обратите внимание, что при использовании методов и переменных класса мы пишем имя конкретного экземпляра нашего класса (т. е. переменной a), после которого ставим точку. После точки появляются подсказки (то, что мы написали для методов и переменных нашего класса):

Подсказки

При запуске наша программа должна вывести 5 и 10:

Результат