Doble Titulación en Ingeniería de Sistemas de Telecomunicación e Ingeniería en Organización de las TIC

Doble Grado en Ingeniería de Sistemas de Telecomunicación e Ingeniería en Organización de las TIC

La Salle Campus Barcelona te ofrece 5 dobles titulaciones en el ámbito de las Ingenierías TIC. Con los dobles grados podrás finalizar los estudios universitarios en 5 años académicos con dos titulaciones oficiales de grado.

Diseño y programación orientados a objetos

Descripción: 

La asignatura diseño y programación orientados a objetos proporciona al estudiante una base fundamental para el desarrollo de software según uno de los paradigmas más relevantes en el ámbito profesional y académico actual. A partir de los conocimientos previos de programación imperativa y procedimental, la asignatura introduce los principios de diseño y estructuración del software orientado a objetos, favoreciendo una comprensión más sólida de la construcción de sistemas informáticos modulares, escalables y mantenibles. Asimismo, contribuye al desarrollo de competencias relacionadas con el trabajo colaborativo en entornos de desarrollo, de acuerdo con las dinámicas propias de la práctica profesional. En este sentido, constituye una base formativa relevante para asignaturas posteriores vinculadas al desarrollo de software, la ingeniería del software y la construcción de sistemas complejos.

Tipo asignatura
Tercer - Obligatoria
Semestre
Anual
Curso
2
Créditos
6.00

Profesores Titulares

Conocimientos previos: 

Conocimientos de programación imperativa y algorítmica básica.

Se recomienda haber cursado: (50011 / 50A11) Metodología y tecnología de la programación.

Objetivos: 

La asignatura tiene como objetivo capacitar al estudiante para comprender y aplicar los principios del paradigma de programación orientada a objetos en el desarrollo de soluciones de software, utilizando un lenguaje actual y un entorno de desarrollo propio de contextos profesionales. Asimismo, pretende desarrollar la capacidad de diseñar software a partir de especificaciones definidas, integrar patrones de diseño como herramientas para la construcción de soluciones estructuradas y mantenibles, y trabajar de manera efectiva en equipos de desarrollo. En conjunto, la asignatura contribuye a la formación del estudiante en competencias fundamentales para el perfil del título en el ámbito de la ingeniería informática y constituye una base relevante para materias posteriores vinculadas al desarrollo y a la ingeniería del software.

Contenidos: 

Los contenidos detallados de la asignatura no se presentan de manera cronológica, sino que combinan los distintos elementos conceptuales, de diseño e implementación en cada bloque teórico.

Conocimiento del paradigma orientado a objetos.

  • Concepto de Clase o Prototipo
  • Concepto de Objeto o Instancia
  • Variables de Clase y de Instancia
  • Concepto de Mensaje o Método
  • Concepto de Encapsulación y Abstracción
  • Concepto de Herencia
  • Concepto de Polimorfismo
  • Concepto de Interfaz

Conocimiento de un lenguaje orientado a objetos real.

  • Introducción y características principales de Java
  • Introducción al lenguaje Java
    • Variables y tipos de datos
    • Operadores
    • Sentencias, expresiones y bloques
    • Sentencias de control de flujo
    • Manejo de excepciones
  • Introducción a la POO
    • Declaración de una clase
    • Instanciación y uso de objetos
    • Modificadores: static y final
    • Enumeraciones
  • Herencia en Java
    • Interfaces
    • Jerarquía de clases en Java
    • Herencia múltiple
    • Sobrescritura de métodos
    • Polimorfismo
    • La referencia “super”
    • Constructores de subclases
    • Métodos y clases abstractos
  • Introducción a genéricos
  • Concurrencia con hilos
  • La biblioteca gráfica AWT / Swing

Uso de un entorno de desarrollo real.

  • Herramienta de modelado de diagramas UML
  • IntelliJ IDEA como entorno de desarrollo
  • Git como sistema de control de versiones
  • Jira como gestor de proyectos

Capacidad de diseñar software a partir de especificaciones.

  • Introducción al lenguaje UML
  • Representación de Clase / Objeto / Mensaje
  • Encapsulación y Abstracción
  • Encapsulación frente a Visibilidad
  • Relaciones entre clases

Uso de patrones de diseño de software.

  • Introducción a los patrones GRASP
  • Introducción a la arquitectura de software
  • Diseño orientado a la responsabilidad
  • Patrones de diseño orientados a datos

Trabajo en equipo en un proyecto de desarrollo de software. 

  • Herramientas de comunicación para equipos
  • Sistemas de control de versiones
  • Herramientas de gestión de proyectos

Los contenidos de la asignatura se distribuyen a lo largo de todo el curso y el orden de impartición no se corresponde con el orden del temario anterior. Durante el curso se van presentando los conceptos y se van reforzando a medida que se avanza. Los temas de análisis, diseño, implementación y patrones se abordarán de forma iterativa durante todo el curso, introduciendo las distintas estructuras de datos.

Metodología: 

La metodología docente de la asignatura se fundamenta en un enfoque activo y teórico-práctico orientado al logro progresivo de los resultados de aprendizaje y alineado con la planificación formativa de la asignatura. A lo largo del curso, se combinan clases magistrales de carácter introductorio, clases de problemas y ejercicios, prácticas guiadas y trabajo autónomo del estudiante, con el objetivo de promover una participación activa en el proceso de aprendizaje. La secuencia metodológica de los contenidos se articula habitualmente en tres niveles complementarios: una primera aproximación conceptual, el tratamiento de los principios de diseño de software asociados y, por último, su implementación en un lenguaje de programación orientado a objetos.

La asignatura presenta, además, una organización diferenciada en dos semestres. En el primer semestre, la actividad docente se centra en la adquisición de los fundamentos del paradigma orientado a objetos y de la programación en Java mediante sesiones expositivas, resolución de ejercicios y prácticas de aplicación. En el segundo semestre, la metodología evoluciona hacia un enfoque de aprendizaje basado en proyectos, en el que el estudiante consolida e integra los conocimientos adquiridos a través del desarrollo de un proyecto de software contextualizado en un entorno próximo a la práctica profesional.

De manera puntual, se incorporan estrategias de flipped classroom para favorecer la preparación previa de algunos contenidos teóricos y reforzar el uso del tiempo presencial como espacio de aplicación, seguimiento y resolución de dudas. 

En conjunto, esta metodología garantiza la coherencia entre actividades formativas, trabajo autónomo, acompañamiento docente y sistema de evaluación continua.

Evaluación: 

La evaluación de la asignatura se realiza mediante un sistema de evaluación continua complementado con el desarrollo de proyectos prácticos. La calificación final se obtiene a partir de los siguientes elementos:

Pruebas parciales: 40%

Proyectos: 60%

Para superar la asignatura será necesario obtener una nota mínima de 5 sobre 10 en los dos proyectos de la asignatura. En caso de no alcanzar este mínimo, no se realizará la media con el resto de actividades.

Criterios evaluación: 

Se valorará la comprensión y aplicación correcta de los principios del paradigma de programación orientada a objetos, así como la capacidad de utilizar adecuadamente un lenguaje de programación orientado a objetos y un entorno de desarrollo propio de contextos profesionales. Igualmente, se tendrá en cuenta la capacidad de diseñar soluciones de software a partir de especificaciones concretas, la coherencia entre el diseño propuesto y su implementación, y el uso adecuado de patrones de diseño en función del problema planteado. En las actividades prácticas y de proyecto, se valorará también la calidad técnica del código desarrollado, atendiendo a criterios de corrección, estructura, legibilidad, modularidad y mantenibilidad. Finalmente, en las actividades de carácter colaborativo, se considerará la capacidad de trabajar de manera efectiva en equipo, contribuyendo de forma activa al desarrollo compartido de las tareas, a la organización del trabajo y a la consecución de los objetivos comunes.

Bibliografía 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 complementario: 

[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