[UML] pomoc z diagramem

0

Na samym początku witam wszystkich :)

Podczas projektowania aplikacji webowej utknąłem na diagramie klas :-/
Ma on sporo błędów i obecnie przedstawia się tak:

user image

Jest to projekt galerii (WWW), prawie wszystkie funkcje będą po stronie bazy danych, jako procedury składowane. Zastanawiam się czy mam je umieszczać na tym diagramie?

Nie jestem też pewien, co do atrybutów. Z tego, co wyczytałem to w danej klasie powinno się wymienić tylko te atrybuty, które wykorzystywane są przez każdą z funkcji.

Prosiłbym o wyjaśnienie powyższych niejasności, bo już zgłupiałem [glowa]
Bardzo mile widziane by były poważniejsze uwagi, co do zamieszczonego diagramu.

Pozdrawiam i olbrzymie dzięki za pomoc
Aster

0

pierwsza sprawa: czy masz w ogóle zielone pojęcie na czym polega dziedziczenie?

poprawne dziedziczenie to np.:

       <--- samochód <--- samochód sportowy

pojazd
<--- motor

na pewno nie jest to:
galeria <-- komentarz
komentarz może być obiektami zawartym w galerii czyli tu po prostu zachodzi asercja
radzę poczytać jakąś książkę o OOP

Co do bazy danych to poleciłbym zrobić jakąś klasę która by opakowała metodami procedury zawarte w tej bazie danych.
Najlepiej jak by to wyglądało tak:


DbProcedures
<<interface>>


proced1()
proced2()

    ^
    | //generalizacja
    |

MysqlDbProcedures


w ten sposób reszta kodu będzie nie zależna od bazy danych i będziesz przygotowany na ewentualne doimplementowanie obsługi innych baz danych.

O matko... metoda kategoria_dodaj() dodaje kategorie do obiektu Kategoria ?! przecież to jest bez sensu, a te nazwy metod ogólnie wyglądają rodem z C! I gdzie są konstruktory w tych klasach? czy ty w ogóle tworzysz jakieś obiekty? bo jak nie to sorry ale to nie jest OOP...
Mam dzikie wrażenie że ta obiektowość to tylko pozór, więc polecam ci najpierw poczytać jakąś książkę o OOP lub z przynajmniej jakimś wstępem do tego bo to że użyjesz słowa kluczowego [b]class[/b] to nie znaczy że to będzie obiektowe.

0

Z tym dziedziczeniem to gafa chyba największa ;-P (popaprało mi się znaczenie strzałek). Wiem o co chodzi w dziedziczeniu, po prostu tyle już się na oglądałem diagramów (poprawnych i błędnych) że mam mętlik w głowie.

O matko... metoda kategoria_dodaj() dodaje kategorie do obiektu Kategoria ?! przecież to jest bez sensu

a gdzie mam zamieścić funkcję dodawania kategorii ?
Wydawało mi się że wszelkie funkcje związane z kategorią najlepiej umieścić w tej klasie i tak samo w przypadku innych.

Przecież nie dam jej w klasie "Uzytkownik" wraz z atrybutami nazwa_kategorii , opis itd.... :>

0
aster napisał(a)

Wydawało mi się że wszelkie funkcje związane z kategorią najlepiej umieścić w tej klasie i tak samo w przypadku innych.

nie rozumiesz... metodę dodaj(nazwa_kategorii) jak już to może mieć klasa ZbiórKategorii lub Kategorie.
poza tym jak chcesz dodać kategorię do obiektu w którym mam tylko jedną zmienną tytuł ?! Domyślam się że te metoda dodaj_kategorie dodaje wpis do bazy danych. Ale to nie zmienia faktu że te atrybuty na UML'u są zrobione bez sensu i przygotowane do przechowywania informacji nt. tylko jednej kategorii.

A tak w ogóle to co to są za metody, które nie przyjmują żadnych argumentów ?! skąd i jakie dane przyjmuje metoda kategoria_dodaj? W projekcie UML można pominąć niektóre szczegóły implementacyjne jak np. prywatne atrybuty ale nie wolno pomijać argumentów metod!

Wieź sobie obejrzyj jakiś dobrze wykonany projekt obiektowy albo zrób ten projekt strukturalnie bo obiektowość w takim wykonaniu jedynie szkodzi i spowolni wykonanie...

0

chyba zaczynam rozumieć, wymodziłem coś takiego:

user image

wiem że należy określać typy atrybutów (to nie jest jednak mój problem więc nie wypisuje tego na razie).
Jeżeli chodzi o atrybuty metody, co jeżeli jest ich np. 20 ? czy wszystkie mam wypisać razem z typem (wygląda to dość brzydko), czy też wypisać np 3 a potem ... (tak jak w przypadku atrybutów klasy) i resztę dokładnie w opisie diagramu zamieścić ?

zastanawiam się jeszcze czy nie powinienem dać asocjacji Galeria - Kategoria bo przecież kategoria należy do galerii

0

Jeżeli masz metody z 20 argumentami to to jest poważny błąd projektowy.
Nic potem tak nie wkurza ja oglądanie kodu typu:

zbior_czegos.cos_dodaj( nazwa, 4, 6, true, "jajko", 4, 6, ... );

programista na to patrzy i szlag go trafia że bez zajrzenia do szczegółowej dokumentacji za cholerę nie zrozumie tego kodu!
a nie lepiej po prostu tak:

Kategoria k = new Kategoria();
k.setNazwa(nazwa);
k.setId(4);
k.setIloscElementow(6);
k.setUrzytkownik( "jajko" );
zbiorKategori.dodaj(k);

Nieprawdaż że o wiele bardziej czytelne. Nawet komentarzy nie trzeba dawać do takiego kodu bo kod mówi sam za siebie!
</cpp>

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