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

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

  Все выпуски  

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


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


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

Рассылка №19

C/C++. Урок 24. Введение в классы.

Полные версии уроков (с картинками) можно найти по адресам:
Урок 24. Введение в классы.

Фленов М. Программирование в Delphi глазами хакера.
Фленов М. Программирование в Delphi глазами хакера
Заказать на Озоне
Рассылки Subscribe.Ru
Тестирование и качество
Материалы рассылки :
- обзоры методологий и технологий тестирования,
- обзоры инструментария и литературы для тестировщика и инженера качества,
- обзоры типов тестов и терминологии применяемой как в тестировании так и смежных областях,
- обсуждения вопросов и технологий тестирования, отзывы специалистов о применяемых ими подходах, наиболее интересные проблемы с которыми сталкиваются в своей работе тестировщики и инженеры качества.

C/C++. Урок 24. Введение в классы

В 8 уроке мы с вами рассматрисали структуры. Классы чем-то напоминают структуры - у них также внутри есть переменные разных типов. Но наряду с этими переменными у класса есть и несколько отличий, которые мы сейчас и рассмотрим на примере.

Вот пример класса:

#include <iostream.h>
//Объявление класса прямоугольника.
class CRect
{
    float m_a, m_b; //Стороны.
public:
    //Методы класса.
    //Методы по чтению и записи сторон.
    void SetA(float a);
    void SetB(float b);
    float GetA();
    float GetB();

    float GetSquare(); //Площадь.
    float GetPerim(); //Периметр.
    bool IsSquare(); //Не является ли прямоульник квадратом.
}; //Точка с запятой обязательна!
void main()
{
    //Использование класса.
    CRect r;
    r.SetA(5);
    r.SetB(3);
    cout<<"Perimeter = "<<r.GetPerim()<<"\n";
    cout<<"Square = "<<r.GetSquare()<<"\n";
    if(r.IsSquare())
    {
        cout<<"Square\n"; //Квадрат.
    }
    else
    {
        cout<<"Not a quare\n"; //Не квадрат.
    }
}
//Реализация методов класса.
//Методы по чтению и записи сторон.
void CRect::SetA(float a)
{
    if(a>0)
    {
        m_a = a;
    }
    else
    {
        m_a = 1;
    }
}
void CRect::SetB(float b)
{
    if(b>0)
    {
        m_b = b;
    }
    else
    {
        m_b = 1;
    }
}
float CRect::GetA()
{
    return m_a;
}
float CRect::GetB()
{
    return m_b;
}
//Площадь.
float CRect::GetSquare()
{
    return m_a*m_b;
}
//Периметр.
float CRect::GetPerim()
{
    return (m_a+m_b)*2;
}
//Не является ли прямоульник квадратом.
bool CRect::IsSquare()
{
    return (m_a==m_b);
}

После запуска программы выведет, что периметр равен 16, площадь - 15 и что это - не квадрат. Этого, собственно, и следовало ожидать.

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

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

Дальнейший разбор класса мы произведем на следующем уроке.

Наверх

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


BannerDrive.ru

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

В избранное