Degree in Audiovisual Engineering

Degree in Audiovisual Systems Engineering

Receive training with a University Degree and become a qualified Engineer in Audio visual Engineering, specialised in Audio and Image

Object Oriented Programming and Design

The object-oriented programming paradigm is currently one of the most important paradigms in the programming world. Based on this idea, the goal of the course is for students to learn to design and program in this paradigm, using a language currently used in tech companies. The course will emphasize the software design phase and assumes that students have sufficient knowledge and mastery of the imperative and procedural paradigm to understand the imperative instructions of a new programming language. Given that most software projects are developed by teams of programmers, the course also aims to provide students with the necessary skills to deal with these working environments.
Type Subject
Tercer - Obligatoria

Titular Professors

Previous Knowledge

Programming Methodology and Technology


Goal.1 - Demonstrates knowledge of the object-oriented paradigm and all its characteristics.
Classes, Objects and Messages.
Encapsulation and Abstraction.

Goal.2 - Demonstrates knowledge of a real and actual object-oriented language.
Introduction to Java.
Object Orientation in Java.
Inheritance in Java.
Exception Management.
Collections, Generics and other tools.
UI implementation.

Goal.3 - Demonstrates knowledge of using a real development environment.
Diagram modeling tools.
Development environments (IDE).
Version control systems.
Project management tools.

Goal.4 - Demonstrates the ability to design software from specific specifications.
Class diagrams in UML.
Class, object and message design.
Encapsulation vs Visibility.
Relationships between classes.

Goal.5 - Demonstrates knowledge to use software design patterns.
Responsibility-driven design.
Layered architecture.
Model-View-Controller pattern.
Object Orientation and Data Persistence.

Goal.6 - Demonstrates the ability to work in a team.
Team communication tools.
Version control systems.
Project management tools.
Introduction to Agile development.


The general descriptors of the subject contents are:

1. Analysis, design and object-oriented programming.
2. Class diagram (UML).
3. Linear data structures.
4. Design patterns (GRASP, GOF).


The subject is oriented so that the student takes an active part in his own learning. The teaching methodology is designed so that the subject is dynamic and participatory. The master classes are combined with exercises and activities in class, as well as practices guided by the teachers of the subject.

The subject clearly differentiates the teaching methodology in two semesters. In the first semester, the foundations of the paradigm of object orientation and Java programming are achieved. The teaching orientation of this semester is mostly with master classes, exercises of continuous evaluation and projects. In the second semester, the subject focuses on project-based learning methodology. The realization of an almost real software development project consolidates the knowledge gained during the first semester.


The subject evaluation system will be divided into two semesters.
During the first semester, students will have to progressively develop, under the guidance of the faculty, a project that will aim to consolidate the concepts that represent the foundations of the object-oriented paradigm.
On the other hand, during the second semester, students will have to carry out a group project in which they will have to demonstrate that they can put into practice everything they have learned during the first semester in the implementation of a larger project.

To pass the subject, the student must pass both semesters separately.
The first-semester grade will consist of a project made in pairs that will be delivered in phases. Each phase will have to be passed separately and a phase cannot be evaluated until all previous phases have been passed.

The second-semester grade will be a project carried out in teams of five (5) people. The final grade will be calculated from the project's grade and weighted by the peer review carried out by the group's members and the mentoring grade determined by the faculty.

Evaluation Criteria
Basic Bibliography

[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

Additional Material