P8: Aspektovo-orientované programovanie
Preber si túto prednášku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.
Zhrnutie prednášky
Prednáška uvádza aspektovo-orientované programovanie ako rozšírenie objektovo orientovaného prístupu, nie jeho protiklad. Vychádza z problému, keď treba zmeniť alebo doplniť správanie kódu (napríklad kontrolné výpisy či logovanie), no nechceme alebo nemôžeme zasahovať priamo do jeho tela. Ručné vkladanie výpisov, komentovanie či vlastný monitorovací objekt zostáva rušivé a pri desiatkach metód neúnosné. Preto sa navrhuje formálne vyjadriť, kam a čo sa má vložiť (napr. before call pre metódu setX triedy Point), a to preprocesor či prekladač zabuduje do kódu. Ukazuje sa to v AspectJ, ktorý vkladá (weave) kód na úrovni bajtkódu, takže zdrojová trieda ostáva čistá. Následne sa pomocou hviezdičky zovšeobecňuje jeden advice na všetky metódy triedy.
- - Aspektovo-orientované programovanie nadväzuje na objektovo orientované a nestojí proti nemu.
- - Problém: potreba zmeniť alebo rozšíriť správanie kódu (napr. logovanie) bez priameho zásahu do jeho tela.
- - Ručné výpisy, komentáre či vlastný monitorovací objekt sú rušivé a pri veľa metódach neudržateľné.
- - Požadované správanie sa dá presne formálne zapísať, napr. before call pred volaním konkrétnej metódy.
- - AspectJ vkladá (weave) kód do bajtkódu, takže zdrojový kód triedy zostáva čistý.
- - Advice je časť kódu vykonaná pred alebo po zvolenom mieste; hviezdička (*) umožňuje zapísať jeden advice pre všetky metódy triedy.
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky