Контрольная работа: Распределенная обработка данных

public:

virtual void Fy1() = 0;

virtual void Fy2() = 0;

};

class CA : public IX, public IY // Компонент

{

public:

// Реализация абстрактного базового класса IX

virtual void Fx1() { cout << “Fx1” << endl; }

virtual void Fx2() { cout << “Fx2” << endl; }

// Реализация абстрактного базового класса IY

virtual void Fy1() { cout << “Fy1” << endl; }

virtual void Fy2() { cout << “Fy2” << endl; }

};

IX и IY — это чисто абстрактные базовые классы, которые используются для реализации интерфейсов. Чистоабстрактный базовый класс (pure abstract base class) — это базовый класс, который содержит только чисто виртуальные функции (pure virtual functions). Чисто виртуальная функция — это виртуальная функция, «помеченная =0 — знаком спецификатора чистоты (pure specifier). Чисто виртуальные функции не реализуютсяв классах, в которых объявлены. Как видно из приведенного выше примера, функции IX::Fx1, IX::Fx2, IY::Fy1 и IY::Fy2 только декларируются. Реализуются же они в производном классе. В приведенном фрагменте кода компонент CA наследует два чисто абстрактных базовых класса — IX и IY — и реализует их чисто виртуальные функции.

Для того, чтобы реализовать функции-члены IX и IY, CA использует множественное наследование. Последнее означает, что класс является производным более чем от одного базового класса. Класс С++ чаще всего использует единичное наследование, т.е. имеет только один базовый класс.

 

Текст программы:

 

#include "stdafx.h"

#include "iostream.h"

#include "objbase.h" // Определить интерфейс

#include "conio.h"

void trace(const char* pMsg) { cout << pMsg << endl; }

// Абстрактные интерфейсы

interface IX

{

virtual void __stdcall Fx1() = 0;

virtual void __stdcall Fx2() = 0;

К-во Просмотров: 510
Бесплатно скачать Контрольная работа: Распределенная обработка данных