При определении классов не происходит реального выделения памяти для объекта этого класса, а создают лишь новые производные типа данных, для которых будут использоваться функции-члены класса.
Для того чтобы начать работу с реальными объектами какого-либо класса, эти объекты необходимо сначала определить. При этом в программе необходимо указать имя класса, объект которого должен быть создан, а также имя самого объекта. У каждого из классов может быть произвольное число объектов. Например, пусть в программе определен класс СLine:
class CLine //Класс прямая
{
public:
int XFirst, YFirst; //Начальные и конечные
int XLast, YLast; //Координаты отрезка прямой
int LineWidth; //Толщина линии
COLORREF LineColor; //Цвет прямой
//Инкапсуляция функции в класс
DrawLine(CDC *pDC, int X, int Y); // Отрисовка отрезка начиная
// с координат X,Y.
};
CLine :: DrawLine(CDC *pDC, int X, int Y)
{
CPen Pen(PS_SOLID, LineWidth, LineColor); // Создание пера
CPen *OldPen; // Указатель на предыдущее перо
OldPen=pDC->SelectObject(&Pen); // Выбор пера
pDC->MoveTo(XFirst + X,YFirst + Y); // Перемещение пера
pDC->LineTo(XLast + X,YLast + Y); // Рисование отрезка
pDC->SelectObject(OldPen); // Выбираем предыдущее перо
}
Для определения объектов этого класса Line1 и Line2 в программе необходимо записать следующие строки:
СLine Line1;
СLine Line2;
При этом в оперативной памяти будут выделены соответствующие области с именами Line1 и Line2. Вызвать любую из функций-членов класса можно лишь для какого-либо конкретного объекта этого класса. Доступ к элементам класса осуществляется посредством операции “.” или “->” в случае, если используется указатель на объект класса. Для предыдущего примера это можно сделать так:
Line1.XFirst=0; //Определяем начальные координаты отрезка
Line1.YFirst=0;
Line1.XLast =100;
Line1.YLast =100;
Line1.LineWidth=5; //Устанавливаем толщину отрезка
Line1.LineColor=RGB(255,0,0); //Красный цвет
CDC *pDC=GetDC(); //Получаем контекст окна
Line1.DrawLine(pDC,50,50); //Рисуем отрезок начиная с координаты [50:50]
ReleaseDC(pDC); //Освобождаем контекст окна
Функции, вызываемые для объектов, выполняют действия только над элементами данных тех объектов, для которых они вызваны. |