SlideShare a Scribd company logo
1 of 30
Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

1 / 15
Programowanie Komponentowe
Wykład #E: Podsumowanie
Mikołaj Olszewski
Wydział Zastosowań Informatyki i Matematyki
Szkoły Głównej Gospodarstwa Wiejskiego

14.01.2014

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

2 / 15
Plan wykładu

1

Przegląd

2

Wnioski

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

3 / 15
Przegląd

Plan wykładu

1

Przegląd

2

Wnioski

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

4 / 15
Przegląd

Programowanie komponentowe

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

5 / 15
Przegląd

Programowanie komponentowe

budowa programu z gotowych,
reużywalnych i
samowystarczalnych
komponentów (klocków)
wymagania: interfejs,
połączenia, wersjonowanie,
wdrażanie
rozmaite rozmiary i „kształty”
programowanie interfejsowe,
implementacja nieistotna

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

5 / 15
Przegląd

Komponent

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

6 / 15
Przegląd

Komponent

Komponent
jest kawałkiem samowystarczalnego
i samowdrażającego się kodu komputerowego
z dobrze zdefiniowaną funkcjonalnością
i może być połączony z innymi komponentami poprzez interfejs
Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

6 / 15
Przegląd

Wymagania

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

7 / 15
Przegląd

Wymagania

(re)używalność
bezobsługowość
pełna specyfikacja zależności
wyspecyfikowana funkcjonalność
użycie wyłącznie na podstawie w/w specyfikacji
kompatybilność z innymi komponentami
łatwa integracja z systemem

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

7 / 15
Przegląd

Obiekty a komponenty

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

8 / 15
Przegląd

Obiekty a komponenty

Obiekty
• oparte na obiektach
• dziedziczenie klas
• częściowa hermetyzacja
• ścisłe powiązania
• reużywalność niskopoziomowa
• implementacja
• polimorfizm
• późne wiązanie wywołań
• zależne od języka

Mikołaj Olszewski (WZIM SGGW)

Komponenty
• oparte na interfejsach
• dziedziczenie interfejsów
• pełna hermetyzacja
• luźne powiązania
• reużywalność wysokopoziomowa
• paczkowanie i rozprowadzanie
• konfiguracja wdrożenia
• późne wiązanie i ładowanie kodu
• powtórne użycie binariów

Programowanie Komponentowe

Wykład #E

8 / 15
Przegląd

Moduły a komponenty

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

9 / 15
Przegląd

Moduły a komponenty
moduły

komponenty

udostępnianie i
konsumowanie kodu

udostępnianie i
konsumowanie kodu

oddzielne jednostki
uruchomieniowe

oddzielne jednostki
uruchomieniowe

zarządzają zależnościami

wymagają zewnętrznego
zarządzania (niekoniecznie
przez moduły)

zorientowane na statyczny
kod

zorientowane na instancje

zależności czasu
kompilacji

zależności czasu
wykonania
mogą być spakowane w
moduły

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

9 / 15
Przegląd

Przydatne techniki

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

10 / 15
Przegląd

Przydatne techniki

SOLIDne programowanie obiektowe

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

10 / 15
Przegląd

Przydatne techniki

SOLIDne programowanie obiektowe
Delegaty i domieszki

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

10 / 15
Przegląd

Przydatne techniki

SOLIDne programowanie obiektowe
Delegaty i domieszki
Wzorce projektowe

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

10 / 15
Przegląd

Przydatne techniki

SOLIDne programowanie obiektowe
Delegaty i domieszki
Wzorce projektowe
Odwrócone sterowanie / Wstrzykiwanie zależności

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

10 / 15
Przegląd

Przydatne techniki

SOLIDne programowanie obiektowe
Delegaty i domieszki
Wzorce projektowe
Odwrócone sterowanie / Wstrzykiwanie zależności
Wersjonowanie i kompatybilność

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

10 / 15
Przegląd

Przydatne techniki

SOLIDne programowanie obiektowe
Delegaty i domieszki
Wzorce projektowe
Odwrócone sterowanie / Wstrzykiwanie zależności
Wersjonowanie i kompatybilność
Programowanie zdarzeniowe

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

10 / 15
Przegląd

Przydatne techniki

SOLIDne programowanie obiektowe
Delegaty i domieszki
Wzorce projektowe
Odwrócone sterowanie / Wstrzykiwanie zależności
Wersjonowanie i kompatybilność
Programowanie zdarzeniowe
Programowanie asynchroniczne

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

10 / 15
Przegląd

Przydatne techniki

SOLIDne programowanie obiektowe
Delegaty i domieszki
Wzorce projektowe
Odwrócone sterowanie / Wstrzykiwanie zależności
Wersjonowanie i kompatybilność
Programowanie zdarzeniowe
Programowanie asynchroniczne
Programowanie aspektowe

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

10 / 15
Przegląd

Technologe komponentowe

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

11 / 15
Przegląd

Technologe komponentowe
Świat windowsa
COM+/OLE
.NET/CLR
WinRT

Świat niezależny
CORBA
JavaBeans
Spring, JEE
OSGi (DS, Blueprint, iPOJO)
Usługi sieciowe (SOAP, REST, WebAPI)
Komponenty webowe

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

11 / 15
Przegląd

Technologe komponentowe
Świat windowsa
COM+/OLE
.NET/CLR
WinRT

Świat niezależny
CORBA
JavaBeans
Spring, JEE
OSGi (DS, Blueprint, iPOJO)
Usługi sieciowe (SOAP, REST, WebAPI)
Komponenty webowe

Głosowanie
Która technologia komponentowa w/g Państwa jest najlepsza?
Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

11 / 15
Przegląd

Statystyki

Statystyki

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

12 / 15
Wnioski

Plan wykładu

1

Przegląd

2

Wnioski

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

13 / 15
Wnioski

Zasady programowania komponentowego
1

2

3
4

5
6

7

Pracuj z interfejsami wszędzie, gdzie się tylko da i to jak najwyższego
poziomu, np. zamiast List<...> używaj IList<...>, lub lepiej
ICollection<...> lub jeszcze lepiej IEnumerable<...>
Oddzielaj interfejsy od implementacji (najlepiej nie tylko logicznie ale
również binarnie), np. pliki z interfejsami umieść w innym folderze niż
pliki z klasami implementującymi te interfejsy a jeszcze lepiej umieść
je w innym projekcie
Stosuj zasady SOLID.
Dbaj o wysoką zwartość klas i luźne powiązania między nimi.
Przedkładaj kompozycję i agregację nad dziedziczenie.
Korzystaj z wzorców projektowych.
Do łączenia komponentów ze sobą i do rozwiązywania zależności
używaj kontenerów IoC.
Funkcjonalności przekrojowe zaimplementuj w oddzielnych
komponentach i wprowadź je do programu korzystając z AOP.

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

14 / 15
Wnioski

Mikołaj Olszewski (WZIM SGGW)

Programowanie Komponentowe

Wykład #E

15 / 15

More Related Content

Viewers also liked

Programowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do SpringaProgramowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do Springa
Mikołaj Olszewski
 
Programowanie Komponentowe: #6 Wersjonowanie
Programowanie Komponentowe: #6 WersjonowanieProgramowanie Komponentowe: #6 Wersjonowanie
Programowanie Komponentowe: #6 Wersjonowanie
Mikołaj Olszewski
 
Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...
Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...
Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...
Mikołaj Olszewski
 
Programowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java BeansProgramowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java Beans
Mikołaj Olszewski
 
Programowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springaProgramowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springa
Mikołaj Olszewski
 
Programowanie Komponentowe: #D Model komponentowy OSGi
Programowanie Komponentowe: #D Model komponentowy OSGiProgramowanie Komponentowe: #D Model komponentowy OSGi
Programowanie Komponentowe: #D Model komponentowy OSGi
Mikołaj Olszewski
 
Kwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikoweKwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikowe
Mikołaj Olszewski
 
Optyczne solitony przestrzenne
Optyczne solitony przestrzenneOptyczne solitony przestrzenne
Optyczne solitony przestrzenne
Mikołaj Olszewski
 

Viewers also liked (14)

Programowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do SpringaProgramowanie Komponentowe: #A Wprowadzenie do Springa
Programowanie Komponentowe: #A Wprowadzenie do Springa
 
Programowanie Komponentowe: #6 Wersjonowanie
Programowanie Komponentowe: #6 WersjonowanieProgramowanie Komponentowe: #6 Wersjonowanie
Programowanie Komponentowe: #6 Wersjonowanie
 
Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...
Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...
Programowanie Komponentowe: #7 Programowanie asynchroniczne i sterowane zdarz...
 
Programowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java BeansProgramowanie Komponentowe: #9 Java Beans
Programowanie Komponentowe: #9 Java Beans
 
Materiały fotorefrakcyjne
Materiały fotorefrakcyjneMateriały fotorefrakcyjne
Materiały fotorefrakcyjne
 
Programowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springaProgramowanie Komponentowe: #B Komponentowe aspekty springa
Programowanie Komponentowe: #B Komponentowe aspekty springa
 
The metadata driven e-laboratory web client
The metadata driven e-laboratory web clientThe metadata driven e-laboratory web client
The metadata driven e-laboratory web client
 
Programowanie Komponentowe: #D Model komponentowy OSGi
Programowanie Komponentowe: #D Model komponentowy OSGiProgramowanie Komponentowe: #D Model komponentowy OSGi
Programowanie Komponentowe: #D Model komponentowy OSGi
 
Parallel quicksort cz. 2
Parallel quicksort cz. 2Parallel quicksort cz. 2
Parallel quicksort cz. 2
 
Kwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikoweKwantowe struktury półprzewodnikowe
Kwantowe struktury półprzewodnikowe
 
Optyczne solitony przestrzenne
Optyczne solitony przestrzenneOptyczne solitony przestrzenne
Optyczne solitony przestrzenne
 
Architektura heksagonalna
Architektura heksagonalnaArchitektura heksagonalna
Architektura heksagonalna
 
Lokalne sieci światłowodowe
Lokalne sieci światłowodoweLokalne sieci światłowodowe
Lokalne sieci światłowodowe
 
Optyka ciekłych kryształów
Optyka ciekłych kryształówOptyka ciekłych kryształów
Optyka ciekłych kryształów
 

Similar to Programowanie Komponentowe: #E Podsumowanie

Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzke
GaldoMedia
 
AngularJS szkolenie wewnętrzne (into)
AngularJS szkolenie wewnętrzne (into)AngularJS szkolenie wewnętrzne (into)
AngularJS szkolenie wewnętrzne (into)
Marcin Baran
 

Similar to Programowanie Komponentowe: #E Podsumowanie (20)

Angular2 - Co jest grane?!?!
Angular2 - Co jest grane?!?! Angular2 - Co jest grane?!?!
Angular2 - Co jest grane?!?!
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzke
 
JavaEE + OSGi
JavaEE + OSGiJavaEE + OSGi
JavaEE + OSGi
 
Girls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząćGirls in It - Front-end & Back-end. Jak zacząć
Girls in It - Front-end & Back-end. Jak zacząć
 
Architektura z bliska i daleka #CodeteCon
Architektura z bliska i daleka #CodeteConArchitektura z bliska i daleka #CodeteCon
Architektura z bliska i daleka #CodeteCon
 
AngularJS szkolenie wewnętrzne (into)
AngularJS szkolenie wewnętrzne (into)AngularJS szkolenie wewnętrzne (into)
AngularJS szkolenie wewnętrzne (into)
 
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQLAutomatyzacja tworzenia frontendu z wykorzystaniem GraphQL
Automatyzacja tworzenia frontendu z wykorzystaniem GraphQL
 
Ext js
Ext jsExt js
Ext js
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
 
Architektura aplikacji android
Architektura aplikacji androidArchitektura aplikacji android
Architektura aplikacji android
 
Czy można napisać dobry MONOLIT?
Czy można napisać dobry MONOLIT?Czy można napisać dobry MONOLIT?
Czy można napisać dobry MONOLIT?
 
PSD2WP: kodowanie dedykowanych motywów dla WordPressa w modelu komponentowym
PSD2WP: kodowanie dedykowanych motywów dla WordPressa w modelu komponentowymPSD2WP: kodowanie dedykowanych motywów dla WordPressa w modelu komponentowym
PSD2WP: kodowanie dedykowanych motywów dla WordPressa w modelu komponentowym
 
Case study zarządzanie projektem wdrożenia erp w przedsiębiorstwie it
Case study   zarządzanie projektem wdrożenia erp w przedsiębiorstwie itCase study   zarządzanie projektem wdrożenia erp w przedsiębiorstwie it
Case study zarządzanie projektem wdrożenia erp w przedsiębiorstwie it
 
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
Code driven development w Drupalu 7 | DrupalCamp Wrocław 2014
 
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuTechnologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
 
iOS 101 || iOS From The Very Beginning #1
iOS 101 || iOS From The Very Beginning #1iOS 101 || iOS From The Very Beginning #1
iOS 101 || iOS From The Very Beginning #1
 
Droids On Roids - iOS 101, live coding
Droids On Roids - iOS 101, live codingDroids On Roids - iOS 101, live coding
Droids On Roids - iOS 101, live coding
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki kodu
 
Aplikacje mobilne tworzone w technologiach webowych
Aplikacje mobilne tworzone w technologiach webowychAplikacje mobilne tworzone w technologiach webowych
Aplikacje mobilne tworzone w technologiach webowych
 

More from Mikołaj Olszewski

More from Mikołaj Olszewski (10)

Optoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronoweOptoelektroniczne sieci neuronowe
Optoelektroniczne sieci neuronowe
 
Swiatłowodowy czujnik prądu
Swiatłowodowy czujnik prąduSwiatłowodowy czujnik prądu
Swiatłowodowy czujnik prądu
 
Metody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowychMetody efektywnego łączenia sieci neuronowych
Metody efektywnego łączenia sieci neuronowych
 
Parallel quicksort cz. 1
Parallel quicksort cz. 1Parallel quicksort cz. 1
Parallel quicksort cz. 1
 
Maszyna Turinga
Maszyna TuringaMaszyna Turinga
Maszyna Turinga
 
Planowanie działań cz. 2
Planowanie działań cz. 2Planowanie działań cz. 2
Planowanie działań cz. 2
 
Planowanie działań cz. 1
Planowanie działań cz. 1Planowanie działań cz. 1
Planowanie działań cz. 1
 
Model hierarchiczny
Model hierarchicznyModel hierarchiczny
Model hierarchiczny
 
Komputer genetyczny
Komputer genetycznyKomputer genetyczny
Komputer genetyczny
 
Test wyszukiwarek internetowych
Test wyszukiwarek internetowychTest wyszukiwarek internetowych
Test wyszukiwarek internetowych
 

Programowanie Komponentowe: #E Podsumowanie