
Programació Orientada als Objectes
Codi: 104389Crèdits: 6
| Titulació | Tipus | Curs |
|---|---|---|
| Matemàtica Computacional i Analítica de Dades | FB | 1 |
Professor/a de contacte
- Nom :
- Guillermo Torres
- Correu electrònic :
- guillermo.torres@uab.cat
Equip docent
- Enric Sala Esteva
Idiomes dels grups
Podeu consultar aquesta informació al final del document.
Prerequisits
No hi ha prerequisits oficials, però és necessari saber programar en Python.
Objectius
L'objectiu principal és que l'estudiant adquireixi coneixements sobre els principis del Disseny Orientat a Objectes i els Patrons de Disseny, amb la finalitat d'elaborar dissenys de programari que es representin mitjançant diagrames UML i s'implementin posteriorment en un llenguatge de programació orientat a objectes.
Això inclou conceptes fonamentals com a classes, objectes, mètodes, atributs, herència, composició i encapsulamiento. A partir d'aquests principis, s'introdueixen els Patrons de Disseny de Programari, que proporcionen solucions reutilitzables a problemes comuns en el desenvolupament de programari.
Els diagrames UML permeten representar de manera clara les estructures i relacions del programari, facilitant la visualització i comparació de diferents dissenys, així com la planificació de la seva implementació.
Resultats d'aprenentatge
- CM09 (Desenvolupar solucions algorísmiques eficients a problemes computacionals d’acord amb els requisits establerts per a la programació orientada a objectes.) Desenvolupar solucions algorísmiques eficients a problemes computacionals d’acord amb els requisits establerts per a la programació orientada a objectes.
- CM10 (Analitzar la complexitat computacional de les solucions algorísmiques per a desenvolupar i implementar la que garanteixi el millor rendiment de la programació orientada a objectes.) Analitzar la complexitat computacional de les solucions algorísmiques per a desenvolupar i implementar la que garanteixi el millor rendiment de la programació orientada a objectes.
- CM11 (Assegurar el funcionament correcte d’una solució algorísmica d’acord amb els requisits del problema a resoldre per a la programació orientada a objectes.) Assegurar el funcionament correcte d’una solució algorísmica d’acord amb els requisits del problema a resoldre per a la programació orientada a objectes.
- KM09 (Reconèixer els mètodes, sistemes i tecnologies propis de la programació orientada a objectes.) Reconèixer els mètodes, sistemes i tecnologies propis de la programació orientada a objectes.
- SM09 (Utilitzar els sistemes operatius i programes d’ús comú en la programació orientada a objectes.) Utilitzar els sistemes operatius i programes d’ús comú en la programació orientada a objectes.
- SM10 (Utilitzar les estructures algorísmiques i de representació de dades adequades per a la resolució de problemes en la programació orientada a objectes.) Utilitzar les estructures algorísmiques i de representació de dades adequades per a la resolució de problemes en la programació orientada a objectes.
Continguts
- Conceptes d'orientació a objectes. Introducció als principis fonamentals de l'orientació a objectes, com el encapsulamiento, l'herència, la composició o l'ús d'interfícies, així com la representació gràfica mitjançant diagrames de classes UML.
- Programació orientada a objectes en Python. Ús d'un llenguatge de programació per a aplicar els conceptes orientats a objectes, incloent-hi característiques avançades del llenguatge.
- Principis de disseny orientat a objectes. Anàlisis de principis per a estructurar programari mantenible i escalable, i assignar responsabilitats de manera coherent entre els components.
- Patrons de disseny. Estudi de solucions reutilitzables per a problemes comuns en el disseny de programari.
- Estil de codificació i bones pràctiques. Aplicació de convencions d'estil, documentació del codi, ús de comentaris i tècniques per a millorar la traçabilitat i comprensió del programari.
- Desenvolupament pràctic incremental. Aplicació progressiva dels continguts teòrics-pràctics mitjançant exercicis i un projecte principal dividit en fases.
Activitats formatives i Metodologia
| Títol | Hores | ECTS | Resultats d'aprenentatge |
|---|---|---|---|
| Classes de pràctiques | 13 | 0,52 | CM09, CM10, SM09 |
| Estudiar | 50,5 | 2,02 | |
| Classes de teoria | 36 | 1,44 | CM11, KM09, SM10 |
| Programació per a la resolució de problemes | 50,5 | 2,02 |
L'assignatura segueix una metodologia d'aprenentatge basat en projectes (ABP), en la qual els estudiants desenvolupen progressivament un projecte de programació aplicant els principis de la Programació Orientada a Objectes (POO). El projecte està estructurat en fites (milestones), que permeten consolidar els continguts treballats al llarg del curs, promovent un aprenentatge significatiu, actiu i orientat a la pràctica.
Classes de teoría. S'introdueixen els conceptes clau del paradigma orientat a objectes i es proporcionen les bases necessàries per a afrontar el desenvolupament del projecte. Aquestes classes inclouen també la resolució de petits problemes de disseny i programació orientada a objectes. A més, s'ofereixen referències bibliogràfiques (llibres, articles, recursos en línia) que complementen les sessions presencials. Les transparències utilitzades en classe no han de considerar-se com a única font d'estudi; s'espera que els estudiants consultin activament els materials recomanats, disponibles al campus virtual de l'assignatura.
Clases de Pràctiques. A l'inici del curs, els estudiants s'organitzen en petits grups de treball. Durant aquestes sessions, 1) es revisa setmanalment el progrés en el projecte i es resolen dubtes tècnics i/o conceptuals, i 2) es realitza una avaluació contínua, tant grupal com individual, segons el barem definit en l'enunciat de la pràctica. Aquestes sessions no estan dissenyades per a desenvolupar el projecte complet des de zero, sinó per a fer seguiment i avaluar el treball que els grups han avançat prèviament de manera autònoma.
Treball autònom. L'aprenentatge de la programació requereix dedicació i pràctica constant. Per això, s'espera que els estudiants treballin demanera autònoma fora de l'aula: estudiant els continguts teòrics, resolent exercicis, revisant exemples i avançant de manera contínua en el desenvolupament del projecte.
El campus virtual conté tots els materials de l'assignatura, així com la planificació detallada del curs. Tots els continguts escrits estan redactats en anglès.
Avaluació
Activitats d'avaluació continuada
| Títol | Pes | Hores | ECTS | Resultats d'aprenentatge |
|---|---|---|---|---|
| Teoria | 50% | 0 | 0 | CM11, KM09, SM10 |
| Pràctica | 50% | 0 | 0 | CM09, CM10, SM09 |
L’avaluació de l’assignatura es basa en un sistema d’avaluació continuada que combina activitats individuals i grupals, amb l’objectiu de valorar tant la comprensió conceptual com l’aplicació pràctica dels continguts teoricopràctics.
Càlcul de la nota final (FM)
Totes les notes són sobre 10 punts. La nota final es calcula segons l’algoritme següent:
EX = max(0.5 * (EX1 + EX2), EXR) + OPextra
PR = 0.4 * M1 + 0.4 * M2 + 0.2 * PReval
if (EX >= 4.0) and (PR >= 4.0):
FM = 0.5 * (EX + PR)
else:
FM = min(EX, PR)
Per aprovar el curs cal que FM >= 5 punts.
On:
- EX és la nota de teoria, que s’obté a partir de:
- EX1 i EX2, que corresponen al primer examen i al segon examen, dues proves escrites individuals realitzades durant el curs.
- EXR, que és l’examen de recuperació i pot substituir la mitjana d’EX1 i EX2 si millora la nota.
- OPextra, que correspon als punts addicionals obtinguts mitjançant exercicis opcionals de reforç.
- EX és sobre 10 punts.
- PR és la nota de pràctiques, que s’obté a partir de:
- M1 i M2, que són els projectes que s’avaluen a les pràctiques, de manera grupal i individual, al llarg del curs.
- PReval, que és una avaluació individual de les pràctiques.
- PR és sobre 10 punts.
Avaluació única
- Aquesta assignatura no preveu el sistema d’avaluació única.
Avaluació de la pràctica
- La pràctica es compon dels projectes M1 i M2, que es realitzen en grup i són avaluats in situ durant les sessions pràctiques.
- El lliurament dels projectes és obligatori. La no entrega d’un projecte es qualificarà amb un 0.
- Els lliuraments es faran a través del campus virtual. Els lliuraments fora de termini podran obtenir com a màxim una puntuació de 5 punts.
- En cas de dubtes sobre l’autoria o la contribució individual dins del grup, la qualificació passarà a ser individual, assignant la nota en funció de l’aportació de cada membre.
- Les sessions de pràctiques són obligatòries i requereixen assistència presencial. Es prendrà assistència durant el curs. En cas d’absència, l’estudiant haurà de justificar-la adequadament. Si l’absència no està degudament justificada, la nota màxima que es podrà obtenir en la part pràctica de l’assignatura serà de 5 punts.
- Es realitzarà una avaluació individual (PReval).
- Aquestes avaluacions no tenen recuperació.
Avaluació de la teoria
- Es realitzaran dues proves escrites (EX1 i EX2) al llarg del curs.
- Hi ha un examen de recuperació (EXR) que permet millorar la nota si és superior a la mitjana d’EX1 i EX2.
- Els exercicis opcionals de reforç (OPextra) podran sumar punts addicionals a la nota de teoria (EX) i no tenen recuperació. Es lliuren a través del campus virtual, i no s’accepten lliuraments fora de termini. Els punts obtinguts d’OPextra no es poden sumar a un examen o a la part de pràctiques per assolir el mínim requerit.
Altres aspectes rellevants
- No es convaliden pràctiques, exercicis ni exàmens de cursos anteriors.
- En cas de no lliurar un examen o una part de la pràctica, la nota d’aquesta part serà zero.
- La nota final serà “no avaluable” si l’estudiant no ha presentat cap activitat avaluable.
- La qualificació de Matrícula d’Honor (MH) es concedirà discrecionalment a estudiants amb nota final superior a 9.0, valorant totes les activitats realitzades.
- Les dates de lliurament i avaluació es publicaran al campus virtual i podran modificar-se en cas d’incidències, informant-ne sempre mitjançant aquest mitjà.
- Per als exàmens escrits s’indicarà data i lloc per a la revisió per part de l’estudiant; si no hi assisteix, no es farà cap revisió posterior.
- Els plagis, còpies o qualsevol irregularitat en activitats avaluables comportaran una qualificació de zero en aquesta activitat, sense possibilitat de recuperació en el mateix curs acadèmic, i, si escau, la suspensió de l’assignatura.
- En cap cas es podrà utilitzar intel·ligència artificial (IA) generativa per suplantar l’activitat d’aprenentatge de l’estudiant. Les tasques sospitoses d’haver estat generades per aquestes tècniques s’avaluaran amb un 0.
Ús d’IA
- Les eines d’intel·ligència artificial podran utilitzar-se com a eines de suport a l’aprenentatge, per exemple, per millorar la redacció, l’estil, la claredat expositiva, la correcció lingüística o per obtenir assistència en aspectes tècnics. En cap cas podran substituir i/o suplantar l’activitat d’aprenentatge de l’estudiant, ni la seva adquisició dels coneixements específics de l’assignatura.
- No és acceptable utilitzar eines d’intel·ligència artificial per generar continguts del treball que estiguin sotmesos a avaluació. Les tasques/activitats avaluables que se sospiti que han estat generades per una IA en lloc de l’estudiant seran considerades com una còpia i s’avaluaran amb un 0.
Bibliografia
Bàsica
Les classes de teoria es basen en un conjunt de transparències que sintetitzen els conceptes clau del curs. Aquests materials estan pensats com a guia, per la qual cosa es recomana consultar les següents obres per comprendre millor els continguts i ampliar coneixements:
Patrons de disseny, E. Gamma, R. Helm, R. Johnson, J. Vlissides. Pearson Educación, 2003.
És un clàssic dels patrons de disseny orientats a objectes, escrit pels autors que van proposar aquest concepte. La versió original en anglès és de 1995, i per això els exemples i diagrames poden semblar antiquats, però explica molt bé els fonaments.
Design Patterns Explained Simply, Alexander Shvets.
Llibre en línia: sourcemaking.com. També del mateix autor, un altre llibre disponible a refactoring.guru.
Ofereix explicacions clares i il·lustrades amb exemples en diversos llenguatges, incloent-hi Python, C++ i Java. Ideal com a introducció pràctica.
Complementària
Head First Design Patterns, E. Freeman & E. Robson, 2021.
Un llibre molt didàctic sobre patrons de disseny que utilitza exemples senzills explicats amb humor.
Python: Master the Art of Design Patterns, D. Phillips, C. Giridhar, S. Kasampalis. Packt Publishing, 2016.
Una obra extensa (més de 700 pàgines) centrada en la implementació detallada de patrons de disseny en Python. Molt útil per veure com s’apliquen realment en aquest llenguatge.
Mastering Object-Oriented Python, Steven F. Lott. Packt Publishing, 2014.
Aporta una visió avançada del llenguatge Python, aprofundint en aspectes clau de la programació orientada aobjectes. Destaquen capítols com el dedicat al sistema de registre (logging) i altres temes específics del llenguatge.
Programari
- Python juntament amb el gestor de paquets Pip o Anaconda per a instal·lar llibreries com NumPy i Matplotlib.
- IDE Spyder per a programar i depurar codi Python.
Grups i idiomes de l'assignatura
La informació proporcionada és provisional fins al 30 de novembre. A partir d'aquesta data, podreu consultar l'idioma de cada grup a través d'aquest enllaç. Per accedir a la informació, caldrà introduir el CODI de l'assignatura
| Tipus de docència | Grup | Idioma | Semestre | Torn |
|---|---|---|---|---|
| (TE) Teoria | 1 | Espanyol | segon quadrimestre | matí-mixt |
| (PLAB) Pràctiques de laboratori | 1 | Català | segon quadrimestre | matí-mixt |
| (PLAB) Pràctiques de laboratori | 2 | Català | segon quadrimestre | matí-mixt |