• Nie Znaleziono Wyników

Wykorzystanie technik i metod obiektowych w projektowaniu SI

N/A
N/A
Protected

Academic year: 2021

Share "Wykorzystanie technik i metod obiektowych w projektowaniu SI"

Copied!
62
0
0

Pełen tekst

(1)

Wykorzystanie technik i metod obiektowych w projektowaniu SI

Halina Tańska

(2)

Istota problemu

Historia ludzkości pokazuje, że podejście metodyczne jest podstawą osiągania

sukcesu. Można przywołać wielkie

starożytne czy średniowieczne projekty budowlane, operacje wojskowe i mnóstwo innych podjętych przedsięwzięć. Obecnie wykorzystywanie metodyk w realizowaniu większości działań staje się wymogiem.

Jest to związane z krótszymi cyklami realizacyjnymi produktów oraz ciągle rosnącą konkurencją. Zwiększające się tempo jest ściśle związane ze zmianą, a projekty z racji swoich cech, pozwalają na utrzymanie tempa i elastyczne

dostosowywanie się do zmian środowiska.

(3)

Zastosowanie

metodyk obiektowych,

języka UML w podejściu obiektowym diagramów wraz z przykładami:

diagram przypadków użycia,

diagram klas,

diagram obiektów,

diagram komponentów,

diagram przebiegu,

diagram kooperacji,

diagram stanów,

diagram czynności,

proces RUP,

zalety i wady podejścia obiektowego.

(4)

Wprowadzenie

Podczas wytwarzania gotowego oprogramowania należy uwzględnić dwa różne punkty widzenia.

Z jednej strony punkt widzenia zamawiających, którzy mają pewne wymagania w stosunku do systemu.

Z drugiej strony mamy programistów, którzy wiedzą, jak konstruować systemy.

Zamawiający znają dziedzinę problemu i potrafią o niej opowiadać za pomocą specjalistycznego słownictwa. Nie są to jednak osoby skłonne do czytania, a tym bardziej tworzenia technicznych opisów systemu. Zamawiający chcą opisać

system w sposób jak najprostszy i jak najbardziej zrozumiały w kontekście swoich codziennych

obowiązków. Wynika to oczywiście z tego, że system powinien im pomagać w pracy, którą wykonują.

(5)

Wprowadzenie

Z drugiej strony programiści tworzą system z bardzo precyzyjnych konstrukcji odpowiedniego języka

programowania. Są oni najczęściej dokładnie

zorientowani w szczegółach platformy sprzętowej lub programowej, czy też w niuansach określonej

biblioteki kodu. Nie są natomiast ekspertami w

dziedzinie, dla której tworzą system. Ich słownictwo jest zasadniczo różne od słownictwa zamawiających.

Wymagają zatem bardzo dokładnego opisu sposobu konstrukcji systemu. W rzeczywistości przecież

gotowy system powinien być jak najwierniejszym modelem środowiska, którego dotyczy.

(6)

Problem

Zarówno zamawiający, jak i programiści muszą panować nad systemem, który zwykle składa się z tysięcy różnych wymagań.

Jak zatem zapanować nad złożonością problemu?

Doskonałym rozwiązaniem okazuje się

modelowanie za pomocą technik obiektowych.

Elementem, który w modelowaniu obiektowym pozwala pogodzić język użytkownika z językiem programisty oraz pokonać problem złożoności systemu jest obiekt. Obiekty znajdujące się w środowisku ustalają wspólny język w zespole odpowiedzialnym za powstanie systemu

oprogramowania. Odpowiadają pojęciom z

modelowanej dziedziny problemu oraz są podstawą implementacji realizowanego systemu.

(7)

Modelowanie obiektowe

Na bazie obiektów powstają obiektowe modele, czyli kopie rzeczywistych systemów.

Modelowanie obiektowe polega zatem na:

znajdowaniu obiektów w otoczeniu

opisywaniu struktury i dynamiki działania obiektów,

klasyfikacji obiektów,

opisywaniu struktury powiązań klas obiektów,

opisywaniu dynamiki współpracy obiektów podczas funkcjonowania systemu.

Modelowanie obiektowe polega na rysowaniu diagramów opisujących strukturę i dynamikę systemu składającego się z obiektów.

(8)

Obiekt

Obiekt w rozumieniu modelowania

obiektowego może być opisany za pomocą trzech elementów: tożsamości, stanu i zachowania. Każdy obiekt ma zatem

indywidualną tożsamość odróżniającą go od innych obiektów. Obiekty zawierają również elementarne składniki o zmieniających się wartościach, które określają ich stan. Potrafią też zachowywać się w odpowiedni sposób w różnych sytuacjach – wykonują określone usługi na rzecz innych obiektów.

(9)

Obiekt

• Stan obiektu to zbiór jego cech charakterystycznych. Każdy obiekt ma przypisany zbiór właściwości, które go charakteryzują. Są one nierozerwalnie związane z danym obiektem i tak naprawdę są one również obiektami, które w całości kontroluje obiekt główny. W czasie swojego życia obiekt ma zawsze ten sam zestaw właściwości, jednak mogą one przyjmować różne wartości, przez co wyznaczają stan

obiektu w danym momencie.od Analysis View

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

Samochód + marka: char - kolor: char

# pojemność: double

# rocznik: int

# /ile_lat: int

+ uruchom_się() : boolean + wyłącz_się() : boolean

(10)

Obiekt

• Tożsamość wyróżnia obiekt pośród innych obiektów jako

osobną jednostkę. Można ją określić jako wyróżnioną cechę obiektu, która pozostaje niezmienna przez cały czas życia tego obiektu. Wartość tej cechy powinna być unikalna wśród wszystkich obiektów, które

otaczają obiekt. Jednocześnie nie może ona stanowić elementu stanu obiektu. Warto też podkreślić, że oczywiście możliwe jest rozróżnienie tożsamości obiektów za pomocą ich stanu (np. stwierdzając, jaki kolor ma samochód), jednak może się zdarzyć, że w systemie wystąpią dwa różne obiekty o identycznym stanie. Wtedy jedyną możliwością

rozróżnienia obiektów będzie ich tożsamość.

(11)

Obiekt

• Zachowanie to zbiór usług, które obiekt potrafi wykonywać na rzecz innych obiektów. Zachowanie stanowi element dynamiki

modelu (tzn. sposób działania systemu). W ramach tej dynamiki

obiekty mogą prosić inne obiekty o wykonanie usług. Obiekt reaguje na taką prośbę, jeżeli usługa jest w zbiorze obsługiwanych przez niego usług. Prośby obiektów o wykonanie usług nazywane są

komunikatami. W ramach wykonania usługi obiekt przeprowadza przetwarzanie danych, którego efektem może być zmiana stanu

obiektu albo dostarczenie drugiemu obiektowi odpowiedniego rezultatu przetwarzania. Efekt wykonania usługi zależy od trzech rzeczy: stanu obiektu, parametrów komunikatu, stanu innych obiektów.

Parametry to lista wartości obiektów, które pozwalają na sterowanie zachowaniem usługi. Usługa może się zatem zachowywać różnie w zależności od wartości parametrów. W trakcie wykonywania usługi obiekt może również poprosić inne obiekty o pomoc.

(12)

Klasa

• Podstawową jednostką modelowania obiektowego nie jest obiekt, ale grupa obiektów. Staramy się zatem w jakiś sposób pogrupować

(poklasyfikować) obiekty znajdujące się w modelowanej dziedzinie.

Takie grupy podobnych do siebie w pewien sposób obiektów nazywamy klasami.

SAMOCHÓD

(13)

Klasa

• Klasa jest opisem grupy obiektów o jednakowym zestawie właściwości i sposobie zachowania. Opis klasy stanowi pewnego rodzaju wzornik dla tworzenia

obiektów tej klasy (lub też dla sprawdzania, czy obiekt należy do klasy). Ten wzornik zawiera nazwę klasy, zestaw właściwości jednakowych dla wszystkich obiektów klasy oraz zestaw usług obsługiwanych przez

wszystkie obiekty klasy. Każdy obiekt przynależny do danej klasy ma wszystkie

właściwości umieszczone na liście właściwości tej klasy oraz dostarcza wszystkich usług

dostarczanych przez klasę. Właściwości klasy nazywamy – atrybutami, a usługi

operacjami (metodami).

(14)

Modelowanie struktury

Każdy model powinien odwzorowywać strukturę modelowanego fragmentu rzeczywistości. Na etapie projektowania należy ustalić z jakich elementów składa się modelowany system lub modelowana dziedzina i w jaki sposób elementy te są ze sobą powiązane. Nie wystarczy znaleźć klas oraz określić ich atrybuty i operacje – należy również pokazać odpowiednią sieć zależności.

Strukturę możemy prezentować na dwóch

poziomach: na poziomie obiektów i na poziomie klas. Oznacza to, że na diagramach opisujących strukturę mogą się pojawić klasy, jak również obiekty. Należy je tak zdefiniować, by przy ich pomocy z wykorzystaniem związków przedstawić modelowaną dziedzinę problemową.

(15)

Modelowanie struktury

Diagramy zawierające klasy umożliwiają pokazanie potencjalnych możliwości

wchodzenia obiektów w interakcje ze sobą. Na diagramach tych można

również pokazywać zwyczajne zależności między pojęciami w danej dziedzinie

problemu. Przy takim podejściu

diagramy te stanowią słownik dziedziny, w którym poszczególne klasy

odpowiadają pojęciom słownikowym

(16)

Klasyfikacja diagramów opisu struktury dla języka UML

Diagram opisu struktury

Diagram wdrożenia Diagram składowych

Diagram struktury

Diagram klas

Diagram komponentów Diagram pakietów

Diagram obiektów

(17)

Modelowanie dynamiki

Drugim zasadniczym elementem

modelowania jest ukazanie dynamiki

modelowanego systemu. O ile w modelu struktury pokazujemy aspekty statyczne, to model dynamiki pokazuje system w działaniu. Model dynamiki jest o tyle istotny, że podczas konstrukcji

oprogramowania staramy się zrealizować właśnie dynamiczną funkcjonalność

systemu odpowiadającą wymaganiom zamawiających. Od dobrej specyfikacji, a potem realizacji dynamiki systemu zależy zatem jego jakość rozumiana jako

spełnienie rzeczywistych potrzeb zamawiającego.

(18)

Modelowanie dynamiki

Model dynamiki ukazuje system w

działaniu zatem konieczne jest pokazanie następstwa czasu. Należy pokazać

kolejności czynności wykonywanych przez system czy też kolejności interakcji w

dialogu użytkownika z systemem. Ważne jest, aby model dynamiki miał ścisły

związek z modelem struktury. Chodzi o to, żeby te dwa widoki na ten sam system były ze sobą zgodne. Oznacza to, że obiekty pojawiające się na diagramach opisujących dynamikę powinny mieć swoje odpowiedniki w obiektach lub klasach obrazowanych na diagramach opisu struktury.

(19)

Diagram maszyny stanów

Klasyfikacja diagramów opisu dynamiki dla języka UML

Diagram opisu dynamiki

Diagram przypadków użycia

Diagram interakcji

Diagram opisu interakcji

Diagram sekwencji Diagram następstwa

Diagram komunikacji

Diagram czynności

(20)

Definicja UML-a

UML (ang. Unified Modeling Language – zunifikowany język modelowania) jest jednym z najbardziej rozpowszechnionych językiem specyfikacji do tworzenia

obiektowo zorientowanych systemów. Jest to język modelowania wizualnego,

pozwalający budowniczym systemów na tworzenie planów, na których ich wizje zostają uchwycone i wyrażone w

standardowy, łatwy do zrozumienia sposób. Dostarcza też mechanizmów ułatwiających efektywną wymianę informacji.

(21)

Trochę historii

Przed pojawieniem się UML-a rozwój systemów był zawsze mniej lub

bardziej udaną próbą trafienia do celu. Analitycy systemowi starali się ocenić potrzeby klientów, następnie tworzyli analizę wymagań i warunków zapisaną w notacji jasnej dla nich, ale nie zawsze zrozumiałej dla klientów.

Przekazywali tę analizę zespołowi programistów i mieli nadzieję, że

produktem końcowym będzie system, którego klient oczekiwał.

(22)

Potrzeba matką wynalazków…

UML został wymyślony przez Grady'ego Boocha, Jamesa Rumbaugha i Ivara

Jacobsona. Ci trzej – nazwani „Trzej Amigos"‘

– w latach osiemdziesiątych i

dziewięćdziesiątych XX wieku pracowali w trzech różnych organizacjach, niezależnie rozwijając własne metodologie obiektowo zorientowanej analizy i projektowania. Ich osiągnięcia przewyższyły jakością dzieła

innych analityków. W połowie lat 90 zaczęli od siebie nawzajem pożyczać pomysły, aż

wreszcie zdecydowali się połączyć swoje wysiłki.

(23)

Potrzeba matką wynalazków…

Połączyli oni swoje notacje, tworząc jedną metodę. Z poszczególnych notacji przejęto najlepsze rozwiązania.

UML

Booch Rumbaugh Jacobson

metoda Boocha

OMT przypadki

użycia

(24)

Podstawowe elementy UML

Notacja – istotna przy szkicowaniu modeli:

o elementy graficzne,

o składnia języka modelowania.

• Należy pamiętać, że UML nie jest:

o narzędziem - lecz specyfikacją dla narzędzi,

o metodyką – nie określa metody projektowania, a zaleca jedynie stosowanie podejścia przyrostowego.

Semantyka – tzw. metamodel – istotny przy programowaniu graficznym; zawiera:

o definicje pojęć

o powiązania między definicjami.

• Należy pamiętać, że UML jest:

o notacją graficzną – określa sposób zapisu modeli,

(25)

Diagramy – komponenty UML-a

UML zawiera wiele elementów graficznych

grupowanych w postaci diagramów. Ponieważ jest językiem, określa zasady łączenia tych elementów. Celem diagramów jest pokazanie wielu perspektyw systemu - ten zestaw

perspektyw to model. Należy podkreślić, że model opisuje, co system ma robić, ale nie określa jak system ten ma zostać

zaimplementowany.

Model jest pojęciem przydatnym w nauce i inżynierii. W najogólniejszym sensie, tworząc model, używamy czegoś, co dobrze znamy, do zrozumiałego objaśnienia czegoś, o czym

wiemy niewiele. Na kolejnych slajdach zostanie przedstawionych 8 wcześniej wspomnianych diagramów UML.

(26)

Diagram przypadków użycia

Przypadek użycia jest bardzo przydatnym pojęciem, ponieważ pomaga

analitykowi zrozumieć jak system powinien się zachowywać. Oprócz tego pozwala na zebranie wymagań stawianych systemowi przez

użytkowników. Znaczenie przypadku użycia staje się jeszcze większe, kiedy zastosujemy jego wizualizację dostępną w UML. Sprawdzony jest fakt, że przyszli użytkownicy systemu wiedzą znacznie więcej, niż potrafią powiedzieć –

pokazanie użytkownikowi diagramu przypadków użycia służy uzyskaniu dodatkowych informacji.

(27)

Diagram przypadków użycia

Przypadek użycia jest inicjowany przez aktora, który:

o wymaga dostępu do systemu,

o reprezentuje punkt widzenia na system,

o jest osobą fizyczną lub systemem zewnętrznym.od Analysis View

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

aktor klient bank

(28)

Diagram przypadków użycia

Każdy przypadek użycia jest zbiorem scenariuszy, a każdy scenariusz – ciągiem kroków. Kroki te nie są pokazywane na diagramie przypadków użycia, nie ma ich także w notatkach – ich obecność pogorszyłaby klarowność diagramu, a właśnie ta cecha jest

podstawową zaletą diagramów UML. Każdemu

diagramowi w dokumentacji przeznaczana jest osobna strona. Podobnie jest ze scenariuszem – przeznacza się osobną stronę, na której znajdują się:

o aktor – który inicjuje przypadek użycia, o warunki wstępne przypadku użycia,

o kroki scenariusza,

o warunki końcowe scenariusza,

o aktor – który czerpie korzyść z przypadku użycia, o lista założeń (opcjonalnie)

o krótki opis

(29)

Związki między przypadkami użycia

Zawieranie

Zawieranie przypadków użycia oznaczamy linią przerywaną

zakończoną strzałką wskazującą na niezależny przypadek użycia (czyli ten, od którego zależy inny przypadek). Nad linią związku zawierania umieszczamy w nawiasach francuskich

<<include>>. Należy pamiętać, że zawierany przypadek użycia nigdy nie występuje samodzielnie, a jedynie wraz z przypadkiem użycia, który go

zawiera.

od Analysis View

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

zarządzaj zasobami rej estruj działania

«include»

(30)

Związki między przypadkami użycia

Rozszerzenie

Związek, który powoduje, że oryginalny ciąg zdarzeń zostaje uzupełniony o nowe kroki

nazywamy rozszerzeniem.

Rozszerzanie określa dodatkową funkcjonalność przypadku użycia.

Rozszerzenie oznaczamy linią przerywaną zakończoną strzałką wskazującą na rozszerzany

przypadek użycia Nad linią związku zawierania umieszczamy w nawiasach francuskich

<<extend>>.

od Analysis View

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

zarządzaj proj ektem

utrzymuj proj ekt

utrzymuj działanie

utrzymuj zadanie

«extend»

«extend» «extend»

(31)

Związki między przypadkami użycia

Uogólnienie

Przypadki użycia mogą dziedziczyć po sobie

zachowanie i wartości. Potomek, który dziedziczy po przodku, do otrzymanych cech przodka może dodać własne zachowanie. Związek uogólnienia może istnieć również między aktorami.

od Analysis View

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

menedżer

menedżer proj ektu

menedżer zasobów

od Analysis View

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

rezerw acj a książki rezerw acj a

czasopisma

rezerw acj a

(32)

Przykład

od Analysis View

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

                                                                             

Moduł rezerwacji

rezerw acj a

rezerw acj a

czasopisma rezerw acj a ksiązki czytelnik

w yszukanie

pow iadomienie

«include»

«extend»

Uogólnienie Zawieranie

Rozszerzenie

(33)

Diagram klas

Diagram klas jest jednym z najczęściej stosowanych diagramów UML.

Zazwyczaj zawiera największą ilość informacji i wykorzystuje największą liczbę symboli. Na diagramie

prezentowane są klasy, atrybuty, operacje oraz powiązania między klasami. Budując diagram klas

organizujemy podział odpowiedzialności pomiędzy klasy systemu i rodzaj

wymienianych pomiędzy nimi

komunikatów. Ilość danych zawarta na diagramie klas pozwala na bezpośrednie generowanie z niego gotowego kodu systemu.

(34)

Diagram klas

Klasa w UML przedstawiana jest jako prostokąt z

wydzielonymi polami: nazwa, atrybuty i metody. Tradycyjnie nazwa klasy zaczyna się z

dużej litery, jest pisana pogrubionym drukiem, a w przypadku klasy abstrakcyjnej – kursywą. Obiekt jest

instancją klasy – nazwa obiektu jest umieszczana przed nazwą klasy i

oddzielana od niej dwukropkiem.

nazwa

atrybuty

metody

od Analysis View

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

Samochód + marka: char - kolor: char

# pojemność: double

# rocznik: int

+ uruchom_się() : boolean + wyłącz_się() : boolean

(35)

Diagram klas – atrybuty klasy

• Zazwyczaj atrybut klasy opisywany jest przez nazwę oraz typ. Jest to jednak definicja „okrojona”, ponieważ notacja UML obejmuje oprócz tych cech: widoczność (public– element jest widoczny z każdego

miejsca w systemie, private – element jest widoczny we własnej klasie i jej podklasach, protected - element jest widoczny tylko we własnej klasie, package– element jest widoczny tylko wewnątrz własnego pakietu, krotność – określenie liczby obiektów mieszczących się w atrybucie, ograniczenia atrybutu oraz wartość domyślną. Jeżeli dla elementu podczas definicji nie podano wartości, to przypisywane są one w sposób domyślny – widoczność: prywatna, krotność: 1.

widoczność nazwa : typ[krotność] {ograniczenia} = wartość_dom

(36)

Diagram klas

Często zdarza się, że system

wykorzystuje atrybut wyliczany na podstawie innych atrybutów.

Takiego atrybutu nie ma potrzeby definiować w klasie – ponieważ jego wartość obliczana jest w

czasie rzeczywistym. Atrybuty takie oznaczone są znakiem /

umieszczonym przed nazwą.

od Analysis View

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

                         

Samochód + marka: char - kolor: char

# pojemność: double

# rocznik: int

# /ile_lat: int

+ uruchom_się() : boolean + wyłącz_się() : boolean

(37)

Diagram klas

Metoda (zwana również operacją) jest procesem, który klasa może wykonać:

widoczność nazwa (parametr1, parametr2,...) : typ {ograniczenia}.

Parametr dla metody zadawany jest w formie:

kierunek nazwa typ[krotność] = wartość dom.

Możliwe kierunki parametrów:

o in: wejściowy (domyślny) o out: wyjściowy

o inout: wejściowo-wyjściowy o return: zwracany z metody

(38)

Diagram klas – związki między klasami

Zależność to najsłabszy i jednocześnie najprostszy typ relacji między klasami. Przez zależność rozumie się, że zmiana jednej klasy wpływa na drugą:

o «call» - operacje w klasie A wywołują operacje w klasie B o «create» - klasa A tworzy instancję klasy B

o «instantiate» - obiekt A jest instancją klasy B

o «use» - do zaimplementowania klasy A wymagana jest klasa B

od Analysis View

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

                                                   

ClassB ClassA

«call»

Cytaty

Powiązane dokumenty

Wykorzystuj¹c wzór na dyla- tacjê czasu (MT 06/06), stwierdzamy, ¿e jeœli po- ci¹g porusza siê z prêdkoœci¹ v, to czas zmie- rzony pomiêdzy zdarzeniami (wys³anie i

Może dziś jesteśmy innymi ludźmi, niż byliśmy w zeszłym roku i będziemy kimś zupełnie innym za

Sku- pię się na tych, których nie można tak nazwać – i wró- cę do tego, co powiedziałem: mieszanie się polityki i ochrony zdrowia nie jest dobre.. Często samorządy

wygasają z upływem roku od dnia, w którym umowa przyrzeczona miała być zawarta; jeżeli sąd oddali żądanie zawarcia umowy przyrzeczonej, roszczenia

kiedy władca zasiadł na tebańskim tronie w okolicznych górach pojawił się dziwny stwór który porywał ludzi i rzucał ich w przepaść miał twarz kobiety a z

W tym przypadku równowaga między klasami jest zaburzona: określony jest właściciel oraz obiekt podrzędny, które wiąże czas życia. • Właściciel nie jest

Ponieważ ta instrukcja może okazać się niewystarczająca udostępniam test gry z 7 zadaniami aby sprawdzić możliwości platformy – dostępny jest on pod nr

Wariacją n–elementową bez powtórzeń ze zbioru m–elementowego nazywamy uporząd- kowany zbiór (n–wyrazowy ciąg) składający się z n różnych elementów wybranych z