
- •Пояснительная записка
- •Оглавление
- •Введение
- •Ооп и его место в современном программировании
- •Преимущества ооп
- •Объекты и компоненты
- •Классы объектов
- •Принципы ооп
- •ActiveX - объекты
- •Сервисы и компоненты ActiveX
- •Клиенты и серверы
- •Принципы и применение описаний информационных систем (uml и аналоги)
- •Способы применения uml
- •Диаграммы uml
- •Практическая часть Описание задачи
- •Диаграмма-представление системы
- •Заключение
- •Список литературы
- •Приложение 1
- •Приложение 2
Список литературы
М. Эллис, Б. Строуструп. Справочное руководство по языку C++ с комментариями: Пер. с англ. - Москва: Мир, 1992.445с.
Г. Шилдт. Самоучитель C++: Пер. с англ. - Санкт-Петербург: BHV-Санкт-Петербург, 1998.620с.
Х. Дейтел, П. Дейтел. Как программировать на C++: Пер. с англ. - Москва: ЗАО "Издательство БИНОМ", 1998.1024с.
Зубков С. В. Assembler для Dos, Windows и UNIX / Зубков Сергей Владимирович. – 3-е изд.,стер. – М.: ДМК Пресс ; Спб. : Питер, 2005. – 608 с. : ил. – (Серия «Для программистов»).
Методические указания для выполнения курсовой работы «Изучение операционной системы 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 ();
}
// ---------------------------------------------------------------------------