#java #programowanie #programowanieobiektowe
Spotkaliście się w którejś książce z podstawami programowania obiektowego? Tzn.:
1. "filary programowania obiektowego",
2. "SOLID": https://pl.wikipedia.org/wiki/Solid_(programowanie_obiektowe)
3. "Zasada podstawienia Liskov": https://pl.wikipedia.org/wiki/Zasada_podstawienia_Liskov
Bo w każdej książce do Javy jaką widziałem ("Java. Podstawy", "Thinking in Java", "Java. Praktyczny kurs." itd), to jest programowanie obiektowe opisane. Jest co to są klasy, obiekty, dziedziczenie, interfejsy itd. Głównie na przykładach.
A w żadnej z nich nie ma słowa: "filary", "Liskov", "SOLID".
Niby wiem
Spotkaliście się w którejś książce z podstawami programowania obiektowego? Tzn.:
1. "filary programowania obiektowego",
2. "SOLID": https://pl.wikipedia.org/wiki/Solid_(programowanie_obiektowe)
3. "Zasada podstawienia Liskov": https://pl.wikipedia.org/wiki/Zasada_podstawienia_Liskov
Bo w każdej książce do Javy jaką widziałem ("Java. Podstawy", "Thinking in Java", "Java. Praktyczny kurs." itd), to jest programowanie obiektowe opisane. Jest co to są klasy, obiekty, dziedziczenie, interfejsy itd. Głównie na przykładach.
A w żadnej z nich nie ma słowa: "filary", "Liskov", "SOLID".
Niby wiem
Tworzę w pracy stronkę, gdzie ma być sklep elektroniczny. Napisałem sobie serwis, gdzie tworzę zamówienie, dodaję produkty do zamówienia, pobieram informację o zamówieniu, cenę itd.
Jednak z powodu braku doświadczenia nie robię tego w odpowiedni sposób. W poprzedniej pracy widziałem jak takie coś było zrobione przez doświadczoną osobę i to mniej więcej wyglądało tak:
$this->getOrder()->getPrice()
- aby pobrać cenę.$this->getOrder()->getStatus()
- aby pobrać status zamówienia.U mnie to raczej wygląda
Poczytaj sobie o zasadach SOLID, może obejrzyj jakąś prezentację z konferencji na yt.
Twój "OrderService" łamie bardzo wiele tych zasad. W programowaniu obiektowym nie powinieneś mieć takiego "serwisu" który robi wszystko związanego z orderami.
Zapewne Twój Order jest złożony z pól i
public function addOrderItem(Orders $order, ProductVariation $productVariation, $amount)
{
$orderItem = new OrderItem();
$orderItem->setOrder($order);
$orderItem->setPrice($productVariation->getPrice());
$orderItem->setProductVariation($productVariation);
if ($productVariation->getAmount() < $amount) {
$orderItem->setAmount($productVariation->getAmount());
} else {