problem z diagramem klas i diagramem stanów

0

witam chciałbym aby ktoś fachowym okiem zerknął na moje diagramy według mnie jest ok ale mojemu promotorowi coś nie
pasuje. :-/

wysyłam diagramy plus mój opis plus uwagi promotora odnośnie nich:

http://www11.speedyshare.com/files/23943539/download/klasy%20new.JPG
http://www11.speedyshare.com/files/23943540/download/baza%20new.JPG
http://www11.speedyshare.com/files/23943541/download/klasy1a.gif
http://www11.speedyshare.com/files/23943542/download/baza1a.gif
http://www11.speedyshare.com/files/23943543/download/czas%20zycia.gif

dodatkowo przesyłam baze aby można było porównać ją z diagramem klas i
do diagramu klas dodałem klase zdjecia tez nie wiem czy dobrze
dlatego przesylam i stare diagramy bez tej klasy

dodatkowe jeszcze czas zycia ogloszenia profesorowi tez sie nie
podoba ze niby nie stanu konca zycia ogloszenia ale wedlug mnie nie
ma bo jak moze byc jak ogloszenie zostalo usuniete

tu sa uwagi i moj opis diagramu klas

z góry dziekuje za pomoc

pozd. Marcin Tolak

ps. uwagi promotora:

Diagram stanu:
Str. 33 – diagram nie posiada punktu wyjścia (stanu „nieistnienia”, do którego przechodzi usunięte ogłoszenie); nie ma większego znaczenia również kto dokonał usunięcia ogłoszenia– nie wartonależy też pokazywać na diagramie stanów
Diagram klas:
Str. 34 – po czym Administrator poznaje iż prośba o usunięcie ogłoszenia pochodzi od użytkownika który je faktycznie umieścił? Struktura bazy danych jest bardziej niż skromna, może to być powodem do wielu pytań na egzaminie. Struktura kategorii nie pozwala na dodawanie podkategorii. Do ogłoszenia nie można dodać więcej niż 3 zdjęcia (wcześniej była mowa o 4, czy mnie się wydawało?). Ten sam użytkownik przy każdym ze swoich ogłoszeń występuje wielokrotnie (powtarzają się jego dane osobowe). Bardziej eleganckim rozwiązaniem byłoby dodanie tabel „Zdjęcia” i „użytkownicy” powiązanych relacjami z ogłoszeniami, ale decyzję czy realizować to czy zostawić tak jak jest pozostawiam Panu.

moj opis diagramu klas:

Diagram klas składa się z pięciu klas w skład których wchodzą następujące klasy: obserwator, osoba_dodajaca_ogloszenie, administrator, kategoria i tabela ogloszenie.

Poniżej opisano wszystkie z klas:

· obserwator – wybierając kategorie może przeglądać ogłoszenia danej kategorii. Dodatkowo może je także wyszukiwać korzystając z wbudo-wanej wyszukiwarki.
· osoba_dodajaca_ogloszenie – może ona dodać ogłoszenie bez konieczności logowania się do serwisu. Dziedziczy ona zarówno z klasy kategoria jak i z klasy ogloszenie. Z pierwszej dziedziczy zarówno id_kategorii jak i rekord nazwa_kategori, natomiast z drugiej dziedziczy tylko rekord id_ogloszenia.
· administrator – logując się do systemu może dodawać i usuwać kategorie a także usuwać ogłoszenia w danej kategorii
· kategoria – klasa w której przechowywane są kategorie ogłoszeń
· ogłoszenie – klasa w której przechowywane ogłoszenia i dane konta-ktowe użytkowników.

Przedstawiony powyżej rysunek pokazuje także, że kategorie mogą istnieć bez ogłoszeń (mogą być puste), natomiast nie może być odwrotnie, czyli nie mogą istnieć ogłoszenia bez przypisanych kategorii. Pozwala to niknąc błędów z nieprzypisanymi nigdzie ogłoszeniami i w związku z tym z brakiem ich wyświetlania na stronie

0

Źle nazywasz klasy, źle rozumiesz idee dziedziczenia.

  1. Twoje klasy nie trzymają zasady pojedynczej odpowiedzialności - czemu klasa "Ogłoszenie" ma metodę przeglądaj ogłoszenia? To w końcu klasa ogłoszenie zawiera kolekcje ogłoszeń, czy pełni rolę pojedynczego ogłoszenia?

  2. Realnych podstaw do dziadzienia wielobazowego (takiego znanego z C++) jest niewiele i często można je zastąpić kompozycją. U Ciebie w dodatku nie widać realnych związków między klasami (nawet podstawowego związku "is-a". ).

Farsa:
3. Po co dziedziczyć po klasie, która jest jednoczesne składnikiem innej klasy bazowej po, której dziedziczymy?

0

Nie patrzyłem na te diagramy powyżej, ale ten "nowy" to tragedia.
Co to za dodaj/usun_kategorie() w klasie kategoria? To jest kategoria czy ZbiórKategorii?
Tak samo co to za start systemu, przeglądaj ogłoszenia, czy szukaj w klasie Ogłoszenia? To są Ogloszenia czy ZbiórOgloszeń?
A klasa dodaj_ogłoszenie to już w ogóle jakiś totalny hardkor. Tak samo jak dziedzicząca z niej usun_ogłoszenie.

Może najpierw spróbujesz zrozumieć na czym polega obiektowość?
Chodzi o to że masz poszukać sobie obiektów które występują w danej rzeczywistości-dziedzinie. Klasy są prototypami pewnych klas/rodzajów obiektów.
Np. piszesz system dla komisu samochodowego, obiekty które tam występują to Samochody. Potrzebujesz mieć też ListęSamochodów. Rodzajów samochodów jest wiele, ale każdy z nich to samochód. Więc przyda się klasa Samochód. Możliwe że przyda się też klasa ListaSamochodów (singletonowa). Jeśli chciałbyś mieć pewne podtypy samochodów (bo ciężarówki mają trochę inne cechy i parametry niż samochody osobowe) to możesz zrobić klasy dziedziczące z Samochód -> SamochódOsobowy, SamochódCiężarowy.

0

Nie nie i jeszcze raz nie. Ty w ogóle tego nie czujesz.
Wyobrażasz sobie obiekt typu "logowanie"? Bo ja umiem sobie wyobrazić np. obiekt Pies, Kot, Krowa, Samolot, ale logowanie?
Zmiana nazwy Kategoria na Kategorie jest chwalebna, ale GDZIE chciałbyś te kategorie (które chcesz tam dodawać/usuwać) przechowywać? o_O
Podpowiem ci że powinieneś tam mieć klasę Kategoria która ma te pola które tam masz, oraz metody związane z pojedynczym obiektem Kategoria. Oprócz tego powinieneś mieć klasę ZbiorKategorii który agreguje w sobie obiekty typu Kategoria.
Analogicznie sprawa ma się z Ogłoszeniem i ZbioremOgłoszeń.
Pochwalić mogę jedynie zastosowanie Kompozycji między klasami Zdjęcie i Ogłoszenie (zakładając że ta klasa będzie odpowiadać za pojedyncze ogłoszenie...). Jednakże sama klasa Zdjęcie wygląda dość ubogo i słabo...
A te interfejsy to tam upchnięte trochę na siłę są.

Btw skoro piszesz o promotorze to znaczy ze piszesz pracę dyplomową. Mam nadzieję że nie studiujesz informatyki...

0

Interfejs admin (jakakolwiek by nie była jego rola, która dla mnie jest niejasna) jest interfejsem zaśmieconym! Oznacza to, że klasy ogłoszenie i kategoria implementują jego metody, które są dla nich niepotrzebne. Aby to wyglądało jak należy powinieneś je rozbić na 2 interfejsy - klasa ogłoszenie implementuje jeden a klasa kategoria implementuje drugi. Dopiero trzeci interfejs powinien dziedziczyć po obu interfejsach powyższych. Ale nie rób tego, dopóki sam nie będziesz wiedział, po co Ci tam właściwie interfejs?

0

no dobrze to pewnie ma byc tak bo juz powoli mam dosyc ;-P

http://www11.speedyshare.com/files/23980618/download/klasy%20new3.jpg

0

Przykro mi, ale nadal nie. Ale jest już znacznie lepiej to trzeba przyznać ;]

  1. dodaj/usuń kategorię powinno być metodą ZbioruKategorii a nie Kategorii jako takiej. Bo to tak na prawdę Zbiór będzie wykonywał pewne operacje (tzn dopisze sobie ten obiekt Kategorii do swojej listy, tablicy czy coś) a nie kategoria. Przecież dla obiektu Kategoria w ogóle nie ma znaczenia do jakiego Zbioru należy...
  2. Te interfejsy są zupelnie z d**y i niepotrzebne. Zastosowanie Interfejsu tak samo jak Dziedziczenia NIE WYNIKA z faktu że dwa obiekty mają podobne metody (podobnie się nazywające...). To ma wynikać z DZIEDZINY problemu.
  3. Ogłoszenie nie powinno zawierać pól Zdjęcia! Mógłbyś conajwyżej wpisać tam pole typu Zdjęcie, ale to bez sensu skoro już zaznaczyłeś na diagramie Kompozycję.
  4. Czy to powiązanie ZbioruKategorii i ZbioruOgłoszeń faktycznie występuje w rzeczywistości? Jak one są powiązane? Może występuje jednak powiązanie Ogłoszenia z Kategorią?
0

odnośnie punktów:

  1. wiem to pomyłka zwykłe przeoczenie w ogłoszeniu nie miało być pul zdjęcia
  2. tak to będzie połączenie kategorii z ogloszeniem bądź tak się zastanawiam kategorii ze zbiorem ogloszen
    bo do jednej kategorii moze byc wiele ogloszen?
0

ad 4. No dobra, ale to nie jest baza danych ;) Jedno ogłoszenie będzie przyporządkowane do jednej kategorii jak rozumiem? Technicznie rzecz biorąc będziesz miał w obiekcie Ogloszenie pole które będzie określać Kategorię. Dlatego ten związek między Zbiorami tu nie pasuje.
Jeśli masz wątpliwości to pomyśl po prostu jak byś to implementował (zresztą chyba będziesz?) i pewne rozwiazania od razu będą wydawać się bez sensu / niewykonalne.

0

Wywal te interfejsy, tak jak wspomniał kolega wyżej - są tu całkiem niepotrzebne.

Masz powiązania klas z interfejsem, który nie jest przez żadną klasę implementowany (tak przynajmniej wynika z diagramu). To trochę tak jakbyś nie umiejąc robić ciasta posiadał przepis na ciasto a nie posiadał kucharza, który to ciasto upiecze.

0
marcin348 napisał(a)

wydaje mi sie ze tak bedzie ok :-) :
http://www10.speedyshare.com/files/23991459/download/klasy%20new5.bmp
http://www10.speedyshare.com/files/23991482/download/baza%20new5.bmp

BMP żeś wstawił? Aż taki upał dzisiaj? :|

0

bmp...
A czy ta klasa administrator jest w ogóle do czegoś potrzebna tutaj? Do czego chcesz użyć obiektów tego typu? Czy administrator to nie jest po prostu Aktor?
Jeśli chodzi o bazę to relacja Ogłoszenie-Kategoria powinna być obowiązkowa, bo przecież ogłoszenie musi być przyporządkowane do jakiejś kategorii?

0

Ok, to co tutaj teraz masz wygląda wstępnie OK, ale dopiero jak zaczniesz to implementować (będziesz w ogóle?) to można wyklarować finalną wersję (bo się okaże że coś ci jest dodatkowo potrzebne np.).
Poza tym kosmetyczna sprawa: chcesz z góry (i z dołu) ograniczyć ilość zdjęć dla ogłoszenia? Nie lepiej zamiast na sztywno mieć tam zdjecie1, zdjecie2, zdjecie3 dać tam jakąś kolekcję/tablicę/listę zdjęć.

0

tak chce to zaimplementować mam wsumie system ale nie działa on obiektowo kod jest zaśmiecony
no i w zasadzie na razie na sztywno beda 3 zdjecia
a potem i tak by musialy byc poza baza to wtedy mozna pomyslec nad tablica

a to na jakiej podstawie powstaje moj sytem

ta strona tez jest przeze mnie zrobiona :)
http://www.superkochanka.abhost.pl/

0
marcin348 napisał(a)

tak chce to zaimplementować mam wsumie system ale nie działa on obiektowo kod jest zaśmiecony
no i w zasadzie na razie na sztywno beda 3 zdjecia
a potem i tak by musialy byc poza baza to wtedy mozna pomyslec nad tablica

a to na jakiej podstawie powstaje moj sytem

ta strona tez jest przeze mnie zrobiona :)
http://www.superkochanka.abhost.pl/

<facepalm>
0

o lol LOL ... szkoda ze tylko 4 dziewczyny. Skromnie.....

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