Ovu stranicu je najbolje pregledavati u modernom internet pregledniku s omogućenim JavaScriptom.

[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


Sljedeća stranica »