Отправляет email-рассылки с помощью сервиса Sendsay

Уроки по C/C++

  Все выпуски  

Уроки по C/C++


Информационный Канал Subscribe.Ru


C/C++. Уроки с сайта http://progs.biz

Рассылка №20

C/C++. Урок 25. Разбор первого класса.

Полные версии уроков (с картинками) можно найти по адресам:
Урок 25. Разбор первого класса.

Г. Шилдт. Самоучитель C++.
Г. Шилдт. </strong>Самоучитель C++
Заказать на Озоне
Рассылки сайта progs.biz через subscribe.ru
Обзор книг по программированию
Обзор новых книг по программированию. Включает книги как по традиционному программированию (Visual C++, Delphi, Visual Basic.NET, C#, Java,...), так и по WEB-программированию (JavaScript, PHP, ASP, ASP.NET, Perl,...). Кроме того, предлагается обзор книг по компьютерным сетям, безопасности, сертификации и др.

C/C++. Урок 25. Разбор первого класса

На этом уроке мы с вами разберем наш первый класс, написанный на прошлом уроке.

Итак, для объявления класса мы используем следующую конструкцию:

class MyClass
{
    //Внутренность класса.
};

Тут вместо MyClass мы можем написать, разумеется, любое имя. Обратите так же внимание на точку с запятой в конце класса - она обязательна.

Объявление класса - это как бы конструирование нового типа данных. В C/C++ есть встроенные типы данных - int, char, float и другие. Но для реальной задачи удобнее создать свои типы, которые будет лучше моделировать поставленную задачу. Классы как раз для этого и предназначены.

Теперь несколько слов о том, что может находиться внутри класса. А именно, там могут находиться переменные разных типов и функции (они же методы) класса. Переменные могут быть самых разных типов - в том числе и экземпляры других классов (и даже экземпляры того же самого класса). Вообще внутренность класса делится на 3 части - public (доступна всем), private (доступна только самому классу) и protected (доступна классу и его потомкам (об этом мы будем говорить на следующих уроках)). Слово private можно не писать - оно действует по умолчанию. Т. е. наши переменные m_a и m_b нахадятся в private части класса:

class CRect
{
    float m_a, m_b; //Стороны.
    ...

Зачем мы поместили m_a и m_b в private часть класса? Так как на их значения существуют ограничения - а именно они не могут быть отрицательные. Поэтому для доступа к этим переменным мы добавили по две функции GetA/B - для чтения и SetA/B - для записи:

    ...
    void SetA(float a);
    void SetB(float b);
    float GetA();
    float GetB();
    ...

Эти функции мы объявили, разумеется, в public части класса. Обратите внимание, что функции мы только объявили, а реализацию функций мы пишем вне класса:

...
void CRect::SetA(float a)
{
    if(a>0)
    {
        m_a = a;
    }
    else
    {
        m_a = 1;
    }
}
 ...

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

void CRect::SetA(...)
    ...

Функции SetA/B мы написали так, что они позволяют записать только положительно значение. Если в такую функцию мы передадим для стороны отрицательное значение, то запишется не оно, а единица.

С функциями, вычисляющими площадь, периметр и выясняющими, не есть ли наш прямоугольник квадратом, тоже все ясно - они используют соответствующие формулы из математики и возвращают нужное значение посредством return.

В функции main мы создаем экземпляр нашего класса:

void main()
{
    //Использование класса.
    CRect r;
    ...

и затем с этим экземпляром работаем - устанавливаем для него значения сторон A и B, считаем периметр и др.:

    ...
    r.SetA(5);
    r.SetB(3);
    cout<<"Perimeter = "<<r.GetPerim()<<"\n";
    cout<<"Square = "<<r.GetSquare()<<"\n";
    ...

Обратите внимание, что функции мы вызываем не сами по себе, а именно для нашего экземпляра класса r. Синтаксис тут такой: имя экземпляра, точка, имя функции:

    r.SetA(5);

Можно в программе объявить несколько экземпляров класса или даже массив:

CRect w, v;
CRect z[5];

Все такие экземпляры будут независимы друг от друга.

Наверх

PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка .NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru
Copyright Алексеев Игорь, 2002-2004
Copyright сайт progs.biz, 2002-2004
Распространение материалов без разрешения владельцев авторских прав запрещено.


BannerDrive.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное