Anar al contingut (clic a Intro)
UdG Home UdG Home
Tancar
Menú

Estudia

Dades generals

Curs acadèmic:
2010
Descripció:
Orientació a objectes. Arbres i grafs. Esquemes algorísmics.
Crèdits:
6
Idioma principal de les classes:
Català
S’utilitza oralment la llengua anglesa en l'assignatura:
Gens (0%)
S’utilitzen documents en llengua anglesa:
Indistintament (50%)

Grups

Grup A

Durada:
Semestral, 2n semestre
Professorat:
Miquel Bofill Arasa

Competències

  • Resolució de problemes i anàlisi crítica de resultats
  • Treballar en equip i de manera compromesa en el grup de treball.
  • Raonament crític
  • Motivació per la qualitat

Altres Competències

  • Domini de tècniques de disseny modular.
  • Comprensió de conceptes avançats d'orientació a objectes.
  • Aplicació de principis sòlids en el disseny de software.
  • Capacitat de raonar amb rigor respecte la correcció dels programes dissenyats.
  • Capacitat per a escriure i entendre especificacions formals de software.
  • Coneixement de tècniques de testeig i depuració de software.

Continguts

1. Disseny modular orientat a objectes

          1.1. Conceptes bàsics

                    1.1.1. Descomposició i abstracció

                    1.1.2. Formes d'abstracció

                    1.1.3. Indepèndencia de la representació

          1.2. Mòduls Funcionals vs Tipus de Dades

          1.3. Jerarquia de tipus

                    1.3.1. Herència vs Subtipatge

                    1.3.2. El principi de substitució

                    1.3.3. Sobreescriptura i Sobrecàrrega

                    1.3.4. Tipus aparent i tipus real

                    1.3.5. Assignació i lligam missatge-mètode

                    1.3.6. Polimorfisme

                    1.3.7. Genericitat

                    1.3.8. Covariància i Contravariància

          1.4. Ajuts per a entendre les implementacions

                    1.4.1. Funció d'abstracció

                    1.4.2. Invariant de la representació

          1.5. Herència

                    1.5.1. Bons i mals usos de l'herència

                    1.5.2. Compatibilitat de les especificacions Pre/Post

                    1.5.3. Mutabilitat

                    1.5.4. Composició vs Herència

          1.6. Exemples de disseny

2. Especificació i raonament formal

          2.1. Raonament inductiu

                    2.1.1. Recursivitat avançada

          2.2. Especificació equacional de Tipus de Dades

          2.3. Introducció als mètodes formals en el disseny d'algorismes

                    2.3.1. Problemàtica dels errors

                    2.3.2. Programar amb especificacions

                    2.3.3. Testeig vs Derivació/Verificació

                    2.3.4. Notació de Hoare

          2.4. Especificació formal d'operacions. Precondicions i postcondicions

          2.5. Derivació i verificació formal d'algorismes

                    2.5.1. Semàntica axiomàtica

                    2.5.2. Verificació de programes recursius

                    2.5.3. Construcció de programes per generalització

                    2.5.4. Transformació recursiu-iteratiu

                    2.5.5. Derivació i verificació de programes iteratius

Activitats

Tipus d’activitat Hores amb professor Hores sense professor Total
Altres 0 10,00 10,00
Anàlisi / estudi de casos 2,00 2,00 4,00
Aprenentatge basat en problemes (PBL) 3,50 8,00 11,50
Prova d'avaluació 4,00 0 4,00
Resolució d'exercicis 10,00 9,00 19,00
Sessió expositiva 25,00 6,00 31,00
Sessió pràctica 17,50 10,00 27,50
Treball en equip 0 25,00 25,00
Tutories de grup 0,50 0 0,50
Total 62,50 70,00 132,5

Bibliografia

  • Liskov, Barbara, Guttag, John (2000). Program Development in Java, : Abstraction, Specification, and Object-Oriented Design. Boston: Addison-Wesley.
  • Coad, Peter, Mayfield, Mark, Kern, Jonathan (1999). Java design, : building better apps and applets (2nd ed). Upper Saddle River, N.J.: Yourdon Press.
  • Preiss, Bruno R (2000). Data structures and algorithms with object-oriented design patterns in Java. New York: John Wiley and Sons.
  • Peña Marí, Ricardo (cop. 2004). Diseño de programas, : formalismo y abstracción (3ª ed). Madrid [etc.]: Prentice Hall.
  • Balcázar, José Luis (1993). Programación metódica. Madrid [etc.]: McGraw-Hill.
  • Martí Oliet, Narciso, Segura Díaz, Clara María, Verdejo López, José Alberto (cop. 2006). Especificación, derivación y análisis de algoritmos : ejercicios resueltos. Madrid [etc.]: Pearson Educación.
  • Franch Gutiérrez, Xavier (1999). Estructures de dades : especificació, disseny i implementació (4ª ed.). Barcelona: Edicions UPC.
  • Backhouse, Roland Carl (cop. 2003). Program construction, : calculating implementations from specifications. Chichester: Wiley.
  • Kubiak, Ryszard, Rudzinski, Roman, Sokolowski, Stefan (cop. 1991). An Introduction to programming with specifications, : a mathematical approach. London [etc.]: Academic Press.

Avaluació i qualificació

Activitats d'avaluació:

Descripció de l'activitat Avaluació de l'activitat %
Repàs de Java. Implementació d'un programa simple (nivell de primer curs) amb el llenguatge Java. Es valorarà el correcte disseny, especificació i funcionament del programa. 2
Mini-pràctica guiada de disseny modular. Introducció a l'ús d'interfícies de Java. Introducció al mecanisme d'excepcions de Java. Caldrà entregar un programa modular escrit en Java, més un joc de proves per a cadascun dels tipus de dades implementats. Es valorarà el correcte funcionament del programa, l'exhaustivitat dels jocs de proves, la correcta especificació de les operacions i el bon ús dels mecanismes d'excepció del Java. 8
Elaboració d'una primera versió del diagrama de classes de la pràctica de disseny modular en equip. Caldrà entregar un diagrama de classes amb només l'especificació de les operacions públiques, i també els algorismes principals de l'aplicació escrits en pseudocodi. Del diagrama es valorarà el seu adequat nivell de granularitat i el grau d'independència de les diferents classes.
De l'especificació de les operacions es valorarà la seva claredat i completesa, i la seva independència de la representació.
5
Desenvolupament de la pràctica de disseny modular en equip. Caldrà entregar un programa escrit en Java i un informe detallat del seu disseny i de les proves efectuades.
Es valorarà especialment la modularitat, la claredat, la fiabilitat i l'eficiència del programa.

D'altra banda, la qualificació d'aquesta pràctica estarà condicionada a la qualificació obtinguda en un examen sobre la mateixa.
25
Utilització de tipus de dades genèrics en Java. Caldrà entregar un programa escrit en Java. Es valorarà la seva correcció en l'ús de tipus de dades genèrics. 5
Exercicis d'especificació equacional de tipus de dades. Es valoraran els exercicis resolts en horari de pràctiques. 1,5
Pràctica de testeig i depuració. Introducció a l'ús del Java Modeling Language. Es valoraran els exercicis resolts en horari de pràctiques. 1,5
Exercicis de derivació i verificació d'algorismes recursius. Es valoraran els exercicis resolts en horari de pràctiques. 2
Realització de l'examen de la pràctica en equip. Es valorarà l'agilitat en introduir modificacions a la pràctica realitzada a partir de canvis a l'enunciat. L'alumne no disposarà de la solució de la pràctica en el moment de realitzar l'examen. 10
Realització de l'examen de teoria/problemes. Es valorarà cada exercici per separat. Les respostes es puntuaran en funció del grau d'assoliment de les competències corresponents. 40

Qualificació

LA QUALIFICACIÓ CONSTA DE LES SEGÜENTS PARTS:

1. Exercicis i pràctiques d'avaluació continuada (AC)
2. Pràctica en equip (PR)
3. Exàmens
(a) Examen de la pràctica en equip (EP)
(b) Examen de teoria/problemes (ET)

Entenent que AC, PR, EP i ET representen els valors numèrics entre 0 i 10 de les qualificacions de les diferents parts, definim:

Nota de pràctiques
P =
(0,3 * PR) + (0,1 * EP) si EP >= 5
(0,3 * PR * EP / 5) + (0,1 * EP) si EP < 5

N0 = MIN(f(0) ; 4)
N1 = MIN(f(3,5) ; 4)
N2 = MAX(f(5) ; f(ET))
on f(x) = P + MAX(0,2 * AC + 0,4 * x ; 0,6 * x)

Nota final
NF =
N0 + (N1 - N0) * ET / 3,5 si ET < 3,5
N1 + (N2 - N1) * (ET - 3,5) / 1,5 si 3,5 <= ET < 5
N2 si ET >= 5

OBSERVACIONS:

- Els exercicis i pràctiques d'avaluació continuada són opcionals.

- La pràctica en equip és obligatòria.

- No es convaliden pràctiques de cursos anteriors.

- Només hi haurà un termini d'entrega per a la pràctica en equip (previ a la primera convocatòria d'examen).

- En segona convocatòria es guarden les notes de la primera convocatòria per defecte. En cas de tornar-se a examinar alguna part, prevaldrà l'última nota.

- La qualificació de "No Presentat" l'obtindran només aquells alumnes que no presentin la pràctica en equip i no es presentin a cap examen.

Observacions

S'utilitzarà el llenguatge Java per a la construcció dels programes.

Assignatures recomanades

  • Introducció a les estructures de dades
  • Metodologia i tecnologia de la programació

Escull quins tipus de galetes acceptes que el web de la Universitat de Girona pugui guardar en el teu navegador.

Les imprescindibles per facilitar la vostra connexió. No hi ha opció d'inhabilitar-les, atès que són les necessàries pel funcionament del lloc web.

Permeten recordar les vostres opcions (per exemple llengua o regió des de la qual accediu), per tal de proporcionar-vos serveis avançats.

Proporcionen informació estadística i permeten millorar els serveis. Utilitzem cookies de Google Analytics que podeu desactivar instal·lant-vos aquest plugin.

Per a oferir continguts publicitaris relacionats amb els interessos de l'usuari, bé directament, bé per mitjà de tercers (“adservers”). Cal activar-les si vols veure els vídeos de Youtube incrustats en el web de la Universitat de Girona.