Kontrola dostępu w aplikacjach webowych

Wielkość: px
Rozpocząć pokaz od strony:

Download "Kontrola dostępu w aplikacjach webowych"

Transkrypt

1 Bezpieczeństwo RBAC Kontrola dostępu w aplikacjach webowych Tworząc aplikacje webowe, szczególnie te bardziej skomplikowane, realizujące złożoną logikę biznesową, bardzo często spotykamy się z problemem kontroli dostępu. Każdy system, pracujący na danych o kluczowym znaczeniu, powinien mieć możliwość ograniczania dostępu do nich dla różnych użytkowników. Dowiesz się... Zaprezentujemy model RBAC i pokażemy, jak przy jego użyciu zaprojektować elastyczny i rozszerzalny moduł kontroli dostępu. Poziom trudności W artykule omówimy pokrótce teoretyczny model kontroli dostępu, opartej o role w konfrontacji z innymi powszechnie stosowanymi rozwiązaniami, a następnie zaproponujemy przykładową implementację kontroli dostępu w aplikacji webowej, stosującej wzorzec kontrolera strony. Problem Przy tworzeniu praktycznie każdej aplikacji, wykorzystywanej przez więcej niż jednego użytkownika, trzeba zmierzyć się z problemami kontroli dostępu. Jeden z nich to uwierzytelnianie, a więc weryfikacja tożsamości podmiotu. Drugi to autoryzacja, czyli sprawdzanie, czy dany podmiot ma dostęp do zasobów, o które prosi. W aplikacjach webowych uwierzytelnianie odbywa się na ogół poprzez podanie loginu i hasła. Implementacja ekranu logowania, to temat opisywany już wielokrotnie, więc na potrzeby tego tekstu założymy, że mechanizm uwierzytelniania jest już gotowy i skupimy się na bardziej złożonym problemie autoryzacji. Powszechną praktyką, stosowaną przez twórców aplikacji webowych (nawet jeśli nie są tego świadomi), jest zdefiniowanie trzech podstawowych poziomów dostępu: Anonimowy użytkownik to taki, który nie przeszedł procesu uwierzytelnienia. Powinieneś wiedzieć... Wskazana jest znajomość architektury MVC i wzorca dekoratora; Podstawowa wiedza z zakresu kontroli dostępu. Na ogół ma dostęp jedynie do ekranu logowania (system intranetowy) lub może korzystać z pewnych podstawowych funkcji (system internetowy); Zalogowany użytkownik to taki, który pomyślnie przeszedł proces uwierzytelnienia. Konta użytkowników są na ogół tworzone przez administratora (system intranetowy) lub ich samych, na przykład po weryfikacji mailowej (system internetowy); Administrator to specjalny użytkownik, który ma pełną kontrolę nad systemem. Często (choć nie zawsze) korzysta w tym celu z odrębnego panelu administratora. Takie rozwiązanie sprawdza się całkiem nieźle w prostych scenariuszach, gdy wszyscy użytkownicy są równorzędni, a administratorów jest niewielu i mają władzę absolutną. To założenie można śmiało przyjąć w przypadku wielu aplikacji internetowych, może stąd wynika jego powszechność. Jednak rzadko kiedy, tak prosty model okazuje się wystarczający dla intranetowych systemów o strategicznym znaczeniu, modelujących logikę biznesową firmy. W takiej sytuacji oczywiste jest, że szef powinien mieć inny poziom dostępu niż szeregowy pracownik, ten jeszcze inny niż podwykonawca, a dział techniczny inne uprawnienia niż dział obsługi klienta. Rozwiązanie, które często stosowane jest w takich sytuacjach, polega na sztywnym określeniu klas użytkowników, a następnie ograniczeniu dostępu do pewnych obszarów czy funkcji jedynie dla wybranych klas, poprzez zapisanie warunków bezpośrednio w kodzie. Na przykład w systemach śledzenia błędów często rozróżniani są zgłaszający (mogący tworzyć nowe zgłoszenia), programiści (mogący dodatkowo modyfikować stan zgłoszeń) i menedżerowie (mogący generować raporty i zestawienia). W przypadku systemu, w którym zadania są jasno zdefiniowane i niezmienne w czasie (jak wspomniany już system śledzenia błędów) takie rozwiązanie może się sprawdzić. Jednak zastosowanie tego podejścia w dużym systemie biznesowym, rozwijanym w warunkach ciągle zmieniających się wymagań, częstych reorganizacji i zmian strategii firmy ma liczne wady. Po pierwsze, cała logika kontroli dostępu zapisywana jest bezpośrednio w kodzie, jej modyfikacja wymaga ingerencji u źródła. Weryfikacja, dbanie o jej spójność i bezpieczeństwo jest mocno utrudnione. Co więcej, audyt wymaga wiedzy programistycznej i znajomości architektury systemu. Logika kontroli dostępu rozrzucona jest w różnych miejscach kodu, co utrudnia tworzenie nowych klas użytkowników czy implementację nowych modułów systemu, zwiększa też prawdopodobieństwo pomyłek. W końcu nie ma możliwości wdrożenia w oparciu o te same źródła kilku instancji systemu, z których każda ma inaczej zdefiniowaną logikę kontroli dostępu. Warto pamiętać także o tym, że każda zmiana w kodzie wymaga testów, co więcej, na serwerze produkcyjnym pojawi się nie od razu, a dopiero po wydaniu nowej wersji aplikacji. Jak widać, w takiej sytuacji cała odpowiedzialność za zarządzanie dostępem spada na programistów, podczas gdy powinna spoczy- Rysunek 1. Model RBAC 40 04/2007

2 RBAC wać na administratorze systemu, czy osobie odpowiedzialnej za bezpieczeństwo informacji w firmie. Takie rozwiązanie, choć często stosowane, narzuca wiele ograniczeń, które mogą okazać się nie do przyjęcia. W dalszej części artykułu zaproponujemy alternatywne rozwiązanie, dzięki któremu można uniknąć większości powyższych problemów. Opiszemy prosty, a zarazem bardzo elastyczny model RBAC i zaprezentujemy jego przykładową implementację. Model RBAC Kontrola dostępu oparta o role (ang. Role-Based Access Control, w skrócie RBAC), to teoretyczny model kontroli dostępu, od lat powszechnie stosowany w aplikacjach biznesowych, będący alternatywą dla tradycyjnych modeli MAC i DAC. Co ciekawe, formalizacji doczekał się dopiero w publikacji z roku 1992 (odnośnik do niej dostępny jest w materiałach do artykułu), gdy był już szeroko stosowany w praktyce. Podstawowym pojęciem w RBAC jest, jak łatwo się domyślić, rola, opisująca pewną funkcję czy stanowisko w organizacji. Kolejnym ważnym obiektem są uprawnienia, reprezentujące operacje udostępniane przez system. Uprawnienia przypisywane są do ról, określając tym samym ich prawa. Z kolei podmiotem określa się każdego użytkownika aplikacji, a także zewnętrzny system korzystający z jej usług. Podmiot może posiadać wiele ról, odpowiadających jego pozycji w strukturze organizacji. Zależności pomiędzy poszczególnymi pojęciami modelu RBAC ilustruje Rysunek 1. Niezwykle istotną własnością modelu RBAC jest to, że podmiot otrzymuje uprawnienia wyłącznie poprzez role, które posiada. Innymi słowy, z punktu widzenia kontroli dostępu, istotne jest jedynie stanowisko użytkownika, a nie jego tożsamość. Ta prosta własność sprawia, że struktura uprawnień staje się dużo bardziej przejrzysta i łatwiejsza w administracji. Warto zaznaczyć, że uprawnienia powinny opisywać operacje na poziomie logiki biznesowej, a nie prawa zapisu lub odczytu, do niskopoziomowych zasobów (jak pliki czy tabele w bazie danych). Innymi słowy zarówno role, jak i uprawnienia powinny być definiowane w języku konkretnej organizacji, na podstawie wcześniejszej analizy. Na koniec warto wspomnieć o pewnej bardzo dobrej praktyce kontroli dostępu, dotyczącej nie tylko modelu RBAC. Nazywana jest zasadą najmniejszych uprawnień (ang. Principle of Least Privilege) i mówi o tym, że użytkownik nie powinien posiadać większych uprawnień, niż to wymagane do wykonywania swoich obowiązków. Warto pamiętać o tym przy administracji uprawnieniami i rolami. Rysunek 2. Diagram przypadków użycia Rysunek 3. Diagram kontrolerów Przykład implementacji Omówiliśmy pokrótce podstawy teoretyczne, spróbujmy więc zaimplementować RBAC w przykładowej aplikacji webowej. Wyjdziemy od analizy przypadków użycia, która ułatwi określenie potrzebnych ról i uprawnień. Następnie, korzystając ze wzorca dekoratora (opisanego m.in. w artykule Dekorator: wzorzec projektowy na każdą bolączkę z numeru 4/2006, dostępnego do ściągnięcia na stronie PHP Solutions), zaprojektujemy i zaimplementujemy klasy, odpowiadające za kontrolę dostępu w przykładowej architekturze stosującej kontroler strony. Skupimy się na najbardziej interesujących z punktu widzenia niniejszego artykułu aspektach, nie zajmując się chociażby sposobem dostępu do bazy danych czy przebiegiem procesu logowania. Przykład celowo nie jest związany z żadnym konkretnym frameworkiem (choć opiera się na architekturze stosowanej w wielu z nich), aby pokazać ogólność rozwiązania. Przypadki użycia Rozważmy typowy system obsługi zgłoszeń (ang. trouble tickets), którego głównym zadaniem jest usprawnienie kontaktu z klientami. Po analizie dziedziny mógłby powstać diagram przypadków użycia taki, jak na Rysunku 2. (mocno uproszczony dla celów przykładu). Pomoże on nam zdefiniować role i uprawnienia. Jak wiadomo, role opisują funkcje, jakie w organizacji pełnią użytkownicy (mówiąc bar- 41

3 Bezpieczeństwo dziej ogólnie, podmioty). Jeśli korzystamy z diagramu przypadków użycia, dobrymi kandydatami na role są aktorzy (choć nie zawsze musi to być relacja jeden-na-jeden). W opisanym przykładzie możemy wyróżnić następujące role: Klient: osoba korzystająca z systemu, aby zgłosić swój problem i śledzić jego stan; Konsultant: pracownik odpowiadający za obsługę zgłoszeń klientów; Menedżer: osoba nadzorująca pracę konsultantów. Kolejnym krokiem jest określenie uprawnień, najmniejszego i niepodzielnego kwantu, umożliwiającego kontrolę dostępu w modelu RBAC. Role zawsze można zmienić, jednak odpowiedni dobór,,rozdzielczości uprawnień, to ważna decyzja projektowa. Od tego zależy, jak łatwe i elastyczne będzie definiowanie ról, i jak precyzyjna kontrola dostępu będzie możliwa. Także w tym przypadku można oprzeć się na przypadkach użycia, często jednak okazuje się, że uprawnienia powinny być nieco bardziej szczegółowe i niskopoziomowe. Wtedy jeden przypadek użycia można rozbić na kilka uprawnień. Implementacja kontroli dostępu staje się znacznie łatwiejsza, jeśli uprawnienia mają swoje odpowiedniki w samym systemie. Dlatego w przykładzie opisanym poniżej zastosujemy kontrolę uprawnień w warstwie kontrolera, a uprawnienia utożsamimy ze zdarzeniami kontrolera (a same kontrolery zaprojektujemy tak, aby ich zdarzenia odpowiadały uprawnieniom). Kontrolery Projektując architekturę aplikacji webowej, najprawdopodobniej skorzystamy z jakiegoś rodzaju kontrolera, obsługującego żądania HTTP. Jeśli wszystkie żądania przechodzą przez kontroler, wybór uprawnień i implementacja kontroli dostępu staje się prosta i przejrzysta. Załóżmy, że stosujemy wzorzec Page Controler (choć podobny sposób rozumowania można także zastosować dla Front Controllera), a każdy kontroler to osobny plik PHP, obsługujący żądanie dla danego URL. Dodatkowo zakładamy, że kontroler otrzymuje jako parametr żądania nazwę zdarzenia, które ma obsłużyć. Wszystkie kontrolery dziedziczą po wspólnej abstrakcyjnej nadklasie i implementują metody onaction(), gdzie action to nazwa zdarzenia, które obsługuje dana metoda. W uproszczonym przykładzie projektowanego systemu obsługi zgłoszeń, podstawowymi pojęciami są zgłoszenia i raporty, a więc to dla nich utworzymy kontrolery. Projektując zdarzenia najlepiej wyjść od przypadków użycia, choć często okazuje się, że zdarzenia powinny być bardziej szczegółowe. Dobrym przykładem są tu tzw. przypadki użycia CRUD (ang. Create, Read, Update, Delete), łączące operacje tworzenia obiektu, jego modyfikacji i usuwania (a więc trzech osobnych zdarzeń) w jeden przypadek użycia,,zarządzanie obiektem. Przykładowy diagram kontrolerów dla naszego systemu obsługi zgłoszeń znajduje się na Rysunku 3. Rysunek 4. Diagram dekoratorów kontrolera Rysunek 5. Diagram sekwencji kontroli dostępu 42 04/2007

4

5 Bezpieczeństwo Jak łatwo się już domyślić, w aplikacji webowej o takiej architekturze, dobrym kandydatem na uprawnienie (w rozumieniu modelu RBAC) będzie para $(kontroler, zdarzenie)$. Przemawia za tym kilka faktów: Kontrolę uprawnień możemy przeprowadzić na poziomie kontrolera, wtedy staje się ona przezroczysta dla programisty, co Listing 1. Dekorator kontrolera abstract class ControllerDecorator implements Controller protected $decoratedcontroller; function construct(controller $decoratedcontroller) $this->decoratedcontroller = $decoratedcontroller; function geteventname() return $this->decoratedcontroller->geteventname(); function getname() return $this->decoratedcontroller->getname(); function run() return $this->decoratedcontroller->run(); Listing 2. Dekorator kontroli dostępu class ControllerRbacDecorator extends ControllerDecorator private $profile; ułatwia pracę, ale także ogranicza możliwe dziury w bezpieczeństwie wynikające z przeoczeń; Taki wybór uprawnień sprawia, że mechanizm kontroli dostępu staje się rozszerzalny wraz z rozbudową systemu, a narzut związany z jego utrzymaniem i aktualizacją jest minimalny (nowe uprawnienia mogą być nawet rozpoznawane public function construct(controller $decoratedcontroller, Profile $profile) $this->profile = $profile; parent:: construct($decoratedcontroller); function run() if (!$this->profile->haspermission($this->getname(), $this->geteventname())) throw new Exception("Brak uprawnień"); return $this->decoratedcontroller->run(); automatycznie, za pomocą refleksji klas kontrolerów); Równoważność uprawnień i zdarzeń kontrolera ułatwia komunikację w zespole, nie ma potrzeby tworzenia i dokumentowania nowego pojęcia. Sprawę dodatkowo ułatwia fakt, że oba pochodzą od przypadków użycia, a te bezpośrednio powiązane są z aktorami (a więc i rolami). Tabela 1. zawiera podsumowanie przypadków użycia, odpowiadających im zdarzeń i uprawnień w projektowanym przez nas systemie. W dalszej części artykułu zaproponujemy implementację przezroczystej dla kontrolera kontroli dostępu, przy założeniu, że uprawnieniami są zdarzenia kontrolera. Dekorowanie kontrolera Skoro uprawnienia są jednoznaczne z prawami dostępu do zdarzeń kontrolera, a każde żądanie musi przejść przez kontroler, dobrym miejscem na implementację kontroli dostępu jest właśnie klasa kontrolera. Oczywiście można zapisać odpowiednie warunki w kodzie nadklasy, po której dziedziczą kontrolery (albo utworzyć klasę po niej dziedziczącą), jednak nie jest to zbyt eleganckie rozwiązanie. Obsługa żądań i kontrola dostępu to dwa różne zadania, które nie powinny być łączone. W takich sytuacjach dobrym pomysłem jest skorzystanie z wzorca dekoratora, który pozwala na dynamiczne zwiększanie zakresu odpowiedzialności obiektu. Rysunek 4. zawiera zmodyfikowany schemat klas kontrolerów, rozbudowany o abstrakcyjny dekorator i dziedziczący po nim dekorator przeprowadzający kontrolę uprawnień. Na Listingu 1. znajduje się kod dekoratora, realizującego interfejs kontrolera, który w konstruktorze otrzymuje obiekt do udekorowania i przekierowuje do niego wszystkie metody interfejsu. Warto zauważyć, że klasa jest zdefiniowana jako abstrakcyjna mimo, że nie posiada żadnych abstrakcyjnych metod. Po prostu tworzenie obiektów tej klasy nie ma żadnego sensu, istnieje tylko po to, aby konkretne dekoratory dziedziczące po niej, nie musiały za każdym razem implementować mechanizmu dekoracji. Na Listingu 2. znajduje się kod dekoratora przeprowadzającego kontrolę dostępu przed przekazaniem sterowania do metody realizującej zdarzenie. Zakładamy, że w konstruktorze został przekazany profil opisujący aktualnie zalogowanego użytkownika. Metoda haspermission() profilu sprawdza (przeglądając wszystkie role), czy użytkownik ma uprawnienia do danego kontrolera i zdarzenia. Jeśli nie, dekorator wyrzuca wyjątek i nie 44 04/2007

6 RBAC W Sieci David Ferraiolo, Richard Kuhn. Role-Based Access Control, Role_Based_Access_Control-1992.html; Wikipedia: Role-Based Access Control, Tabela 1. Związek przypadków użycia, metod kontrolera i uprawnień Przypadek użycia Metoda kontrolera Uprawnienie Utworzenie zgłoszenia TicketsController::onCreate() (tickets, create) Podgląd zgłoszenia TicketsController::onView() (tickets, view) Zamknięcie zgłoszenia TicketsController::onClose() (tickets, close) Dodanie komentarza TicketsController::onComment() (tickets, comment) Generowanie raportu ReportsController::onGenerate() (reports, generate) przekazuje sterowania do dekorowanego kontrolera. Utworzenie i wywołanie udekorowanego kontrolera przebiega w następujący sposób (zakładając, że mamy referencję do profilu użytkownika): $controller = new ControllerRbacDe try $controller->run(); catch (Exception $e) corator(new TicketsController(), $profile); echo "Błąd: ". $e->getmessage(); Nie są wymagane żadne zmiany w samych klasach kontrolera, za kontrolę dostępu odpowiada tylko dekorator. Jak to działa Na koniec warto przeanalizować diagram sekwencji przedstawiony na Rysunku 5., przedstawiający dynamiczny obraz procesu kontroli dostępu. Przeglądarka użytkownika wysyła żądanie HTTP, które serwer kieruje do odpowiedniego kontrolera, wywoływana jest jego metoda run(). Kontroler został udekorowany, więc dekorator najpierw pobiera nazwę dekorowanego kontrolera oraz zdarzenia, które zostało wywołane przez użytkownika. Następnie profil proszony jest o sprawdzenie, czy aktualnie zalogowany użytkownik ma uprawnienia do danego kontrolera i zdarzenia (i czy jest w ogóle zalogowany). To, jak działa i kiedy tworzony jest profil, nie wchodzi w zakres niniejszego artykułu. Warto jednak wspomnieć, że profil powinien obsługiwać logowanie, wylogowanie i przechowywanie informacji o użytkowniku w sesji, a także powinien przekierowywać niezalogowanego użytkownika do kontrolera logowania (który oczywiście nie może być dekorowany kontrolą dostępu). Profil, sprawdzając uprawnienia, powinien opierać się na liście ról bieżącego użytkownika. Jeśli posiada on dane uprawnienie, kontrola przekazywana jest do udekorowanego kontrolera, który z kolei wywołuje metodę obsługującą dane zdarzenie. Jeśli nie, wyrzucany jest wyjątek, który oczywiście powinien zostać odpowiednio obsłużony. Jak widać dzięki założeniu, że wszystkie żądania muszą przejść przez kontroler i dzięki użyciu wzorca dekoratora, udało się w prosty sposób zaimplementować przezroczysty dla programisty i rozszerzalny moduł kontroli dostępu. Dzięki zastosowaniu modelu RBAC logika kontroli dostępu nie jest zapisana bezpośrednio w kodzie, a w dynamicznych zależnościach między podmiotami, rolami i uprawnieniami. Dzięki temu cała struktura jest bardzo przejrzysta, łatwa w administracji i może być modyfikowana przez osoby nie będące programistami. Co więcej, polityka bezpieczeństwa może różnić się między kilkoma instalacjami systemu. Możliwe ulepszenia Zaprezentowany powyżej szkic implementacji nie jest jedynym możliwym, można go rozwinąć i ulepszyć na wiele sposobów, oto kilka z nich: Przydatny będzie panel administracyjny, pozwalający na zarządzanie rolami, przypisywanie uprawnień do ról i ról do użytkowników. Oczywiście dostęp do takiego modułu także można, i należy chronić za pomocą opisanego mechanizmu kontroli dostępu; Główną wadą kontroli dostępu na poziomie kontrolera jest to, że jest ściśle związana z żądaniami HTTP i warstwą kontrolera. Jeśli system posiada bogaty model domeny, wykorzystywany przez więcej niż jedną aplikację, warto rozważyć kontrolę dostępu w warstwie domeny. W takiej sytuacji teoretyczne podstawy pozostają bez zmian, ale zmienia się znaczenie uprawnień i implementacja kontroli dostępu; Można zmodyfikować szablony tak, aby deaktywować czy nawet usuwać odnośniki do operacji, do których bieżący użytkownik nie ma dostępu; Łatwo napisać skrypt, który automatycznie zaktualizuje tabelę uprawnień na podstawie analizy kodu kontrolerów. Dzięki temu nie trzeba pamiętać o uzupełnianiu tabeli uprawnień w bazie wraz z rozwojem systemu. Taki skrypt może po prostu szukać w plikach źródłowych wzorców, odpowiadających metodom kontrolera (np. przy użyciu wyrażeń regularnych), albo wykorzystać mechanizm refleksji. Na podstawie zebranych danych można synchronizować tabelę uprawnień. W bardziej skomplikowanych projektach można rozważyć zastosowanie bardziej zaawansowanych aspektów modelu RBAC: Nietrudno dodać, bardzo przydatny w praktyce, mechanizm dziedziczenia uprawnień. Dzięki temu menedżer będzie mógł dziedziczyć z roli konsultanta, przejmując wszystkie uprawnienia roli dziedziczonej i uzupełniając je o uprawnienia specyficzne dla roli dziedziczącej (podobnie do mechanizmu dziedziczenia w programowaniu obiektowym); Założyliśmy, że użytkownik po zalogowaniu może korzystać ze wszystkich swoich ról i związanych z nimi uprawnień. Alternatywnym i bardziej zgodnym z modelem RBAC rozwiązaniem jest wymuszenie wyboru jednej z dostępnych ról w momencie logowania. Wtedy powstaje sesja, łącząca użytkownika z aktywną rolą (nie mylić z mechanizmem sesji PHP); Można zaimplementować politykę separacji obowiązków (ang. Separation of Duties), mającą na celu ograniczenie zagrożeń wynikających z łączenia kilku ról przez jednego pracownika. Ta zasada mówi, że dla pewnego zbioru operacji (np. zlecenia przelewu i akceptacji przelewu) nie może istnieć osoba, która ma uprawnienia do wszystkich z nich. Zachęcamy Czytelników do dalszych eksperymentów i dzielenia się swoimi pomysłami. Podsumowanie Stosując sprawdzony model kontroli dostępu opartej o role, udało nam się w łatwy sposób zaprojektować prosty, elegancki i elastyczny mechanizm kontroli dostępu. Uniknęliśmy zaszywania kontroli dostępu bezpośrednio w kodzie, pozwalając na dynamiczne przydzielanie uprawnień do ról, a zarazem ułatwiając administrację uprawnieniami. ADAM BYRTEK Autor odpowiada za zespół programistyczny, zajmujący się rozwojem wewnętrznego systemu OSS/BSS dla ogólnopolskiego dostawcy internetu. Kontakt z autorem: adambyrtek@gmail.com

REFERAT O PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja elektronicznego dziennika ocen ucznia Autor: Grzegorz Dudek wykonanego w technologii ASP.NET We współczesnym modelu edukacji, coraz powszechniejsze

Bardziej szczegółowo

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski Adapter: opis Wzorce Strukturalne Tomasz Borzyszkowski Alternatywna nazwa: Wrapper (opakowanie) Rola obiektu Adapter: pełni wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół

Bardziej szczegółowo

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

PHP 5 język obiektowy

PHP 5 język obiektowy PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje

Bardziej szczegółowo

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka Sesje, ciasteczka, wyjątki Nie sposób wyobrazić sobie bez nich takich podstawowych zastosowań, jak logowanie użytkowników czy funkcjonowanie koszyka na zakupy. Oprócz tego dowiesz się, czym są wyjątki,

Bardziej szczegółowo

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Akademia MetaPack Uniwersytet Zielonogórski Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Krzysztof Blacha Microsoft Certified Professional Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC Agenda:

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium

Bardziej szczegółowo

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki 2011. Promotor dr inż. Paweł Figat Grzegorz Ruciński Warszawska Wyższa Szkoła Informatyki 2011 Promotor dr inż. Paweł Figat Cel i hipoteza pracy Wprowadzenie do tematu Przedstawienie porównywanych rozwiązań Przedstawienie zalet i wad porównywanych

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 11 - przegląd wybranych wzorców mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 24 maja 2017 1 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe Wzorce

Bardziej szczegółowo

EXSO-CORE - specyfikacja

EXSO-CORE - specyfikacja EXSO-CORE - specyfikacja System bazowy dla aplikacji EXSO. Elementy tego systemu występują we wszystkich programach EXSO. Może on ponadto stanowić podstawę do opracowania nowych, dedykowanych systemów.

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35 Wzorce projektowe cz. II Wzorce projektowe cz. II 1/35 Wzorce projektowe cz. II 2/35 Iterator Przeznaczenie Wzorzec zapewnia sekwencyjny dostęp do elementów obiektu zagregowanego bez ujawniania jego reprezentacji

Bardziej szczegółowo

Zaawansowane programowanie obiektowe - wykład 5

Zaawansowane programowanie obiektowe - wykład 5 Zaawansowane programowanie obiektowe - wykład 5 dr Piotr Jastrzębski (czynnościowe) opisują zachowanie obiektów, komunikację pomiędzy nimi i ich odpowiedzialność. Interpreter Iterator (kursor) Łańcuch

Bardziej szczegółowo

Rysunkowy tutorial Możesz swobodnie dystrybuować ten plik jeśli pozostawisz go w nietkniętym stanie. Możesz także cytować jego fragmenty umieszczając w tekście odnośnik http://mbartyzel.blogspot.com Jak

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

Wprowadzenie do programowania aplikacji mobilnych

Wprowadzenie do programowania aplikacji mobilnych Wprowadzenie do programowania aplikacji mobilnych dr Przemysław Juszczuk dr Przemysław Juszczuk Trochę historii Idea wzorców projektowych wywodzi się jeszcze z wczesnych lat osiemdziesiątych ubiegłego

Bardziej szczegółowo

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.

Bardziej szczegółowo

Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie

Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie informatycznej. Zadaniem systemu jest rejestracja i przechowywanie

Bardziej szczegółowo

Firma Informatyczna ASDER. Prezentacja. Serwer danych lokalnych. Przemysław Kroczak ASDER 2012-08-06

Firma Informatyczna ASDER. Prezentacja. Serwer danych lokalnych. Przemysław Kroczak ASDER 2012-08-06 2012 Firma Informatyczna ASDER Prezentacja Serwer danych lokalnych Przemysław Kroczak ASDER 2012-08-06 Szanowni Państwo, W dzisiejszej coraz częściej trzeba współdzielić pliki między pracownikami/działami

Bardziej szczegółowo

10. Programowanie obiektowe w PHP5

10. Programowanie obiektowe w PHP5 Ogólnie definicja klasy wygląda jak w C++. Oczywiście elementy składowe klasy są zmiennymi PHP, stąd nieśmiertelne $. Warto zauważyć, że mogą one mieć wartość HHH mgr inż. Grzegorz Kraszewski TECHNOLOGIE

Bardziej szczegółowo

Możliwość dodawania modułów pozwala na dopasowanie oprogramowania do procesów biznesowych w firmie.

Możliwość dodawania modułów pozwala na dopasowanie oprogramowania do procesów biznesowych w firmie. zajmuje się wdrażaniem koncepcji CRM Eroica CRM bazującej na najczęściej używanym rozwiązaniu Open Source vtiger. Eroica CRM posiada wiele funkcji ułatwiających zarządzanie relacjami z klientem w kancelarii.

Bardziej szczegółowo

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Projektowanie obiektowe. Roman Simiński  Wzorce projektowe Wybrane wzorce strukturalne Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec

Bardziej szczegółowo

Platforma e-learningowa

Platforma e-learningowa Dotyczy projektu nr WND-RPPD.04.01.00-20-002/11 pn. Wdrażanie elektronicznych usług dla ludności województwa podlaskiego część II, administracja samorządowa realizowanego w ramach Decyzji nr UDA- RPPD.04.01.00-20-002/11-00

Bardziej szczegółowo

Przykładowa implementacja

Przykładowa implementacja Wzorce projektowe, cz. 10 Facade Fasada służy do ujednolicenia dostępu do złożonego systemu poprzez udostępnienie uproszczonego i uporządkowanego interfejsu programistycznego. Fasada zwykle implementowana

Bardziej szczegółowo

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. Warstwa integracji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Ukrycie logiki dostępu do danych w osobnej warstwie 2. Oddzielenie mechanizmów trwałości od modelu obiektowego Pięciowarstwowy

Bardziej szczegółowo

Forum Client - Spring in Swing

Forum Client - Spring in Swing Forum Client - Spring in Swing Paweł Charkowski. 0. Cel projektu Celem projektu jest próba integracji Spring Framework z różnymi technologiami realizacji interfejsu użytkownika, oraz jej ocena. Niniejszy

Bardziej szczegółowo

B2B Obsługa portalu zgłoszeniowego

B2B Obsługa portalu zgłoszeniowego B2B Obsługa portalu zgłoszeniowego Spis treści 1. Ustalenia loginu i hasła, reset hasła... 1 1.1 Ustalenia hasła przez użytkownika... 1 2. Logowanie do systemu uprawnienia pełne/uproszczone... 2 2.1 Uprawnienia

Bardziej szczegółowo

Programowanie Obiektowe Ćwiczenie 4

Programowanie Obiektowe Ćwiczenie 4 Programowanie Obiektowe Ćwiczenie 4 1. Zakres ćwiczenia wyjątki kompozycja 2. Zagadnienia Założeniem, od którego nie należy odbiegać, jest by każdy napotkany problem (np. zatrzymanie wykonywanej metody)

Bardziej szczegółowo

Podstawy programowania III WYKŁAD 4

Podstawy programowania III WYKŁAD 4 Podstawy programowania III WYKŁAD 4 Jan Kazimirski 1 Podstawy UML-a 2 UML UML Unified Modeling Language formalny język modelowania systemu informatycznego. Aktualna wersja 2.3 Stosuje paradygmat obiektowy.

Bardziej szczegółowo

Plik pobrano z Tytuł: Wzorce projektowe, cz. 2 Strategy Ostatnia aktualizacja:

Plik pobrano z   Tytuł: Wzorce projektowe, cz. 2 Strategy Ostatnia aktualizacja: Wzorce projektowe, cz. 2 Strategy Druga część z serii wpisów o wzorcach projektowych. Dziś omówię wzorzec Strategii (Strategy). Wstęp Strategia jest wzorcem projektowym, który definiuje rodzinę wymiennych

Bardziej szczegółowo

Wzorce prezentacji internetowych

Wzorce prezentacji internetowych Wzorce prezentacji internetowych 1. Model kontrolera widoku (Model View Controller). 2. Kontroler strony (Page Controller). 3. Kontroler fasady (Front Controller). 4. Szablon widoku (Template View). 5.

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy

Bardziej szczegółowo

Zarządzanie reklamacjami i serwisem w programie bs4

Zarządzanie reklamacjami i serwisem w programie bs4 Zarządzanie reklamacjami i serwisem w programie bs4 Spis treści Wstęp... 4 Podstawowe zasady pracy z programem:...4 Podstawowe korzyści w obszarze zarządzania serwisem po wdrożeniu oprogramowania bs4

Bardziej szczegółowo

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. 1/8 Singleton Cel: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. Przykład: Niekiedy ważne jest, aby tworzyć tylko jedną instancję jakiejś klasy. Globalne zmienne

Bardziej szczegółowo

Oracle COREid Federation Przegląd

Oracle COREid Federation Przegląd Oracle COREid Federation Przegląd Dokument techniczny Oracle Listopad 2005 ORACLE FUSION MIDDLEWARE Oracle COREid Federation Wprowadzenie COREid Federation to jedyny w branży serwer federacji tożsamości,

Bardziej szczegółowo

DHL24. Główny Użytkownik. i Przesyłka Serwisowa. Dokumentacja użytkownika końcowego

DHL24. Główny Użytkownik. i Przesyłka Serwisowa. Dokumentacja użytkownika końcowego DHL24 Główny Użytkownik i Przesyłka Serwisowa Dokumentacja użytkownika końcowego Opis: Niniejszy dokument opisuje funkcjonalność Głównego Użytkownika i Przesyłki Serwisowej w aplikacji DHL24 w ujęciu użytkownika

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

Bardziej szczegółowo

KUP KSIĄŻKĘ NA: PRZYKŁADOWY ROZDZIAŁ KOMUNIKATY DLA UŻYTKOWNIKA

KUP KSIĄŻKĘ NA:   PRZYKŁADOWY ROZDZIAŁ KOMUNIKATY DLA UŻYTKOWNIKA KUP KSIĄŻKĘ NA: WWW.PRAKTYCZNEPHP.PL PRZYKŁADOWY ROZDZIAŁ KOMUNIKATY DLA UŻYTKOWNIKA KOMUNIKATY DLA UŻYTKOWNIKA W większości aplikacji potrzebujesz mieć możliwość powiadomienia użytkownika o rezultacie

Bardziej szczegółowo

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym 1 Wprowadzenie do środowiska Oracle APEX, obszary robocze, użytkownicy Wprowadzenie Plan Administracja obszarem roboczym 2 Wprowadzenie Co to jest APEX? Co to jest APEX? Architektura Środowisko Oracle

Bardziej szczegółowo

PORTAL KLIENTA I OBSŁUGA ZGŁOSZEŃ.V01. VULCAN Innowacji

PORTAL KLIENTA I OBSŁUGA ZGŁOSZEŃ.V01. VULCAN Innowacji PORTAL KLIENTA I OBSŁUGA ZGŁOSZEŃ.V01 VULCAN Innowacji Streszczenie Dokument zawiera instrukcję opisującą Portal Klienta, za pomocą którego Użytkownik może przekazać zgłoszenie do Centrum Obsługi Klienta

Bardziej szczegółowo

Dokument Detaliczny Projektu

Dokument Detaliczny Projektu Dokument Detaliczny Projektu Dla Biblioteki miejskiej Wersja 1.0 Streszczenie Niniejszy dokument detaliczny projektu(ddp) przedstawia szczegóły pracy zespołu projektowego, nad stworzeniem aplikacji bazodanowej

Bardziej szczegółowo

Webowy generator wykresów wykorzystujący program gnuplot

Webowy generator wykresów wykorzystujący program gnuplot Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Marcin Nowak nr albumu: 254118 Praca inżynierska na kierunku informatyka stosowana Webowy generator wykresów wykorzystujący

Bardziej szczegółowo

Szczegółowa specyfikacja funkcjonalności zamawianego oprogramowania.

Szczegółowa specyfikacja funkcjonalności zamawianego oprogramowania. Szczegółowa specyfikacja funkcjonalności zamawianego oprogramowania. Założenia projektowe systemu NETDOC. część 1: założenia ogólne i funkcjonalność rdzenia systemu Założenia ogólne Celem projektu jest

Bardziej szczegółowo

Pomoc dla systemu WordPress

Pomoc dla systemu WordPress Pomoc dla systemu WordPress Ten plik pomocy przeznaczony jest dla pluginu stat24 w wersji 0.2. W tym pluginie porzucono wsparcie dla starszych wersji WordPress (niższych niż 1.5) oraz zrezygnowano z opcji

Bardziej szczegółowo

Skrócona instrukcja korzystania z Platformy Zdalnej Edukacji w Gliwickiej Wyższej Szkole Przedsiębiorczości

Skrócona instrukcja korzystania z Platformy Zdalnej Edukacji w Gliwickiej Wyższej Szkole Przedsiębiorczości Skrócona instrukcja korzystania z Platformy Zdalnej Edukacji w Gliwickiej Wyższej Szkole Przedsiębiorczości Wstęp Platforma Zdalnej Edukacji Gliwickiej Wyższej Szkoły Przedsiębiorczości (dalej nazywana

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie teoretyczne. Rozważana

Bardziej szczegółowo

ASP.NET MVC. Grzegorz Caban grzegorz.caban@gmail.com. 20 stycznia 2009

ASP.NET MVC. Grzegorz Caban grzegorz.caban@gmail.com. 20 stycznia 2009 ASP.NET MVC Grzegorz Caban grzegorz.caban@gmail.com 20 stycznia 2009 Agenda Przyczyna powstania Co to jest ASP.NET MVC Architektura Hello World w ASP.NET MVC ASP.NET MVC vs ASP.NET WebForm Przyszłość framework'a

Bardziej szczegółowo

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

Laboratorium 7 Blog: dodawanie i edycja wpisów

Laboratorium 7 Blog: dodawanie i edycja wpisów Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą

Bardziej szczegółowo

Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania.

Wstęp [2/2] Wbrew częstemu przekonaniu, nie są one gotowymi rozwiązaniami, to tylko półprodukty rozwiązania. Adrian Skalczuk Szymon Kosarzycki Spis Treści Wstęp [1/2] Wzorce projektowe są nieodłącznym przyjacielem programisty pozwalają pisać czystszy kod, łatwiejszy do zrozumienia przez innych i zapewniają pewien

Bardziej szczegółowo

Portal zarządzania Version 7.5

Portal zarządzania Version 7.5 Portal zarządzania Version 7.5 PODRĘCZNIK ADMINISTRATORA Wersja: 29.8.2017 Spis treści 1 Informacje na temat niniejszego dokumentu...3 2 Informacje o portalu zarządzania...3 2.1 Konta i jednostki... 3

Bardziej szczegółowo

Diagram wdrożenia. Rys. 5.1 Diagram wdrożenia.

Diagram wdrożenia. Rys. 5.1 Diagram wdrożenia. Diagram wdrożenia Zaprojektowana przez nas aplikacja bazuje na architekturze client-server. W tej architekturze w komunikacji aplikacji klienckiej z bazą danych pośredniczy serwer aplikacji, który udostępnia

Bardziej szczegółowo

Certyfikat. 1 Jak zbieramy dane?

Certyfikat. 1 Jak zbieramy dane? Certyfikat P O L I T Y K A P R Y W A T N O Ś C I 1. Niniejsza Polityka Prywatności określa zasady gromadzenia, przetwarzania i wykorzystywania danych osobowych pozyskanych przez serwis internetowy miejscereklam.pl

Bardziej szczegółowo

Wyjątki (exceptions)

Wyjątki (exceptions) Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Web frameworks do budowy aplikacji zgodnych z J2EE

Web frameworks do budowy aplikacji zgodnych z J2EE Web frameworks do budowy aplikacji zgodnych z J2EE Jacek Panachida promotor: dr Dariusz Król Przypomnienie Celem pracy jest porównanie wybranych szkieletów programistycznych o otwartym kodzie źródłowym

Bardziej szczegółowo

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet Blok 2 - PHP Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Podstawy podstaw, czyli małe wprowadzenie do PHP, Podstawy

Bardziej szczegółowo

Programowanie Zespołowe

Programowanie Zespołowe Programowanie Zespołowe Dobre Praktyki dr Rafał Skinderowicz mgr inż. Michał Maliszewski Parafrazując klasyka: Jeśli piszesz w Javie pisz w Javie - Rafał Ciepiela Principal Software Developer Cadence Design

Bardziej szczegółowo

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8. WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8. Gdy już posiadamy serwer i zainstalowany na nim system Windows XP, 7 lub 8 postawienie na nim serwera stron WWW jest bardzo proste. Wystarczy

Bardziej szczegółowo

Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor

Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor Koszalin, 15.06.2012 r. Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor Zespół projektowy: Daniel Czyczyn-Egird Wojciech Gołuchowski Michał Durkowski Kamil Gawroński Prowadzący: Dr inż.

Bardziej szczegółowo

Polityka prywatności

Polityka prywatności Polityka prywatności Niniejsza Polityka Prywatności określa zasady gromadzenia, przetwarzania i wykorzystywania danych osobowych pozyskanych przez Sklep Internetowy Termy Uniejów (zwany dalej: Sklepem

Bardziej szczegółowo

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost; Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010 System kontroli wersji - wprowadzenie Rzeszów,2 XII 2010 System kontroli wersji System kontroli wersji (ang. version/revision control system) służy do śledzenia zmian głównie w kodzie źródłowym oraz pomocy

Bardziej szczegółowo

Microsoft Class Server. Waldemar Pierścionek, DC EDUKACJA

Microsoft Class Server. Waldemar Pierścionek, DC EDUKACJA Microsoft Class Server Waldemar Pierścionek, DC EDUKACJA Czym jest Microsoft Class Server? Platforma edukacyjna dla szkół Nowe możliwości dla: nauczyciela, ucznia, rodzica Tworzenie oraz zarządzanie biblioteką

Bardziej szczegółowo

Technologie Internetowe Raport z wykonanego projektu Temat: Internetowy sklep elektroniczny

Technologie Internetowe Raport z wykonanego projektu Temat: Internetowy sklep elektroniczny Technologie Internetowe Raport z wykonanego projektu Temat: Internetowy sklep elektroniczny AiRIII gr. 2TI sekcja 1 Autorzy: Tomasz Bizon Józef Wawrzyczek 2 1. Wstęp Celem projektu było stworzenie sklepu

Bardziej szczegółowo

Inżynieria oprogramowania II

Inżynieria oprogramowania II Wymagania funkcjonalne, przypadki użycia Inżynieria oprogramowania II Problem i cel Tworzenie projektów bez konkretnego celu nie jest dobre Praktycznie każdy projekt informatyczny powstaje z uwagi na jakiś

Bardziej szczegółowo

Rozdział 5. Administracja kontami użytkowników

Rozdział 5. Administracja kontami użytkowników Rozdział 5. Administracja kontami użytkowników Ćwiczenia zawarte w tym rozdziale pozwolą przygotować oddzielne środowisko pracy dla każdego użytkownika komputera. Windows XP, w porównaniu do systemów Windows

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie

Bardziej szczegółowo

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL. E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL. Autor: Larry Ullman Poznaj zasady wirtualnego handlu i zarabiaj prawdziwe pieniądze Jak stworzyć doskonałą witrynę sklepu internetowego? Jak

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 12 Marcin Młotkowski 16 maja 2018 Plan wykładu 1 Analiza obiektowa Dziedziczenie Dziedziczenie a składanie 2 Marcin Młotkowski 482 / 537 Dziedziczenie Dziedziczenie a składanie Plan wykładu 1 Analiza

Bardziej szczegółowo

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe. dr inż. Marcin Pietroo Wzorce projektowe dr inż. Marcin Pietroo Adapter - strukturalny wzorzec projektowy, którego celem jest umożliwienie współpracy dwóm klasom o niekompatybilnych interfejsach - adapter przekształca interfejs

Bardziej szczegółowo

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego. Umiejętność czytania oraz tworzenia diagramów klas UML jest podstawą w przypadku zawodu programisty. Z takimi diagramami będziesz spotykał się w przeciągu całej swojej kariery. Diagramy klas UML są zawsze

Bardziej szczegółowo

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe. dr inż. Marcin Pietroo Wzorce projektowe dr inż. Marcin Pietroo Wzorce projektowe Wzorzec projektowy (ang. design pattern) w inżynierii oprogramowania, rozwiązanie często pojawiających się, powtarzalnych problemów projektowych.

Bardziej szczegółowo

Platforma e-learningowa

Platforma e-learningowa Dotyczy projektu nr WND-RPPD.04.01.00-20-002/11 pn. Wdrażanie elektronicznych usług dla ludności województwa podlaskiego część II, administracja samorządowa realizowanego w ramach Decyzji nr UDA- RPPD.04.01.00-20-002/11-00

Bardziej szczegółowo

KATEDRA INFORMATYKI STOSOWANEJ PŁ INŻYNIERIA OPROGRAMOWANIA

KATEDRA INFORMATYKI STOSOWANEJ PŁ INŻYNIERIA OPROGRAMOWANIA KATEDRA INFORMATYKI STOSOWANEJ PŁ INŻYNIERIA OPROGRAMOWANIA Przygotował: mgr inż. Radosław Adamus Wprowadzenie Podstawą każdego projektu, którego celem jest budowa oprogramowania są wymagania, czyli warunki,

Bardziej szczegółowo

Modele uwierzytelniania, autoryzacji i kontroli dostępu do systemów komputerowych.

Modele uwierzytelniania, autoryzacji i kontroli dostępu do systemów komputerowych. Modele uwierzytelniania, autoryzacji i kontroli dostępu do systemów komputerowych. Uwierzytelnianie, autoryzacja i kontrola dostępu Funkcjonowanie internetu w dużej mierze opiera się na zaufaniu i kontroli

Bardziej szczegółowo

2.5 Dzielenie się wiedzą

2.5 Dzielenie się wiedzą 2.5 Dzielenie się wiedzą 2.5.1 Baza wiedzy zespołu Tworzenie bazy wiedzy w OneNote, zapoznanie się z przykładowymi bazami wiedzy, stworzenie struktury bazy wiedzy, zdefiniowanie własnych tagów, stworzenie

Bardziej szczegółowo

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid Tomasz Kuczyński Dział Aplikacji Tomasz Nowak Zespół Bezpieczeństwa Wrocław, 2.12.2010 r. Konferencja i3: internet

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

Rozwiązywanie problemów przekrojowych z użyciem IoC

Rozwiązywanie problemów przekrojowych z użyciem IoC Dla zaawansowanych Rozwiązywanie problemów przekrojowych z użyciem IoC Piotr Szarwas Stopień trudności: W każdej aplikacji podzielonej na warstwy występują elementy, których nie można przypisać do żadnej

Bardziej szczegółowo

Praca w sieci z serwerem

Praca w sieci z serwerem 11 Praca w sieci z serwerem Systemy Windows zostały zaprojektowane do pracy zarówno w sieci równoprawnej, jak i w sieci z serwerem. Sieć klient-serwer oznacza podłączenie pojedynczego użytkownika z pojedynczej

Bardziej szczegółowo

Analiza i projektowanie obiektowe 2016/2017. Wykład 8: Przypisywanie obiektom odpowiedzialności (2)

Analiza i projektowanie obiektowe 2016/2017. Wykład 8: Przypisywanie obiektom odpowiedzialności (2) Analiza i projektowanie obiektowe 2016/2017 Wykład 8: Przypisywanie obiektom odpowiedzialności (2) Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Wzorce

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w

Bardziej szczegółowo

System Kancelaris. Zdalny dostęp do danych

System Kancelaris. Zdalny dostęp do danych Kancelaris krok po kroku System Kancelaris Zdalny dostęp do danych Data modyfikacji: 2008-07-10 Z czego składaj adają się systemy informatyczne? System Kancelaris składa się z dwóch części: danych oprogramowania,

Bardziej szczegółowo

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only. System Szablonów

Generated by Foxit PDF Creator Foxit Software http://www.foxitsoftware.com For evaluation only. System Szablonów System Szablonów System szablonów System szablonów to biblioteka, która pozwala oddzielić warstwę prezentacji od warstwy logicznej. Aplikacja WWW najpierw pobiera wszystkie dane, przetwarza je i umieszcza

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas Analiza i projektowanie obiektowe 2016/2017 Wykład 10: Tworzenie projektowego diagramu klas Jacek Marciniak Wydział Matematyki i Informatyki Uniwersytet im. Adama Mickiewicza 1 Plan wykładu 1. Projektowy

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Z pojedynczym obiekcie zasady grupy znajdziemy dwa główne typy ustawień:

Z pojedynczym obiekcie zasady grupy znajdziemy dwa główne typy ustawień: Zasady grupy (GPO) Windows Server 2008 R2 Zasady grupy to potężne narzędzie udostępnione administratorom systemów Windows w celu łatwiejszego zarządzania ustawieniami stacji roboczych. Wyobraźmy sobie

Bardziej szczegółowo

System zarządzający grami programistycznymi Meridius

System zarządzający grami programistycznymi Meridius System zarządzający grami programistycznymi Meridius Instytut Informatyki, Uniwersytet Wrocławski 20 września 2011 Promotor: prof. Krzysztof Loryś Gry komputerowe a programistyczne Gry komputerowe Z punktu

Bardziej szczegółowo