Witam
Mam zadanie z UML do ogarnięcia, coś tam skleciłem ale niestety na tym etapie się zaciąlem (tak ogólnie to nie wiem czy ide dobrą drogą) jesli ktos by mógł zerknąć swoim profesjonalnym okiem i cos podpowiedzieć to było by miło, troche mnie ten cały UML przerasta, ale trzeba zaliczyć :)

Poniżej zamieszczam tekst zadania oraz linki do moich wypocin
Proszę o pomoc

http://imageshack.us/f/822/rysunek1c.jpg/

Treść:

  1. Dla podanych założeń skonstruuj diagram klas (nie redukując liczności)

Poniżej zamieszczono wymagania dla systemu umożliwiającego współpracę wielu osób nad tworzeniem ogólnodostępnej, popularnej internetowej książki kucharskiej.

  1. Mają być przechowywane przepisy dla potraw wywodzących się z różnych regionów świata, np. Włoch, Tajlandii, itp. (ma być pamiętana nazwa regionu/kraju). Dana potrawa może być znana w wielu regionach świata i w każdym z nich może mieć swoją specyficzną (unikatową) nazwę oraz w pewnym stopniu może różnić się od przepisu bazowego, np. co do sposobu wykonania (chcemy pamiętać opis najbardziej istotnych różnic w postaci tekstu o długości nie większej niż 256 znaków). Za przepis bazowy dla potrawy uważamy ten, który został wprowadzony jako pierwszy.
  2. Każda potrawa ma być opisywana za pomocą informacji, takich jak: lista słów kluczowych (co najmniej 3, nie więcej niż 10), nazwa (unikalna), lista składników, łącznie z ich ilościami (co najmniej 3 składniki dla każdej potrawy), przepis (czyli opis sposobu wykonania), przeciętny czas przygotowywania, liczba porcji potrawy (które uzyskuje się z podanych ilości składników), zdjęcie. Potrawa może składać się z innych potraw, a także sama może też stanowić element składowy innych potraw. Zakłada się, że nie będą przechowywane przepisy, dla których przeciętny czas przygotowywania byłby dłuższy niż pewien maks. czas przygotowywania (aktualnie równy 1,5 godziny). Dla każdego składnika ma być przechowywana unikalna nazwa oraz jednostka miary (np. dkg czy ml).
  3. Potrawy dzielą się na grupy ze względu na ich rodzaj, jak np. przystawki na zimno czy sosy (dla sosów chcemy pamiętać liczbę składników). Jest możliwe, że dana potrawa może zostać zaliczona do więcej niż jednej z takich grup.
  4. Ponadto, potrawy dzielą się także ze względu na trudność ich wykonania, podział ten jest przeprowadzany w oparciu o przeciętny czas przygotowywania: łatwe (krócej niż 15 minut), średnio-trudne (między 15 a 30 minut) oraz trudne (powyżej 30 minut). Dla potraw trudnych mają być dołączane wskazówki wspomagające (w postaci tekstu).
  5. Zarejestrowani użytkownicy portalu (login, nick, email) mogą: (1) dodawać nowe potrawy, a te wprowadzone przez siebie modyfikować (nawet więcej niż jeden raz) czy też usuwać, (2) dodawać nazwy regionalne dla potraw łącznie z opisami różnic oraz (3) wprowadzać opinie do przepisów dostarczonych przez innych użytkowników. Ma być wiadomo: kto, co i kiedy zrobił.
  6. Każda z opinii dla danej potrawy ma zawierać ocenę użyteczności jej przepisu (w skali od 1 do 5); do opinii można także dołączyć komentarz. Zabronione jest opiniowanie potraw wprowadzonych przez siebie, ale potrawy innych (te same) można opiniować wielokrotnie. Opinie użytkowników, są uporządkowane w obrębie danej potrawy zgodnie z datami ich wprowadzenia.
  7. System powinien wspomagać użytkowników w realizowaniu funkcjonalności, takich jak np.:
    7.1. Wyszukanie potrawy po słowie kluczowym (każda osoba czyli np. gość) z ewentualnym wprowadzeniem opinii o niej;
    7.2. Wprowadzenie opinii o potrawie;
    7.3. Podanie ogólnego opisu dla potrawy (w oparciu o informacje zawarte w punkcie 2);
    7.4. Podanie szczegółowego opisu dla potrawy (w oparciu o informacje zawarte w punktach 2, 3 i 4);
    7.5. Automatyczne usuwanie potraw, dla których średnia ocena użyteczności przepisu nie przekracza wartości 2 (przy minimum 20 wprowadzonych opiniach);
  1. Podkreśl te rodzaje dziedziczenia (rozłączne, nierozłączne, kompletne, niekompletne, jednokrotne, wielokrotne, jednoaspektowe, wieloaspektowe, dynamiczne, elipsa), które uważasz za potrzebne do wykorzystania na diagramie z zadania1 Dla każdego podkreślonego rodzaju dziedziczenia podaj hierarchię/aspekt, w której ten rodzaj dziedziczenia wystąpił.
  2. Jakie rodzaje metod (abstrakcyjne, zaimplementowane) może zawierać klasa abstrakcyjna, a jakie klasa konkretna? Podaj przykłady w oparciu o diagram z zadania 1.
  3. Czym różni się metoda klasowa od metody obiektu i atrybut klasowy od atrybutu obiektu? Podaj przykłady obu rodzajów metod i obu rodzajów atrybutów dla diagramu z zadania 1.
  4. Wyjaśnij pojęcie polimorfizm metod; wskaż jego zastosowanie na diagramie klas z zadania 1.
  5. Asocjację z diagramu z zadania 1, posiadającą niesymetryczne liczności oraz atrybut (lub klasę asocjacji), zamień na asocjację kwalifikowaną. Uzasadnij dlaczego poddałeś zamianie właśnie tę asocjację.
  6. Wskaż na diagramie z zadania 1 asocjację, która jest agregacją lub kompozycją (lub może kwalifikować się do zamiany na nią). Objaśnij, dlaczego zdecydowałeś się na wybór agregacji /kompozycji, a nie „zwykłej” asocjacji? Ponadto, dlaczego wybrałeś agregację, a nie kompozycję (czy też odwrotnie)?
  7. Wskaż na diagramie z zadania 1 przykładowe ograniczenie. Na jaki element modelu zostało ono nałożone? Czy jest to ograniczenie statyczne czy dynamiczne? Zaproponuj, jaka metoda i w jakiej klasie mogłaby być odpowiedzialna za jego zapewnienie.
  8. Dla funkcjonalności związanej z podawaniem ogólnego opisu dla potrawy (punkt 7.3 tekstu wymagań) napisz scenariusz.
  9. Dla funkcjonalności związanej z podawaniem ogólnego opisu dla potrawy (punkt 7.3 tekstu wymagań) skonstruuj diagram aktywności zgodny ze scenariuszem z zadania 9.