Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчеты по Курсовой Работе / ООП в совр.програм. Ворожцов А.В. 8-78-3.docx
Скачиваний:
40
Добавлен:
12.03.2015
Размер:
252.59 Кб
Скачать

Список литературы

  1. М. Эллис, Б. Строуструп. Справочное руководство по языку C++ с комментариями: Пер. с англ. - Москва: Мир, 1992.445с.

  2. Г. Шилдт. Самоучитель C++: Пер. с англ. - Санкт-Петербург: BHV-Санкт-Петербург, 1998.620с.

  3. Х. Дейтел, П. Дейтел. Как программировать на C++: Пер. с англ. - Москва: ЗАО "Издательство БИНОМ", 1998.1024с.

  4. Зубков С. В. Assembler для Dos, Windows и UNIX / Зубков Сергей Владимирович. – 3-е изд.,стер. – М.: ДМК Пресс ; Спб. : Питер, 2005. – 608 с. : ил. – (Серия «Для программистов»).

  5. Методические указания для выполнения курсовой работы «Изучение операционной системы Windows» по курсу «Операционные системы» для студентов специальности 23.01.00 «Вычислительные машины, комплексы, системы и сети» - Ижевск, 2013.

Приложение 1

Листинг программы на языке высокого уровня С++ Builder представлен ниже.

Server:

#include <vcl. h>

#pragma hdrstop

#include "Unit1. h"

#include "math. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

TForm1 *Form1;

// ---------------------------------------------------------------------------

__fastcall TForm1:: TForm1 (TComponent* Owner)

: TForm (Owner)

{

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button1Click (TObject *Sender)

{

Close ();

}

// ---------------------------------------------------------------------------

// // Функция расчета (a/x) ^b, т.е. pow (Y,b)

double __fastcall TForm1:: calculateY (int x, double a, double b)

{

double res = a / x; // выполняем расчет согласно уравнения функции

if (res < 0) res *= - 1;

return pow (res,b); // возводим в степень b и возвращаем результат

}

// ---------------------------------------------------------------------------

Файл Класса Function Y:

// CALCULATEYIMPL. H: Declaration of the TCalculateYImpl

#ifndef CalculateYImplH

#define CalculateYImplH

#define ATL_APARTMENT_THREADED

#include "Project1_TLB. H"

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

// TCalculateYImpl Implements ICalculateY, default interface of CalculateY

// ThreadingModel: Apartment

// Dual Interface: TRUE

// Event Support: FALSE

// Default ProgID: Project1. CalculateY

// Description: My course work

// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /

class ATL_NO_VTABLE TCalculateYImpl:

public CComObjectRootEx<CComSingleThreadModel>,

public CComCoClass<TCalculateYImpl, &CLSID_CalculateY>,

public IDispatchImpl<ICalculateY, &IID_ICalculateY, &LIBID_Project1>

{

public:

TCalculateYImpl ()

{

}

// Data used when registering Object

//

DECLARE_THREADING_MODEL (otApartment);

DECLARE_PROGID ("Project1. CalculateY");

DECLARE_DESCRIPTION ("My course work");

// Function invoked to (un) register object

//

static HRESULT WINAPI UpdateRegistry (BOOL bRegister)

{

TTypedComServerRegistrarT<TCalculateYImpl>

regObj (GetObjectCLSID (), GetProgID (), GetDescription ());

return regObj. UpdateRegistry (bRegister);

}

BEGIN_COM_MAP (TCalculateYImpl)

COM_INTERFACE_ENTRY (ICalculateY)

COM_INTERFACE_ENTRY2 (IDispatch, ICalculateY)

END_COM_MAP ()

// ICalculateY

public:

STDMETHOD (CalculateY (int x, double a, double b, double* y));

};

#endif // CalculateYImplH

Исходный код клиента:

// ---------------------------------------------------------------------------

/*

Клиентское приложение расчета функции Y

Выполнил Ворожцов А.В. , группа 8-78-3

*/

#include <vcl. h>

#pragma hdrstop

#include "Unit1. h"

#include <ComObj. hpp>

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"

TForm1 *Form1;

// ---------------------------------------------------------------------------

__fastcall TForm1:: TForm1 (TComponent* Owner)

: TForm (Owner)

{

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: FormCreate (TObject *Sender)

{

CheckBox1->Checked = true;

}

// ---------------------------------------------------------------------------

// Обработчик события нажатия на кнопку Button1

void __fastcall TForm1:: Button1Click (TObject *Sender)

{

int x0, xn;

double a, b;

try

{

x0 = LabeledEdit1->Text. ToInt ();

xn = LabeledEdit2->Text. ToInt ();

a = LabeledEdit3->Text. ToDouble ();

b = LabeledEdit3->Text. ToDouble ();

Variant server = CreateOleObject ("Project1. CalculateY");

if (VarType (server) == varDispatch) {

TChartSeries *series = Chart1->GetASeries ();

series->Clear ();

for (int i = x0; i <= xn; ++i)

series->AddXY (i, server. OleFunction ("calculateY", i, a, b), "", ColorBox1->Selected);

}

if (VarType (server) == varDispatch) server = Unassigned;

}

catch (Exception &e)

{

ShowMessage (e. Message. c_str ());

}

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button2Click (TObject *Sender)

{

TChartSeries *series = Chart1->GetASeries ();

series->Clear ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: CheckBox1Click (TObject *Sender)

{

Chart1->Visible = CheckBox1->Checked;

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: Button3Click (TObject *Sender)

{

Close ();

}

// --------------------------------------------------------------------------

void __fastcall TForm1:: N2Click (TObject *Sender)

{

Button1->Click ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: N3Click (TObject *Sender)

{

Close ();

}

// ---------------------------------------------------------------------------

void __fastcall TForm1:: N4Click (TObject *Sender)

{

ShowMessage ("Выполнил Крюков П.Г., ВМКСС-326");

}

// ---------------------------------------------------------------------------

Исходный код клиента ActiveX Form:

#include <vcl. h>

#pragma hdrstop

#include <atl\atlvcl. h>

#include "MyCourseProjectImpl1. h"

USEFORM ("MyCourseProjectImpl1. cpp", MyCourseProject); /* TActiveForm: File Type */ /* MyCourseProject: CoClass */

// ---------------------------------------------------------------------------

#pragma package (smart_init)

TComModule MyCourseProjectProj1Module;

TComModule &_Module = MyCourseProjectProj1Module;

// The ATL Object map holds an array of _ATL_OBJMAP_ENTRY structures that

// described the objects of your OLE server. The MAP is handed to your

// project's CComModule-derived _Module object via the Init method.

//

BEGIN_OBJECT_MAP (ObjectMap)

OBJECT_ENTRY (CLSID_MyCourseProject, TMyCourseProjectImpl)

END_OBJECT_MAP ()

// Entry point of your Server invoked by Windows for processes or threads are

// initialized or terminated.

//

int WINAPI DllEntryPoint (HINSTANCE hinst, unsigned long reason, void*)

{

if (reason == DLL_PROCESS_ATTACH)

{

_Module. Init (ObjectMap, hinst);

DisableThreadLibraryCalls (hinst);

}

return TRUE;

}

// _Module. Term is typically invoked from the DLL_PROCESS_DETACH of your

// DllEntryPoint. However, this may result in an incorrect shutdown sequence.

// Instead an Exit routine is setup to invoke the cleanup routine

// CComModule:: Term.

//

void ModuleTerm (void)

{

_Module. Term ();

}

#pragma exit ModuleTerm 63

// Entry point of your Server invoked to inquire whether the DLL is no

// longer in use and should be unloaded.

//

STDAPI __export DllCanUnloadNow (void)

{

return (_Module. GetLockCount () ==0)? S_OK: S_FALSE;

}

// Entry point of your Server allowing OLE to retrieve a class object from

// your Server

//

STDAPI __export DllGetClassObject (REFCLSID rclsid, REFIID riid, LPVOID* ppv)

{

return _Module. GetClassObject (rclsid, riid, ppv);

}

// Entry point of your Server invoked to instruct the server to create

// registry entries for all classes supported by the module

//

STDAPI __export DllRegisterServer (void)

{

return _Module. RegisterServer (TRUE);

}

// Entry point of your Server invoked to instruct the server to remove

// all registry entries created through DllRegisterServer.

//

STDAPI __export DllUnregisterServer (void)

{

return _Module. UnregisterServer ();

}

// ---------------------------------------------------------------------------