Prośba o sprawdzenie zadania z UML

0

Witam serdecznie wszystkich :) Na początek chciałbym życzyć spokojnych Świąt Bożego Narodzenia :) Jest to mój pierwszy post na tym forum, wcześniej wiele razy korzystałem z jego zasobu informacji aczkolwiek nie miałem konta. Przejdę do rzeczy. Mam zadanie z UML:

Stwórz diagram klas dla systemu symulującego kolej.
System powinien zawierać następujące klasy:
o Pojazd kolejowy – Klasa bazowa dla wszystkich typów pojazdów w systemie
o Wagon pasażerski – przechowuje informacje nt. maksymalnej i aktualnej liczby
pasażerów. Maksymalna liczba pasażerów jest ustawiana w konstruktorze a aktualna
w metodach dodających i usuwających pasażera z wagonu.
o Wagon towarowy – analogicznie do wagonu pasażerskiego
o Lokomotywa – posiada prędkość maksymalną
o Pasażer – może zajmować miejsce w wagonie
o Ładunek – może być załadowany i wyładowany z pociągu
o Pociąg – zawiera lokomotywę oraz wagony, posiada wyznaczoną trasę
o Trasa
Pojazdy mogą być połączone(lokomotywa może być połączona tyko z jednym wagonem)

Zadanie wykonałem, aczkolwiek mam pewne wątpliwości czy na pewno jest zrobione dobrze. Dopiero uczę się programowania obiektowego oraz UML od tego semestru studiów (jestem na elektronice). Poniżej zamieszczam zrzut ekranu z Visual Paradigm. Z góry dziękuję za uwagi i podpowiedzi :) Pozdrawiam

0

Szkoda słów. Właściwie niewiele tu jest zrobione poprawnie.

  • Co to za powiązania same do siebie 0..2 między wagonem pasażerskim i miedzy wagonem towarowym?
  • Czemu niby wagony dziedziczą z pojazdu? o_O
  • Nie rozumiem czemu niby lokomotywa jest powiązana z wagonami
  • Pasażerowie powinni być agregowani w wagonie, tak samo jak ładunki
  • Pociąg agreguje lokomotywy oraz (!) wagony
  • Pociąg dziedziczy z pojazdu a nie jest przez niego agregowany...

Ty w ogóle rozumiesz co te groty strzałek oznaczają czy wybieraleś losowe?

0

Powiązania do samych siebie 0..2 - wagon np. stojąc gdzieś na stacji lub bocznicy może być podłączony do żadnego innego wagona (może stać sam), może być do jednego np z jednej strony kiedy jest na końcu pociągu lub podłączony do dwóch innych wagonów kiedy jest gdzieś w środku...Lokomotywa powiązana z wagonami - przecież może być podłączona do jednego wagonu lub do żadnego. Przynajmniej ja tak to rozumiem.

Poprawiłem:

  • Pasażerowie powinni być agregowani w wagonie, tak samo jak ładunki
  • Pociąg agreguje lokomotywy oraz (!) wagony

Aczkolwiek nie rozumiem i nie widzę gdzie w moim diagramie pociąg dziedziczy po pojeździe ? Nie ma tam żadnej strzałki generalizacji...a jest agregacja.

0

Ech. Rozumiem że w prawdziwym życiu wagony są ze sobą połączone w jakiśtam sposób, ale jaki sens ma ich "łączenie" tutaj? W programowaniu obiektowym nie chodzi o to żeby na siłę robić wszystko tak jak wynikałoby to z dziedziny problemu, trzeba przy tym trochę myśleć. Czy połączenie wagonów ze sobą coś nam daje? Nie, tylko utrudnia stworzenie całego składu.

No właśnie na twoim diagramie pociąg nie dziedziczy z pojazdu, a jest JEDYNĄ KLASĄ która powinna! Bo tylko pociąg na całym tym diagramie jest pojazdem. Wagony samodzielnymi pojazdami raczej nie są. Ale znów - to zależy co nam to dziedziczenie miałoby tutaj dać, a to zależy od metod jakie ma klasa Pojazd albo od tego gdzie będziemy jej używać.

A strzałka agregacji tam to jest jakiś hardkor. Mam nadzieję że nie dałeś jej tam wychodząc założenia że:

  • wagony to pojazdy
  • pociąg agreguje wagony
  • więc pociąg powinien agregować pojazdy
    Bo jeśli tak właśnie pomyślałeś to nie wiem czy jest dla ciebie jakaś nadzieja...
0

No dobra wagon zakładamy że nie jest pojadem bo nie jest samodzielny, ale chyba pociąg jako całość - lokomotywa + wagony ... czyli agreguje lokomotywe i wagony...Dlaczego pociąg w takim razie ma agregować pojazdy ? Przecież pojazd agreguje pociąg. Nie rozumiem za bardzo.

A teraz nieco zejdę z tematu. Kurcze, piszesz mi że dla mnie nie ma nadziei lol - uczę się UML raptem od 3 dni, natomiast obiektówki (C# i javy której nie polubiłem) od października Oo. Dopiero teraz zabrałem się za programy na laborkę która zaczęła się 2 tygodnie temu. Szanuję Cie za wiedzę, ale nie życzę sobie pisania takich rzeczy - wyluzuj kolego i radzę najpierw spytać a potem mówić że nie ma dla kogoś nadziei bo to jest chore. Polska mentalność - najpierw powiedzieć jaki się jest do bani a potem zastanowić się co się powiedziało. No sorry. W ogóle na jakiej podstawie piszesz mi że nie ma dla mnie nadziei ? Najpierw spytaj jaki jest mój staż z UML i obiektówą, kim jestem (czego się uczę) i do czego zmierzam. Ale ja już Ci odpowiedziałem, niestety... bo powinieneś zamiast gadania bzdur najpierw o to spytać a nie jechać po mnie. Strasznie mnie to zirytowało. Nie znasz mnie a wypowiadasz się o mnie. Jestem elektronikiem a nie programistą, programowania obiektowego - PODSTAW uczę się dla siebie i tylko jeden semestr a na dodatek nie wiążę z tym przyszłości. Widać atmosfera Świąt minęła to i mentalność wraca.

Poprawiłem nieco diagram, ale nie wiem czy go wstawiać...
Pozdrawiam

0

No dobra wagon zakładamy że nie jest pojadem bo nie jest samodzielny, ale chyba pociąg jako całość - lokomotywa + wagony ... czyli agreguje lokomotywe i wagony...Dlaczego pociąg w takim razie ma agregować pojazdy ? Przecież pojazd agreguje pociąg. Nie rozumiem za bardzo.

Ja też niewiele z tego bełkotu rozumiem, szczególnie że to TY na SWOIM diagramie zaznaczyłeś ze Pociąg agreguje pojazdy. Ja od początku pisałem ci że jest to źle i że pociąg powinien z Pojazdu dziedziczyć, bo "pociąg JEST pojazdem" a nie "składa się z pojazdów". To jest taki prymitywny sposób na sprawdzenie czy coś powinno dziedziczyć (relacja "jest szczególnym przypadkiem"), czy powinno agregować (relacja "składa się z "). Ale tak jak już pisałem (czytasz w ogóle moje posty? ze zrozumieniem?) to zależy od definicji "pojazdu" jaką przyjmiemy.

Nie interesuje mnie czy jesteś piekarzem, stolarzem czy szewcem. Staram się obiektywnie oceniać to co tutaj zaprezentowałeś. A nadziei dla ciebie nie widzę, nie dlatego że masz problemy z OOP i z UMLem, tylko dlatego że popełniasz szkolne błędy o ktorych piszą w każdym podręczniku - to oznacza że żadnego podręcznika nie wziąłeś do ręki.

0
Shalom napisał(a):

Ech. Rozumiem że w prawdziwym życiu wagony są ze sobą połączone w jakiśtam sposób, ale jaki sens ma ich "łączenie" tutaj? W programowaniu obiektowym nie chodzi o to żeby na siłę robić wszystko tak jak wynikałoby to z dziedziny problemu, trzeba przy tym trochę myśleć. Czy połączenie wagonów ze sobą coś nam daje? Nie, tylko utrudnia stworzenie całego składu.

Chociażby informację o tym, który wagon jest połączony z którym.
Wiesz, że podważasz sens istnienia linked list?

Shalom napisał(a):

Ja od początku pisałem ci że jest to źle i że pociąg powinien z Pojazdu dziedziczyć, bo "pociąg JEST pojazdem" a nie "składa się z pojazdów".

I od początku piszesz źle, bo pociąg składa się z pojazdów, a pojazdami są lokomotywy i wagony.

A zatem, Lokomotywa i Wagon dziedziczą z Pojazdu, a z Wagonu dziedziczą WagonTowarowy i WagonPasażerski. Dzięki temu będzie możliwe łączenie ze sobą wagonów różnych typów, bo obecnie nie jest to możliwe.
Pojazd powinien mieć jakieś atrybuty, taka pusta klasa źle wygląda. Pierwsza myśl - liczba osi i rozstaw szyn (to mógłby być prawdopodobnie typ wyliczeniowy).
WagonPasażerski powinien mieć kolekcję Pasażerów i to raczej on powinien mieć metodę DodajPasażera, niż Pasażer metodę ZajmijMiejsce.
WagonTowarowy - coś takiego generalnie nie istnieje, są przecież węglarki, wagony kryte, chłodnie, platformy, cysterny na paliwo i na gaz, wagony do przewozu samochodów, itd... Ale jako abstrakcyjna klasa mógłby mieć metody Załaduj i Rozładuj, Towar przecież sam się nie ładuje.

No i trzeba się zastanowić, czy Pociąg jest agregacją Pojazdów, w sensie czy ma jakąś tablicę klasy Pojazd, w której są wszystkie potrzebne Wagony i Lokomotywy, czy trzyma wskaźnik tylko do pierwszego Pojazdu (zazwyczaj lokomotywy), a dalsze informacje są wyciągane na zasadzie połączeń kolejnych Pojazdów. Tylko w tej wersji to Pojazd musi mieć referencję do innych Pojazdów, a nie Wagon jak teraz.
Bo to co obecnie jest na diagramie, to ani to, ani to.

0

Chociażby informację o tym, który wagon jest połączony z którym.

Tak jak napisałem - takie połączenie jest ok o ile faktycznie ma jakiś sens. Autor nie potrafił się do tego niestety ustosunkować, więc tutaj to jest zgadywanka.

I od początku piszesz źle, bo pociąg składa się z pojazdów, a pojazdami są lokomotywy i wagony.

Wyraźnie napisałem że to zależy od definicji pojazdu, której autor nigdzie nie przytoczył ;]

Przecież dobrze wiesz ze kwestia czy wagony i lokomotywa będą elementami listy, czy że Pociąg będzie przechowywał kolekcję swoich elementów składowych to jest kosmetyka i zależy od tego jak ktos z tego będzie chciał korzystać ;)

0
Shalom napisał(a):

Autor nie potrafił się do tego niestety ustosunkować

Ja mam takie wrażenie, że my (ludzie coś tam wiedzący i chcący pomagać) czasami zadajemy zbyt trudne dla autorów pytania.

Wyraźnie napisałem że to zależy od definicji pojazdu, której autor nigdzie nie przytoczył ;]

Nie musiał, definicja pojazdu jest jedna - urządzenie do transportu lądowego, czyli praktycznie wszystko, co ma kółka. :)

0

Witam i przepraszam za przerwę w udzielaniu się w temacie. Tak jak podpowiada somekind po pierwsze, dla mnie logiczne jest, ze wagon to też pojazd kolejowy. Co z tego że nie jeździ sam ? Ale jest pojazdem i tak wynika z treści zadania którego się trzymajmy, bo Shalom próbuje je zmienić a jest ono ściśle określone. Nie muszę tłumaczyć czym jest definicja pojzdu - to samo z siebie wynika. Shalom, trochę zbaczasz z treści zadania. Teraz idę spać, rano zabieram się za poprawę diagramu. Pozdrawiam

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