konkurs (zakończony) :: UML :: filmy-aktorzy

0

Na zamieszczonym poniżej diagramie uml są błędy, wygrywa osoba która odnajdzie ich najwięcej. Diagram przedstawia perspektywę logiczną branży filmowej. Za błąd nie jest uważany brak jakiegoś elementu, w szczególności błędem nie są:

  • brakujące klasy
  • brakujące ograniczenia

Zasady gry:
Umieszczacie odpowiedzi w kolejnych postach. Nie wolno edytować postów po tym jak pojawi się następny. Ranking z wynikami będzie ogłaszany na bieżąco. Zwycięzca po wskazaniu adresu pocztowego dostaje świeżego ananasa i moje opracowanie wszystkich klasycznych wzorców projektowych w formie pięciu kartek kompedium.

Odpowiedzi ocenia trzyosobowa komisja w składzie:

  • kapustka (kierownik)
  • jacekmigacz
  • mariaNcio

Powodzenia i dobrej zabawy.
ps. Odwagi ! nie będziemy mordować za głupie odpowiedzi. (będziemy jedynie dawać dożywotniego bana)

Kliknij miniaturę aby przejść do zadania:
user image

0

Hmm... ciężka sprawa, ale spróbuję:

  • film w wielu wytwórniach filmowych
  • kamery, które nie należą do wytwórni
  • 2 identyczne klasy kino
  • część kamery ma co najmniej jedną podczęść
  • film ma tylko 1 seans (chyba by się koszta nie zwracały ;))
  • kino może mieć 0 sal kinowych
  • związek generalzacja-specjalizacja miedzy kinem a kinem samochodowym powinien być w drugą stronę (kino nie jest szczególnym przypadkiem kina samochodowego)

I kilka pytań:

  1. W zasadach jest, że nie można edytować postu... a czy mogę w nast poście coś dopisać jak jeszcze coś znajdę?
  2. Czy na zakończenie konkursu zostaną przedstawione błędy z uzasadnieniami?
  3. Czy jeśli ktoś poda błędną odpowiedź może liczyć na to, że komisja wyjaśni dlaczego to nie jest błędem?
0

[!!!] Nowy kapuściany konkurs :d Może czegoś się nauczę :-)

  1. O ile przyjmiemy, że film może mieć wiele typów, zgodzę się z powiązaniem o liczebności -. Ale jeśli się nie mylę to film posiada tylko jeden typ np: komedia. Wtedy powiązanie od filmu do typu 1-*. Oczywiście 1 po stronie typu.

  2. Jeśli chodzi o wytwornie filmowe nie zgodzę się z poprzednikiem. Zdarzają się produkcje ze współpracującymi wytwórniami.

  3. Dwie identyczne klasy kino. Tu też nie zgodzę się z poprzednikiem. Moim zdaniem nie jest to błąd. Diagram przedstawia perspektywę logiczną, dlatego też autor mógł sobie pozwolić na powtórzenie klasy dla estetyki diagramu. To samo dzieje się w wytwórnią filmową.

  4. "część kamery ma co najmniej jedną podczęść". Z tym też się nie zgodzę. Są części nie posiadające podczęści. Dlatego dla pewności dałbym 1-0..*

  5. Film ma tylko jeden seans. Tu zgodzę się z całą pewnością :) 1-*

  6. Podobnie jak z podczęściami kamer uwzględniłbym możliwość działu wytwórni bez poddziału 1-0..*

  7. "Kino może mieć 0 sal kinowych". W kinie wyróżnimy: hol, wejście, wc itd. Jeśli nie będzie sali kinowej to jak nazwiesz pomieszczenie w którym wyświetla się filmy?? Dałbym 1-1..*

  8. Teraz kwestia dziedziczenia. Z odwrotnym dziedziczeniem nie mogę się zgodzić. Na diagramie dobrze przedstawiono dziedziczenie. Kino samochodowe dziedziczy wszystkie atrybuty po kinie np. rząd i kolumna odpowiada miejscu parkingowemu.
    Będąc przy dziedziczeniu pominąłbym związek między kinem samochodowym a seansem. Każdy przodek może być zastąpiony potomkiem.

  9. Domyślam się, że ujemne krotności są niechcianą pomyłką.

To chyba tyle na dzisiaj :)

Jednego nie rozumiem na tym diagramie. Mam nadzieje, że Kapustka wytłumaczy później ograniczenie xor ;-) które moim zdaniem jest niepotrzebne.

Pozdrawiam i miłej zabawy.

Edit robiony przed nowym postem.

0

A' propos Maksik:
Ad. 1 A oglądałem ostatnio thriller science-fiction ;)
Ad. 2 Wydaje mi sie, że oboje mamy rację i oboje się mylimy: nie znamy założeń, więc skąd można wiedzieć czy to jest poprawne, czy nie? (to samo się tyczy punktu powyżej)
Ad. 4 Zauważ, że moja lista to lista błędów, więc w tym punkcie się zgadzamy
Ad. 7 patrz: Ad 4.
Ad. 8 Masz rację- moja omyłka

xor też jest dla mnie zagadką ;)

//do postu poniżej, żeby forum nie zaśmiecać:

Napisałem 'część kamery ma co najmniej jedną podczęść' i napisałem, że to jest lista błędów
ergo: uważam, że błędem jest fakt iż wg diagramu część kamery musi mieć co najmniej jedną podczęść.
[soczek]

0

Fajnie, że tak szybko odpisałeś :)

Ad1. Dlatego napisałem 'O ile przyjmiemy'. Do tego można przyjąć, że thirller since-fiction jest oddzielnym typem :)
Ad2. Sprawdzałem pod względem błędu. Kapustka zrobił krotności - a istnieją takie przypadki, dlatego uważam, że nie ma w tym błędu.
Ad4. Napisałeś że cześć kamery ma co najmniej jedną podczęść. Ja natomiast 1-0..* (od zera w gorę). Dlatego nie powiedziałbym że sie zgadzamy.
Ad7. Nie widze powiązania z ad. 4

Mam nadzieje, że konkurs rozkręci się na dobre i bedzie więcej takich rozmów :)

Pozdrawiam

Edit: Już rozumiem wystąpienie xor :)

0

Wyniki częściowe
id02009 - 2pkt
maksik - 0pkt

Wstęp
Na pierwszy ogień poszły błędy związane z licznościami. Są to najprostsze błędy i tutaj po prostu "kto pierwszy ten lepszy". Na licznościach można jeszcze zdobyć kilka punktów ale tak będą to zagadnienia trudniejsze od asocjacji film-seans i będę wymagał poprawnego uzasadnienia.

Czy * = 1..* ?
Pojawiła się kwestia liczności część kamery-podczęść. Zakładam, że liczność * oznacza to samo co 0... Wydaje mi się, że tak jest domyślnie w uml'u. Jeśli jednak ktoś wskaże mi, że * = 1.. to dostaje punkt za ten generalny błąd.

Pierwszą ofiarą braku poprawnego uzasadnienia jest maksik, słusznie powiedział, że asocjacja kino samochodowe-seans może być usunięte. Niestety nie określił poprawnej przyczyny.

Część waszych odpowiedzi dotyczy specyfiki dziedziny. Jestem świadom tego problemu od samego początku i starałem się zminimalizować udział zagadnień dziedzinowych w konkursie. Niestety wyeliminować się ich nie da.

Powtórzenie klasy było podpuchą. To bardzo pożyteczna możliwość, rzadko używana. Fakt, że na tak małym diagramie być może nie ma powodu aby sięgać do powtarzania klas ...

Na tym etapie nie chcę jeszcze zdradzać ile jest wszystkich błedów w zadaniu ale powiem, że wystarczy ich aby nowy uczestnik objął znaczne prowadzenie następnym postem. Do dzieła ! Ananas i wzorce projektowe czekają.

pozdrawiam

id02009

  • film w wielu wytwórniach filmowych

Nie jest błędem - to taka kooprodukcja kilku wytwórni.

  • kamery, które nie należą do wytwórni

Trochę dziwne przyznaję ale powiedzmy, że system gromadzi informacje również o niektórych egzemplarzach kamer jeszcze przed zakupem ich do jakieś wytwórni.

  • 2 identyczne klasy kino

Nie ma nic w tym złego, to jest wciąż ten sam jeden byt. Pamiętajcie, że w uml istnieje możliwość NIE pokazywania pewnych elementów. W jednej sytuacji Kino jest przedstawione bez zaznaczonej asocjacji do klasy Adres, w drugiej jest przedstawione bez asocjacji do Seans i Sala kinowa. Wynikowe Kino jest tylko jedno i posiada wszystkie te elementy.

Szczególnie polecam powtarzać klasy słownikowe (jeżeli obrazujecie na przykład model trwałości w EJB) jak na przykład "Jednostka Miary" w systemach ERP. Bardzo pomaga utrzymać czytelność w diagramie.

  • część kamery ma co najmniej jedną podczęść

Zakładam że =0... Patrz uwaga we wstępie.

  • film ma tylko 1 seans (chyba by się koszta nie zwracały ;))

Tak, pierwszy punkt na twoje konto

  • kino może mieć 0 sal kinowych

Ok (niezamierzone ale prawdziwe, właśnie zrozumiałem że w praktyce często daję * gdzie tak naprawdę powinno być 1..*, dzięki !), jest punkt.

  • związek generalzacja-specjalizacja miedzy kinem a kinem samochodowym powinien być w drugą stronę (kino nie jest szczególnym przypadkiem kina samochodowego)

Gdyby symbol był w drugą stronę to właśnie wtedy by oznaczało że kino jest szczególnym przypadkiem kina samochodowego

I kilka pytań:

  1. W zasadach jest, że nie można edytować postu... a czy mogę w nast poście coś dopisać jak jeszcze coś znajdę?
  2. Czy na zakończenie konkursu zostaną przedstawione błędy z uzasadnieniami?
  3. Czy jeśli ktoś poda błędną odpowiedź może liczyć na to, że komisja wyjaśni dlaczego to nie jest błędem?
  1. Możesz edytować i dopisywać ale tylko pod warunkiem, że modyfikowany jest ostatni post.
  2. Tak, co kilka dni będzie podsumowanie dotychczasowych postępów. Być może czasami odpowiedź będzie enigmatyczna aby nie psuć zagadek ale ostatecznie wszystko będzie wyjaśnione.
  3. Tak

maksik
Hej maksik !

  1. O ile przyjmiemy, że film może mieć wiele typów, zgodzę się z powiązaniem o liczebności -. Ale jeśli się nie mylę to film posiada tylko jeden typ np: komedia. Wtedy powiązanie od filmu do typu 1-*. Oczywiście 1 po stronie typu.

Mogło by tak być ale nie jest :). Poważnie: przynależność do kilku typów jest zamierzona. Na przykład "komedia, film obyczajowy".

  1. Jeśli chodzi o wytwornie filmowe nie zgodzę się z poprzednikiem. Zdarzają się produkcje ze współpracującymi wytwórniami.

Masz rację ale punkty dostajecie za błędy w zadaniu a nie błędy w odpowiedziach innych uczestników

  1. Dwie identyczne klasy kino. Tu też nie zgodzę się z poprzednikiem. Moim zdaniem nie jest to błąd. Diagram przedstawia perspektywę logiczną, dlatego też autor mógł sobie pozwolić na powtórzenie klasy dla estetyki diagramu. To samo dzieje się w wytwórnią filmową.

Tak jest., przy czym nie zależy to od perspektywy.

  1. "część kamery ma co najmniej jedną podczęść". Z tym też się nie zgodzę. Są części nie posiadające podczęści. Dlatego dla pewności dałbym 1-0..*

Zakładam że =0... Patrz uwaga we wstępie.

  1. Film ma tylko jeden seans. Tu zgodzę się z całą pewnością :) 1-*

Tak, to byłoby smutne - przez pół roku kręcić film aby go tylko raz wyświetlić. Ten błąd był już wcześniej zgłoszony więc niestety bez punktu tym razem.

  1. Podobnie jak z podczęściami kamer uwzględniłbym możliwość działu wytwórni bez poddziału 1-0..*

Zakładam że =0... Patrz uwaga we wstępie.

  1. "Kino może mieć 0 sal kinowych". W kinie wyróżnimy: hol, wejście, wc itd. Jeśli nie będzie sali kinowej to jak nazwiesz pomieszczenie w którym wyświetla się filmy?? Dałbym 1-1..*

Tak ale to już było.

  1. Teraz kwestia dziedziczenia. Z odwrotnym dziedziczeniem nie mogę się zgodzić. Na diagramie dobrze przedstawiono dziedziczenie. Kino samochodowe dziedziczy wszystkie atrybuty po kinie np. rząd i kolumna odpowiada miejscu parkingowemu.
    Będąc przy dziedziczeniu pominąłbym związek między kinem samochodowym a seansem. Każdy przodek może być zastąpiony potomkiem.

Odnośnie pominięcia związku między kinem samochodowym a seansem - faktycznie jest to błąd i tą asocjację można wykasować. Tylko dlaczego ? Fakt, że każdy przodek może być zastąpiony potomkiem nie jest odpowiedzią. Punkt jeszcze czeka.

  1. Domyślam się, że ujemne krotności są niechcianą pomyłką.

Tak, wielkie dzięki. (już usunąłem)

0

Jeśli =0.. to czy stwierdzenie "wiele" jest równe "zero do wielu"??
Może źle zrozumiałem liczebności ale jesli to jest poprawne, w liczebności - istniałaby możliwość *-0, a chyba nie o to w ym chodzi. Zawsze myślałem, żę liczebność * wyklucza takie wystąpienie.

0

Skoro błędów z licznościami jest więcej, to czemu nie skorzystać?

  • z liczności Film- Wytwórnia filmowa wynika, że film może nie należeć do żadnej wytwórni (niezależna produkcja?)

  • hmm, czy nie jest czasem błędem dopuszczenie faktu iż Kino samochodowe może
    posiadać fotele (nie słyszałem o takim- chyba, że liczyć fotele w samochodach :D)

  • seans odbywa się w tylko jednym kinie (równie nieopłacalne jak jeden seans)

  • Powiązanie seans-kino samochodowe tez mi się nie podoba. Może dlatego, że sugeruje ono seans w kinie samochodowym, które nie posiada atrybutów kina?

0

Wyniki częściowe
id02009 - 3pkt
maksik - 0pkt

maksik

Jeśli =0.. to czy stwierdzenie "wiele" jest równe "zero do wielu"??
Może źle zrozumiałem liczebności ale jesli to jest poprawne, w liczebności - istniałaby możliwość *-0

Tak, Na przykład asocjacja Film-Seans o liczności 1-* oznacza, że w szczególnym przypadku pewien film może nie mieć seansu.

id02009

  • z liczności Film- Wytwórnia filmowa wynika, że film może nie należeć do żadnej wytwórni (niezależna produkcja?)

Dopuszczam taką możliwość, nie wnikajmy aż tak głęboko w specyficzne zagadnienia branży filmowej.

  • hmm, czy nie jest czasem błędem dopuszczenie faktu iż Kino samochodowe może
    posiadać fotele (nie słyszałem o takim- chyba, że liczyć fotele w samochodach :D)

Tak jest ! Bardzo fajnie, że to złapałeś. Martwiłem się czy ktokolwiek to znajdzie.

  • seans odbywa się w tylko jednym kinie (równie nieopłacalne jak jeden seans)

Tak jest na oryginalnym rysunku ale już wspomniany był błąd w liczności Film-Seans. Zakładając, że tamta relacja jest poprawiona to sytuacja robi się poprawna.

  • Powiązanie seans-kino samochodowe tez mi się nie podoba. Może dlatego, że sugeruje ono seans w kinie samochodowym, które nie posiada atrybutów kina?

Zakładamy że seans w kinie samochodowym jako pojęcie jest ok, niemniej na diagramie tą asocjację można i powinno się usunąć. czekam tylko na wyjaśnienie na jakiej podstawie można ją usunąć ? Punkt wciąż czeka (nie powinieneś mieć z tym problemu jeśli rozumiesz błąd kino samochodowe-fotel).

pozdrawiam

0

Tak jest ! Bardzo fajnie, że to złapałeś. Martwiłem się czy ktokolwiek to znajdzie.

Ale jestem z siebie dumny :D A w ogóle, to rozpatrywanie takiego diagramu pod względem logicznym jest ciężkie- łatwo sobie dopowiedzieć coś, żeby było ok. Trzeba się pilnować

niemniej na diagramie tą asocjację można i powinno się usunąć. czekam tylko na wyjaśnienie na jakiej podstawie można ją usunąć ?

To jedyne co mi na myśl przychodzi, to dlatego, że diagram sugeuje jeden seans w kinie i w kinie samochodowym. Tzn. ten sam seans i w kinie i w kinie samochodowym. Jak to nie to, to swojemu dr-owi z IO martwą rybę chyba wyślę [rotfl]

// aha przypomniało mi się:
Nie powinno pojawić się powiązanie między osobą a Wytwórnią (ew. działem wytwórni). No bo teraz jedynymi osobami są te pracujące przy filmie. Nie ma miejsca na księgowe ;P

0

"Kino samochodowe" jest rodzajem "Kina", zaś "Kino" jest powiązane z "Seansami". Powiązanie "Kina samochodowego" z "Seansami" dubluje informacje.

0

Moją wątpliwość budzi jeszcze "agregacja" vs "kompozycja" przy "Kamerze" i "częściach kamery". "Część" może być fizycznie w jednej kamerze (albo poza kamerą?). Fizycznie dwie różne kamery nie mogą mieć tej samej części (IMO na diagramie powinien być pełny diamencik zamiast pustego dla powiązania Kamera-Części i Części-Podczęści (chyba, że pomyliłem oznaczenia dla agregracji i kompozycji, wtedy nie był posta :-)

0

Dlaczego aktor i reżyser mają dublowane atrybuty z klasy Osoba?
Wg mnie klasa Osoba powinna posiadać atrybut, który opisuje płeć osoby (nazwisko panieńskie jest raczej zbędne).
Kolumna i rząd umieściłbym w klasie Fotel.
Grot agregacji od fotela może być pusty (fotel może istnieć poza salą kinową)
Podobnie grot strzałki od Osoby.

0

Wyniki częściowe
id02009 - 3pkt
yarel - 1pkt
maksik - 0pkt

komentarz
Włączył się nowy zawodnik i od razu podał prawidłową odpowiedź na dramatyczną asocjację kino samochodowe - seans. Ponieważ punktów do złapania jest jeszcze sporo zapowiada się ciekawa rywalizacja. Pewne rejony uml'a w których znajdują się błędy są jeszcze nie poruszone. Rozważam naprowadzenie was w następnym komentarzu.

Tymczasem mała podpowiedź:

  • asocjacja kamera-części kamery ma pewien błąd. Wcześniej był atak na jej liczność "*", teraz na rodzaj agregacji. Wciąż ukrywa się tam, stosunkowo łatwy, błąd.

id02009

To jedyne co mi na myśl przychodzi, to dlatego, że diagram sugeuje jeden seans w kinie i w kinie samochodowym. Tzn. ten sam seans i w kinie i w kinie samochodowym. Jak to nie to, to swojemu dr-owi z IO martwą rybę chyba wyślę

Jeżeli będzie to grillowany łosoś albo sushi to ja też chcę ! W pewnym sensie tak to wygląda ale nazwa asocjacji w kinie i w kinie samochodowym jest taka sama i dlatego z tego diagramu NIE wynika, że będą te same seansy i w kinie samochodowym i w kinie normalnym.

Jeszcze nawiązując do tego kina samochodowego które ma fotele ... w wersji oryginalnej błąd polega na tym, że kino samochodowe ma salę kinową ale nawigując dalej po asocjacjach dojdziemy do foteli, które faktycznie są jeszcze bardziej wyraźne.

yarel

"Kino samochodowe" jest rodzajem "Kina", zaś "Kino" jest powiązane z "Seansami". Powiązanie "Kina samochodowego" z "Seansami" dubluje informacje.

Tak jest ! Krótko i precyzyjnie. Mówiąc inaczej: asocjacje są dziedziczone dlatego nie ma powodu umieszczać ich na rysunku ponownie. Duży, zasłużony punkt na twoje konto.

Moją wątpliwość budzi jeszcze "agregacja" vs "kompozycja" przy "Kamerze" i "częściach kamery". "Część" może być fizycznie w jednej kamerze (albo poza kamerą?). Fizycznie dwie różne kamery nie mogą mieć tej samej części (IMO na diagramie powinien być pełny diamencik zamiast pustego dla powiązania Kamera-Części i Części-Podczęści

Powiedzmy, że części są wymienne i dlatego mamy do czynienia ze słabszym związkiem - taką częścią jest na przykład akumulator, mikrofon ... Siła tego związku też, aczkolwiek dyskusyjna, nie podchodzi pod błąd konkursowy.

Zamieszczam wersję zadania która uwzględnia dotychczasowo wyłapane błędy: Błąd, który polega na tym, że kino samochodowe na modelu może mieć salę kinową z fotelami został tylko umieszczony tylko jako uwaga.

Kliknij miniaturę aby wyświetlić częściowo rozwiązane zadanie:
user image

0

Wyniki częściowe
id02009 - 3pkt
grzesko - 2pkt
yarel - 1pkt
maksik - 0pkt

grzesko

Dlaczego aktor i reżyser mają dublowane atrybuty z klasy Osoba?

Bo to jest błąd :), punkt.

Wg mnie klasa Osoba powinna posiadać atrybut, który opisuje płeć osoby (nazwisko panieńskie jest raczej zbędne).

Masz rację tak jest lepiej - to jest podpucha z dziedziczenia wieloaspektowego. Lepiej może było by zamiast aspektu płci użyć na przykład aspektu "wegetarian","nie wegetarian". Nie był przewidziany punkt za tą uwagę ale dostaniesz punkt jeśli pełną wypowiedzią odpowiesz na pytanie extra: w jakich sytuacjach należy użyć atrybutu a w jakich lepiej rozwinąć aspekt w klasy ?

Kolumna i rząd umieściłbym w klasie Fotel.

Można tak zrobić. Dostaniesz punkt jeśli powiesz jaka informacja wtedy ginie i jak należy ją zamodelować. Swoją drogą ta asocjacja kwalifikowana ma jeden podstępny, nieodkryty błąd.

Grot agregacji od fotela może być pusty (fotel może istnieć poza salą kinową)

Zgoda ale to zależy od dziedziny. Załóżmy że fotele są nierozdzielną częścią sali.

Podobnie grot strzałki od Osoby.

Tak, dostaniesz punkt ale następnym razem proszę o więcej wyjaśnień. Trochę początkujących osób obserwuje ten konkurs i jest on pomyślany tak, aby mogły się czegoś nauczyć. Proszę pamiętajcie o tej, dodatkowej roli konkursu. Pozdrawiam i gratuluję świetnego startu.

0
  1. Elementy: Wytwórnia filmowa - Kino - Adres są nieco z boku, powoduje, to że np. Wytwórnia filmowa i Kino są umieszczone na diagramie dwukrotnie, a mogłyby być raz.

  2. Aktor|Reżyser - co z akcjami typu Mel Gibson w 'Braveheart", czy Kevin Smith w "Jay and Silent Bob ...". Czy nie lepsza byłaby osobna klasa np. Funkcja/Rola i dziedziczące z niej podklasy? Rezyser/Aktor/Operator kamery/Kaskader etc., powiązane z Osobą.

0

yarel to overlapping oznacza, że klasy pochodne nie są nierozłączne - aktor może być reżyserem. Ale faktycznie przydałoby się "stanowisko" w klasie Osoba.

Nie był przewidziany punkt za tą uwagę ale dostaniesz punkt jeśli pełną wypowiedzią odpowiesz na pytanie extra: w jakich sytuacjach należy użyć atrybutu a w jakich lepiej rozwinąć aspekt w klasy ?

Strzelam
Rozwinięcie w klasy gdy wymagane są inne metody do obsługi obiektów klas pochodnych (klas specjalizacji). Wtedy nowe metody przedefiniowuje się w klasie pochodnej.
Dodatkowo wydzielenie klas Mężczyzna i Kobieta powoduje, że nie wiadomo bezpośrednio o płci Aktora (klasy pochodne nie wiedzą nawzajem o sobie)

Kolumna i rząd umieściłbym w klasie Fotel.

Można tak zrobić. Dostaniesz punkt jeśli powiesz jaka informacja wtedy ginie i jak należy ją zamodelować.

Chyba nie wiem. Być może to, że biorąc pod uwagę wiele sal w kinie to nie wiadomo do jakiej sali należy fotel (należałoby dodać atrybut numer_sali w klasie Fotel). Ale tak strzelam.

Swoją drogą ta asocjacja kwalifikowana ma jeden podstępny, nieodkryty błąd.

Może idzie o to, że jak po stronie Sali jest ten kwalifikator z numerem rzędu i kolumny to w tym miejscu ma być jeden fotel (a jest gwiazdka)

Podobnie grot strzałki od Osoby.

Tak, dostaniesz punkt ale następnym razem proszę o więcej wyjaśnień.

Zamknięty grot oznacza silną agregację czyli, że obiekt zawierany (Osoba) nie może istnieć poza agregatorem (Film) oraz nie może należeć do więcej niż jednego obiektu (tutaj Filmu).

Pozdrawiam i gratuluję świetnego startu.

Jeszcze trochę zostało mi w głowie ze studiów :-)

0

Wyniki częściowe
grzesko - 4pkt
id02009 - 3pkt
yarel - 1pkt
maksik - 0pkt

pozostały 4 błędy (i jeden punkt za trudne pytanie związane z asocjacjami kwalifikowanymi).
Poprawiona sytuacja wygląda następująco:
(kliknij aby wyświetlić)
user image

komentarz
Wystarczy jeszcze punktów aby silny gracz wszedł do gry i jednym postem zgarnął ananasa i notatki ze wzorców projektowych !

yarel

  1. Elementy: Wytwórnia filmowa - Kino - Adres są nieco z boku, powoduje, to że np. Wytwórnia filmowa i Kino są umieszczone na diagramie dwukrotnie, a mogłyby być raz.

Zgoda ale to drobna sprawa (a w zasadzie nawet dyskusyjna). Chodziło o to aby sprawdzić, czy ktoś się złapie na to, że powtórzenie klasy na diagramie nie jest błędem.

  1. Aktor|Reżyser - co z akcjami typu Mel Gibson w 'Braveheart", czy Kevin Smith w "Jay and Silent Bob ...". Czy nie lepsza byłaby osobna klasa np. Funkcja/Rola i dziedziczące z niej podklasy? Rezyser/Aktor/Operator kamery/Kaskader etc., powiązane z Osobą.

Jay and Silent Bob rulez ! A mówiąc serio: tak właśnie działa dziedziczenie overlapping (nachodzące na siebie), pisze o tym grzesko ja tylko dodam, że to zwyczajne dziedziczenie jest typu "disjoint" (rozłączne) ale nie ma potrzeby tego umieszczać na diagramach.

grzesko

Rozwinięcie w klasy gdy wymagane są inne metody do obsługi obiektów klas pochodnych (klas specjalizacji). Wtedy nowe metody przedefiniowuje się w klasie pochodnej.
Dodatkowo wydzielenie klas Mężczyzna i Kobieta powoduje, że nie wiadomo bezpośrednio o płci Aktora (klasy pochodne nie wiedzą nawzajem o sobie)

Naprawdę doskonale ! dokładnie o to chodzi. Zgodnie z umową 1 punkt.

Być może to, że biorąc pod uwagę wiele sal w kinie to nie wiadomo do jakiej sali należy fotel (należałoby dodać atrybut numer_sali w klasie Fotel).

Nie. Alternatywna sytuacja to taka, w której rząd i kolumna przechodzą do fotela ale asocjacja z salą pozostaje. Jesteśmy więc w stanie podać numer sali.

Pozostaje więc 1 punkt za pytanie: jaka informacja zginie przy powyższej alternatywnej postaci ? Ponieważ jest to naprawdę trudne dam podpowiedź i powiem, że tą informację można w alternatywnej postaci utrzymać jedynie gdy dodamy pewne ograniczenie do modelu (tekstowe albo OCL'owe). Odpowiedzią może być treść tego ograniczenia.

Może idzie o to, że jak po stronie Sali jest ten kwalifikator z numerem rzędu i kolumny to w tym miejscu ma być jeden fotel (a jest gwiazdka)

Tak. Liczności w asocjacjach kwalifikowanych są podawane na specyficznych zasadach: * po stronie fotel oznacza, że jeśli wezmę pewną salę i wskażę w niej jeden rząd i jedną kolumnę to będę miał * (wiele) foteli. A poprawnie jest przecież 1, tak jak 1 punkt dla ciebie.

0

http://4programmers.net/Forum/320033#id320033
W podsumowaniu nie odniosłeś sie to tego co jest dopisane w moim poście, dla pewności, czy go nie przeczyłeś, daję linka ;)

Alternatywna sytuacja to taka, w której rząd i kolumna przechodzą do fotela ale asocjacja z salą pozostaje. Jesteśmy więc w stanie podać numer sali.

Pozostaje więc 1 punkt za pytanie: jaka informacja zginie przy powyższej alternatywnej postaci ? Ponieważ jest to naprawdę trudne dam podpowiedź i powiem, że tą informację można w alternatywnej postaci utrzymać jedynie gdy dodamy pewne ograniczenie do modelu (tekstowe albo OCL'owe). Odpowiedzią może być treść tego ograniczenia.

W tej alternatywnej wersji należałoby jakoś zaznaczyć, że nie mogą istnieć dwa obiekty, które miałyby równe wartości rząd i kolumna. Przy powiązaniu sala kinowa - fotel przy fotelu liczność z 1 trzeba by zmienić na (albo 1.. w zależności od dziedziny).
Informacja, która zginie w alternatywnej sytuacji ta ta, że w danej kolumnie i rzędzie jest dokładnie jeden fotel.

I jeszcze sie uczepię lewej strony diagramu: wynika z niego, że dana osoba jest albo mężczyzną, albo aktorem. Mężczyzna i kobieta nie moga być aktorem ani reżyserem. Podłączył bym ich tam gdzie aktor i reżyser (overlapping) + między mężczyzną i kobietą walnąłbym takiego xor jak jest na dole miedzy wytwórnią a kinem. Mam nadzieję, że nie palnąłem głupstwa :)

kapustka napisał(a)

Trochę początkujących osób obserwuje ten konkurs

i nie tylko obserwuje. Ja na przykład postanowiłem brać udział w konkursie, żeby się dowiedzieć co to są te całe wzorce projektowe... :P

0

Kapustka
Dlaczego zmieniłeś kierunek asocjacji Wytwórnia Filmowa --- Dział Wytwórni ? Obecnie jest niepoprawnie, zresztą tutaj powinna być chyba agregacja.
Natomiast agregacja Wytwórnia --- Kamera powinna być asocjacją, bo kamera nie jest częścią wytwórni.

// kapustka: faktycznie - program mi oszalał od tego kopiowania i modyfikowania. Zaraz poprawię, dzięki.

0

Wyniki częściowe
id02009 - 4pkt
grzesko - 4pkt
yarel - 1pkt
maksik - 0pkt

... wciąż 4 błędy w grze.

id02009

W tej alternatywnej wersji należałoby jakoś zaznaczyć, że nie mogą istnieć dwa obiekty, które miałyby równe wartości rząd i kolumna. Przy powiązaniu sala kinowa - fotel przy fotelu liczność z 1 trzeba by zmienić na (albo 1.. w zależności od dziedziny).
Informacja, która zginie w alternatywnej sytuacji ta ta, że w danej kolumnie i rzędzie jest dokładnie jeden fotel.

Dokładnie, dokładnie tak. Punkt.

I jeszcze sie uczepię lewej strony diagramu: wynika z niego, że dana osoba jest albo mężczyzną, albo aktorem. Mężczyzna i kobieta nie moga być aktorem ani reżyserem.

Nie, jest inaczej. Zwróć uwagę, że te dwa drzewa dziedziczenia nie są połączone - to nie jest jedno dziedziczenie tylko dwa drzewa odchodzące od jednej klasy. To jest dziedziczenie wieloaspektowe - w tym wypadku jeden sposób specjalizacji osób jest oparty o aspekt płci, drugi aspekt to wykonywany zawód. Konkretny byt musi się ustosunkować do wszystkich aspektów jednocześnie. Nie ma sposobu aby tą konstrukcję bezpośrednio wyrazić w implementacji.

Nie powinno pojawić się powiązanie między osobą a Wytwórnią (ew. działem wytwórni). No bo teraz jedynymi osobami są te pracujące przy filmie. Nie ma miejsca na księgowe

Ok. Ale punktu za to nie będzie.

0

Ok. Ale punktu za to nie będzie.

:|, ty, ty... ty Kapusto ty! ;)

Nie, jest inaczej. Zwróć uwagę, że te dwa drzewa dziedziczenia nie są połączone - (...) Nie ma sposobu aby tą konstrukcję bezpośrednio wyrazić w implementacji.

Teraz rozumiem, dzięki.

A teraz o tym niepozornym xorku na dole. Z pewnych źródeł wiem, że to ograniczenie oznacza iż dokładnie jedno powiązanie musi zachodzić w tych dwóch, które są objęte ograniczeniem. Nie jestem do końca pewien, ale ten zapis oznacza, że pod każdym adresem jest albo kino, albo wytwórnia. NIestey nie wiem jak możnaby to naprawić o ile faktycznie jest to błędem.

I przy okazji: wydaje mi się, że w klasie adres brakuje co najmniej atrybutu numer (o ile nie jest zawarty razem z nazwą ulicy, ale to byłoby nietypowe)

Jeszcze się liczności doczepię: między seansem a filmem. W danym seansie jest dokładnie jeden film. Ale tak sobie myślę, że chyba jak np. jest taki maraton, to leci kilka filmów i to jest jeden seans...

//jutro jadę na off-festiwal, więc nie będę już siedział nad tym diagramem i ktoś mnie wyprzedzi, ale mimo wszystko mam nadzieję, że jednak dowiem się co to są wzorce projektowe ;]
a ananasa to mi mama kupi jak ładnie poproszę (w końcu może się mną cieszyć tylko 3 miesiące w roku) [green] </wiki>

0

Chyba więcej nie znajdę:

  • atrybut "czas trwania" ma dziwny ukośnik, może to tylko literówka a może chytry błąd
  • czy klasa Osoba nie powinna być wirtualna (jej nazwa kursywą)
0

podpowiedź
Zostały cztery błędy:

  • jeden jest związany z ograniczeniem xor
  • jeden (występuje na diagramie dwa razy ale chodzi o ten sam problem) jest w asocjacjach rekurencyjnych: dział wytwórni - dział nadrzędny, część kamery - podczęść (już była dyskusja na ten temat ale błąd wciąż jest).
  • dwa błędy są związane z wartościami pochodnymi (to jest właśnie ten ukośnik o którym wspomina grzesko).

Poczekam jeszcze chwilę na odpowiedź a potem sam wyjaśnię nierozwiązane błędy i ogłoszę wynik.

grzesko

  • atrybut "czas trwania" ma dziwny ukośnik, może to tylko literówka a może chytry błąd

Ciepło. Przy czym błąd nie polega na przypadkowym znaku. Chodzi o znaczenie jakie on nadaje.

  • czy klasa Osoba nie powinna być wirtualna (jej nazwa kursywą)

Mogła by być. To zależy od domeny.

0

Znowu, Kapustko, mam wrażenie, że pominąłeś mój post.
No bo nawet jak zdaża się błędna odpowiedź, to masz w zwyczaju to korygować, a tu...

0

Dzięki za podpowiedzi.

Kapustka napisał(a)

grzesko

  • atrybut "czas trwania" ma dziwny ukośnik, może to tylko literówka a może chytry błąd

Ciepło. Przy czym błąd nie polega na przypatkowym znaku. Chodzi o znaczenie jakie on nadaje.

Przyznam się, że o tym nie wiedziałem i musiałem sięgnąć po dokumentację do UML-a. A błąd polega na tym, że atrybut pochodny ma być wyliczalny z innych atrybutów. W tym przypadku jest to niemożliwe - czas trwania nie może być atrybutem pochodnym.
Ale jeszcze nie wiem gdzie jest drugi błąd tego rodzaju.

  • jeden (występuje na diagramie dwa razy ale chodzi o ten sam problem) jest w asocjacjach rekurencyjnych: dział wytwórni - dział nadrzędny, część kamery - podczęść (już była dyskusja na ten temat ale błąd wciąż jest).

Może chodzi o te liczności - zamiast 1 powinno być 0..1 ?

0

Zostały cztery błędy:

  • jeden jest związany z ograniczeniem xor

Co jeśli kino i wytwórnia będą pod tym samym adresem? Kino tuż przy wytwórni.

  • jeden (występuje na diagramie dwa razy ale chodzi o ten sam problem) jest w asocjacjach rekurencyjnych: dział wytwórni - dział nadrzędny, część kamery - podczęść (już była dyskusja na ten temat ale błąd wciąż jest).

Dział wytwórni ma 1 dział nadrzędny, czyli definiujemy z dołu do góry, ale nie ma działu wszystkich działów, co przy skończonej ilości działów w wytwórni stwarza pewien problem. Chyba, że dział może być dla siebie samego działem nadrzędnym. ALe wtedy nie powinien się nazywać nadrzędny ;-)

  • dwa błędy są związane z wartościami pochodnymi (to jest właśnie ten ukośnik o którym wspomina grzesko).

Kino: ilosc sal <-- da sie wyliczyc na podstawie sal kinowych
WYnagrodzenie powinno byc chyba wyliczalne i w jakis sposob uzaleznione od pelnionej w filmie funkcji (AKtor/Rezyser).

0

Wyniki częściowe:
grzesko - 5pkt
id02009 - 4pkt
yarel - 3pkt
maksik - 0pkt
... został 1pkt (xor)

komentarz:
Został jeden punkt i podejrzewam, że jutro zamkniemy konkurs. Na sam koniec wasze propozycje stają się naprawdę chytre i wnikliwe. Niestety uparcie nie są punktowane elementy związane z niejasnymi pojęciami systemu albo obserwacje, że system czegoś nie obejmuje. Są to oczywiście subiektywne kryteria ale mam nadzieję, że mamy zbliżoną intuicję. Doceniam jednak waszą pomysłowość i sądzę, że ujawniacie właśnie predyspozycje analityczne i głębokie zrozumienie różnych konsekwencji tego modelu.

id02009

Znowu, Kapustko, mam wrażenie, że pominąłeś mój post.

Rany! Przepraszam, to chyba jakaś klątwa - uwzględniam go oczywiście teraz. Strasznie mi głupio.

A teraz o tym niepozornym xorku na dole. Z pewnych źródeł wiem, że to ograniczenie oznacza iż dokładnie jedno powiązanie musi zachodzić w tych dwóch, które są objęte ograniczeniem. Nie jestem do końca pewien, ale ten zapis oznacza, że pod każdym adresem jest albo kino, albo wytwórnia. NIestey nie wiem jak możnaby to naprawić o ile faktycznie jest to błędem.

Przytoczona definicja xorka jest całkowicie dobra - jest tak dobra, że tylko na jej podstawie można już wskazać błąd. Punkt wciąż czeka - jest szansa na wielki remis. Wtedy zwycięzcą jest ten, kto potrafi zrobić MNIEJ pompek ... prawdziwy nerd nie zrobi przecież ani jednej.

I przy okazji: wydaje mi się, że w klasie adres brakuje co najmniej atrybutu numer (o ile nie jest zawarty razem z nazwą ulicy, ale to byłoby nietypowe)

Numer lokalu jest w jednym polu razem z nazwą ulicy. Faktycznie gdybyśmy chcieli przetwarzać w oparciu o nazwę ulicy to fakt iż jest ona zlepiona z numerem lokalu byłby kłopotliwy.

Jeszcze się liczności doczepię: między seansem a filmem. W danym seansie jest dokładnie jeden film. Ale tak sobie myślę, że chyba jak np. jest taki maraton, to leci kilka filmów i to jest jeden seans...

Pomysłowe ! Faktycznie, wygląda na to, że nasz system nie umożliwia rejestrowanie maratonów. Szkoda - świetnie się bawiłem na maratonie filmów Almodovara a ten fakt nie mieści się w systemie. Niech tak zostanie.

grzesko

... atrybut pochodny ma być wyliczalny z innych atrybutów. W tym przypadku jest to niemożliwe - czas trwania nie może być atrybutem pochodnym.

Doskonale! Przeczytałeś, zrozumiałeś, wyciągnąłeś wnioski - 1 punkt.

Może chodzi o te liczności - zamiast 1 powinno być 0..1 ?

Tak ale nie napisałeś uzasadnienia. W tej sytuacji mogę ci przyznać 0..1 pkt - tym razem będzie to 0 pkt bo yarel swoją następną odpowiedzią uzasadnił problem.

yarel
Ostry atak na koniec !

Co jeśli kino i wytwórnia będą pod tym samym adresem? Kino tuż przy wytwórni.

Dobre ! Wtedy faktycznie xor by nas nadmiernie ograniczył. Bardzo chytre ... Załóżmy jednak, że taka sytuacja jest niemożliwa. Podpowiem, że błąd związany z xor jest niezależny od pojęć systemu.

Dział wytwórni ma 1 dział nadrzędny, czyli definiujemy z dołu do góry, ale nie ma działu wszystkich działów, co przy skończonej ilości działów w wytwórni stwarza pewien problem. Chyba, że dział może być dla siebie samego działem nadrzędnym. ALe wtedy nie powinien się nazywać nadrzędny

Tak jest. Podoba mi się to matematyczne podejście. Słusznie zauważyłeś, że jest problem z nieskończoną liczbą działów. Liczność 1 po stronie działu nadrzędnego oznacza, że dodając dział musimy dodać jeszcze jeden, który będzie jego nadrzędnym. To oznacza, że w systemie będzie nieskończona liczba działów albo zero działów. Nieskończona oczywiście odpada a więc w systemie będzie dokładnie 0 działów.

Gdy Liczność 1 zamienimy na 0..1 to będą mogły istnieć działy bez działu nadrzędnego. Dostajesz 1 pkt.

Kino: ilosc sal <-- da sie wyliczyc na podstawie sal kinowych

Tak ! Tutaj wyrazy mojego uznania. 1 pkt.

Podsumuję zagadnienie wartości pochodnych: ukośna kreska przy nazwie atrybutu lub nazwie asocjacji wskazuje, że ten element jest pochodny czyli jego wartość może być wyznaczona na podstawie innych elementów diagramu. Jak zauważył grzesko, czas trwania filmu z niczego nie wynika a więc niesłusznie jest oznaczony jako pochodny. Z uwagi yarel wynika natomiast że do atrybutu ilość sal należy dodać ukośną kreskę gdyż ta wartość jest wyliczalna na podstawie aktualnej liczności asocjacji obiektu.

WYnagrodzenie powinno byc chyba wyliczalne i w jakis sposob uzaleznione od pelnionej w filmie funkcji (AKtor/Rezyser).

Wynagrodznie ma nieuchwytną naturę. Funkcja jest jakimś przybliżeniem ale dokładnej kwoty na jej podstawie nie ustalimy. Niemniej doceniam pomysł.

0
Kapustka napisał(a)

A teraz o tym niepozornym xorku na dole. Z pewnych źródeł wiem, że to ograniczenie oznacza iż dokładnie jedno powiązanie musi zachodzić w tych dwóch, które są objęte ograniczeniem. Nie jestem do końca pewien, ale ten zapis oznacza, że pod każdym adresem jest albo kino, albo wytwórnia. NIestey nie wiem jak możnaby to naprawić o ile faktycznie jest to błędem.

Przytoczona definicja xorka jest całkowicie dobra - jest tak dobra, że tylko na jej podstawie można już wskazać błąd. Punkt wciąż czeka - jest szansa na wielki remis. Wtedy zwycięzcą jest ten, kto potrafi zrobić MNIEJ pompek ... prawdziwy nerd nie zrobi przecież ani jednej.

Jeżeli jest takie ograniczenie typu XOR (zdefiniowane wyżej) to nie można przypisać adresu do <jakiegokolwiek> Działu Wytwórni, które przecież są powiązane agregacją z Wytwórnią (ale adresu nie muszą mieć wspólnego). Podobnie nie Kino Samochodowe nie może mieć adresu (innego niż Kino), choć w tym przypadku nie jestem pewien czy to jest dobre uzasadnienie z mojej strony, ponieważ zwiazek dziedziczenia pozwala na użycie obiektu pochodnego poprzez referencję klasy bazowej (znam C++).

0

Hmm, zastanawiam się jaką informacje może nieść xor w odniesieniu do diagramów UML. Może chodzi o to, że zachodzi dokładnie jedno z powiązań dla całego systemu? Np. Wytwórnia-Adres "albo" Kino-Adres, a tym samym "Adres" może być związany tylko z Wytwórnią, ale z Kinem już nie (lub odwrotnie), czyli wszystkie Wytwórnie mają adres, ale Kina nie mogą mieć adresu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1