Grau en International Computer Engineering La Salle Campus Barcelona

Grau en International Computer Engineering

El Grau en Enginyeria Informàtica de La Salle és l'únic programa de grau a Barcelona que et proporcionarà les habilitats i el coneixement per donar resposta a les necessitats internacionals del sector de la informàtica i dels negocis.

Disseny i programació orientats a objectes

Descripció
Els descriptors generals de continguts de l´assignatura són: - Introducció a la Orientació a Objectes - Característiques de la Orientació a Objectes - Anàlisi Orientat a Objectes - Disseny Orientat a Objectes - Implementació en Llenguatge Java - Patrons de disseny (GRASP, MVC i GOF) - Estructures de dades lineals - Bases de dades - Metodologies de test del software: proves unitàries i d´integració - Diagrama d'activitats UML - Diagrama de seqüència UML - Diagrama de paquets UML - Diagrama de classes UML
Tipus assignatura
Tercer - Obligatoria
Semestre
Anual
Curs
2
Crèdits
6.00
Coneixements previs

Metodologia i tecnologia de la programació (recomanació)

Objectius

Fomentar els aspectes i capacitats següents:
- Capacitat d´anàlisi i síntesi de marcs conceptuals per generar nous coneixements.
- Capacitat d´organitzar i planificar l´aplicació de nous coneixements.
- Coneixements generals bàsics sobre l´àrea d´estudi.
- Comunicació oral i escrita en la pròpia llengua.
- Habilitats bàsiques pel manegament de l´ordinador.
- Resolució de problemes.
- Presa de decisions.
- Coneixements bàsics i fonamentals de l´àmbit de formació.
- Coneixements bàsics i fonamentals en alguna especialitat de formació.
- Treball en equip.
- Capacitat d´aplicar els coneixements a la pràctica.
- Capacitat per desenvolupar noves estratègies d´aprenentatge.
- Aprendre de forma autònoma nous coneixements i tècniques escaients per la concepció, el desenvolupament o l´explotació de sistemes informàtics.
- Crear i portar a terme projectes informàtics fent servir els principis i metodologies pròpies de l´enginyeria.
- Crear, desenvolupar i mantindre sistemes i aplicacions software fent servir diferents mètodes d´enginyeria del software i llenguatges de programació adequats al tipus d´aplicació a desenvolupar mantenint els nivells de qualitat exigits.

A l´acabar el curs, l´alumne:
- És capaç de fer un anàlisi i disseny orientat a objectes, donats uns requeriments.
- És capaç d´analitzar el problema i prendre decisions que el porten a un anàlisi i disseny òptims.
- Coneix els patrons de disseny més habituals i els aplica correctament en l´anàlisi i disseny de les aplicacions.
- Usa correctament les eines de modelat i el llenguatge UML per a dibuixar els diagrames de classes i diagrames de paquets.
- Sap traduir l´anàlisi i disseny orientat objectes en una implementació en llenguatge Java.
- Sap fer enginyeria directa per passar del disseny a un esquema d´implementació i enginyeria inversa, per extreure el diagrama de classes d´un software ja implementat.
- Coneix i sap usar eines IDE (per exemple, Eclipse) de suport a la implementació del software.
- Aplica els estàndards de codificació del llenguatge Java.
- Sap dissenyar les proves de test del software, basat en proves unitàries i d´integració. Coneix i aplica el JUnit.
- Sap dissenyar i implementar les estructures de dades lineals més adients.
- Coneix l´existència i sap usar les estructures de dades funcionals, arbres i grafs a través de la llibreria de classes Java.
- És capaç de treballar en equips reduïts (2/3 persones) per al desenvolupament del software.
- És capaç d´aprendre amb un mínim esforç nous llenguatges orientats a objectes.

Continguts

Els continguts de l´assignatura es veuen distribuïts durant tot el curs, ja que l´ordre d´impartició no es correspon exactament amb l´ordre del temari. Durant el curs es van presentant els conceptes i es van reforçant a mesura que s´avança. Els temes d´anàlisi, disseny i implementació i patrons es veuran de forma iterativa durant tot el curs introduint les diferents estructures de dades.

Els continguts del tema de proves de software es fan de forma transversal. Al primer semestre s´assoleixen els conceptes bàsics de l´anàlisi, disseny, implementació amb orientació a objectes i programació Java, així com els aspectes metodològics necessaris. Al segon semestre es reforcen tots aquests continguts.

1. Introducció a la Orientació a Objectes
1.1. Què és la Orientació a Objectes
1.2. El paradigma Orientat a Objectes vs altres paradigmes

2. Característiques de la Orientació a Objectes
2.1. Encapsulament
2.2. Abstracció
2.3. Herència i Polimorfisme.

3. Metodologia de desenvolupament del software
3.1. Anàlisi, disseny, implementació i proves
3.2. Llenguatge de modelat UML
3.3. Eines de suport

4. Anàlisi Orientada a Objectes
4.1. Identificació d´objectes i classes
4.2. Identificació de relacions entre classes
4.3. Diagrama de classes d´anàlisi

5. Disseny Orientat a Objectes
5.1. Atributs
5.2. Mètodes
5.3. Relacions entre classes
5.4. Classes abstractes
5.5. Diagrama de classes de disseny
5.6. Diagrama de paquets

6. Implementació en Llenguatge Java
6.1. Introducció a Java: trets generals i breu història
6.2. Estructures de control i operands
6.3. Definició de classes i objectes
6.4. Herència i polimorfisme
6.5. Classes útils
6.6. Control d´excepcions
6.7. Entrada/sortida
6.8. Convencions de codificació
6.9. Interfícies gràfiques JFC-SWING
6.10 Threads
6.11 Sockets
6.12. Eines de suport a la programació en Java

7. Patrons de disseny
7.1. Patrons GRASP
7.2. Patró Model-Vista-Controlador
7.3. Patrons GoF

8. Estructures de dades
8.1. Estructures de dades lineals: piles, cues i llistes
8.2. Estructures de dades lineals i llibreries Java associades
8.3. Exemples de llibreries Java per gràfics
8.4. Llibreries de classes Java
8.5. Bases de dades

9. Metodologies de proves del software
9.1. Proves unitàries
9.2. Proves d´integració

Metodologia

L´assignatura s´orienta per tal que l´alumne prengui part activa en el seu propi aprenentatge. La metodologia docent està pensada per tal que l´assignatura sigui dinàmica i participativa. Les classes magistrals es combinen amb classes d´exercicis i activitats a classe, així com classes de laboratori i pràctiques guiades pel professorat de l´assignatura.

La metodologia docent de l´assignatura està clarament diferenciada en dos semestres. En el primer, s´assoleixen els coneixements bàsics de l´orientació a objectes i de la programació en Java. L´orientació docent d´aquest semestre és amb classes magistrals, exercicis d´avaluació contínua i pràctiques de laboratori. En el segon semestre, l´assignatura s´enfoca amb la metodologia d´aprenentatge basat en projectes. Els coneixements assolits durant el primer semestre es consoliden mitjançant la realització d´un projecte real o quasi real de desenvolupament de software. Durant la realització del mateix, s´inclouen coneixements de metodologies de desenvolupament del software, com per exemple, la utilització de patrons de disseny i les metodologies de testeig de programes software.

Avaluació

L´avaluació de l´assignatura depèn de la metodologia docent. En el primer quadrimestre, hi ha activitats d´avaluació basades en la realització d´exàmens, exercicis d´avaluació contínua i petites pràctiques. En el segon quadrimestre, l´avaluació comprèn el desenvolupament d´un projecte, el seguiment de desenvolupament del mateix i exàmens. El projecte es realitza durant el segon quadrimestre i es lliura al maig (en les dates en que s´estableixi). Els alumnes que no poden lliurar o suspenen el projecte del segon quadrimestre poden recuperar-lo a la convocatòria de setembre.

Criteris avaluació

Càlcul de la nota final de l´assignatura:

Per poder aprovar l´assignatura, s´ha de complir:
Nfinal_1 ≥ 5
Nfinal_2 ≥ 5

Si és així, la nota de l´assignatura es calcula:
Nfinal = Nfinal_1 * 0.50 + Nfinal_2 * 0.50

Per aprovar l´assignatura:
Nfinal ≥ 5

Càlcul de la nota del primer semestre (Nfinal_1):
La nota final del primer semestre es calcula a partir de la nota de teoria (Nteo_1) i la nota de pràctiques (Nprac_1). Per poder-ho calcular, s´ha de complir:
Nteo_1 ≥ 5
Nprac_1 ≥ 5

Llavors, la nota final del primer semestre es calcula tal com segueix:
Nfinal_1 = Nteo_1 * 0.80 + Nprac_1 * 0.20

Càlcul de Nteo_1:
La nota final de teoria del primer semestre Nteo_1 es calcula tal com segueix.

Si la nota dels exàmens del primer semestre Nex_1 ≥ 3.5, llavors es fa el càlcul:
Nteo_1 = MAX( Nex_1 * 0.7 + Nac_1 * 0.3 , Nex_1)

Si la nota Nex_1 no és superior o igual a 3.5, llavors Nteo_1 seria igual a Nex_1 i per tant, no quedaria alliberat.

Nex_1 és el resultat de l´examen del primer semestre (convocatòria ordinària). Si no s´ha aprovat llavors és la nota de recuperació de juny o de la convocatòria extraordinària:
Ordinària: Nex_1 = Nex_1_feb
Juny : Nex_1 = Nex_1_rec_jun
Extraordinària: Nex_1 = Nex_1_rec_jul

La nota Nex_1 correspon al càlcul de l´última convocatòria on s´ha presentat l´alumne.

Càlcul de Nac_1:
El càlcul de l´avaluació contínua és el promig dels exercicis recollits d´avaluació contínua durant el semestre ponderat amb l´examen del mig del semestre, segons la fórmula següent:
Nac_1 = (Nac_1_1 + Nac_1_2 + ... + Nac_1_n) * 0.5 + Nex_1_midt * 0.5

Càlcul de Nprac_1:
El càlcul de la nota de pràctiques és el promig ponderat de les pràctiques realitzades durant el semestre. Si hi ha una única pràctica, llavors Nprac_1 és la nota final d´aquella pràctica. Si hi ha vàries pràctiques, llavors Nprac_1 és el promig d´aquestes pràctiques, amb el requisit de que cada pràctica s´ha d´aprovar per separat.
El requisit és que Nprac_1 ≥ 5.

Càlcul de la nota del segon semestre (Nfinal_2):
Durant el segon semestre s'intercalen classes i sessions de desenvolupament del projecte. Hi ha una sèrie de reunions de seguiment i uns lliuraments parcials del projecte. El projecte està pensat per a que es realitzi durant el segon quadrimestre i s´entregui al maig, abans de l'examen del semestre. Al final del semestre hi ha un examen.

La nota final del segon semestre es calcula a partir de la nota de teoria (Nteo_2) i la nota del projecte (Nproj). Per poder-ho calcular, s´ha de complir:
Nteo_2 ≥ 5
Nproj ≥ 5

Llavors, la nota final del segon semestre es calcula tal com segueix:
Nfinal_2 = Nteo_2 * 0.30 + Nproj * 0.70

Càlcul de Nteo_2:
La nota final de teoria del segon semestre Nteo_2 es calcula tal com segueix.
Si la nota dels exàmens del segon semestre Nex_2 ≥ 3.5, llavors es fa el càlcul:
Nteo_2 = MAX( Nex_2 * 0.7 + Nac_2 * 0.3 , Nex_2)

Si la nota Nex_2 no és superior o igual a 3.5, llavors Nteo_2 seria igual a Nex_2 i per tant, no quedaria alliberat.

Nex_2 és el resultat de l´examen del segon semestre (convocatòria ordinària). Si no s´ha aprovat llavors és la nota de recuperació de juny o de la convocatòria extraordinària:
Ordinària: Nex_2 = Nex_2_jun
Extraordinària: Nex_2 = Nex_2_rec_jul

Càlcul de Nac_2:
El càlcul de l´avaluació contínua és el promig dels exercicis, lliuraments parcials del projecte i seguiment del procés de desenvolupament ponderat amb l´examen del mig del semestre, segons la fórmula següent:
Nac_1 = (Nac_2_1 + Nac_2_2 + ... + Nac_2_n) * 0.5 + Nex_2_midt * 0.5

Càlcul de Nproj:
Nproj és la nota final del projecte. S'exposen a classe els detalls del seu càlcul quan s'iniciï el desenvolupament en grups.

Bibliografia bàsica

John Lewis y Joseph Chase, Estructuras de datos con Java, diseño de estructuras y algoritmos, Segunda edición, Addison Wesley, 2006.
C.S.Horstman and G.Cornell, Core Java 2, Vol I. Fundamentos, Septima edición, Prentice Hall, 2006.
M.Fowler, UML Distilled Third Edition. A brief guide to the standard object modeling language, Addison-Wesley, 2003.
R.Miles and K.Hamilton, Learning UML 2.0, O'Reilly Media Inc, 2006.

Material complementari

Horowitz, E. and Sahni, Fundamentals of Data Structures in C++, S. Computer Science Press, 1995.
Aho, Hopcroft and Ullman, Estructuras de Datos y Algoritmos, Addison-Wesley Iberoamericana, 1998.
Mark Allen Weiss, Estructuras de datos y algoritmos, Addison-Wesley Iberoamericana, 1992.
Herbert Schildt, C++: Guia de autoenseñanza, McGraw-Hill, 1995.
Bjarne Stroustrup, The C++ Programming Language (Second Edition), Addison-Wesley, 1991.
Ken Arnold, James Gosling, David Holmes, The java programming language, Addison-Wesley, 2000.
Bruce Eckel, Thinking in Java, 3rd Edition, Prentice Hall, 2002 (disponible per Internet -vegeu link-).
H. Ehrig and Mahr. Fundamentals of Algebraic Specification, EATCS Monographs on Theoretical Computer Science, Springer-Verlag, 1985.
F. Escudero i J.M. Garrell, Fonaments de Programació, Bruño/EUETT, 1993.
Xavier Franch, Estructures de Dades. Especificació, disseny i implementació, Edicions UPC, 1993.
Ester Bernadó, Albert Orriols, Recull d'exàmens d'estructures de dades, Enginyeria i Arquitectura La Salle, 2004.
Ester Bernadó, Albert Orriols, Exercicis d'Estructures de Dades, Enginyeria i Arquitectura La Salle, 2004.
Ester Bernadó, Exercicis de C++, Enginyeria i Arquitectura La Salle, 2004.
Ester Bernadó, Exercicis de Java, Enginyeria i Arquitectura La Salle, 2004.