Prerequisites
Experience with a typified imperative programming language like C.
Objectives
The objectives of the course are that students become familiar with the methodologies and techniques associated with: the object-oriented programming (OOP) paradigm, its advantages, disadvantages, and limitations; design patterns and their use for solving known application development and refactoring problems. Proficiency to be acquired: use of the OOP paradigm (concepts: encapsulation, abstraction, inheritance, and polymorphism); use of an OOP language: Java; use of design patterns to solve application structuring problems; writing test cases for applications.
Program
Object-oriented Programming and the Java and C++ Languages. Introduction to objects: definitions; longevity; classes; methods; programs. coding conventions. Operators, expressions, and flow control: precedences; assignment; operators; type casts; literals; execution control. Object construction: initialization and clean-up; constructors; method overloading; "this"; garbage collector. Code organization and packages: abstract data types (review); interfaces vs. implementations; libraries; member access control. Inheritance and composition: incremental development; "final"; class loading. Polymorphism; Abstract classes and interfaces. Internal classes. Parametric types. Enumerations; Exceptions; Collections; I/O; Runtime Type Information. Introdution to UML. Class and sequence diagrams. Discussion and application of various design patterns: Singleton, Null Object, Composite, State, Template Method, Strategy, Decorator, Factory Method, Abstract Factory, Command, Observer, Visitor, Adapter, Facade, Proxy.
Evaluation Methodology
Project: 50% , minimum grade 9.5, with 3 deliveries (UML, intermediate and final) and individual applied final quis. Laboratory exercises: 50% , minimum grade 9.5. All students are evaluated by the same criteria. A 180 min. Quis replaces the laboratory in the special season (época especial).
Cross-Competence Component
Behaviour identification, analysis and application.
Laboratorial Component
Individual programming exercises (N), without consultation, every week in class. Only the N-3 best are taken into account.
Programming and Computing Component
System and modeling analysis. Object oriented programming. Identification and application of design patterns.
More information at: https://fenix.tecnico.ulisboa.pt/cursos/lerc/disciplina-curricular/845953938490010