Prezentul normativ se aplică la proiectarea structurilor de fundare directă pentru clădirile de
locuit şi social – culturale, construcţiile industriale şi agrozootehnice.
La proiectarea structurilor de fundare directă în condiţii speciale de teren (pământuri sensibile la
umezire, pământuri contractile, pământuri lichefiabile) se au în vedere şi măsurile suplimentare din
reglementările tehnice în vigoare specifice acestor cazuri
Prezentul normativ se aplică la proiectarea structurilor de fundare directă pentru clădirile de
locuit şi social – culturale, construcţiile industriale şi agrozootehnice.
La proiectarea structurilor de fundare directă în condiţii speciale de teren (pământuri sensibile la
umezire, pământuri contractile, pământuri lichefiabile) se au în vedere şi măsurile suplimentare din
reglementările tehnice în vigoare specifice acestor cazuri
In presentation the idea of automatically generated web interface for remote laboratory is presented. The concept is based on suitably prepared set of metadata, that is used to generate web client. In presented solution each remote experiment, sends metadata concerning user interface just before experiment session is started.
Main advantages of this solution include: easier deployment and decreased development costs. This concept can be applied for various e-learning areas. The working example of such interface is shown and discussed.
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...GOG.com dev team
GWINT jako gra online nastawiona na obsługę milionów graczy wymaga wyjątkowo skalowalnej architektury. Opowiemy między innymi o tym:
– jak API zbudowane na Symfony w modelu mikro serwisów wykorzystuje asynchroniczną komunikację pomiędzy usługami i klientem (system notyfikacji),
– jak optymalizujemy procesowanie zdarzeń wymagających współpracy kilku usług (kolejki zadań), jak monitorujemy i testujemy integrację poszczególnych webservice’ów. Przewiną się także technologie takie jak: PHP7, HHVM, RabbitMq, Redis,
Krzysztof Sobczak GOG.com Team
The document discusses hexagonal architecture and how it can be applied to PHP applications. It begins by defining software architecture and its importance. It then explains hexagonal architecture, which separates an application into distinct layers including domain, application, and infrastructure layers. The layers are decoupled via defined boundaries and interfaces. Commands are used to communicate between layers and are handled by command buses and handlers. Examples are given of implementing repositories, commands and handlers to follow this pattern in a PHP application.
O zagadnieniu:
Czy następuje taki moment w życiu programisty, kiedy może on stwierdzić, że jego warsztat jest już doskonały? Nie, jeżeli pracuje w technologiach internetowych. Ta dziedzina informatyki rozwija się w niesamowicie szybkim tempie, a stworzone wczoraj rozwiązania warto stosować już dziś!
Cel i korzyści spotkania:
Podczas spotkania słuchacze poznają aktualnie wykorzystywane technologie oraz kluczowe umiejętności w produkcji aplikacji internetowych, jak również metody programowania ekstremalnego i techniki zwinnego wytwarzania oprogramowania. Osobom, które dopiero zaczynają swoją przygodę z web development, zostanie przedstawiona propozycja działań, których sumienne podjęcie się gwarantuje odniesienie sukcesu zawodowego.
Jak zorganizować sobie Continuous Integration i Continuous Delivery w projekcie o niezwykle małym budżecie
W trakcie prezentacji dotknięte zostaną następujące zagadnienia:
- sposób organizacji projektu pod kątem wprowadzania CI / CD
- użycie kontenerów w celu przeprowadzania wyżej wymienionych procesów
- zalecenia odnośnie stosowania narzędzi takich jak TeamCity, Docker, Ansible, Git, Make, skrypty Bash, Phing itp.
- wskazanie pułapek o których trzeba pamiętać
Poznaj jedno z najpopularniejszych narzędzi programistycznych
Środowisko programistyczne Delphi od lat cieszy się zasłużoną popularnością wśród twórców oprogramowania. Potężne narzędzie programistyczne, oparte na popularnym języku Pascal, było prekursorem środowisk wizualnych, w których tworzenie aplikacji przypomina budowanie modelu z klocków. Kolejne wersje Delphi były wykorzystywane do tworzenia przeróżnych aplikacji -- począwszy od prostych programików, a skończywszy na rozbudowanych systemach bazodanowych. Najnowsza wersja, oznaczona symbolem 2006, umożliwia tworzenie aplikacji dla platformy .NET oraz "tradycyjnych" aplikacji Win32.
Książka "ABC Delphi 2006" to wprowadzenie do programowania w tym środowisku. Na praktycznych przykładach przedstawia najnowszą wersję Delphi, język Object Pascal oraz filozofię tworzenia aplikacji na podstawie komponentów VCL. Czytając ją, poznasz środowisko programistyczne, elementy języka Object Pascal oraz zasady programowania strukturalnego i obiektowego. Nauczysz się budować własne aplikacje dla systemu Windows oraz wykorzystywać i tworzyć komponenty VCL. Zdobędziesz solidne podstawy do dalszej nauki programowania w Delphi.
* Struktura projektu w Delphi
* Typy danych i zmienne
* Instrukcje sterujące, pętle i wyrażenia warunkowe
* Programowanie obiektowe
* Wykrywanie i usuwanie błędów w kodzie
* Korzystanie z komponentów VCL
* Programowanie grafiki
* Operacje na plikach i drukowanie
* Zapisywanie informacji w rejestrze Windows
* Projektowanie komponentów
Pobierz rozdziały: 12, 13 i 14 jako pliki PDF.
Zostań profesjonalnym programistą C#
C# jest uważany przez wielu programistów za najlepszy język stosowany do tworzenia aplikacji dla platformy .NET. Język ten, opracowany w firmie Microsoft, łączy w sobie najbardziej wartościowe cechy C++ i Javy, ścisłą integrację z komponentami .NET, wysoki poziom bezpieczeństwa i ogromne możliwości. Świetnie nadaje się do tworzenia aplikacji sieciowych i bazodanowych przeznaczonych zarówno dla systemu Windows, jak i dla urządzeń przenośnych, takich jak PocketPC. Popularność C# stale rośnie, a nieodpłatne udostępnienie przez firmę Microsoft środowiska programistycznego Visual C# Express Edition sprawiło, że coraz więcej twórców oprogramowania wykorzystuje je w swojej pracy.
Książka "Wstęp do programowania w języku C#" to podręcznik przeznaczony dla tych, którzy chcą poznać ten język od podstaw. Czytając ją, poznasz możliwości C# i platformy .NET. Nauczysz się tworzyć własne aplikacje, korzystając ze środowiska Visual C# Express Edition. W książce znajdziesz omówienie składni i elementów języka C#, wyjaśnienie zasad programowania obiektowego i sposobów realizacji różnych zadań programistycznych. Napiszesz aplikacje dla Windows wykorzystujące biblioteki klas .NET i obsługujące pliki w formacie XML.
* Konstrukcja platformy .NET
* Składnia C#
* Elementy języka
* Programowanie obiektowe
* Obsługa zdarzeń
* Korzystanie z tablic i kolekcji
* Obsługa wyjątków
* Biblioteka Windows Forms
* Stosowanie komponentów .NET
* Operacje na plikach i strumieniach
* Obsługa formatu XML
Podczas prelekcji dowiesz się o co chodzi z RxJS, do czego jest ono przydatne Angularowi. Celem wystąpienia jest zaprezentowanie tworzenia oprogramowania zgodnie z paradygmatem programowania reaktywnego.
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Wydawnictwo Helion
Przy tworzeniu systemów informatycznych najważniejsze zadania wykonuje się, zanim powstanie pierwszy fragment kodu źródłowego. Wymogi stawiane współczesnym aplikacjom powodują, że inżynieria oprogramowania staje się kwestią kluczową. Opracowanie odpowiedniego projektu oraz właściwy dobór technologii i metodologii zapewniają szybką i efektywną pracę nad systemem. Niezwykle ważne jest poznanie dostępnych w języku Java struktur danych i umiejętność ich wykorzystania. Prawidłowo dobrana struktura danych znacznie przyspiesza nie tylko implementację aplikacji, ale również działanie gotowego systemu.
Książka "Struktury danych i techniki obiektowe na przykładzie Javy 5.0" przedstawia podstawowe struktury danych i sposoby ich wykorzystania podczas programowania obiektowego. Wszystkie wiadomości zostały zaprezentowane z uwzględnieniem reguł nowoczesnej inżynierii oprogramowania. Czytając kolejne rozdziały książki, poznasz najlepsze zastosowania różnych struktur danych oraz wady i zalety ich implementacji. Przede wszystkim jednak zrozumiesz potrzebę stosowania tak wielu struktur danych.
* Cykl życia oprogramowania
* Zastosowanie języka UML w projektowaniu systemów
* Obsługa błędów i wyjątków
* Testowanie oprogramowania
* Dziedziczenie i hierarchia klas
* Listy jedno- i dwukierunkowe
* Interfejs Collection
* Stosy i kolejki
* Algorytmy rekurencyjne
* Sortowanie danych
* Drzewa wyszukiwania
* Grafy
Po przeczytaniu tej książki zrozumiesz zasadę:
"Pomyśl, a dopiero potem pisz kod".
Naucz się języka C++ w najlepszy sposób:
poznając go z punktu widzenia inżynierii programowania
* Demonstruje praktyczne techniki stosowane przez zawodowych programistów
* Zawiera poprawny, gruntownie przetestowany przykładowy kod źródłowy programów oraz przykłady zaczerpnięte z praktyki
* Skoncentrowana na nowoczesnych technologiach, które muszą poznać programiści
* Zawiera rady profesjonalistów, które pozwolą czytelnikowi tworzyć najlepsze programy
Książka Wiktora Shterna zatytułowana "C++. Inżynieria programowania" stosuje wyjątkowy sposób nauki języka C++ przeznaczony dla programistów mających doświadczenie w dowolnym języku programowania: prezentuje możliwość zastosowania w C++ najlepszych technik programistycznych oraz metodologii inżynierii programowania. Nawet jeżeli już wcześniej wykorzystywałeś język C++, ta wyczerpująca książka przedstawi sposób tworzenia poprawniejszego kodu, łatwiejszego do utrzymania i modyfikacji.
Książka niniejsza uczy zasad programowania obiektowego przed samą nauką języka, co pozwala wykorzystać wszystkie zalety OOP do tworzenia poprawnych aplikacji. Udoskonalisz znajomość kluczowych składników standardu ANSI/ISO C++ rozpatrywanych z punktu widzenia inżyniera: klas, metod, modyfikatorów const, dynamicznego zarządzania pamięcią, złożeń klas, dziedziczenia, polimorfizmu, operacji wejścia-wyjścia i wielu innych. Jeżeli pragniesz tworzyć w języku C++ najlepsze programy, musisz projektować, myśleć i programować stosując najlepsze obecnie praktyki inżynierii programowania. Lektura książki "C++. Inżynieria programowania" pomoże Ci w tym.
Książka "C++. Inżynieria programowania" kładzie nacisk na:
* Prezentację zastosowań zasad inżynierii programowania w programach pisanych w C++
* Tworzenie kodu łatwego do późniejszych modyfikacji
* Praktyczne zrozumienie zasad programowania obiektowego przed nauką samego języka
* Przedstawienie najnowszych cech standardu ANSI/ISO C++
* Zaprezentowanie setek realistycznych przykładów kodu programów
Turbo Pascal, pomimo swojego "podeszłego" wieku cały czas uważany jest za doskonały język programowania dla celów dydaktycznych. Jego czytelna i prosta składnia, niewielki zestaw słów kluczowych i spore możliwości czynią go idealną platformą dla początkujących. Opanowanie Turbo Pascala nie tylko ułatwi poznawanie innych języków programowania, ale, co znacznie ważniejsze, nauczy myślenia algorytmicznego, które jest niezbędne każdemu programiście. Poza tym -- Turbo Pascal stał się podstawą języka Object Pascal wykorzystywanego w niezwykle popularnym dziś środowisku programistycznym Delphi.
"Turbo Pascal. Ćwiczenia praktyczne. Wydanie II" to kolejne wydanie najpopularniejszej w Polsce książki o Turbo Pascalu, sprawdzonej i wykorzystywanej przez nauczycieli informatyki. Znajdziesz w niej zbiór ćwiczeń, dzięki którym poznasz zasady programowania w tym języku. Nauczysz się rozwiązywać zadania programistyczne za pomocą algorytmów i dowiesz się, z jakich elementów składa się każdy program w Turbo Pascalu. Wykonując kolejne ćwiczenia poznasz instrukcje Turbo Pascala, stworzysz własne procedury i funkcje oraz nauczysz się kompilować i uruchamiać swoje programy.
* Algorytmy
* Schematy blokowe
* Korzystanie ze środowiska programistycznego Turbo Pascal
* Pętle i konstrukcje warunkowe
* Operacje wejścia i wyjścia
* Funkcje i procedury
* Tablice
* Obsługa plików
* Tworzenie grafiki
Przekrocz granicę pomiędzy użytkowaniem i programowaniem komputera.
Czym jest emc? I jak wpływa na biznes [Akademia EMC - Tomasz Utkowski]Tomasz Utkowski
Kompatybilność elektromagnetyczna dla osób zarządzających projektami rozwoju i produkcji elektroniki. Krótka prezentacja na temat najważniejszych tematów dla osób podejmujących decyzje.
4Developers 2015: Couple of words about testing in Java, Spock and BDD - Piot...PROIDEA
Speaker: Piotr Kiebasiński
Language: Polish
Testy jednostkowe traktowane są często przez programistów jako zło konieczne, coś co powoduje opóźnienie przy dostarczeniu oprogramowania albo niepotrzebnie dokłada pracy.
Podczas wykładu będę chciał pokazać, że testowanie może mieć sens, być efektywne, zmniejszyć ilość czasu spędzonego nad kodem i wydatnie podnieść zarówno tempo pracy jak i jej jakość. Odwołam się przy tym do metodyki BDD oraz do wykorzystania frameworka Spock.
4Developers: http://4developers.org.pl/pl/
PHP to język umożliwiający tworzenie aplikacji sieciowych uruchamianych po stronie serwera. Jego najnowsza wersja, oznaczona numerem 5, to w pełni obiektowy język, za pomocą którego można budować nawet najbardziej złożone systemy portalowe, intranetowe i ekstranetowe. Dzięki nowym funkcjom wprowadzonym w PHP 5 możliwe jest korzystanie z plików XML i protokołu SOAP, wydajna komunikacja z bazą danych i stosowanie technik obiektowych znacznie ułatwiających i przyspieszających tworzenie rozbudowanych aplikacji.
"PHP5. Zaawansowane programowanie" to książka przedstawiająca potężne możliwości i elastyczność najnowszej wersji tej popularnej platformy programistycznej. Opisuje podstawowe zasady programowania obiektowego i prowadzenia rozbudowanych projektów informatycznych. Zawiera informacje o modelowaniu aplikacji w języku UML, stosowaniu wzorców projektowych i tworzeniu narzędzi, które będzie można wykorzystać w każdym projekcie. Przedstawia również analizę prawdziwego przypadku -- systemu automatyzującego pracę działu sprzedaży w przedsiębiorstwie handlowym.
* Programowanie obiektowe
* Język UML i modelowanie systemów
* Wzorce projektowe
* Tworzenie prostych narzędzi obiektowych
* Połączenia z bazami danych
* Model MVC
* Stosowanie protokołu SOAP
* Komunikacja z użytkownikiem i mechanizmy sesji
* Testowanie aplikacji
* Studium przypadku – automatyzacja pracy działu sprzedaży
Jeśli chcesz poznać zaawansowane możliwości PHP 5, sięgnij po tę książkę.
Similar to Programowanie Komponentowe: #1 Wprowadzenie (20)
This document describes sequential and parallel quicksort algorithms. Sequential quicksort has average complexity of O(n log n) but worst case of O(n^2). Parallel quicksort partitions the array, sorts subarrays in parallel threads, and waits for threads to complete to improve performance over sequential quicksort. It uses a queue to store threads if processors are busy and chooses split keys through various methods like first element or median. New threads are only created if the subarray size is above a minimum to reduce overhead.
2. Programowanie Komponentowe
Wykład #1: Wprowadzenie
Mikołaj Olszewski
Wydział Zastosowan Informatyki i Matematyki
Szkoły Głównej Gospodarstwa Wiejskiego
7.10.2014
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 2 / 40
3. Plan wykładu
1 Wstep
2 W strone programowania komponentowego
3 Dlaczego programowanie komponentowe?
4 Komponenty
Formalizmy
Wady i Zalety
5 Od programowania obiektowego do komponentowego
6 Inzynieria komponentowa
7 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 3 / 40
4. Wstep
Plan wykładu
1 Wstep
2 W strone programowania komponentowego
3 Dlaczego programowanie komponentowe?
4 Komponenty
Formalizmy
Wady i Zalety
5 Od programowania obiektowego do komponentowego
6 Inzynieria komponentowa
7 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 4 / 40
5. Wstep
Korzysci
programowanie z satysfakcja
zrozumienie obiektowosci
poznanie biezacych trendów w programowaniu
poznanie topowych bibliotek i frameworków
poznanie standardowego warsztatu programisty
szybsze tworzenie programów
lepsza praca i . . . płaca
Ale. . .
. . . nie dla wszystkich
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 5 / 40
6. Wstep
Korzysci
programowanie z satysfakcja
zrozumienie obiektowosci
poznanie biezacych trendów w programowaniu
poznanie topowych bibliotek i frameworków
poznanie standardowego warsztatu programisty
szybsze tworzenie programów
lepsza praca i . . . płaca
Ale. . .
. . . nie dla wszystkich
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 5 / 40
7. Wstep
Korzysci
programowanie z satysfakcja
zrozumienie obiektowosci
poznanie biezacych trendów w programowaniu
poznanie topowych bibliotek i frameworków
poznanie standardowego warsztatu programisty
szybsze tworzenie programów
lepsza praca i . . . płaca
Ale. . .
. . . nie dla wszystkich
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 5 / 40
8. Wstep
Korzysci
programowanie z satysfakcja
zrozumienie obiektowosci
poznanie biezacych trendów w programowaniu
poznanie topowych bibliotek i frameworków
poznanie standardowego warsztatu programisty
szybsze tworzenie programów
lepsza praca i . . . płaca
Ale. . .
. . . nie dla wszystkich
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 5 / 40
9. Wstep
Korzysci
programowanie z satysfakcja
zrozumienie obiektowosci
poznanie biezacych trendów w programowaniu
poznanie topowych bibliotek i frameworków
poznanie standardowego warsztatu programisty
szybsze tworzenie programów
lepsza praca i . . . płaca
Ale. . .
. . . nie dla wszystkich
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 5 / 40
10. Wstep
Korzysci
programowanie z satysfakcja
zrozumienie obiektowosci
poznanie biezacych trendów w programowaniu
poznanie topowych bibliotek i frameworków
poznanie standardowego warsztatu programisty
szybsze tworzenie programów
lepsza praca i . . . płaca
Ale. . .
. . . nie dla wszystkich
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 5 / 40
11. Wstep
Korzysci
programowanie z satysfakcja
zrozumienie obiektowosci
poznanie biezacych trendów w programowaniu
poznanie topowych bibliotek i frameworków
poznanie standardowego warsztatu programisty
szybsze tworzenie programów
lepsza praca i . . . płaca
Ale. . .
. . . nie dla wszystkich
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 5 / 40
12. Wstep
Korzysci
programowanie z satysfakcja
zrozumienie obiektowosci
poznanie biezacych trendów w programowaniu
poznanie topowych bibliotek i frameworków
poznanie standardowego warsztatu programisty
szybsze tworzenie programów
lepsza praca i . . . płaca
Ale. . .
. . . nie dla wszystkich
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 5 / 40
13. Wstep
Korzysci
programowanie z satysfakcja
zrozumienie obiektowosci
poznanie biezacych trendów w programowaniu
poznanie topowych bibliotek i frameworków
poznanie standardowego warsztatu programisty
szybsze tworzenie programów
lepsza praca i . . . płaca
Ale. . .
. . . nie dla wszystkich
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 5 / 40
14. Wstep
Załozenia
Znajomosc
UML
wzorców projektowych
C#
Javy
Umiejetnosc
projektowania i programowania obiektowego
tworzenia GUI
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 6 / 40
15. Wstep
Zakres tematyczny
1 Wprowadzenie
2 Teoria i inzynieria programowania komponentowego
3 Komponenty w srodowisku .NET
4 Komponenty na platformie Java
5 Model OSGi
6 Usługi sieciowe
Materiały i aktualnosci
https://canvas.instructure.com/courses/889506
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 7 / 40
16. Wstep
Laboratoria
Konieczne zaliczenie (> 50%) wejsciówki
Samodzielnosc i oryginalnosc rozwiazan
Kod w repozytorium na bitbuckecie
Prezentacja postepu projektu
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 8 / 40
17. Wstep
Projekt
Zespoły: 3 po 3
Wybór tematu — 19 X
Przydział technologii — 28 X
Dokumentacja wstepna — 18 XI
specyfikacja interfejsów
diagram UML
wybór technik
harmonogram i podział prac
Wersja instalacyjna i dokumentacja koncowa — 13 I
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 9 / 40
19. Wstep
Literatura
Szyperski Clemens, Oprogramowanie komponentowe. Obiekty to za
mało, WNT 2001
Andy Ju An Wang, Kai Qian, Component-Oriented Programming,
John Wiley & Sons 2005
Juval Lowy, Programming .NET Components, O’Reilly 2005
Ian Sommerville, Inzynieria oprogramowania, WNT 2003
John Cheesman, John Daniels, Komponenty w UML, WNT 2004
Craig Walls, Spring in Action, 3ed., Manning 2012
Richard S. Hall, Karl Pauls, Stuart McCulloch, David Savage, OSGi in
Action, Manning 2011.
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 11 / 40
20. W strone programowania komponentowego
Plan wykładu
1 Wstep
2 W strone programowania komponentowego
3 Dlaczego programowanie komponentowe?
4 Komponenty
Formalizmy
Wady i Zalety
5 Od programowania obiektowego do komponentowego
6 Inzynieria komponentowa
7 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 12 / 40
21. W strone programowania komponentowego
Czym jest programowanie?
Program — sekwencja instrukcji
wykonujacych pewne zadanie
Klasyfikacja ze wzgledu na techniki,
koncepcje lub uzyte srodki
maszyna Pascala (1642) —
przekładnie i korby
technika X — programownie X-owe
(X-oriented programming)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 13 / 40
22. W strone programowania komponentowego
Czym jest programowanie?
Program — sekwencja instrukcji
wykonujacych pewne zadanie
Klasyfikacja ze wzgledu na techniki,
koncepcje lub uzyte srodki
maszyna Pascala (1642) —
przekładnie i korby
technika X — programownie X-owe
(X-oriented programming)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 13 / 40
23. W strone programowania komponentowego
Czym jest programowanie?
Program — sekwencja instrukcji
wykonujacych pewne zadanie
Klasyfikacja ze wzgledu na techniki,
koncepcje lub uzyte srodki
maszyna Pascala (1642) —
przekładnie i korby
technika X — programownie X-owe
(X-oriented programming)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 13 / 40
24. W strone programowania komponentowego
Czym jest programowanie?
Program — sekwencja instrukcji
wykonujacych pewne zadanie
Klasyfikacja ze wzgledu na techniki,
koncepcje lub uzyte srodki
maszyna Pascala (1642) —
przekładnie i korby
technika X — programownie X-owe
(X-oriented programming)
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 13 / 40
25. W strone programowania komponentowego
X-oriented programming I
Programowanie przekładniowe
maszyna róznicowa Charlesa
Babbage’a (1822)
zmiana przekładni, zebów i kół
XIX-wieczny komputer parowy
(kompletny w sensie Turinga!)
Programowanie przełacznikowe
ENIAC (1942)
zmiana przełaczników (6000!)
Programowanie proceduralne
programy „wysokiego” poziomu
(Fortran, Pascal, C)
brak programujacych elementów
mechanicznych
ustrukturyzowany program
funkcjonalnosc zamknieta w zbiorze
procedur i funkcji
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 14 / 40
26. W strone programowania komponentowego
X-oriented programming I
Programowanie przekładniowe
maszyna róznicowa Charlesa
Babbage’a (1822)
zmiana przekładni, zebów i kół
XIX-wieczny komputer parowy
(kompletny w sensie Turinga!)
Programowanie przełacznikowe
ENIAC (1942)
zmiana przełaczników (6000!)
Programowanie proceduralne
programy „wysokiego” poziomu
(Fortran, Pascal, C)
brak programujacych elementów
mechanicznych
ustrukturyzowany program
funkcjonalnosc zamknieta w zbiorze
procedur i funkcji
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 14 / 40
27. W strone programowania komponentowego
X-oriented programming I
Programowanie przekładniowe
maszyna róznicowa Charlesa
Babbage’a (1822)
zmiana przekładni, zebów i kół
XIX-wieczny komputer parowy
(kompletny w sensie Turinga!)
Programowanie przełacznikowe
ENIAC (1942)
zmiana przełaczników (6000!)
Programowanie proceduralne
programy „wysokiego” poziomu
(Fortran, Pascal, C)
brak programujacych elementów
mechanicznych
ustrukturyzowany program
funkcjonalnosc zamknieta w zbiorze
procedur i funkcji
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 14 / 40
28. W strone programowania komponentowego
X-oriented programming II
Programowanie obiektowe
myslenie w kategorii typów danych (wbudowanych lub własnych)
podstawowe bloki
obiekty (zbiór danych w pamieci)
klasy (typ — co mozna) /nie zawsze wymagane/
Programowanie aspektowe
rozdzielenie odpowiedzialnosci — modularyzacja przekrojowych
funkcjonalnosci
wsparcie dla róznych rodzajów modularnosci
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 15 / 40
29. W strone programowania komponentowego
X-oriented programming II
Programowanie obiektowe
myslenie w kategorii typów danych (wbudowanych lub własnych)
podstawowe bloki
obiekty (zbiór danych w pamieci)
klasy (typ — co mozna) /nie zawsze wymagane/
Programowanie aspektowe
rozdzielenie odpowiedzialnosci — modularyzacja przekrojowych
funkcjonalnosci
wsparcie dla róznych rodzajów modularnosci
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 15 / 40
30. W strone programowania komponentowego
Programowanie komponentowe
budowa programu z gotowych,
reuzywalnych i
samowystarczalnych
komponentów (klocków)
wymagania: interfejs,
połaczenia, wersjonowanie,
wdrazanie
rozmaite rozmiary i „kształty”
programowanie interfejsowe,
implementacja nieistotna
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 16 / 40
31. Dlaczego programowanie komponentowe?
Plan wykładu
1 Wstep
2 W strone programowania komponentowego
3 Dlaczego programowanie komponentowe?
4 Komponenty
Formalizmy
Wady i Zalety
5 Od programowania obiektowego do komponentowego
6 Inzynieria komponentowa
7 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 17 / 40
32. Dlaczego programowanie komponentowe?
Rozwój systemów
Budowa z komponentów / integracja systemów
Naturalny element procesu inzynieryjnego
Przykłady: budynki, samochody, komputery
Zysk?
„software crisis”
Jak efektywnie tworzyc oprogramowanie?
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 18 / 40
33. Dlaczego programowanie komponentowe?
Cele programowania komponentowego I
1 Pokonywanie złozonosci
ogrom informacji (2000: 2 × 1018B, 2012: 2, 7 × 1021B)
rozmiar oprogramowania
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 19 / 40
34. Dlaczego programowanie komponentowe?
Cele programowania komponentowego I
1 Pokonywanie złozonosci
ogrom informacji (2000: 2 × 1018B, 2012: 2, 7 × 1021B)
rozmiar oprogramowania
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 19 / 40
35. Dlaczego programowanie komponentowe?
Cele programowania komponentowego II
2 Zarzadzanie zmiana
zmiana jest nieodzownym elementem wytwarzania programowania
(wymagania, specyfikacja, personel, budzet, technologia, itd.)
połozenie szczególnego nacisku na zaleznosci i zarzadzanie ich zmiana
komponenty sa łatwo adaptowalne do zmieniajacego sie srodowiska
3 Wielokrotne uzycie
zwiekszenie produktywnosci
poziomy: kopiowanie kodu, biblioteki procedur, biblioteki klas
programowanie komponentowe: white-box (OOP), gray-box, black-box
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 20 / 40
37. Komponenty
Plan wykładu
1 Wstep
2 W strone programowania komponentowego
3 Dlaczego programowanie komponentowe?
4 Komponenty
Formalizmy
Wady i Zalety
5 Od programowania obiektowego do komponentowego
6 Inzynieria komponentowa
7 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 22 / 40
38. Komponenty Formalizmy
Definicja I
Komponent
jest podstawowa jednostka oprogramowania
z deklaratywnie opisanymi interfejsami
i podanymi wprost zaleznosciami
Moze byc skonfigurowany i wdrozony niezaleznie od programisty, który go
stworzył.
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 23 / 40
39. Komponenty Formalizmy
Definicja II
Komponent
jest kawałkiem samowystarczalnego
i samowdrazajacego sie kodu komputerowego
z dobrze zdefiniowana funkcjonalnoscia
i moze byc połaczony z innymi komponentami poprzez interfejs
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 24 / 40
40. Komponenty Formalizmy
Wymagania
(re)uzywalnosc
bezobsługowosc
pełna specyfikacja zaleznosci
wyspecyfikowana funkcjonalnosc
uzycie wyłacznie na podstawie w/w specyfikacji
kompatybilnosc z innymi komponentami
łatwa integracja z systemem
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 25 / 40
42. Komponenty Formalizmy
Technologie
VisualBasic i VBX
COM/DCOM/COM+, ActiveX
CORBA
JavaBeans, EJB/Spring
.NET
OSGi
SOAP, UDDI
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 27 / 40
43. Komponenty Wady i Zalety
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 28 / 40
44. Komponenty Wady i Zalety
Zalety
zwiekszona niezawodnosc
zmniejszone zagrozenie procesu
efektywne wykorzystanie specjalistów
zgodnosc ze standardami
przyspieszone tworzenie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 29 / 40
45. Komponenty Wady i Zalety
Wady
zwiekszone koszty pielegnacji (brak zródeł)
brak lub słabe wspomaganie narzedziowe
przepisywanie (syndrom: „nie wymyslono tutaj”)
prowadzenie biblioteki komponentów
znajdowanie i adaptowanie komponentów
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 30 / 40
46. Od programowania obiektowego do komponentowego
Plan wykładu
1 Wstep
2 W strone programowania komponentowego
3 Dlaczego programowanie komponentowe?
4 Komponenty
Formalizmy
Wady i Zalety
5 Od programowania obiektowego do komponentowego
6 Inzynieria komponentowa
7 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 31 / 40
47. Od programowania obiektowego do komponentowego
Podstawy OOP
Paradygmaty OOP
Abstrakcja
Enkapsulacja (Hermetyzacja)
Polimorfizm
Dziedziczenie
Dziedziczenie łamie zasade hermatyzacji
Obiekty i klasy nie sa samowdrozeniowe
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 32 / 40
48. Od programowania obiektowego do komponentowego
Podstawy OOP
Paradygmaty OOP
Abstrakcja
Enkapsulacja (Hermetyzacja)
Polimorfizm
Dziedziczenie
Dziedziczenie łamie zasade hermatyzacji
Obiekty i klasy nie sa samowdrozeniowe
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 32 / 40
49. Od programowania obiektowego do komponentowego
Podstawy OOP
Paradygmaty OOP
Abstrakcja
Enkapsulacja (Hermetyzacja)
Polimorfizm
Dziedziczenie
Dziedziczenie łamie zasade hermatyzacji
Obiekty i klasy nie sa samowdrozeniowe
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 32 / 40
50. Od programowania obiektowego do komponentowego
Róznice miedzy komponentami a obiektami
Obiekty Komponenty
oparte na obiektach oparte na interfejsach
dziedziczenie klas dziedziczenie interfejsów
czesciowa hermetyzacja pełna hermetyzacja
scisłe powiazania luzne powiazania
reuzywalnosc niskopoziomowa reuzywalnosc wysokopoziomowa
implementacja paczkowanie i rozprowadzanie
polimorfizm konfiguracja wdrozenia
pózne wiazanie wywołan pózne wiazanie i ładowanie kodu
zalezne od jezyka powtórne uzycie binariów
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 33 / 40
51. Od programowania obiektowego do komponentowego
Mozliwosci stylów programowania
Mozliwosci SP OOP COP
Dziel i zwyciezaj X X X
Unifikacja danych i operacji X X
Hermetyzacja X X
Tozsamosc X X
Interfejs X
Wdrozenie X
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 34 / 40
52. Inzynieria komponentowa
Plan wykładu
1 Wstep
2 W strone programowania komponentowego
3 Dlaczego programowanie komponentowe?
4 Komponenty
Formalizmy
Wady i Zalety
5 Od programowania obiektowego do komponentowego
6 Inzynieria komponentowa
7 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 35 / 40
53. Inzynieria komponentowa
Inzynieria komponentowa
1 Specyfikacja
opis zachowania zbioru obiektów komponentowych w postaci zbioru
interfejsów
realizacja poprzez implementacje
2 Interfejs
definicja zbioru zachowan oferowanych przez komponent
3 Implementacja
realizacja specyfikacji
niezaleznosc wdrozeniowa (instalacja i wymiana)
moze zalezec od innych komponentów
4 Instalacja
instalacja/wdrozenie kopi implementacji komponentu
rejestracja w srodowisku uruchomieniowym
identyfikacja komponentu przez system w celu pózniejszego uzycia
5 Obiekt komponentu
istancja zainstalowanego komponentu
posiada własne dane i unikalna tozsamosc
zainstalowany komponent moze miec kilka obiektów
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 36 / 40
54. Inzynieria komponentowa
Inzynieria komponentowa
1 Specyfikacja
opis zachowania zbioru obiektów komponentowych w postaci zbioru
interfejsów
realizacja poprzez implementacje
2 Interfejs
definicja zbioru zachowan oferowanych przez komponent
3 Implementacja
realizacja specyfikacji
niezaleznosc wdrozeniowa (instalacja i wymiana)
moze zalezec od innych komponentów
4 Instalacja
instalacja/wdrozenie kopi implementacji komponentu
rejestracja w srodowisku uruchomieniowym
identyfikacja komponentu przez system w celu pózniejszego uzycia
5 Obiekt komponentu
istancja zainstalowanego komponentu
posiada własne dane i unikalna tozsamosc
zainstalowany komponent moze miec kilka obiektów
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 36 / 40
55. Inzynieria komponentowa
Inzynieria komponentowa
1 Specyfikacja
opis zachowania zbioru obiektów komponentowych w postaci zbioru
interfejsów
realizacja poprzez implementacje
2 Interfejs
definicja zbioru zachowan oferowanych przez komponent
3 Implementacja
realizacja specyfikacji
niezaleznosc wdrozeniowa (instalacja i wymiana)
moze zalezec od innych komponentów
4 Instalacja
instalacja/wdrozenie kopi implementacji komponentu
rejestracja w srodowisku uruchomieniowym
identyfikacja komponentu przez system w celu pózniejszego uzycia
5 Obiekt komponentu
istancja zainstalowanego komponentu
posiada własne dane i unikalna tozsamosc
zainstalowany komponent moze miec kilka obiektów
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 36 / 40
56. Inzynieria komponentowa
Inzynieria komponentowa
1 Specyfikacja
opis zachowania zbioru obiektów komponentowych w postaci zbioru
interfejsów
realizacja poprzez implementacje
2 Interfejs
definicja zbioru zachowan oferowanych przez komponent
3 Implementacja
realizacja specyfikacji
niezaleznosc wdrozeniowa (instalacja i wymiana)
moze zalezec od innych komponentów
4 Instalacja
instalacja/wdrozenie kopi implementacji komponentu
rejestracja w srodowisku uruchomieniowym
identyfikacja komponentu przez system w celu pózniejszego uzycia
5 Obiekt komponentu
istancja zainstalowanego komponentu
posiada własne dane i unikalna tozsamosc
zainstalowany komponent moze miec kilka obiektów
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 36 / 40
57. Inzynieria komponentowa
Inzynieria komponentowa
1 Specyfikacja
opis zachowania zbioru obiektów komponentowych w postaci zbioru
interfejsów
realizacja poprzez implementacje
2 Interfejs
definicja zbioru zachowan oferowanych przez komponent
3 Implementacja
realizacja specyfikacji
niezaleznosc wdrozeniowa (instalacja i wymiana)
moze zalezec od innych komponentów
4 Instalacja
instalacja/wdrozenie kopi implementacji komponentu
rejestracja w srodowisku uruchomieniowym
identyfikacja komponentu przez system w celu pózniejszego uzycia
5 Obiekt komponentu
istancja zainstalowanego komponentu
posiada własne dane i unikalna tozsamosc
zainstalowany komponent moze miec kilka obiektów
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 36 / 40
58. Podsumowanie
Plan wykładu
1 Wstep
2 W strone programowania komponentowego
3 Dlaczego programowanie komponentowe?
4 Komponenty
Formalizmy
Wady i Zalety
5 Od programowania obiektowego do komponentowego
6 Inzynieria komponentowa
7 Podsumowanie
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 37 / 40
59. Podsumowanie
Podsumowanie
Rozwój programowania (od maszynowego do komponentowego) wraz
z rozwojem technologii
Komponent — gotowy i tani w uzyciu prefabrykat
czarna skrzynka
funkcjonalnosc poprzez dobrze zdefiniowane interfejsy
Przewaga programowania kompoentowego nad innymi stylami
Rózne formy komponentu: od specyfikacji po uruchomiony obiekt
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 38 / 40
60. Podsumowanie
Do domu
Przypomniec sobie programowanie interfejsów w C#
Zapoznac sie z róznicami miedzy interfejsami a klasami
abstrakcyjnymi
Dowiedziec sie dlaczego nalezy uzywac interfejsów
Przeczytac rozdział 1. „Programming .NET Components”
Mikołaj Olszewski (WZIM SGGW) Programowanie Komponentowe Wykład #1 39 / 40