Linguagens de Programação II

Unidade Curricular / Curricular Unit
Linguagens de Programação II

Ciclo de Estudos / Study Cycle
Licenciatura em Engenharia Informática

Nome do Docente Responsável
Pedro Hugo Queirós Alves

Nome do Docente Adicional
Alexandre Pereira

Objectivos de aprendizagem (conhecimentos, aptidões e competências a desenvolver pelos estudantes)
Esta UC tem como objetivo apresentar os conceitos fundamentais da programação orientada a objetos (herança, encapsulamento, polimorfismo, etc.), de forma a que os alunos consigam aplicá-los em projetos de desenvolvimento de software usando linguagens de programação modernas (Java, C#, Python, Ruby).
É pretendido que, no final desta unidade curricular, os alunos tenham adquirido um conjunto de conhecimentos alargados sobre o paradigma da programação orientada a objetos, um dos paradigmas mais utilizados atualmente pelas vantagens que traz na redução de custos de manutenção e melhorias na qualidade do software produzido. Esta competência é diretamente aplicável no desenvolvimento moderno de software, permitindo que futuros engenheiros desenhem e implementem aplicações de elevada qualidade, respeitando princípios fundamentais como a testabilidade, modularização e encapsulamento.

Learning outcomes of the curricular unit
This curricular unit aims to present the fundamental concepts of object-oriented programming (inheritance, encapsulation, polymorphism, etc.), enabling students to apply these concepts to software development projects using modern programming languages (Java, C#, Python, Ruby).
At the end of this curricular unit, the students should have acquired detailed knowledge of the object-oriented programming paradigm, on the most currently used paradigms for the benefits brought by lower maintenance costs and better software quality. This competence is directly applicable in modern software development, allowing future engineers to design and implement high quality applications, respecting fundamental principles such as testability, modularization and encapsulation.

Conteúdos programáticos
Programação por Objectos
Conceitos básicos: Abstração, Encapsulamento, Modularidade, Hierarquia, Tipificação (tipificação estática vs tipificação dinâmica)
Módulos, Classes, Objectos, Métodos e Variáveis
Herança, Delegação
Polimorfismo, Late Binding, Method Overriding
Interfaces, Classes Abstractas
Visibilidade, Scope
Java
Classes, objectos, variáveis
Construtores, métodos
java.lang.Object
Passagem de argumentos por valor/referência
Visibilidade, Excepções
Estruturas complexas: Arrays, Lists, Maps, Sets
Entrada/Saída
UML
Padrões de desenho
Factory, Singleton

Syllabus
Object-oriented Programming
Basic concepts: Abstraction, Encapsulation, Modularity, Hierarchy, Typing (static typing vs dynamic typing)
Modules, Classes, Objects, Methods and Variables
Inheritance, Delegation
Polymorphism, Late Binding, Method Overriding
Interfaces, Abstract classes
Visibility, Scope
Java
Classes, objects, variables
Constructors, methods
java.lang.Object
Passing by value/reference
Visibility, Exceptions
Complex structures: Arrays, Lists, Maps, Sets
Input/Output
UML
Design Patterns
Factory, Singleton

Demonstração da coerência dos conteúdos programáticos com os objectivos da unidade curricular
Os conteúdos programáticos desta UC visam dotar os estudantes de um conjunto alargado de conhecimentos de programação orientada a objectos, começando pelos conceitos básicos e evoluindo para mecanismos mais avançados como a utilização de padrões de desenho. Todos estes conceitos são exemplificados recorrendo ao Java, uma das linguagens de programação mais utilizadas actualmente e à qual os alunos foram já expostos numa UC introdutória anterior. O programa baseia-se em referências bibliográficas relevantes internacionalmente, tem em conta as últimas evoluções nesta área e mapeia as necessidades actuais da indústria no desenvolvimento de software de qualidade.

Demonstration of the syllabus coherence with the Curricular Unit’s objectives
The programmatic contents of this curricular unit enable students to acquire detailed knowledge of object-oriented programming, going from the basic concepts until advances mechanisms such as the use of design patterns. All these concepts are exemplified using Java, one of the most currently used programming languages and one to which the students have been exposed already in a previous introductory curricular unit. The syllabus is based on relevant internation bibliographic references, it takes into account recent evolutions in this area and maps the current industry needs in high quality software development.

Metodologias de ensino (avaliação incluída)
A disciplina é teórico-prática, havendo uma alternância entre métodos:
Met. 1 – expositivos,
Met. 2 – demonstrativos
Met. 3 – participativos.

Avaliação Continua:
50% – Testes
50% – Projecto
Avaliação da Época de Recurso:
50% – Exame
50% – Projecto

Planned learning outcomes, teaching methods and assessment methods and criteria
The curricular unit is both theoretical and practical, switching between:
Met. 1 – exposition,
Met. 2 – demonstration
Met. 3 – participation.

Continuous evaluation:
50% – Tests
50% – Project
Appeal evaluation:
50% – Exam
50% – Project

Demonstração da coerência das metodologias de ensino com os objectivos de aprendizagem da unidade curricular
Metodologia expositiva
Objetivos:
– Fornecer aos alunos um conjunto de conhecimentos alargados sobre programação orientada a objectos.
– Conhecer a sintaxe e as classes mais importantes do Java e aplicá-los adequadamente tendo como referência os exemplos dados na aula.

Metodologia demonstrativa
Objetivo:
– Conhecer a sintaxe e as classes mais importantes do Java e aplicá-los adequadamente tendo como referência os exemplos dados na aula.

Metodologia participativa
Objetivo:
– Conhecer a sintaxe e as classes mais importantes do Java e aplicá-los adequadamente tendo como referência os exemplos dados na aula.

Demonstration of the teaching methodologies coherence with the curricular unit’s objectives
Exposure methodology
Goals:
1 – Provide students with knowledge about object-oriented programming
2 – Understand the syntax and most important classes of the Java language, applying this knowledge using the examples given in the course

Demonstration methodology
Goals:
– Understand the syntax and most important classes of the Java language, applying this knowledge using the examples given in the course  

Participation methodology
Goal:
– Understand the syntax and most important classes of the Java language, applying this knowledge using the examples given in the course

Bibliografia Principal / Main Bibliography
– Object-Oriented Analysis and Design with Applications, 3rd edition. Grady Booch et al (2008)
– Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm (1994)
– UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3rd Edition. Martin Fowler (2003)
– Effective Java, 2nd edition. Joshua Bloch (2008)
– Java 8 in Action: Lambdas, Streams, and functional-style programming, Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft (2014)

Universidade Lusófona


ECATI Escola de Comunicação, Arquitetura, Artes e Tecnologias da Informação

Departamento de Engenharia Informática e Sistemas de Informação
Edifício F, sala F.1.3
Direção — 217 515 500 (ext: 683)
Serviço de Apoio Tecnico-Admistrativo (SATA) — 17 515 500 (ext: 764)


Lisboa
Avenida do Campo Grande,
376 1749-024 Lisboa, Portugal
Tel.: 217 515 500 | email: info.cul@ulusofona.pt
Porto
Rua Augusto Rosa,
Nº 24, 4000-098 Porto - Portugal
Tel.: 222 073 230 | email: info.cup@ulusofona.pt

Gestão de conteúdos por Lucio Studer Ferreira © 2022 COFAC.