Grau en Enginyeria Electrònica - Menció en Robòtica

Especialitza't en una titulació enfocada al camp de la robòtica aplicada a sectors com el social, l'educatiu, el terapèutic o l'assistencial. Amb aquesta titulació et formaràs en una especialització amb un 100% d'ocupabilitat

Disseny i programació orientats a objectes

Descripció
El paradigma de programació orientat a objectes és, actualment, un dels paradigmes més importants en el món de la programació. Partint d’aquesta idea, l’assignatura té com a objectiu que els alumnes aprenguin a dissenyar i programar en aquest paradigma, tot utilitzant un llenguatge actual utilitzat en entorns reals. L’assignatura farà èmfasis en la fase de disseny de programari, i dóna per suposat, que els alumnes presenten uns coneixements i domini suficient del paradigma imperatiu i procedimental, per entendre el funcionament imperatiu d’un nou llenguatge de programació. Donat que la majoria dels projectes de programari es desenvolupen per equips de programadors, l’assignatura també vol dotar als alumnes de les competències necessàries per a afrontar aquests entorns de treball.
Tipus assignatura
Tercer - Obligatoria
Semestre
Anual
Curs
2
Crèdits
6.00

Professors Titulars

Coneixements previs

Metodologia i tecnologia de la programació (recomanació)

Objectius

Objectiu.1 – Demostra conèixer el paradigma orientat a objectes i totes les seves característiques.
Classes, Objectes i Missatges.
Encapsulació i Abstracció.
Herència.
Polimorfisme.

Objectiu.2 – Demostra conèixer un llenguatge orientat a objectes real i actual.
Introducció a Java.
Orientació a Objectes en Java.
Herència en Java.
Gestió d’excepcions.
Collections, Generics i altres utilitats.
Implementació de UI.
Concurrència.

Objectiu.3 – Demostra saber emprar un entorn de desenvolupament real.
Eines de modelatge de diagrames.
Entorns de desenvolupament (IDE).
Sistemes de control de versions.
Eines de gestió de projectes.

Objectiu.4 – Demostra tenir la capacitat de dissenyar software a partir d’unes especificacions concretes.
Diagrames de classe en UML.
Disseny de Classes, Objectes i Missatges.
Encapsulament vs Visibilitat.
Relacions entre classes.

Objectiu.5 – Demostra saber usar patrons de disseny software.
Patrons de disseny GRASP.
Disseny orientat a responsabilitats.
Arquitectura per capes.
Patró Model-Vista-Controlador.
Orientació a Objectes i persistència de dades.

Objectiu.6 – Demostra saber treballar en equip.
Eines de comunicació per equips.
Sistemes de control de versions.
Eines de gestió de projectes.
Introducció al desenvolupament Agile.

Continguts

Els descriptors generals de continguts de l’assignatura són:

1. Anàlisi, disseny i programació orientada a objectes.
2. Diagrama de classes (UML).
3. Estructures de dades lineals.
4. Patrons de disseny (GRASP, GOF).

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 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 fonaments del paradigma 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. En el segon semestre, l’assignatura s’enfoca amb la metodologia d’aprenentatge basada en projectes. Els coneixements assolits durant el primer semestre es consoliden mitjançant la realització d’un projecte quasi real de desenvolupament de software.

Avaluació

El sistema d’avaluació de l’assignatura es diferenciarà en dos semestres.
Durant el primer semestre, els alumnes hauran de desenvolupar, de forma progressiva, sota la tutela del professorat de l’assignatura, un projecte que tindrà com a objectiu consolidar els conceptes que representen els fonaments del paradigma orientat a objectes.
Per contra, durant el segon semestre, els alumnes hauran de realitzar un projecte en grup en què hauran de demostrar que poden posar en pràctica els coneixements adquirits durant el primer semestre en la implementació d’un projecte de major envergadura.

Per tal d’aprovar l’assignatura, cal que l’alumne aprovi tots dos semestres per separat:

if (Nota_S1 >= 5.0 && Nota_S2 >= 5.0) {
Nota_final = Nota_S1 * 0.5 + Nota_S2 * 0.5;
}
else {
Nota_final = Math.min (Nota_S1, Nota_S2);
}

La Nota_S1, consistirà en un projecte realitzat per parelles que s’entregarà per fases. Cada fase haurà d’estar aprovada per separat i no es podrà avaluar una fase fins que totes les fases anteriors no hagin estat aprovades. Finalment, els alumnes hauran de superar una entrevista de coneixements per tal de donar la pràctica per aprovada. Aquesta entrevista es pot convalidar si el professorat estima que l’alumne ha demostrat els coneixements durant la mentoria del projecte.

if (Entrevista_S1.equals (“OK”)) {
Nota_S1 = (Fase_1 + Fase_2 + ... + Fase_N) / N;
}
else {
Nota_S1 = 2.0;
}

La Nota_S2, consistirà en un projecte realitzat en equips de cinc (5) persones. La Nota_S2 es calcularà a partir de la nota del projecte, serà ponderada per les notes del peer review realitzat pels companys de grup i també serà ponderada per la nota de mentoria que determini el professorat. Finalment, els alumnes hauran de superar una entrevista grupal de coneixements.

If (Entrevista_S2.equals (“OK”)) {
Nota_S2 = Nota_projecte * Nota_peer * Nota_mentoria;
}
else {
Nota_S2 = 2.0;
}

Criteris avaluació
Bibliografia bàsica

[1] C.S.Horstman and G.Cornell, Core Java 2, Vol I. Fundamentos, Septima edición, Prentice Hall, 2006.
[2] K.Arnold, JGosling and D.Holmes, The Java programming language, Boston : Addison-Wesley, 2000
[3] M.Fowler, UML Distilled Third Edition. A brief guide to the standard object modeling language, Addison-Wesley, 2003.
[4] R.Miles and K.Hamilton, Learning UML 2.0, O'Reilly Media Inc, 2006.
[5] C.Larman, Applying UML and patterns : an introduction to object-oriented analysis and design, Prentice Hall PTR, 1998
[6] E.Gamma, R.Helm, R.Johnson and J.Vlissides, Design patterns: elements of reusable object-oriented software, Addison-Wesley Longman Publishing Co., 1995
[7] J.Cooper, Java Design Patterns, Addison Wesley, 2000
[8] D.Lea, Concurrent programming in Java: design principles and patterns, Addison-Wesley, 2000
[9] M.Fowler, Refactoring: Improving the Design of Existing Code, Addison-Wesley Professional, 2018
[10] R.Martin, Clean Code: A Handbook of Agile Software Craftsmanship, Pearson, 2008
[11] K.Sierra and B.Bates, Head First Java, O'Reilly Media, 2005
[12] E.Freeman, B.Bates, K.Sierra and E.Robson, Head First Design Patterns: A Brain-Friendly Guide, O'Reilly Media, 2004

Material complementari