The general aim of this subject is to provide the students with the theoretical foundations and practical
competitions to analyse, design, develop and debug computer applications following the Object-Oriented Programming (OOP) paradigm. Programming II is a mainly practical subject where students have to design and develo pone of several programming projects. With the goal of supporting the students during the development of these software projects, firstly a very brief introduction to the discipline of Software Engineering and its relationship with the OOP paradigm will be given, putting the focus on the stages of analysis, design, implementation and debugging. Next, we will analyse in detail the foundations of OOP, highlight the advantages of UML diagrams for the design tasks that the students will have to carry out.
The main contents that will be explained in the subject are the following ones:
- Basic concepts of Software Engineering.
- Basic concepts of Object-Oriented Programming: classes and objects
- Encapsulation. Hiding principle. Concepts of decoupling and cohesion
- Inheritance, abstraction, polymorphism and reuse
- Relationships between classes: generalisation, association and dependency.
- Communication between objects: methods, events, messages.
- Persistence. Storage in files and in databases.
- Generation, capture and processing of exceptions.
- Introduction to the UML modeling language.