Abstract: |
Una de les metodologies més exteses de disseny i programació és la orientada a objectes, segons la qual un software s'organitza en classes que contenen mètodes (procediments) i atributs (dades). Les instàncies o objectes d'aquestes classes s'envien missatges les unes a les altres (fan "trucades" a mètodes d'altres objectes) aconseguint aixi la funcionalitat desitjada. A part del concepte de classe, tres altres elements fonamentals són l'herència, la composició i la separació de les parts pública i privada de les classes. Aquests elements son doncs necessàris per a la programació OO, però no suficients: cal saber com utilitzar-los per arribar a solucions que siguin fàcilment extensibles en el futur, ja que una llei del software és que els canvis són inevitables. Existeixen una serie de principis de disseny o heurístiques que ens diuen com s'han d'emprar aquests elements per tal d'aconseguir-ho. I sobre ells encara, es construeixen els patrons de disseny, que son solucions a nivell de disseny OO a problemes recurrents, que apareixen sovint en resoldre problemes aparentment independents. En aquesta assignatura s'introdueixen i es practiquen els conceptes OO aixi com els principis i patrons de disseny. L'aprenentatge gira al voltant d'un projecte ---la pràctica--- en que és necessari aplicar tots els temes explicats per tal de dissenyar i implementar una aplicació de software a partir d'un enunciat que fa el paper de document de requeriments. Pel context de la assignatura, el projecte cau en el camp de l'aprenentatge computacional (machine learning). Els llenguatges de programació utilitzats a la assignatura seran Python principalment per que es en el que es farà el projecte, però tambe Java que utilitzarem en alguns exercicis i suporta millor els conceptes d'orientació a objecte. Així, podrem comparar com uni altre els implementa i en quingrau. |