hàng
.III.1. Định nghĩa các lớp giao diện
‡ Ÿ Ơ Ÿ Í
ẵ nh nghỉa c c ẵđi từỡng trung gian nh m ẵ p ửng c c y u cãu tữ c c m y trÙ Ÿ ± Ÿ Ÿ Ơ Ÿ Ÿ m. Ngõn ngự ẵ nh nghỉa giao diẻn (IDL - Interface Definition Language) cho phắp ta ẵ nh nghỉa c cÙ Ù Ÿ
lỉp giao diẻn cho c c ẵđi từỡng c a ửng dũng quăn lỷ ngàn hĂng. Cảu trợc ẵ nh nghỉa giaoŸ ð Ù diẻn cho c c ẵđi từỡng giđng nhừ cảu trợc ẵđi từỡng trong ngõn ngự CŸ ++. B ng c ch t± Ÿ o giao diẻn cho c c ẵđi từỡng giợp cho viẻc g i y u cãu c a Client thõng qua c c lỉp giao diẻn nhừŸ ă Ơ ð Ÿ
lĂ mưt ẵđi từỡng trung gian ẵƯn Server. Ti Server nh n y u cãu c a Client thõng qua băngº Ơ ð ẵ ng kỷ c c ẵđi từỡng ẵờng thĩi g i phừỡng thửc thỳc thi ẵừa vĂo trong tuyƯn ẵo¯ Ÿ ă n. Khi tuyƯn ẵon thỳc thi xong Server tră vỊ c c tham sđ thõng qua ẵđi từỡng trung gian kƯt quă ẵừỡc trăŸ
lĩi chẽnh x c cho Client ẵơ y u cãu. Ÿ Ơ ị ẵày ta ẵ nh nghỉa c c phừỡng thửc vĂ biƯn cho tữngÙ Ÿ
ẵđi từỡng, sau ẵĩ tững ẵđi từỡng ẵừỡc lừu thĂnh file cĩ dng *.idl. Trừỉc ti n, ta ẵ nh nghỉa cho ẵđi từỡng tĂi khoăn (Account):Ơ Ù
// Account.idl interface Account; #ifndef Account_idl #define Account_idl
typedef sequence<Account> AccountList; #include "Customer.idl"
interface Account {
readonly attribute string accountNumber; readonly attribute string creationDate; readonly attribute float balance;
CustomerList getCustomers(); float withdraw(in float amount); float deposit(in float amount); };
#endif
TiƯp ẵƯn ẵ nh nghỉa giao diẻn c c phừỡng thửc vĂ biƯn cho ẵđi từỡng Kh ch hĂng sauÙ Ÿ Ÿ
ẵĩ lừu thĂnh tẻp cĩ t n lĂ Customer.idl.Ơ
// Customer.idl interface Customer; #ifndef Customer_idl #define Customer_idl
typedef sequence<Customer> CustomerList; #include "Account.idl"
interface Customer { attribute string name;
readonly attribute string securityNumber; attribute string address;
AccountList getAccounts();
oneway void updateAccountBalance(in Account account, in float balance);
}; #endif
C c phừỡng thửc ẵè thỳc thi vĂ biƯn củng ẵừỡc ẵ nh nghỉa trong ẵđi từỡng Ngàn hĂng.Ÿ Ù ờng thĩi dùng lẻnh #include ẵè khai b o th m hai lỉp giao diẻn TĂi khoăn vĂ Kh ch
‡ Ÿ Ơ Ÿ
hĂng. Giao diẻn c a lỉp Ngàn hĂng ẵừỡc ẵ nh nghỉa theo phãn thiƯt kƯ dự liẻu, c c biƯn vĂð Ù Ÿ
phừỡng thửc ẵừỡc khai b o mưt c ch tụng qu t vĂ c c thuưc tẽnh nh m cung cảp c cŸ Ÿ Ÿ Ÿ ± Ÿ
// Bank.idl interface Bank; #ifndef Bank_idl #define Bank_idl
typedef sequence<Bank> BankList; #include "Customer.idl"
#include "Account.idl" interface Bank {
attribute string name; attribute string address;
Account createAccount(in Customer customer, in string accountType, in float openingBalance); void deleteAccount(in Account account)
raises (InvalidAccountException); AccountList getAccounts();
}; #endif