[OOUP] Gradivo
TheManFromEarth
Jeli moze netko tko je odgovarao 3 i 4 vjezbu reci koja su otprilike bila pitanja?
in1
TheManFromEarth Na početku o onom u C-u šta radi koja funkcija i kako to funkcionira. U labosu je bio onaj primjer u odabranom jeziku pa me pitao što radi svaka metoda i kako bi umjesto konstruktora pozvao neku funkciju. Onda me pitao što bi se dogodilo da staviš da Cat ne nasljeđuje Animal - odgovor je da bi program puknuo u trenutku castanja i da bi se to dogodilo prilikom izvršavanje jer program tijekom kompajliranja ne zna što će pročitati. O notepadu su bila pitanja koje obrasce sam gdje upotrebio i zašto, koja sučelja sam gdje implementirao. Trebalo je objasniti kako je izveden undo manager.
AromaticConfusion
TheManFromEarth Za četvrtu me pitao koje obrasce sam koristio i gdje i kako, pitao me za svakog posebno koje klase su sta u tom obrascu, cak me nije ni trazio da demonstriram program
faboche
Postoji li neka posebna veza za prikazivanje implementiranja sučelja u ovim dijagramima?
cloudies
Ne mogu nikako skužiti o kojem se oblikovnom obrascu ovdje radi. Neki hint možda?
Jaster111
cloudies da nije dekorator?
micho
cloudies dekorator/dependency injection
Rene
Jaster111
M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽
Zar nebi dekoratori trebali nasljeđivat osnovnu komponentu i pozivat se preko istog sučelja?
micho
Rene Izvedba dekoratora je stvarno proizvoljna, generalno su to samo ukrasi na neku funkcionalnost. Kakvu - nebitno. Kako je to implementirano - nebitno.
E sad, moglo bi se isto tako reći da je klasa G implementacija okvirne metode klase E, i da onda C kojoj je injektirana ovisnost o F ima metodu o()
koja poziva okvirnu metodu. Međutim onda bi se moglo opet pričati o tome da E baš ne radi to što je u prezentacijama tj. da implementacija G ne mijenja skroz ponašanje nego samo “ukras” na kraju n()
, i zato bih ja prije rekao da je ovo dekorator nego okvirna metoda.
Doduše ima i argument protiv dekoratora, u smislu da dekorator nadograđuje stvari s određenom hijerarhijom, hence dekorator. Ovdje nema takvog nadograđivanja, nego se samo uređuje jedan korak, što bi odgovaralo okvirnoj metodi.
Rene
M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽ Ne znam, Šegvić je na predavanju naglasio da je bitna ta rekurzivna kompozicija kod dekoratora i gdje god sam pogledao (pa i na refactoring guru), Dekorator nasljeđuje komponentu. Zbunjujuć mi je zadatak s obzirom da mi se ne uklapa baš ni u jedan obrazac u potpunosti, npr. E i G su Okvirna metoda 1/1, ali onda jedino što mi pada na pamet je da C bude kontekst, F neka apstraktna strategija pa nekakva kombinacija Strategije i Okvirne metode, al ni to mi ne izgleda baš bajno.
EDIT: da vidim da si slično napisao u editu, to mi ima smisla.
micho
Rene Da, zajebano je, zato i treba prosuđivanje na to što se zapravo radi.
A ovo za nasljeđivanje je stvarno ovisno o jeziku. Generalno ono što ti postižeš dekoratorom jer “nadograđuješ” neku komponentu da ima neke dodatne obveze. Nitko ti ne kaže da ti onda sučelje mora ostati isto:
class Component:
def get(self, text: str):
raise NotImplementedError
class Text(Component):
def get(self, text: str):
return text
class Sentence:
def __init__(self, component: Component):
self._component = component
def get(self, text: str, delimiter: str = "."):
return self._component.get(text).split(delimiter)
vidiš da u dinamičkom jezikom nit trebaš nasljeđivati komponentu, nit imati isto sučelje. Naravno, da se to u praksi ne bi tak radilo, jer je generalno korisno da instanceof
na objekt tipa Sentence
i tip Text
vrati True
.
Iskreno bih napisao ta razmišljanja, možeš dobiti puno bodova na tome. Ja bih napisao da strukturalno najviše odgovara okvirnoj metodi ali da funkcionalno sliči dekoratoru. F ti nije apstraktna strategija, nego čini mi se nekakva podatkovna klasa, to se da komotno ignorirati. Možda su je tak definirali da zbune ljude da je dekorator.
Fica
Ima li netko riješen 5. zadatak iz MI19?
cloudies
Prof Možda ako ti ove moje bilješke s auditornih nešto znače