Grau en Enginyeria de Sistemes Audiovisuals + Grau en Enginyeria Multimèdia

Doble Grau en Enginyeria de Sistemes Audiovisuals i Enginyeria Multimèdia

La Salle Campus Barcelona t'ofereix 5 dobles titulacions en l'àmbit de les Enginyeries TIC. Amb els dobles graus podràs finalitzar els estudis universitaris en 5 anys acadèmics amb dues titulacions oficials de grau

Disseny i programació orientats a objectes

Descripció: 

L’assignatura de Disseny i programació orientats a objectes proporciona a l’estudiant una base fonamental per al desenvolupament de programari segons un dels paradigmes més rellevants en l’àmbit professional i acadèmic actual. A partir dels coneixements previs de programació imperativa i procedimental, l’assignatura introdueix els principis de disseny i estructuració del programari orientat a objectes, afavorint una comprensió més sòlida de la construcció de sistemes informàtics modulars, escalables i mantenibles. Així, contribueix al desenvolupament de competències relacionades amb el treball col·laboratiu en entorns de desenvolupament, d’acord amb les dinàmiques pròpies de la pràctica professional. En aquest sentit, constitueix una base formativa rellevant per a assignatures posteriors vinculades al desenvolupament de programari, l’enginyeria del programari i la construcció de sistemes complexos.

Tipus assignatura
Tercer - Obligatoria
Semestre
Anual
Curs
3
Crèdits
6.00

Professors Titulars

Coneixements previs: 

Coneixements de programació imperativa i algorítmica bàsica.

Es recomana haver cursat: (50011 / 50A11) Metodologia i tecnologia de la programació.

Objectius: 

L’assignatura té com a objectiu capacitar l’estudiant per comprendre i aplicar els principis del paradigma de programació orientat a objectes en el desenvolupament de solucions de programari, utilitzant un llenguatge actual i un entorn de desenvolupament propi de contextos professionals. Així mateix, pretén desenvolupar la capacitat de dissenyar programari a partir d’especificacions definides, integrar patrons de disseny com a eines per a la construcció de solucions estructurades i mantenibles, i treballar de manera efectiva en equips de desenvolupament. En conjunt, l’assignatura contribueix a la formació de l’estudiant en competències fonamentals per al perfil del títol en l’àmbit de l’enginyeria informàtica i constitueix una base rellevant per a matèries posteriors vinculades al desenvolupament i a l’enginyeria del programari.

Continguts: 

Els continguts detallats de l’assignatura no es donen de manera cronològica, sinó que combinen els diferents elements conceptuals, de disseny i implementació, per a cada bloc teòric.

Coneixement del paradigma orientat a objectes.

  • Concepte de Classe o Prototip
  • Concepte d’Objecte o Instància
  • Variables de Classe i Instancia
  • Concepte de Missatge o Mètode
  • Concepte d’Encapsulació i Abstracció
  • Concepte d’Herència
  • Concepte de Polimorfisme
  • Concepte d’Interfície

Coneixement d’un llenguatge orientat a objectes real.

  • Introducció i característiques principals de Java
  • Introducció al llenguatge Java
    • Variables i tipus de dades
    • Operadors
    • Sentencies, Expressions i Blocs
    • Sentencies de control de flux
    • Manegament d’Excepcions
  • Introducció a l'OO
    • Declaració d’una classe
    • Instanciació i ús d’objectes
    • Modificadors: static i final
    • Enumeracions
  • Herència en Java
    • Interfícies
    • Jerarquia de classes en Java
    • Herència múltiple
    • Sobreescriptura de mètodes
    • Polimorfisme
    • La referència “super”
    • Constructors de subclasses
    • Mètodes i classes abstractes
  • Introducció a genèrics
  • Concurrència amb Threads
  • La llibreria gràfica AWT / Swing

Ús d’un entorn de desenvolupament real.

  • Eina de modelatge de diagrames UML
  • IntelliJ IDEA com a entorn de desenvolupament
  • Git com a Sistema de Control de Versions
  • Jira com a gestor de projectes

Capacitat de dissenyar software a partir d’unes especificacions.

  • Introducció al llenguatge UML
  • Representació de Classe / Objecte / Missatge
  • Encapsulament i Abstracció
  • Encapsulament vs Visibilitat
  • Relacions entre classes

Ús de patrons de disseny software.

  • Introducció als patrons GRASP
  • Introducció a l’arquitectura de software
  • Disseny orientat a la responsabilitat
  • Patrons de disseny orientats a dades

Treball en equip en un projecte de desenvolupament de software.

  • Eines de comunicació per a equips
  • Sistemes de control de versions
  • Eines de gestió de projectes

Els continguts de l’assignatura es veuen distribuïts durant tot el curs, l’ordre d’impartició no es correspon amb l’ordre del temari anterior. 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.

Metodologia: 

La metodologia docent de l’assignatura es fonamenta en un enfocament actiu i teoricopràctic orientat a l’assoliment progressiu dels resultats d’aprenentatge i alineat amb la planificació formativa de l’assignatura. Al llarg del curs, es combinen classes magistrals de caràcter introductori, classes de problemes i exercicis, pràctiques guiades i treball autònom de l’estudiant, amb l’objectiu de promoure una participació activa en el procés d’aprenentatge. La seqüència metodològica dels continguts s’articula habitualment en tres nivells complementaris: una primera aproximació conceptual, el tractament dels principis de disseny de programari associats i, finalment, la seva implementació en un llenguatge de programació orientat a objectes. L’assignatura presenta, a més, una organització diferenciada en dos semestres: en el primer, l’activitat docent se centra en l’adquisició dels fonaments del paradigma orientat a objectes i de la programació en Java mitjançant sessions expositives, resolució d’exercicis i pràctiques d’aplicació; en el segon, la metodologia evoluciona cap a un enfocament d’aprenentatge basat en projectes, en què l’estudiant consolida i integra els coneixements adquirits a través del desenvolupament d’un projecte de programari contextualitzat en un entorn proper a la pràctica professional. De manera puntual, s’incorporen estratègies de flipped classroom per afavorir la preparació prèvia d’alguns continguts teòrics i reforçar l’ús del temps presencial com a espai d’aplicació, seguiment i resolució de dubtes. En conjunt, aquesta metodologia garanteix la coherència entre activitats formatives, treball autònom, acompanyament docent i sistema d’avaluació contínua.

Avaluació: 

L’avaluació de l’assignatura es realitza mitjançant un sistema d’avaluació contínua complementat amb el desenvolupament de projectes pràctics. La qualificació final s’obté a partir dels següents elements:

  • Proves parcials: 40%
  • Projectes: 60%

Per superar l’assignatura serà necessari obtenir una nota mínima de 5 sobre 10 en els dos projectes de l’assignatura. En cas de no assolir aquest mínim, no es realitzarà la mitjana amb la resta d’activitats.

Criteris avaluació: 

Es valorarà la comprensió i aplicació correcta dels principis del paradigma de programació orientat a objectes, així com la capacitat d’utilitzar adequadament un llenguatge de programació orientat a objectes i un entorn de desenvolupament propi de contextos professionals. Igualment, es tindrà en compte la capacitat de dissenyar solucions de programari a partir d’especificacions concretes, la coherència entre el disseny proposat i la seva implementació, i l’ús adequat de patrons de disseny en funció del problema plantejat. En les activitats pràctiques i de projecte, es valorarà també la qualitat tècnica del codi desenvolupat, atenent criteris de correcció, estructura, llegibilitat, modularitat i mantenibilitat. Finalment, en les activitats de caràcter col·laboratiu, es considerarà la capacitat de treballar de manera efectiva en equip, contribuint de forma activa al desenvolupament compartit de les tasques, a l’organització del treball i a la consecució dels objectius comuns.

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

Material complementari: 

[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