10. Rozwiazywanie zaleznosci Typowe rozwiazanie
Typowe rozwiazanie
1 p u b l i c c l a s s Samochod
2 f
3 p r i v a t e S i l n i k 1 6 s i l n i k ;
4
5 p u b l i c Samochod ( )
6 f
7 t h i s . s i l n i k = new S i l n i k 1 6 ( ) ;
8 g
9 g
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 9 / 50
11. Rozwiazywanie zaleznosci Typowe rozwiazanie
Problemy?
Kazdy samochód ma taki sam silnik (1.6)
Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy)
Kazdy samochód/pojazd ma swój własny naped — nie moze byc
współdzielony (np. holowanie)
Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od
konkretnej klasy (złamanie DIP)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
12. Rozwiazywanie zaleznosci Typowe rozwiazanie
Problemy?
Kazdy samochód ma taki sam silnik (1.6)
Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy)
Kazdy samochód/pojazd ma swój własny naped — nie moze byc
współdzielony (np. holowanie)
Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od
konkretnej klasy (złamanie DIP)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
13. Rozwiazywanie zaleznosci Typowe rozwiazanie
Problemy?
Kazdy samochód ma taki sam silnik (1.6)
Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy)
Kazdy samochód/pojazd ma swój własny naped — nie moze byc
współdzielony (np. holowanie)
Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od
konkretnej klasy (złamanie DIP)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
14. Rozwiazywanie zaleznosci Typowe rozwiazanie
Problemy?
Kazdy samochód ma taki sam silnik (1.6)
Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy)
Kazdy samochód/pojazd ma swój własny naped — nie moze byc
współdzielony (np. holowanie)
Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od
konkretnej klasy (złamanie DIP)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
15. Rozwiazywanie zaleznosci Typowe rozwiazanie
Problemy?
Kazdy samochód ma taki sam silnik (1.6)
Kazdy samochód/pojazd ma ten sam rodzaj napedu (silnik spalinowy)
Kazdy samochód/pojazd ma swój własny naped — nie moze byc
współdzielony (np. holowanie)
Scisłe powiazanie miedzy samochodem a silnikiem — uzaleznienie od
konkretnej klasy (złamanie DIP)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 10 / 50
17. Rozwiazywanie zaleznosci Typowe rozwiazanie
Rozluznienie powiazan
1 p u b l i c c l a s s Samochod
2 f
3 p r i v a t e I S i l n i k s i l n i k ;
4
5 p u b l i c Samochod ( )
6 f
7 t h i s . s i l n i k = new S i l n i k 1 6 ( ) ;
8 g
9 g
Problem
Jak pozbyc sie tworzenia konkretnej implementacji
(i stworzyc system pluginowy)?
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 12 / 50
18. Rozwiazywanie zaleznosci Typowe rozwiazanie
Rozluznienie powiazan
1 p u b l i c c l a s s Samochod
2 f
3 p r i v a t e I S i l n i k s i l n i k ;
4
5 p u b l i c Samochod ( )
6 f
7 t h i s . s i l n i k = new S i l n i k 1 6 ( ) ;
8 g
9 g
Problem
Jak pozbyc sie tworzenia konkretnej implementacji
(i stworzyc system pluginowy)?
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 12 / 50
20. Rozwiazywanie zaleznosci Delegacja konkretyzacji
Delegacja — Fabryka
1 p u b l i c c l a s s Samochod
2 f
3 p r i v a t e I S i l n i k s i l n i k ;
4
5 p u b l i c Samochod ( Fabr ykaSi lnikowBenz ynowy ch f a b r y k a )
6 f
7 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ;
8 g
9 g
Korzysci
Mozliwosc korzystania z róznych silników
Problemy
Uzaleznienie od konkretnej fabryki
Samochód jest włascicielem napedu (brak współdzielenia)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 14 / 50
21. Rozwiazywanie zaleznosci Delegacja konkretyzacji
Delegacja — Fabryka
1 p u b l i c c l a s s Samochod
2 f
3 p r i v a t e I S i l n i k s i l n i k ;
4
5 p u b l i c Samochod ( Fabr ykaSi lnikowBenz ynowy ch f a b r y k a )
6 f
7 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ;
8 g
9 g
Korzysci
Mozliwosc korzystania z róznych silników
Problemy
Uzaleznienie od konkretnej fabryki
Samochód jest włascicielem napedu (brak współdzielenia)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 14 / 50
22. Rozwiazywanie zaleznosci Delegacja konkretyzacji
Delegacja — Fabryka
1 p u b l i c c l a s s Samochod
2 f
3 p r i v a t e I S i l n i k s i l n i k ;
4
5 p u b l i c Samochod ( Fabr ykaSi lnikowBenz ynowy ch f a b r y k a )
6 f
7 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ;
8 g
9 g
Korzysci
Mozliwosc korzystania z róznych silników
Problemy
Uzaleznienie od konkretnej fabryki
Samochód jest włascicielem napedu (brak współdzielenia)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 14 / 50
24. Rozwiazywanie zaleznosci Delegacja konkretyzacji
Delegacja — Fabryka abstrakcyjna
1 p u b l i c c l a s s Kl i e n t
2 f
3 p u b l i c Kl i e n t ( ) f
4 var f a b r y k a = new Fabr ykaSi lnikowBenz ynowy ch ( ) ;
5 var samochod = new Samochod ( f a b r y k a ) ;
6 g
7 g
8 p u b l i c c l a s s Samochod
9 f
10 p r i v a t e I S i l n i k s i l n i k ;
11
12 p u b l i c Samochod ( Ab s t r a k c y j n a Fa b r y k a S i l n i k ow f a b r y k a ) f
13 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ;
14 g
15 g
Korzysci
Mozliwosc korzystania z róznych silników i fabryk
Problemy
Problem z konkretyzacja i dostarczeniem fabryki
Samochód jest włascicielem napedu (brak współdzielenia)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 16 / 50
25. Rozwiazywanie zaleznosci Delegacja konkretyzacji
Delegacja — Fabryka abstrakcyjna
1 p u b l i c c l a s s Kl i e n t
2 f
3 p u b l i c Kl i e n t ( ) f
4 var f a b r y k a = new Fabr ykaSi lnikowBenz ynowy ch ( ) ;
5 var samochod = new Samochod ( f a b r y k a ) ;
6 g
7 g
8 p u b l i c c l a s s Samochod
9 f
10 p r i v a t e I S i l n i k s i l n i k ;
11
12 p u b l i c Samochod ( Ab s t r a k c y j n a Fa b r y k a S i l n i k ow f a b r y k a ) f
13 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ;
14 g
15 g
Korzysci
Mozliwosc korzystania z róznych silników i fabryk
Problemy
Problem z konkretyzacja i dostarczeniem fabryki
Samochód jest włascicielem napedu (brak współdzielenia)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 16 / 50
26. Rozwiazywanie zaleznosci Delegacja konkretyzacji
Delegacja — Fabryka abstrakcyjna
1 p u b l i c c l a s s Kl i e n t
2 f
3 p u b l i c Kl i e n t ( ) f
4 var f a b r y k a = new Fabr ykaSi lnikowBenz ynowy ch ( ) ;
5 var samochod = new Samochod ( f a b r y k a ) ;
6 g
7 g
8 p u b l i c c l a s s Samochod
9 f
10 p r i v a t e I S i l n i k s i l n i k ;
11
12 p u b l i c Samochod ( Ab s t r a k c y j n a Fa b r y k a S i l n i k ow f a b r y k a ) f
13 t h i s . s i l n i k = f a b r y k a . Cr e a t e ( ) ;
14 g
15 g
Korzysci
Mozliwosc korzystania z róznych silników i fabryk
Problemy
Problem z konkretyzacja i dostarczeniem fabryki
Samochód jest włascicielem napedu (brak współdzielenia)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 16 / 50
28. Rozwiazywanie zaleznosci Delegacja konkretyzacji
Delegacja — Lokalizator usług
1 p u b l i c c l a s s Samochod
2 f
3 p r i v a t e I S i l n i k s i l n i k ;
4
5 p u b l i c Samochod ( )
6 f
7 t h i s . s i l n i k = L o k a l i z a t o rUs l u g . Z n a j d z S i l n i k ( ) ;
8 g
9 g
Korzysci
Mozliwosc korzystania z róznych silników
Łatwy dostep do lokalizatora i dostawców
Problemy
Ukrycie zaleznosci
Ewentualne problemy w trakcie wykonywania programu
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 18 / 50
29. Rozwiazywanie zaleznosci Delegacja konkretyzacji
Delegacja — Lokalizator usług
1 p u b l i c c l a s s Samochod
2 f
3 p r i v a t e I S i l n i k s i l n i k ;
4
5 p u b l i c Samochod ( )
6 f
7 t h i s . s i l n i k = L o k a l i z a t o rUs l u g . Z n a j d z S i l n i k ( ) ;
8 g
9 g
Korzysci
Mozliwosc korzystania z róznych silników
Łatwy dostep do lokalizatora i dostawców
Problemy
Ukrycie zaleznosci
Ewentualne problemy w trakcie wykonywania programu
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 18 / 50
30. Rozwiazywanie zaleznosci Delegacja konkretyzacji
Delegacja — Lokalizator usług
1 p u b l i c c l a s s Samochod
2 f
3 p r i v a t e I S i l n i k s i l n i k ;
4
5 p u b l i c Samochod ( )
6 f
7 t h i s . s i l n i k = L o k a l i z a t o rUs l u g . Z n a j d z S i l n i k ( ) ;
8 g
9 g
Korzysci
Mozliwosc korzystania z róznych silników
Łatwy dostep do lokalizatora i dostawców
Problemy
Ukrycie zaleznosci
Ewentualne problemy w trakcie wykonywania programu
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 18 / 50
31. Rozwiazywanie zaleznosci Odwrócone sterowanie
Odwrócone sterowanie — IoC
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 19 / 50
32. Rozwiazywanie zaleznosci Odwrócone sterowanie
Odwrócenie sterowania
oddanie kontroli w „cudze rece”
komponowanie obiektów
pasywne API komponentu
luzne połaczenia miedzy komponentami
komunikacja przez interfejsy
automatyczne spełnianie zaleznosci
kontener odpowiedzialny za rozwiazywanie zaleznosci
Composition Root Pattern
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 20 / 50
35. Rozwiazywanie zaleznosci Odwrócone sterowanie
Wstrzykiwanie zaleznosci
1 p u b l i c c l a s s Kl i e n t
2 f
3 p u b l i c Kl i e n t ( )
4 f
5 var samochod = Kontener . Get<Samochod>() ;
6 g
7 g
8
9 p u b l i c c l a s s Samochod
10 f
11 p r i v a t e I S i l n i k s i l n i k ;
12
13 p u b l i c Samochod ( I S i l n i k s i l n i k )
14 f
15 t h i s . s i l n i k = s i l n i k ;
16 g
17 g
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 23 / 50
36. Rozwiazywanie zaleznosci Framework
Framework
Zródła
Podobienstwo funkcjonalne do COM
Dlaczego nie istniejacy kontener DI?
Uwaga!
Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty.
Dodatkowe punkty za aktywnosc.
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
37. Rozwiazywanie zaleznosci Framework
Framework
Zródła
Podobienstwo funkcjonalne do COM
Dlaczego nie istniejacy kontener DI?
Uwaga!
Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty.
Dodatkowe punkty za aktywnosc.
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
38. Rozwiazywanie zaleznosci Framework
Framework
Zródła
Podobienstwo funkcjonalne do COM
Dlaczego nie istniejacy kontener DI?
Uwaga!
Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty.
Dodatkowe punkty za aktywnosc.
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
39. Rozwiazywanie zaleznosci Framework
Framework
Zródła
Podobienstwo funkcjonalne do COM
Dlaczego nie istniejacy kontener DI?
Uwaga!
Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty.
Dodatkowe punkty za aktywnosc.
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
40. Rozwiazywanie zaleznosci Framework
Framework
Zródła
Podobienstwo funkcjonalne do COM
Dlaczego nie istniejacy kontener DI?
Uwaga!
Mozna zgłaszac błedy, sugerowac ulepszenia oraz pull requesty.
Dodatkowe punkty za aktywnosc.
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 24 / 50
41. Połaczenia binarne
Plan wykładu
1 Rozwiazywanie zaleznosci
Typowe rozwiazanie
Delegacja konkretyzacji
Odwrócone sterowanie
Framework
2 Połaczenia binarne
Wprowadzenie
Komunikacja lokalna
Komunikacja miedzyprocesowa
Komunikacja miedzymaszynowa
3 Zasady dla paczek binarnych
4 Standardy
5 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 25 / 50
42. Połaczenia binarne Wprowadzenie
Połaczenia
Druty / obwody drukowane w układach elektronicznych
Poczatki
wywołania binarne zalezne od systemu
poziom proceduralny
implementacje jezyków programowania
Brak wywołan proceduralnych poza procesami
Komunikacja miedzyprocesowa (IPC)
sockety (UNIX)
pseudostandardy zalezne od systemu
łatwe skalowanie na systemy rozproszone
poziom bitów i bajtów a nie procedur
Zdalne wywołania procedur
Odwołania do obiektów
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
43. Połaczenia binarne Wprowadzenie
Połaczenia
Druty / obwody drukowane w układach elektronicznych
Poczatki
wywołania binarne zalezne od systemu
poziom proceduralny
implementacje jezyków programowania
Brak wywołan proceduralnych poza procesami
Komunikacja miedzyprocesowa (IPC)
sockety (UNIX)
pseudostandardy zalezne od systemu
łatwe skalowanie na systemy rozproszone
poziom bitów i bajtów a nie procedur
Zdalne wywołania procedur
Odwołania do obiektów
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
44. Połaczenia binarne Wprowadzenie
Połaczenia
Druty / obwody drukowane w układach elektronicznych
Poczatki
wywołania binarne zalezne od systemu
poziom proceduralny
implementacje jezyków programowania
Brak wywołan proceduralnych poza procesami
Komunikacja miedzyprocesowa (IPC)
sockety (UNIX)
pseudostandardy zalezne od systemu
łatwe skalowanie na systemy rozproszone
poziom bitów i bajtów a nie procedur
Zdalne wywołania procedur
Odwołania do obiektów
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
45. Połaczenia binarne Wprowadzenie
Połaczenia
Druty / obwody drukowane w układach elektronicznych
Poczatki
wywołania binarne zalezne od systemu
poziom proceduralny
implementacje jezyków programowania
Brak wywołan proceduralnych poza procesami
Komunikacja miedzyprocesowa (IPC)
sockety (UNIX)
pseudostandardy zalezne od systemu
łatwe skalowanie na systemy rozproszone
poziom bitów i bajtów a nie procedur
Zdalne wywołania procedur
Odwołania do obiektów
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
46. Połaczenia binarne Wprowadzenie
Połaczenia
Druty / obwody drukowane w układach elektronicznych
Poczatki
wywołania binarne zalezne od systemu
poziom proceduralny
implementacje jezyków programowania
Brak wywołan proceduralnych poza procesami
Komunikacja miedzyprocesowa (IPC)
sockety (UNIX)
pseudostandardy zalezne od systemu
łatwe skalowanie na systemy rozproszone
poziom bitów i bajtów a nie procedur
Zdalne wywołania procedur
Odwołania do obiektów
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
47. Połaczenia binarne Wprowadzenie
Połaczenia
Druty / obwody drukowane w układach elektronicznych
Poczatki
wywołania binarne zalezne od systemu
poziom proceduralny
implementacje jezyków programowania
Brak wywołan proceduralnych poza procesami
Komunikacja miedzyprocesowa (IPC)
sockety (UNIX)
pseudostandardy zalezne od systemu
łatwe skalowanie na systemy rozproszone
poziom bitów i bajtów a nie procedur
Zdalne wywołania procedur
Odwołania do obiektów
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 26 / 50
49. Połaczenia binarne Komunikacja lokalna
Biblioteki
Zbiór procedur / podprogramów / klas
Operacje i dane
Działanie z róznymi programami
Modularnosc
Powiazania przez linkera (konsolidatora)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 28 / 50
50. Połaczenia binarne Komunikacja lokalna
Biblioteki statyczne
Jedyne na poczatku
Archiwum
Kopiowanie kodu do pliku wykonywalnego
Łaczenie po nazwie / symbolu
Adresy wzgledne i symboliczne −! adresy bezwzgledne
”smart linking”
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 29 / 50
51. Połaczenia binarne Komunikacja lokalna
Biblioteki dynamiczne
Indeks procedur
Szybsze linkowanie — znajdowanie indeksu
Wgrywanie w trakcie wykonania programu
uruchomienie programu
wywołanie procedury
Loader czescia systemu operacyjnego
Biblioteki współdzielone
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 30 / 50
52. Połaczenia binarne Komunikacja lokalna
Pluginy
Biblioteki dynamiczne
Ten sam lub podobny interfejs
Inna funkcjonalnosc
Mozliwosc dynamicznej podmiany
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 31 / 50
60. Połaczenia binarne Komunikacja miedzymaszynowa
Remote Procedure Call
Zakonczenia −! procedury szczatkowe (namiastki)
Wrazenie lokalnego wywołania
namiastka wywołujaca
linearyzacja parametrów (na format sieciowy)
przesłanie przez siec
namistka odbierajaca
delinearyzacja parametrów (na format lokalny)
wywołanie rzeczywistej procedury
Przezroczystosc - i zaleta i wada
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 39 / 50
61. Połaczenia binarne Komunikacja miedzymaszynowa
Distributed Computing Environment [*]
Pierwszy rozproszony system (poczatek lat 90-tych)
RPC
IDL
Katalog usług
Autentykacja
UUID — Universally Unique Identifier
Namiastkowe biblioteki dynamiczne
Rozproszony system plików
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 40 / 50
62. Zasady dla paczek binarnych
Plan wykładu
1 Rozwiazywanie zaleznosci
Typowe rozwiazanie
Delegacja konkretyzacji
Odwrócone sterowanie
Framework
2 Połaczenia binarne
Wprowadzenie
Komunikacja lokalna
Komunikacja miedzyprocesowa
Komunikacja miedzymaszynowa
3 Zasady dla paczek binarnych
4 Standardy
5 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 41 / 50
63. Zasady dla paczek binarnych
RCC — Spójnosc paczek
Release/Reuse Equivalence Principle
Common Reuse Principle
Common Closure Principle
SOLID
CCP = SRP + OCP dla paczek
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
64. Zasady dla paczek binarnych
RCC — Spójnosc paczek
Release/Reuse Equivalence Principle
Common Reuse Principle
Common Closure Principle
SOLID
CCP = SRP + OCP dla paczek
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
65. Zasady dla paczek binarnych
RCC — Spójnosc paczek
Release/Reuse Equivalence Principle
Common Reuse Principle
Common Closure Principle
SOLID
CCP = SRP + OCP dla paczek
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
66. Zasady dla paczek binarnych
RCC — Spójnosc paczek
Release/Reuse Equivalence Principle
Common Reuse Principle
Common Closure Principle
SOLID
CCP = SRP + OCP dla paczek
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
67. Zasady dla paczek binarnych
RCC — Spójnosc paczek
Release/Reuse Equivalence Principle
Common Reuse Principle
Common Closure Principle
SOLID
CCP = SRP + OCP dla paczek
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 42 / 50
68. Zasady dla paczek binarnych
ASS — Zaleznosci miedzy paczkami
Acyclic Dependencies Principle
Stable Dependencies Principle
Stable Abstractions Principle
SOLID
SDP + SAP = DIP dla paczek
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
69. Zasady dla paczek binarnych
ASS — Zaleznosci miedzy paczkami
Acyclic Dependencies Principle
Stable Dependencies Principle
Stable Abstractions Principle
SOLID
SDP + SAP = DIP dla paczek
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
70. Zasady dla paczek binarnych
ASS — Zaleznosci miedzy paczkami
Acyclic Dependencies Principle
Stable Dependencies Principle
Stable Abstractions Principle
SOLID
SDP + SAP = DIP dla paczek
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
71. Zasady dla paczek binarnych
ASS — Zaleznosci miedzy paczkami
Acyclic Dependencies Principle
Stable Dependencies Principle
Stable Abstractions Principle
SOLID
SDP + SAP = DIP dla paczek
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
72. Zasady dla paczek binarnych
ASS — Zaleznosci miedzy paczkami
Acyclic Dependencies Principle
Stable Dependencies Principle
Stable Abstractions Principle
SOLID
SDP + SAP = DIP dla paczek
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 43 / 50
73. Standardy
Plan wykładu
1 Rozwiazywanie zaleznosci
Typowe rozwiazanie
Delegacja konkretyzacji
Odwrócone sterowanie
Framework
2 Połaczenia binarne
Wprowadzenie
Komunikacja lokalna
Komunikacja miedzyprocesowa
Komunikacja miedzymaszynowa
3 Zasady dla paczek binarnych
4 Standardy
5 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 44 / 50
74. Standardy
Standardy
CORBA
COM / DCOM / COM+ / OLE / ActiveX
.NET, WCF
RMI, EJB / Spring
XML-RPC, SOAP, REST
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 45 / 50
75. Standardy
Problemy
Róznorodnosc standardów
Specyfikowanie interfejsów
IDL — rózne
Łaczenie interfejsów
1 do 1 (CORBA, SOM)
wiele do 1 (Java)
wiele do wiele (COM)
Nazwy (UUID, GUID, IID, CATID, CLSID)
Polimorfizm
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 46 / 50
76. Podsumowanie
Plan wykładu
1 Rozwiazywanie zaleznosci
Typowe rozwiazanie
Delegacja konkretyzacji
Odwrócone sterowanie
Framework
2 Połaczenia binarne
Wprowadzenie
Komunikacja lokalna
Komunikacja miedzyprocesowa
Komunikacja miedzymaszynowa
3 Zasady dla paczek binarnych
4 Standardy
5 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 47 / 50
78. Podsumowanie
Do domu
Opanowac IoC i DI
Zaznajomic sie z przykładowym frameworkiem komponentowym
Przypomniec sobie w praktyce połaczenia miedzy binarnymi
elementami programu
Przeczytac 2. rozdział z „Developer’s Guide to Microsoft Unity”
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #4 49 / 50