This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
laboratoare:laborator05 [2014/11/10 09:06] Andrei Roșu-Cojocaru |
laboratoare:laborator05 [2014/12/02 15:23] (current) Andrei Roșu-Cojocaru |
||
|---|---|---|---|
| Line 16: | Line 16: | ||
| ===== Materiale Ajutătoare ====== | ===== Materiale Ajutătoare ====== | ||
| + | |||
| + | {{ :laboratoare:laborator05:aipi2014-lab05-slides.pdf }} | ||
| + | |||
| + | {{ :laboratoare:laborator05:aipi2014-lab05-slides-3pp.pdf }} | ||
| ===== CORBA - aspecte generale ===== | ===== CORBA - aspecte generale ===== | ||
| Line 97: | Line 101: | ||
| Pot fi definite astfel, independent de limbajul de programare, interfeţe modularizate pentru obiecte, specificând atribute şi metode suportate de acestea. De asemenea, pot fi indicate excepţiile pe care le poate genera o anumită operaţie. Fiecare operaţie este definită prin tipul de date al valorii întoarse precum şi prin tipurile de date ale parametrilor. | Pot fi definite astfel, independent de limbajul de programare, interfeţe modularizate pentru obiecte, specificând atribute şi metode suportate de acestea. De asemenea, pot fi indicate excepţiile pe care le poate genera o anumită operaţie. Fiecare operaţie este definită prin tipul de date al valorii întoarse precum şi prin tipurile de date ale parametrilor. | ||
| - | IDL suportă tipuri de date de bază (boolean, char, octet, short, long, float, double, string) sau construite (struct, union, enum, sequence), obiecte definite sau tipul any pentru obiecte cu tipul de date stabilit dinamic (la momentul utilizării). | + | IDL suportă tipuri de date de bază (''boolean'', ''char'', ''octet'', ''short'', ''long'', ''float'', ''double'', ''string'') sau construite (''struct'', ''union'', ''enum'', ''sequence''), obiecte definite sau tipul ''any'' pentru obiecte cu tipul de date stabilit dinamic (la momentul utilizării). |
| Corespondenţa între tipuri de date IDL şi cele din limbajul de programare Java sunt descrise mai jos: | Corespondenţa între tipuri de date IDL şi cele din limbajul de programare Java sunt descrise mai jos: | ||
| Line 118: | Line 122: | ||
| | ''module'' | ''package'' | | | ''module'' | ''package'' | | ||
| | ''interface'' | ''interface'' | | | ''interface'' | ''interface'' | | ||
| - | | ''operation'' | ''method'' | | + | | ''operation'' | method | |
| - | | ''attribute'' | ''pair of methods'' | | + | | ''attribute'' | pair of methods | |
| | ''exception'' | ''exception'' | | | ''exception'' | ''exception'' | | ||
| Line 143: | Line 147: | ||
| struct Time | struct Time | ||
| { | { | ||
| - | Date d; | + | Date date; |
| - | Moment m; | + | Moment moment; |
| }; | }; | ||
| struct Interval | struct Interval | ||
| Line 395: | Line 399: | ||
| </note> | </note> | ||
| - | **2.** [**0 puncte**] 2. Să se compileze intefaţa ''Reservation.idl'' folosind compilatorul ''idlj'' pentru generarea claselor server, respectiv client, plasându-se sursele generate în directoare diferite. | + | **2.** [**0 puncte**] Să se compileze intefaţa ''Reservation.idl'' folosind compilatorul ''idlj'' pentru generarea claselor server, respectiv client, plasându-se sursele generate în directoare diferite. |
| * server <code bash> | * server <code bash> | ||
| idlj -fserver Reservation.idl | idlj -fserver Reservation.idl | ||
| Line 418: | Line 422: | ||
| </code> | </code> | ||
| - | **3.** [**10 puncte**] 3. Să se încarce orarul de funcţionare al restaurantului în constructorul clasei ''ReservationServiceImplementation'' cu datele conţinute de fişierul ''timetable.txt''. | + | **3.** [**10 puncte**] Să se încarce orarul de funcţionare al restaurantului în constructorul clasei ''ReservationServiceImplementation'' cu datele conţinute de fişierul ''timetable.txt''. |
| Se va parsa conţinutul fişierului ''timetable.txt'' care pe prima linie conţine capacitatea (numărul de locuri) încărcată în variabila ''numberOfSeats'' iar pe următoarele linii programul pentru fiecare zi calendaristică exprimat sub forma ''ZZ LL AAAA O1 M1 O2 M2'', acesta fiind încărcat în obiectul ''timetable''. | Se va parsa conţinutul fişierului ''timetable.txt'' care pe prima linie conţine capacitatea (numărul de locuri) încărcată în variabila ''numberOfSeats'' iar pe următoarele linii programul pentru fiecare zi calendaristică exprimat sub forma ''ZZ LL AAAA O1 M1 O2 M2'', acesta fiind încărcat în obiectul ''timetable''. | ||
| Line 476: | Line 480: | ||
| Să se implementeze metoda în clasa ''ReservationServiceImplementations''. | Să se implementeze metoda în clasa ''ReservationServiceImplementations''. | ||
| - | În interfaţa IDL, o posibilă definiţie a structurii Reservations ar putea fi: | + | În interfaţa IDL, o posibilă definiţie a structurii ''Reservations'' ar putea fi: |
| <code idl> | <code idl> | ||
| Line 488: | Line 492: | ||
| typedef sequence<ReservationInformation> Reservations; | typedef sequence<ReservationInformation> Reservations; | ||
| </code> | </code> | ||
| + | |||
| + | <note tip>Ulterior definirii metodei în interfața IDL, vor trebui generate din nou clasele ciot și schelet pentru client, respectiv server (se vor urmări etapele de la punctul 2).</note> | ||
| ===== Resurse ====== | ===== Resurse ====== | ||
| Line 493: | Line 499: | ||
| [[http://www.corba.org/|CORBA Web Site]]\\ | [[http://www.corba.org/|CORBA Web Site]]\\ | ||
| [[http://www.omg.org/spec/CORBA/|OMG Formally Released Versions of CORBA®]]\\ | [[http://www.omg.org/spec/CORBA/|OMG Formally Released Versions of CORBA®]]\\ | ||
| + | [[https://docs.oracle.com/javase/tutorial/rmi/index.html|The Java™ Tutorials - Trail: RMI]]\\ | ||
| [[http://www.javaworld.com/article/2077037/soa/corba-meets-java.html|CORBA meets Java]]\\ | [[http://www.javaworld.com/article/2077037/soa/corba-meets-java.html|CORBA meets Java]]\\ | ||
| [[http://www.oracle.com/technetwork/java/javase/tech/corba-135898.html|Java SE Core Technologies - CORBA / RMI-IIOP]]\\ | [[http://www.oracle.com/technetwork/java/javase/tech/corba-135898.html|Java SE Core Technologies - CORBA / RMI-IIOP]]\\ | ||
| Line 500: | Line 507: | ||
| ===== Soluții ===== | ===== Soluții ===== | ||
| - | disponibile pe 20 noiembrie 2014 | + | [[https://github.com/aipi2014/Laborator05/tree/master/Eclipse/|Proiect Eclipse]]\\ |
| + | [[https://github.com/aipi2014/Laborator05/tree/master/NetBeans/|Proiect NetBeans]] | ||