Objectius
|
|
|
Partint de la idea que
- a Metodologia i Tecnologia de la Programació (MTP) s'han après les tècniques bàsiques per a la programació a petita escala, i
- a Introducció a les Estructures de Dades (IED) s'han estudiat les principals estructures de dades,
l'objectiu d'aquesta assignatura és inculcar que la modularitat és la clau per escriure bons programes a més gran escala.
L'assignatura es desenvolupa en el context de la programació imperativa orientada a objectes i pretén - capacitar l'alumne per a la resolució de problemes de mitjana envergadura mitjançant tècniques de disseny modular a partir de l'abstracció de dades, i - augmentar la seva capacitat de raonar amb rigor respecte a la correcció dels programes dissenyats.
A partir d'aquestes dues vessants l'alumne haurà de ser capaç de produir programes de qualitat, és a dir, ben especificats, fiables, reutilitzables i fàcils de mantenir.
|
|
|
Prerrequisits
|
|
|
recomanats:
Metodologia i Tecnologia de la Programació
Introducció a les Estructures de Dades
|
|
|
Contingut (Programa)
|
|
|
1. Disseny modular orientat a objectes
Conceptes bàsics
- Descomposició i abstracció
- Formes d'abstracció
- Indepèndencia de la representació
Disseny d'aplicacions
- Mòduls Funcionals i Tipus de Dades. Definició, implementació i utilització
- Jerarquia de tipus
- El principi de substitució
- Sobreescriptura i sobrecàrrega
- Tipus aparent i tipus real
- Assignació i lligam missatge-mètode
- Polimorfisme
- Covariància i contravariància
- Ambigüitat
- Abstracció de dades
- Ajuts per a entendre les implementacions: la funció d'abstracció i l'invariant de la representació
- Herència
- Herència vs Subtipatge
- Bons i mals usos de l'herència
- Compatibilitat de les especificacions Pre/Post
- Herència vs Composició
- Exemples de disseny
2.Especificació i raonament formal
- Especificació equacional de Tipus de Dades
- Lògica de primer ordre
- Especificació formal d'operacions. Precondicions i postcondicions
- Derivació/verificació formal d'algorismes
- Semàntica axiomàtica
- Principi d'inducció
- Disseny recursiu
- Construcció de programes per generalització
- Composició iterativa i invariants
- Disseny iteratiu
- Transformació recursiu-iteratiu
|
|
|
Bibliografia
|
|
|
1.Barbara Liskov and John Guttag: Program development in Java: Abstraction, Specification, and Object-Oriented Design. Addison-Wesley, 2000. 2 J.L. Balcázar: Programación Metódica. McGraw-Hill, 1993. 3 R. Peña: Diseño de Programas: Formalismo y Abstracción. Prentice-Hall, 1993.
|
|
|
Mètodes docents
|
|
|
Classes de teoria (2h/setmana) Classes de laboratori (2h/setmana)
|
|
|
Tipus d'exàmens i avaluacions
|
|
|
L'avaluació consta de les següents parts (entre parèntesi s'indica el percentatge de cada part sobre la nota final):
1. Pràctica en equip (25%)
2. Exàmens (a) Examen de la pràctica en equip (10%) (b) Examen de teoria/problemes (65%)
Observacions:
- Cal un 4 com a mínim de l'examen de teoria/problemes per aprovar l'assignatura.
- La pràctica en equip és obligatòria: ha d'estar presentada i acceptada per tal d'aprovar l'assignatura, independentment de la resta de notes. - Si la nota x de l'examen de la pràctica en equip és inferior a 5, aleshores es dividirà la nota de la pràctica en equip per 5/x.
- Es valorarà el seguiment i la participació a les sessions de laboratori (podent-se fer proves avaluadores sense previ avís).
|
|
|
|
|