Conhecimentos de Base Recomendados
Programação em linguagem C e algoritmia. É importante os alunos terem obtido aprovação nas unidades curriculares de Introdução à Programação e Programação do 1º ano.
Métodos de Ensino
As aulas são teóricas e práticas. Nas aulas teóricas, é utiIizada uma metodologia expositiva para a apresentação dos fundamentos teóricos da matéria com exempIos de aplicação, sendo incentivada a participação dos alunos vom vista a um ensino participativo. Nas aulas práticas os alunos aplicam os conhecimentos das aulas teóricas, desenvolvendo aplicações, com a supervisão dos docentes, sendo necessária a participação dos alunos na aula. Fora das aulas, os alunos desenvolvem, em grupos de dois, um projecto para aplicação e aprofundamento dos assuntos das aulas, sendo o projeto alvo de avaliação.
Resultados de Aprendizagem
1. Adquirir competências de programação orientada a objectos.
2. Adquirir competências de programação orientada a objectos em C++.
3. Adquirir a capacidade de desenvolver aplicações para ambiente consola em C++.
4. Adquirir a capacidade de desenvolver aplicações baseadas em estruturas de dados encapsuladas e polimórficas.
5. Aperfeiçoar a capacidade de organização, pesquisa, planeamento, justificação de soluções e documentação de projetos de software.
6. Aperfeiçoar a capacidade de pesquisa autónoma de informação.
Programa
Introdução geral aos conceitos de orientação a objetos e à linguagem C++
Conceitos gerais sobre Programação Orientada ao Objecto
Encapsulamento, Polimorfismo, Herança
Princípios SOLID
Algumas diferenças entre C e C++
Entrada e saída de dados standard
Estruturação de projetos em .h e .cpp
Comentários em C++
Definição de variáveis locais
Tipos pré-definidos
Cast
Referências
Constantes
Funções
Funções overloaded
Funções com argumentos por omissão
Situações de ambiguidade em overloading
Classes
Sintaxe de definição de classes
Classes como evolução de estruturas
Funções membros
O ponteiro this
Funções inline
Visibilidade (acessibilidade)
Construtores
Sintaxe de inicialização () e {}
initializer_list
Arrays não-dinâmicos de objetos
Destrutores
Funções membros inline
dados e funções membros estáticos
Funções membros constantes
Funções friend
Ciclo de vida dos objetos
Destrutor
Introdução à construção por cópia
atribuição. Introdução ao operador de atribuição
Objetos dinâmicos
Os operadores new e delete
Arrays dinâmicos de objetos
Redefinição de operadores
Introdução geral à redefinição de operadores
Funções operadores
Operadores unários e binários
Opção de operadores membro vs. operadores não membro
Conversões
Composição e agregação
Significado de composição por oposição a agregação
Composição sem memória dinâmica – sintaxe, requisitos de inicialização. Ordem de chamada construtores e de destrutores
Agregação por referência e por ponteiro
Composição através de memória dinâmica
Conceito de gestão de recursos próprios em classes
Membros variáveis que são ponteiros para memória dinâmica
Destrutor, Operador atribuição, Construtor por cópia
Composição de objectos
Composição de objectos e construtores
Tipos básicos na lista de inicialização
Composição de objectos e destrutores
Herança em C++
Classes derivadas
Composição vs. derivação
Formas de derivação e acessibilidade
Construtores e destrutores
Construtor por cópia e operador atribuição em classesderivadas
Herança e funções overloaded
Polimorfismo
Upcasting
Funções virtuais
Classes abstractas e funções virtuais puras
Funções virtuais overloaded e redefinição em classes derivadas
Destrutores virtuais
Mecanismo de excepções em C++
Introdução à biblioteca STL
Noção de contentor e de iterador
Classes de contentores. Manipulação de contentores. Classe vector.
classes de suporte a manipulação de strings. string, e ostringstream.
Classes para suporte a E/S por stream istringstream e ostringstream
Introdução a smartpointers em C++
unique pointer
shared pointer
Introdução aos templates e biblioteca STL
Templates de classes
Argumentos de templates
Templates de funções
Docente(s) responsável(eis)
João António Pereira Almeida DurãesMétodos de Avaliação
A avaliação é composta por quatro componentes
i) Exame escrito – 11 valores
ii) Trabalho prático – 4 valores
iii) Teste Escrito – 3 valores
iv) Avaliação em aulas teóricas – 2 valores
i) Exame escrito: peso de 11 valores, de carácter obrigatório, com mínimos. Esta prova inclui as matérias das aulas teóricas e práticas.
- Podem ser consultados apenas os materiais que tiverem sido previamente autorizados pelo docente.
- Se o docente indicar um método de inscrição no exame, esta inscrição será obrigatória para aceder ao exame. A inscrição aqui referida não substitui a inscrição nos serviços académicos.
- O exame tem mínimos de 35%. A não obtenção dos mínimos implica a reprovação.
- Este exame escrito é o único componente de avaliação que é feito em épocas de exame (época normal, de recurso, especial, etc.). Os restantes componentes são feitos unicamente ao longo das aulas ou no final das aulas.
ii) Trabalho prático: peso de 4 valores, sem mínimos.
- O trabalho deve ser feito em grupos de até dois alunos. A constituição do grupo é obrigatoriamente definida em plataforma eletrónica, até à data limite especificada no enunciado, após a qual os alunos que não se registaram farão o trabalho individualmente.
- O trabalho é realizado ao longo do semestre não existindo nenhuma temporização alternativa nem forma de substituição. Se não for realizado, a sua cotação é perdida.
- É entregue em duas metas: a meta intermédia ou M1, e a meta final ou M2, existindo requisitos específicos para ambas, a definir no enunciado.
- A meta M1 ocorre a meio do semestre, em data definida no enunciado, e deve ser apresentada pelos alunos, através da qual estes demonstram o cumprimento dos objetivos propostos para essa meta. Da apresentação e da apreciação do trabalho entregue, resultará uma avaliação que, não tendo um peso em termos de nota final do trabalho, determina o acesso dos alunos ao teste. Esta avaliação poderá ser diferente dentro do mesmo grupo. A nota da M1 não condiciona a continuação do trabalho nem o acesso ao exame.
- A meta 2 ocorre no final do semestre, em data definida no enunciado, e deve ser apresentada pelos alunos, através da qual estes demonstram o cumprimento dos objetivos propostos para essa meta e defendem a sua qualidade. A nota da meta 2 corresponde à nota final do trabalho, podendo ser diferente dentro do mesmo grupo.
- É aproveitado o trabalho efetivamente realizado no ano imediatamente anterior desde que tenha tido 50% ou mais. Este aproveitamento confere acesso ao teste sem necessidade de apresentação. Este aproveitamento só é feito mediante inscrição em plataforma eletrónica a disponibilizar pelo docente.
ii) Teste escrito: peso de 3 valores, sem mínimos.
- O teste escrito é realizado a meio do semestre, após a entrega da meta 1 do trabalho prático. O teste é realizado exclusivamente durante o semestre, não sendo substituído em mais nenhum momento de avaliação nem em épocas de exames. A não realização do teste implica a perda da sua cotação. A não realização do teste não impede a realização das restantes avaliações.
- Tem acesso ao teste os alunos que entregarem a meta 1 do trabalho prático tendo cumprido 50% dos seus objetivos, ou que tenham sido dispensados do trabalho prático, de acordo com o referido no ponto anterior.
- A matéria do teste incide sobre o conteúdo das aulas teóricas e práticas até à sua realização. Não existe nenhuma restrição quanto ao conteúdo da matéria do exame escrito em função do conteúdo do teste.
iv) Avaliação em aula teórica: peso de 2 valores.
- Em algumas aulas teóricas será uma questão a responder de forma escrita por cada aluno. O conjunto das questões é valorizado para 2 valores, sendo o valor efetivamente obtido pelo aluno proporcional ao número de questões corretamente respondidas face ao total de questões colocadas.
- A única calendarização das aulas em que serão colocadas questões é: a) na primeira semana não será colocada nenhuma questão; b) haverá no máximo 10 aulas com questão, podendo ser menos. Por semana, um aluno pode aceder, no máximo, a uma questão.
- Podem responder às questões os alunos que estiverem presentes na aula e nela estiverem inscritos. Os alunos que tiverem o estatuto de trabalhador-estudante reconhecido podem, em alternativa, responder a uma questão adicional no exame da época normal, sendo esta alternativa mutuamente exclusiva: a resposta a uma questão na aula exclui o acesso do trabalhador-estudante à questão adicional no exame.
- Excluindo o cenário do trabalhador-estudante já referido atrás, as questões em aula teórica não são opcionais: quem não responder perde os valores correspondentes sem qualquer forma de os recuperar.
A nota final da disciplina é o somatório do exame escrito, do teste escrito, do trabalho prático e da avaliação em aulas teóricas.
Os atos de avaliação são presenciais.
Estágio(s)
NAO
Bibliografia
Referências principais
Brokken, F. B. (2024). C++ Annotations Version 13, University of Groningen publishing, http://www.icce.rug.nl/documents/cplusplus/ – Online
Stroustrup, B. (2000). A linguagem de programação C++, Bookman – 1ª-1-359
Referências complementares
Lippman, S.B., Lajoie, J., Moo B. E. (2013). C++ Primer (5th ed.), Addison-Wesley
Eckel, B. (2000). Thinking in C++ Vol.1 (2nd ed.), Prentice Hall Inc., http://www.bruceeckel.com/ – 1A-1-380 / Online
Deitel, P. J., Deitel, H. M. (2010). C++ How to Program (7th edition), Prentice Hall Inc. – 1A-1-425