Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Projekt systemu w php, "metodyka obiektowa"
Nightstalker
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 6.11.2005

Ostrzeżenie: (0%)
-----


Cześć,
zabieram się właśnie za dokumentacje systemu napisanego w php (wspomaganego przez zend framework)... No i mam z tym mały problem, bo nigdy wcześniej nie robiłem tego zgodnie z teorią serwowaną na uczelniach, a tego właśnie wymaga mój projekt :-) W pracy zawsze zaczynam od analizy, której efektem są przypadki użycia. Przypadki są konsultowane z klientem i na tej podstawie wyodrębnione są główne "obiekty systemu" i dalej schemat bazy. W tym miejscu powinienem jednak zrobić diagram klas, ale niech mi ktoś powie - jak przedstawić na takim diagramie standardowe biblioteki zenda? Przykładowo, mój obiekt "faktura", ma możliwość zapisu i wydruku, ale sam z siebie tego nie robi, tylko odwołuje się do managera, który z kolei przy użyciu dao czyni zapis. To samo z drukowaniem - odpowiedni manager korzysta z innej klasy do wydruku. Obiekt faktury jednak sam w sobie nie ma metody w stylu "drukuj", a tego chyba wymaga projekt systemu w metodyce obiektowej... Bardzo proszę, niech ktoś biegły w tym temacie mi to wytłumaczy... Googluje już od dwóch tygodni i nie spotkałem się z wyjaśnieniem wyczerpującym temat. Mądre książki też np. opisują diagramy sekwencji - orientuje się o co w nich chodzi i potrafię je tworzyć dla głównych obiektów systemu, ale problem pojawia się gdy mam zamiar przedstawić jakiś zendowy proces 9np. sprawdzanie formularza)... Może za bardzo skupiam się na szczegółach? Może powinienem zrobić po prostu diagram klas dla głównych obiektów, wyodrębnić ich atrybuty oraz metody, na tej podstawie zrobić erd i schemat bazy, a szczegóły implementacji przedstawić jakoś inaczej? Jeszcze raz proszę kogoś biegłego o pomoc! Pogubiłem się w tym wszystkim :-)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Na przyszłość dodawaj proszę jakieś akapity - strasznie ciężko się czyta taki blok tekstu. (IMG:style_emoticons/default/wink.gif)

Na takim diagramie powinieneś przedstawić jedynie interfejs aplikacji, czyli de facto nie wiele tutaj powinno z Zenda pozostać.
Cytat
Przykładowo, mój obiekt "faktura", ma możliwość zapisu i wydruku, ale sam z siebie tego nie robi, tylko odwołuje się do managera, który z kolei przy użyciu dao czyni zapis
Oczywiście, bardzo dobrze że to osobne obiekty odpowiedzialne za druk czy zapis, jednakże to nie obiekt Faktura się do nich odwołuje. To one powinny najpierw otrzymać jakiś obiekt po czym to na nich wywołujesz operację zapisu czy druku. Tak mogłoby wyglądać ostateczne użycie:
  1. Invoice invoice = new Invoice();
  2. invoice.set...(...);
  3. invoice.set...(...);
  4. invoice.set...(...);
  5.  
  6. InvoicePrinter printer = ...; // tworzy / pobiera skądś obiekt drukarki faktur
  7. printer.setInvoice(invoice);
  8. printer.print();
  9. // lub jeżeli zajdzie taka potrzeba inny interfejs:
  10. // printer.print(invoice);
  11.  
  12. InvoiceManager manager = ...;
  13. manager.persist(invoice);
  14.  
  15. invoice.set...(...);
  16.  
  17. manager.update(invoice);


Jak mogłyby te obiekty wyglądać?
  1. public interface Manager<T> {
  2. public void persist(T object);
  3. public void update(T object);
  4. public void remove(T object);
  5. }
  6.  
  7. public class InvoiceManager implements Manager<Invoice> {
  8. @Override
  9. public void persist(Invoice object) {
  10. ...
  11. }
  12.  
  13. @Override
  14. public void update(Invoice object) {
  15. ...
  16. }
  17.  
  18. @Override
  19. public void remove(Invoice object) {
  20. ...
  21. }
  22. }
  23.  
  24. public interface Printer {
  25. public void print();
  26. }
  27.  
  28. public class InvoicePrinter implements Printer {
  29. @Override
  30. public void print() {
  31. ...
  32. }
  33. }
  34.  
  35. public class Invoice {
  36. ...
  37. }
Przeniesienie tego na diagram nie powinno być trudne.

Pozwoliłem sobie na przykład w Javie bo lepiej w niej widać co jest czym i do czego się odnosi
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 00:54