|
8- amaliy mashg‘ulot
|
bet | 2/4 | Sana | 18.05.2024 | Hajmi | 440,2 Kb. | | #242327 |
Bog'liq 8-amaliy ish1805Topshiriq:
Talaba laboratoriya ishi uchun shaxsiy topshiriq oladi. Bu topshiriq bo‘yicha talaba taqsimlangan kliyent-server ilovalar yaratadi.
Ishni bajarish tartibi:
qadam. Ish NetBeans IDE integrallashgan ishlab chiqarish muhitini yuklash bilan boshlanadi. Quyidagi rasmda NetBeans IDE muhitining asosiy darchasi yuklangan.
8.2-rasm. NetBeans IDE muhiti asosiy darchasi
qadam. “Файл” menyusidan “Открыть проект” bo‘limidan “Talabaning_Ismi” loyihasi ochiladi.
qadam. Ochilgan “Talabaning_Ismi” loyihasining ustiga sichqonchaning o‘ng tugmasi bir marta bosiladi va paydo bo‘lgan kontekst menyudan “Новый → Интерфейс Java” tanlanadi.
8.3-rasm. NetBeans IDE muhiti yangi interfeys yaratish
qadam. “New Интерфейс Java” darchasining “Имя класса” maydoniga “BillingService”, “Пакет” maydoniga “rmi” kiritilib “Готово” tugmasi bosiladi.
8.4-rasm. NetBeans IDE muhiti “New Интерфейс Java” darchasi 5-qadam. Yaratilgan BillingService.java fayliga quyidagi Java kodi kiritiladi.
package rmi; import java.rmi.*;
public interface BillingService extends Remote
{
public void addNewCard(Card card) throws RemoteException;
public void addMoney(Card card, double money) throws RemoteException;
public void subMoney(Card card, double money) throws RemoteException;
public double getCardBalance(Card card) throws RemoteException;
}
6-qadam. “Talabaning_Ismi” loyihasining ustiga sichqonchaning o‘ng tugmasi bir marta bosiladi va paydo bo‘lgan kontekst menyudan “Новый → Класс 6 Java” tanlanadi.
8.5-rasm. NetBeans IDE muhiti yangi klass yaratish
7-qadam. “New Класс Java” darchasining “Имя класса” maydoniga “Card”, “Пакет” maydoniga “rmi” kiritilib “Готово” tugmasi bosiladi.
8.6-rasm. NetBeans IDE muhiti “New Knacc Java” darchasi 8-qadam. Yaratilgan Card.java fayliga quyidagi Java kodi kiritiladi.
package rmi;
import java.io.Serializable;
public class Card implements Serializable
{
private static final long serialVersionUID = 1L;
private String name ; private String number; private double money ;
public Card(String name, String number, double money)
{
super();
this.name = name; this.number = number; this.money = money;
}
public String getName() { return name;
}
public void setName(String name) { this.name = name;
}
public String getNumber() { return number;
}
public void setNumber(String number) { this.number = number;
}
public double getMoney() { return money;
}
public void setMoney(double money) { this.money = money;
}
@Override
public boolean equals(Object card)
{
return this.getNumber().equalsIgnoreCase(((Card)card).getNumber());
}
Yuqoridagi 6-8 qadamlar qaytadan bajarilib BillingClient.java va BillingServiceImpl.java fayllari yaratiladi va quyidagi Java kodi kiritiladi.
package rmi;
import java.net.MalformedURLException; import java.rmi.*;
public class BillingClient
{
private String localhost = "127.0.0.1";
private String RMI_HOSTNAME = "java.rmi.server.hostname"; private String SERVICE_PATH = "rmi://localhost/BillingService";
private String[][] CARDS = {{"Salimov", "8600-0456-7890-5265"},
{"Djurayev", "8600-6554-3210-5542"}};
private double[] MONEYS = {135790.0, 24680.0}; private Card createCard (final int idx)
{
return new Card(CARDS[idx][0], CARDS[idx][1], 0);
}
private void registerCards(BillingService bs)
{
for (int i = 0; i < CARDS.length; i++) { Card card = createCard (i);
try {
bs.addNewCard(card);
} catch (RemoteException e) { System.err.println("RemoteException : " e.getMessage());
}
}
}
private void addMoney(BillingService bs)
{
for (int i = 0; i < CARDS.length; i++) { Card card = createCard (i);
try {
bs.addMoney(card, MONEYS[i]);
} catch (RemoteException e) { System.err.println("RemoteException : " +
e.getMessage());
}
}
}
private void getBalance(BillingService bs)
{
for (int i = 0; i < CARDS.length; i++) {
Card card = createCard (i); try {
System.out.println("card : " + card.getNumber() + ", balance = " + bs.getCardBalance(card));
} catch (RemoteException e) { System.err.println("RemoteException : " +
.getMessage());
}
}
}
public BillingClient()
{
try {
System.setProperty(RMI_HOSTNAME, localhost); String objectName = SERVICE_PATH;
BillingService bs = (BillingService) Naming.lookup(objectName);
System.out.println("\nRegister cards ..."); registerCards(bs); System.out.println("Add moneys ..."); addMoney(bs);
System.out.println("Get balance ...\n"); getBalance(bs);
} catch (MalformedURLException e) { e.printStackTrace();
} catch (RemoteException e) { e.printStackTrace();
} catch (NotBoundException e) { e.printStackTrace();
System.err.println("NotBoundException : " + e.getMessage());
}
}
public static void main(String[] args)
{
new BillingClient(); System.exit(0);
}
}
8.7-rasm. NetBeans IDE muhiti
Nazorat savollari
1. Common Object Request Broker Architecture (CORBA)
Common Object Request Broker Architecture (CORBA)** – bu Object Management Group (OMG) tomonidan aniqlangan standart bo‘lib, u turli dasturlar o‘rtasida, qaerda joylashganligidan va kim tomonidan ishlab chiqilganligidan qat’i nazar, aloqa qilishni osonlashtiradi. CORBA tarmoqda joylashgan dastur bo'laklarining vositachi – Object Request Broker (ORB) orqali o'zaro aloqa qilishiga imkon beradi.
CORBA ning asosiy xususiyatlari: - Tilga xos emas**: Bir nechta dasturlash tillarini qo'llab-quvvatlaydi. - **Joylashuvga bog‘liq emaslik**: Ob'ektlar boshqa ob'ektning joylashuvini bilmasdan o'zaro aloqa qilishi mumkin. - **O'zaro ishlash imkoniyati**: Turli platformalar o'rtasida aloqa uchun standartlar taqdim etadi. - **Interface Definition Language (IDL)**: Ob'ektlarning tashqi dunyoga taqdim etadigan interfeyslarini aniqlash uchun ishlatiladi.
2. Object Management Group (OMG)
**Object Management Group (OMG)** – bu xalqaro texnologiya standartlari konsortsiumi. 1989 yilda tashkil etilgan OMG, CORBA kabi ko'plab kompyuter sanoati standartlarini ishlab chiqish va saqlash bilan mashhur.
|
| |