2. Programowanie Komponentowe
Wykład #2: Metody opisu komponentów
Mikołaj Olszewski
Wydział Zastosowan Informatyki i Matematyki
Szkoły Głównej Gospodarstwa Wiejskiego
14.10.2014
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 2 / 35
3. Plan wykładu
1 UML
2 IDL
Typy danych
Moduły
Interfejsy
3 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 3 / 35
4. UML
Plan wykładu
1 UML
2 IDL
Typy danych
Moduły
Interfejsy
3 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 4 / 35
5. UML
UML
A co to za zwierze?
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 5 / 35
6. UML
Po co nam UML?
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 6 / 35
22. IDL
Interface Definition Language
Object Management Group
współpraca komponentów
niezaleznosc od konkretnego jezyka
opis deklaratywny
gramatyka podobna do C++
DOM W3C
OMG vs. Microsoft
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 19 / 35
23. IDL
Składnia
module <i d e n t y f i k a t o r>
f
<d e k l a r a c j e typow>;
<d e k l a r a c j e s t a l y c h >;
<d e k l a r a c j e wyjatkow>;
i n t e r f a c e <i d e n t y f i k a t o r> [:< d z i e d z i c z e n i e >] / d e f i n i c j a i n t e r f e j s u /
f
d e k l a r a c j e typow;
d e k l a r a c j e s t a l y c h ;
d e k l a r a c j e atrybutow;
d e k l a r a c j e wyjatkow;
/ d e f i n i c j a metody/
[ oneway ] t yp zwr . war. i d e n t y f i k a t o r (parametry)
[ r a i s e s ] ( wy j a t k i )
[ c o n t e x t ] ( wa r t o s c i ) ;
../
d e f i n i c j a metody/
[ oneway ] t yp zwr . war. i d e n t y f i k a t o r (parametry)
[ r a i s e s ] ( wy j a t k i )
[ c o n t e x t ] ( wa r t o s c i ) ;
..
g;
i n t e r f a c e i d e n t y f i k a t o r [: d z i e d z i c z e n i e ] / d e f i n i c j a i n t e r f e j s u /
..
g;
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 20 / 35
24. IDL Typy danych
Typy podstawowe
(unsigned) short
(unsigned) long
(unsigned) long long
float
double
long double
fixed
char
wchar
boolean
octet
any
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 21 / 35
25. IDL Typy danych
Typy c.d.
definiowane
typedef long ID ;
tablice
typedef long Array [ 1 0 ] [ 2 0 ] ;
sekwencje
typedef sequence o c t e t s1 ;
typedef sequence o c t e t ,10 s2 ;
łancuchy znaków
typedef s t r i n g n1 ;
typedef s t r i n g 10 n2 ;
typy wyliczeniowe
enum Pet f cat , dog , f i s h , b i r d , r a t , h o r s e g ;
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 22 / 35
26. IDL Typy danych
Struktury
s t ruc t Osoba
f
s t r i n g 10 imi e ;
s t r i n g 10 nazwisko ;
long r o k u r o d z e n i a ;
g ;
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 23 / 35
27. IDL Typy danych
Unie
union Re f e r e n c e switch ( short )
f
case 1 : f s t r i n g T i t l e ; s t r i n g Author ; g
case 2 : s t r i n g URL ;
de faul t : long TopicID ;
g ;
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 24 / 35
28. IDL Moduły
Moduły
rola porzadkowa
przestrzen nazw
module BazaDanych
f
...
g
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 25 / 35
29. IDL Interfejsy
Interfejsy
opis dostarczanych usług
publiczne składowe
i n t e r f a c e Example1
f
r e a d o n l y a t t r i b u t e s t r i n g Name ;
a t t r i b u t e long Value ;
long AddToValue ( i n long Summand , out long Re s u l t ) ;
g ;
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 26 / 35
30. IDL Interfejsy
Atrybuty
a t t r i b u t e f l o a t l i c z b a ;
r e a d o n l y a t t r i b u t e double suma ;
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 27 / 35
31. IDL Interfejsy
Wyjatki
i n t e r f a c e Konto
f
e x c e p t i o n BrakSrodkow f g ;
. . .
g ;
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 28 / 35
32. IDL Interfejsy
Metody
i n t e r f a c e Calka
f
double Suma( i n o u t double a , i n double b ) ;
double I l o c z y n ( i n o u t double a , i n double b ) ;
g ;
i n t e r f a c e Drzewo
f
e x c e p t i o n Ob i e k t I s t n i e j e f g ;
void NowyElement ( i n double a ) r a i s e s ( Ob i e k t I s t n i e j e ) ;
oneway void Re o r g a n i z a c j a ( ) ;
g ;
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 29 / 35
33. IDL Interfejsy
Dziedziczenie
i n t e r f a c e Baza
f
. . .
g ;
i n t e r f a c e I n t e r f e j sPo c h o d n y : Baza
f
. . .
g ;
Mozliwe dziedziczenie wielokrotne bez wspólnego przodka
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 30 / 35
34. IDL Interfejsy
Przykład
typedef sequencedouble TTab ;
i n t e r f a c e Calc
f
double Sum( i n double a , i n double b ) ;
double Di f f ( i n double a , i n double b ) ;
double Mul ( i n double a , i n double b ) ;
double Div ( i n double a , i n double b ) ;
double Min ( i n TTab a ) ;
double Max( i n TTab b ) ;
double SumTab( i n TTab a ) ;
double MulTab ( i n TTab a ) ;
oneway void Cl e a r ( ) ;
g ;
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 31 / 35
35. Podsumowanie
Plan wykładu
1 UML
2 IDL
Typy danych
Moduły
Interfejsy
3 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 32 / 35
36. Podsumowanie
Podsumowanie
Rózne metody opisu komponentów
Róznice w standardach
Główny nacisk na wyspecyfikowanie interfejsu
ogół - UML, szczegół - IDL
Jednoznaczne nazwy
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 33 / 35
37. Podsumowanie
Do domu
Przypomniec sobie diagramy UML, w szczególnosci komponentów i
klas.
Zapoznac sie z IDL-em.
Usprawnic obsługe git-a i bitbucket-a!
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 34 / 35