• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak poprawnie łączyć klasy?

Object Storage Arubacloud
0 głosów
224 wizyt
pytanie zadane 24 marca 2020 w C i C++ przez manjaro Nałogowiec (37,390 p.)
Taki przykład:

Mamy 3 klasy

- tir

- magazyn

- towar

Jak poprawnie skonstruować komendę aby tir się załadował w magazynie A jakimś towarem i pojechał do magazynu B?

Gdzie znajdę jakiś tutorial jak tworzyć tego typu relacje?
1
komentarz 24 marca 2020 przez tkz Nałogowiec (42,000 p.)

Taka pierwsza myśl, to może budowniczy, jako wzorzec. Analogicznie możesz wydzielić proces ekspedycji. 

image

(https://codecouple.pl/2018/01/12/4-wzorce-projektowe-builder-zbudujmy-to-lepiej/ źródło)

 

1 odpowiedź

+1 głos
odpowiedź 24 marca 2020 przez kubaapk Nałogowiec (44,270 p.)
To zależy od reguł biznesowych, która klasa jest agregatem, gdzie zawarte są specyfikacje i polityki. Czy towar "decyduje" czy może być załadowany, czy może jest to w kwestii magazynu. Ciężko podać konkretne rozwiązanie bez znajomości domeny. Polecam zapoznać się z pozycjami od Vernona i Evansa - książki o DDD - Red i Blue Booki. Tam nawet z tego co pamiętam przykłady oparte są o domenę Cargo.
komentarz 24 marca 2020 przez manjaro Nałogowiec (37,390 p.)
Dziękuję za odpowdź ale teraz jeszcze bardziej mi się wszystko komplikuje ;)

Zakładam że  działam z punktu widzenia tira i chcę dostarczyć towar X z namgazynu A do magazynu B tirem T.

Chodzi mi głównie o to jak te klasy rozplanować?

I jak powinna wyglądać mniej więcej metoda dostarcz_towar() klasy Tir

No i uświadomiłeś mi że nic nie wiem o agregacji, asocjacji, kompozycji... Czy powinienem z tych pojęć tu skorzystać?
komentarz 24 marca 2020 przez kubaapk Nałogowiec (44,270 p.)

Hm, metoda dostarczTowar może wyglądać różnie i działać różnie, zależy w jaki sposób zamodelujesz domenę. ;)

Czy np. zamiast metody tir.dostarczTowar, może lepiej będzie utworzyć metodę w klasie magazyn, która zajmować się będzie odbieraniem towaru, np. magazyn.odbierzTowar(towar), bo to magazyn ma w sobie reguły, które sprawdzają czy towar jest w porządku, a nie sam tir?

A może to kierowca tira przy załadunku sprawdza, czy towar jest w porządku co możesz i np. w metodzie tir.zaladujTowar(towar) sprawdzasz czy towar jest w porządku? 
 

Wyrzuć w ogóle w tym momencie z głowy pojęcie "klasa" czy "metoda". Tylko postaraj się zamodelować proces biznesowy. Odbiór towaru, załadunek, przyjęcie itp. I później to przedstaw za pomocą klas i metod.

Jak pisałem wcześniej, wszystko zależy od przyjętych reguł, można to zamodelować np. tak:
towar = magazyn.wydajTowar(...)

tir.zaladujTowar(towar)

magazyn2.odbierzTowar(tir.towar())

A czy to jest dobrze zamodelowane to nie mam pojęcia, bo może powinno się modelować w oparciu o trasę, na podstawie której będzie później odbierany towar w drugim magazynie? 

 

trasa = budujTrase() 
  .wybierzTira(tir) 
  .dodajTowar(towar) 
  .wskazCel(magazyn2)
  ....
  ....

I później magazyn2 na podstawie obiektu trasy przyjmuje towar i wystawia jakieś kwity czy inne takie takie.

Najlepiej przejrzyj dwie książki o których wspomniałem wcześniej, tam wszystko jest opisane.

Ewentualnie możesz zacząć od tego: https://bottega.com.pl/materialy.xhtm?cat=DDD

Podobne pytania

0 głosów
3 odpowiedzi 474 wizyt
+1 głos
1 odpowiedź 295 wizyt
pytanie zadane 17 lutego 2022 w Java przez Arek Kowalski Początkujący (450 p.)
0 głosów
0 odpowiedzi 289 wizyt

92,615 zapytań

141,465 odpowiedzi

319,779 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...