Cod: 21093
Department: DCET
Scientific area: Computer Engineering
Total working hours: 156
Total contact time: 26

This curricular unit aims to provide students with fundamental knowledge and practices about the principles, concepts, models, and main techniques related to programming based on the object paradigm. In approaching the selected syllabus, the critical analysis of the new paradigm will be privileged, always seeking the perception of the correct placement of problems and their adequate resolution through object-oriented programming, encouraging the use of new approaches and improvement of existing ones.


Object-Oriented Programming. Objects. Classes.

Abstraction. Encapsulation. Inheritance. Polymorphism.


Students should be able to:

- Understand the basic concepts of object-oriented programming.

- Understand the mechanisms of software modularity and reuse.

- Know how to model a problem using object-oriented techniques.

- Know how to use an object-oriented language to code a problem.


Introduction to object-oriented development.

Analysis methodologies and object-oriented projects.

Basic concepts of classes, interfaces, and objects.

Abstraction hierarchies (class-class, class-object, object-object).

Attributes, methods, and access control.

Abstraction, encapsulation, inheritance, and polymorphism.

Exception Handling.


Documentação Python 3.11.3,
Programação em Python - Fundamentos e Resolução de Problemas, Ernesto Costa. ISBN 978-972-722-816-4, FCA Editora. Loja online:

Pense em Python, 2.ª edição, de Allen B. Downey (O’Reilly), tradução de Sheila Gomes. ISBN 978-85-7522-508-0, Editora Novatec. Disponível livremente em licença Creative Commons:


Continuous assessment is privileged: 2 digital written documents (e-folios) during the semester (40%) and a final digital test, Global e-folio (e-folio G) at the end of the semester (60%).

Pré-requisito: UC 21178 Laboratório de Programação.