BigEdu.ru

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

Содержание

 

Задание №1 Реализация интерфейса COM

Задание №1А QueryInterface

Задание №1B Подсчет ссылок


Задание №1 Реализация интерфейса COM

Цель работы:

Разработать код на С++, реализующий простой интерфейс СОМ без динамической компоновки:

-       клиент и компонент взаимодействуют через два интерфейса IX иIY, интерфейсы COM реализованы как чисто абстрактные базовые классы С++;

-       в качестве клиента использовать процедуру main;

-       компонент реализуется классом СА, который наследует как IX так и IY;

-       класс СА реализует функции-члены обоих интерфейсов (множественное наследование);

-       клиент создает экземпляр компонента (для управления существованием компонента клиент применяет оператора new и delete), далее он получает указатели на интерфейсы, поддерживаемые компонентом, использовать эти указатели анологично указателям на классы С++;

-       выводить промежуточные сообщения при использовании интерфейсов IX и IY;

-       удалить компонент;

-       вместо определения интерфейса как класса использовать определение из заголовочного файла OBJBASE.H

#define interface struct

и функции-члены объявлять с помощью

virtual void _stdcall … .

Теоретические сведения:

В СОМ интерфейсы — это все. Для клиента компонент представляет собой набор интерфейсов. Клиент может взаимодействовать с компонентом СОМ только через интерфейс. С точки зрения программиста СОМ, интерфейсы — важная часть любого приложения. Компоненты сами по себе есть просто детали реализации интерфейсов.

Утверждение, что компонент — всего лишь деталь реализации интерфейса, конечно, преувеличение. В конце концов, интерфейс без реализации ничего не сделает. Однако компонент можно удалить и заменить другим; если новый компонент поддерживает те же интерфейсы, что и старый, приложение будет работать по-прежнему. Отдельные компоненты сами по себе не определяют приложения. Приложение определяют интерфейсы между компонентами. Пока интерфейсы неизменны, компоненты могут появляться и исчезать

Теперь рассмотрим код, реализующий простой интерфейс. В приведенном ниже тексте программы компонент CA использует IX и IY для реализации двух интерфейсов.

class IX // Первый интерфейс

{

public:

virtual void Fx1() = 0;

virtual void Fx2() = 0;

};

class IY // Второй интерфейс

{

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;

};

interface IY

{

virtual void __stdcall Fy1() = 0;

virtual void __stdcall Fy2() = 0;

};

// Реализация интерфейса

class CA : public IX,

public IY

{

public:

// Реализация интерфейса IX

virtual void __stdcall Fx1() { cout << "CA::Fx1" <&l

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать
Контрольные работы по информатике и программированию Содержание   Задание №1 Реализация интерфейса COM Задание №1А QueryInterface Задание №1B Подсчет ссылок Задание №1
Оценок: 1001 (Средняя 5 из 5)

Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.

© 2016 - 2022 BigEdu.ru