Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

quá trình ánh xạ (mapping) từ ngôn ngữ đặc tả sang ngôn ngữ cài đặt.doc.DOC
MIỄN PHÍ
Số trang
36
Kích thước
304.7 KB
Định dạng
PDF
Lượt xem
1640

quá trình ánh xạ (mapping) từ ngôn ngữ đặc tả sang ngôn ngữ cài đặt.doc.DOC

Nội dung xem thử

Mô tả chi tiết

Lêi nãi ®Çu

Ngµy nay cïng víi viÖc ph¸t triÓn cña m¹ng m¸y tÝnh viÖc viÕt mét øng

dông trªn mét m¸y ®¬n côc bé kh«ng cßn ®îc a chuéng vµ thÝch hîp n÷a . C¸c

ch¬ng tr×nh vµ øng dông hiÖn ®¹i ph¶i tÝch hîp vµ triÖu gäi lÉn nhau trªn m¹ng

Intranet (m¹ng côc bé), m¹ng Internet (m¹ng toµn cÇu).

Tuy nhiªn mét vÊn ®Ò n¶y sinh ra , ®iÓm bÊt ®ång gi÷a c¸c ng«n ng÷ lËp

tr×nh . C¸c ®èi tîng thiÕt kÕ b»ng ng«n ng÷ nµo th× sau khi biªn dÞch ra d¹ng nhÞ

ph©n (binary) chØ cã m· lÖnh t¬ng øng víi ng«n ng÷ ®ã míi cã kh¶ n¨ng truy

xuÊt ®îc ®èi tîng . §èi tîng C++ kh«ng dÔ g× truy xuÊt ®îc tõ m· lÖnh Delphi

hay Visual Basic mét c¸ch tù nhiªn . (MÆc dï cã mét sè kÜ thuËt nh sö dông th

viÖn liªn kÕt ®éng DLL nhng ®ã kh«ng ph¶i lµ c¸c gi¶i ph¸p toµn diÖn ).

C¸c nhµ lËp tr×nh lu«n mong muèn t×m ®îc mét tiÕng nãi chung cho tÊt c¶

c¸c ng«n ng÷ lËp tr×nh hiÖn cã . Vµ thÕ lµ CORBA ra ®êi .

CORBA ( Common Object Request Broker Achitecture) - t¹m dÞch lµ

KiÕn tróc m«i giíi gäi c¸c ®èi tîng th«ng dông . CORBA ®îc h×nh thµnh tõ

mét tæ chøc nghiªn cøu quèc tÕ OMG (Object Management Group ) víi sù hîp

t¸c cña h¬n 800 c«ng ty . Tham väng cña OMG lµ ®a ra c¸ch ®Ó c¸c ®èi tîng

viÕt b»ng nh÷ng ng«n ng÷ kh¸c nhau cã thÓ triÖu gäi lÉn nhau theo m« h×nh ®èi

tîng ph©n t¸n .

CORBA kh«ng ph¶i lµ ng«n ng÷ lËp tr×nh nh C++ hay Java . CORBA lµ

mét ng«n ng÷ ®Æc t¶ (description language) .

Sau ®©y sÏ tr×nh bµy qu¸ tr×nh ¸nh x¹ (mapping) tõ ng«n ng÷ ®Æc t¶ sang

ng«n ng÷ cµi ®Æt

- 1 -

I. ¸nh x¹ tõ IDL sang C++

1. Giíi thiÖu:

¸nh x¹ IDL sang C++ ph¶i tho· m·n c¸c yªu cÇu sau :

- ¸nh x¹ ph¶i cã tÝnh trùc quan vµ dÔ sö dông

- ph¶i b¶o tån ng«n ng÷ chung cña C++ vµ ph¶i gÇn gièng víi C++ th￾êng

- ph¶i an toµn vÒ kiÓu

- sö dông cã hiÖu qu¶ chu kú cña CPU vµ bé nhí

- thùc hiÖn trªn c¸c cÊu tróc cña bé nhí ®o¹n vµ bé nhí vËt lý

- ph¶i ®îc híng néi sao cho nã cã thÓ dïng trong m«i trêng ph©n luång

- ¸nh x¹ ph¶i b¶o toµn tÝnh che giÊu côc bé (tÝnh trong suèt)

ViÖc ¸nh x¹ sang C++ phøc t¹p vµ réng lín nhng kh«ng ph¶i qu¸ khã. Thø

nhÊt, ¸nh x¹ lµ thuËn tiÖn vÝ dô b¹n hiÓu râ vÒ c¸ch tæ chøc vµ qu¶n lý bé

nhí cña kiÓu String, vµ c¸c luËt qu¶n lý ®èi víi kiÓu d÷ liÖu Variable￾length, thø hai, viÖc ¸nh x¹ lµ an toµn, kh«ng yªu cÇu s¾c th¸i vµ b¾t lçi dÔ

dµng trong lóc biªn dÞch

Thø 3, sù ¸nh x¹ nµy lµ dÔ nhí mÆc dï líp cã nhiÒu hµm thµnh viªn, nhng

b¹n chØ cÇn gäi mét sè hµm chÝnh, cßn mét sè hµm kh¸c tån t¹i mÆc ®Þnh

®Ó cung cÊp c¸c chuyÓn ®æi tham sè truyÒn vµ kh«ng cÇn ph¶i gäi râ rµng

2. ¸nh x¹ cho tªn:

Các tên của IDL được bảo toàn khi ánh xạ sang C++. Để minh hoạ cho

điều này ta xét ví dụ sau:

- Trong IDL:

enum color {red, green, blue};

- Khi ánh xạ sang C++:

enum color {red, green, blue};

Các ánh xạ sang C++ cũng bảo toàn các toán tử phạm vi. Ví dụ nếu như

trong IDL toán tử phạm vi Outer :: Inner là hợp lệ thì khi ánh xạ sang C+

+ nó cũng vẫn là Outer :: Inner.

Một vấn đề phát sinh khi trong IDL ta dùng tên trùng với từ khoá trùng

với các từ khoá của C++:

Ví dụ định nghĩa sau là hoàn toàn hợp lệ trong IDL:

Enum class {if, this, while, case };

nhưng khi ánh xạ sang C++ thì nó sẽ tự động được thêm vào tiền tố:

_cxx_. Vì vậy nó sẽ có dạng như sau:

enum _cxx_class { _cxx_if, _cxx_this, _cxx_while, _cxx_case };

- 2 -

các tiền tố này làm cho các câu lệnh trở nên khó đọc, do vậy tốt nhất là ta

nên tránh dùng chúng.

Bây giờ chúng ta sẽ đi xét chi tiết vào từng kiểu dữ liệu một

3. Ánh xạ các kiểu dữ liệu cơ bản

Các kiểu dữ liệu cơ bản được ánh xạ sang C++ được mô tả ở bảng sau:

OMG IDL C++ C++ Out Type

short CORBA::Short CORBA::Short_out

long CORBA::Long CORBA::Long_out

unsigned short CORBA::UShort CORBA::UShort_out

unsigned long CORBA::ULong CORBA::ULong_out

float CORBA::Float CORBA::Float_out

double CORBA::Double CORBA::Double_out

char CORBA::Char CORBA::Char_out

boolean CORBA::Boolean CORBA::Boolean_out

octet CORBA::Octet CORBA::Octet_out

4. Các kiểu dữ liệu phức:

Các kiểu dữ liệu phức ở trong IDL được ánh xạ sang C++ như sau:

OMG IDL C++

Object CORBA::Object_ptr

struct C++ struct

union C++ class

enum C++ enum

string char *

Sequence C++ class

array C++ array

a>. String

Một chuỗi trong IDL được ánh xạ sang C++ là char *. Cả chuỗi giới hạn

và chuỗi không giới hạn độ dài thì đều được ánh xạ sang C++ là char *.

Các chuỗi CORBA trong C++ được kết thúc bởi con trỏ NULL. Nếu một

chuỗi mà có chứa một kiểu tự định nghĩa khác, ví dụ như kiểu struct, thì

nó được ánh xạ sang kiểu C ORBA::String_v ar. Điều này đảm bảo rằng

- 3 -

Tải ngay đi em, còn do dự, trời tối mất!