Wpis z mikrobloga

jak to zrobić, żeby było SOLID?
#python #programowanie #naukaprogramowania #codereview

mam sobie dwie klasy "rzecz" i "kontener na rzeczy" - jaki jest najlepszy sposób by każda z rzeczy mogła "powiedzieć", gdzie się znajduje? (zakładamy, że każda rzecz jest w jakimś konkretnym jednym kontenerku)? jak to najładniej zaprojektować?

mam taki przyklad: https://pastebin.com/JgLYYbur i proszę o opinie :)
(sorry za screenshot, wykop źle formatuje kod)
janek_ - jak to zrobić, żeby było SOLID?
#python #programowanie #naukaprogramowania ...

źródło: comment_16603016323CHy3TqCSksDMaTNJsbAWq.jpg

Pobierz
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@janek_: rzecz może być tylko w jednym kontenerze? Jeżeli tak, to na Thing dałbym nullable propertiesa container, a na containerze metodę addThing(thing) która najpierw ustawia thingowi container, a potem dodaje go do swojej listy thingów.

A jak chcesz to potem zapisać do bazy czy innego pliku csv, to wystarczy żeby rzecz wiedziała w którym pojemniku się znajduje. Pojemnik będzie mógł się dowiedzieć co w nim jest puszczając query do
  • Odpowiedz
@janek_: może coś na wzór interfejsu w Pythonie: https://stackoverflow.com/a/13592829

W przykładzie jest "interfejs", czyli w Pythonie klasa abstrakcyjna A, a klasy B i C ją implementują. Więc dla Twojego zastosowania A byłoby właśnie Thing, która ma metodę print_location i "implementujące" ją klasy również muszą ją zaimplementować (patrz na wzór z SO). Brak zaimplementowanej metody w klasie implementującej "wywołuje" metodą wyżej, czyli z A - a więc wystąpi błąd,
  • Odpowiedz
@zarev: do innych uwag się (może) odniosę później, ale:

Klasa Thing nie potrzebuje 'print' bo jest bez sensu, to kontener powinien wiedziec co sie w nim znajduje, a nie rzecz.

ale jeśli ja bym właśnie chciał, żeby rzecz też "wiedziała" gdzie się znajduje i mogła to łatwo powiedzieć?

albo inaczej:
  • Odpowiedz
@janek_: Hasła: agregacja oraz kompozycja - potem z dobrego zrozumienia agregacji można zrozumieć skąd bierze się agregat w DDD

W dużym skrócie wszystko zależy od tego czy obiekt może żyć / mieć własną tożsamość bez obiektu rodzica.

Przykładowo:
- książka może spokojnie istnieć
  • Odpowiedz