Компонентные функции
Если определение функции полностью размещено в классе, то эта функция по умолчанию считается подставляемой, т.е. при каждом вызове код функций встраивается в точку вызова.
При внешнем определении в теле класса располагается прототип функции:
<Тип> <имя функции >(спецификация формальных параметров);
Вне тела класса компонентная функция определяется следующим образом:
<Тип ><имя класса>::<имя функции>(спецификация формальных
параметров)
{ тело функции };
Функция компонент класса имеет туже область видимости, что и класс.
Пример: Работа с графической библиотекой
При объявлении методов класса использовались (инкапсулировались) графические функции, прототипы которыхнаходятся взаголовочном файле graphics.h
Все эти функции предоставляют возможности управления графическим экраном.
Стандартное состояние ПК – соответствует работе экрана в текстовом режиме (25 строк по 80 символов в строке).
Если мы хотим использовать графические средства компьютера, необходимо инициировать графический режим работы дисплейного адаптера.
|
|
Для управления техническими средствами ПК имеются соответствующие программы, называемые драйверами.
Графический драйвер управляет дисплейным адаптером в графическом режиме.
Графические возможности адаптера определяются разрешением экрана (количеством точек экрана) и количеством цветов, которыми может светиться каждая точка.
Наиболее распространенные дисплейные адаптеры (CGA - Color Graphics Adapter, EGA – Enhanced (усиленный) Graphics Adapter, VGA – Video Graphics Array (графический видеомассив), SVGA и т. д.) могут иметь несколько графических режимов работы. Для управления современными графическими адаптерами мы используем драйвер EGAVGA.BGI
Экран представляет собой совокупность светящихся точек - пикселей. Количество точек определяется монитором и режимом драйвера для работы с ним. Положение пикселя определяется его координатами по отношению к точке с координатами 0, 0 – верхнему левому углу экрана.
Для инициализации графического режима адаптера используется вызов функции:
void initgraph (int far * graphdriver, int far * graphmode, char far * pathtodriver);
Для указания типа драйвера в файле имеются константы:
DETECT = 0 (режим автоопределения типа)
CGA =1
EGA=3
VGA=9
и т. д.
Аналогично имеются константы для определения моды адаптера.
Но если программа рассчитана на работу с любым адаптером, вызов функции можно производить с требованием автоопределения типа драйвера:
int dr = DETECT, // тип драйвера и
mod; // режим работы адаптера
// определяются автоматически
//режим при этом выбирается с максимальным разрешением
initgraph (&dr, &mod, "D:\\Borlandc\\BGI");
|
|
// предполагается, что драйвер находится в каталоге BGI
#include <graphics.h>
#include <conio.h> //содержит прототип функции getch()
// опишем класс
class point { //точка на экране дисплея
int x, y; // собственные компонентные данные
public: // общедоступные компонентные функции
point (int xx=0, int yy =0); // прототип конструктора
// с умалчиваемыми значениями
void show (void); // прототип функции изображения точки
void move (int xo=0, int yo =0); // прототип функции
// перемещения точки с умалчиваемыми значениями
private: // собственная функция класса
void hide (); // прототип функции, убирающей точку с экрана
};
//дадим внешнее определение методам класса
point::point(int xx=0, int yy=0) // определение конструктора
{ x = xx; y = yy; }
void point:: show (void)
{ putpixel (x, y, getcolor());} // int getcolor(void)
// возвращает номер цвета символов
void point:: hide(void)
{ putpixel (x, y, getbkcolor()); }
void point::move (int xn=0, int yn=0)
{ hide ();
x =xn; y= yn;
show (); }