The general aim of this subject is to provide the students with the theoretical foundations and the practical competitions that allow them analyze, design, develop and debug computer applications following the paradigm of oriented objects programming (OOP). This is an essentially practical subject oriented to the work of the students in the development of software projects. To make this task easier, the subject includes an introduction to the Engineering of the Software. In this sense, the focus is not put on all the well-known phases of the processes of development software (ranging from capture and description of requirements to the deployment of the systems), but just on main stages related to analysis, design, implementation and debugging. Firstly, the engineering of the software is presented as an indispensable discipline for the development of big computer applications, showing the main challenges to face and the basic concepts behind them. Next, the elements of the OOP will be detailed by resorting to UML elements and diagrams, which will be used by the students in their developments. To reach this general aim the contents that will be handled in the subject are the following ones:
OOP paradigm: basic concepts, classes and objects.
Encapsulation. Concepts of decoupling and cohesion
Inheritance, abstraction, polymorphism and reuse
Relations between classes: Generalization, 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 Engineering of the Software
Concepts of the Engineering of the Software. Historical review or Introduction and concept of Cycle of Life.