Curso de Extensão: Linguagem de Programação C++ (Básico)
Faculdade de Informática, PUCRS, Porto Alegre, RS
Coordenação: Isabel Harb Manssour
Instrutores: Eduardo Bezerra e Cristiane Woszezenki
Prática para fixação dos conteúdos
1. Estudar a classe Carro abaixo e entender o relacionamento com as demais classes. Fornecer o diagrama de classes.
2. Criar uma classe Veiculo com funcoes membro que possam ser herdadas por carro e por outros veiculos. Criar alguns construtores para a classe Veiculo;
3. Criar pelo menos 3 outras classes que herdem da classe veiculo, e que utilizem pelo menos uma das demais classes definidas abaixo.
class Motor {
public:
void partida() {}
void marchaRe() {}
void parar() {}
};
class Pneu {
public:
void pressao(int cm3) {}
};
class Vidro {
public:
void levantar() {}
void abaixar() {}
};
class Porta {
public:
Vidro janela;
void abrir() {}
void fechar() {}
};
class Carro {
public:
Motor motor;
Pneu pneu[4];
Porta esquerda, direita; // 2-portas
};
int main() {
Carro c;
c.esquerda.janela.levantar();
c.pneu[0].pressao(26);
}
Para aqueles que desejarem ir um pouco além:
4. Criar uma classe “CASA” (e classes relacionadas) com um construtor que possa receber como parâmetro a situação das portas e janelas.
5. Crie uma função para a classe casa que seja capaz de imprimir na tela a situação das portas e janelas de uma casa.
6. Acrescente no "main" um trecho onde seja permitido ao usuário alterar a situação das portas e janelas de uma das casas.
7. Crie diversas instâncias de casas e imprima a situação das suas portas e janelas.
8. Crie uma classe "RUA" que seja uma agregação de "CASAs". A classe deve possui um vetor do tipo "CASA" cujo tamanho é definido na construtora. Observe que a criação de um vetor de objetos implica em que o mesmo não possua construtor com parâmetros. O que deve ser alterado na classe casa, então?
9. Acrescente um atributo "visivel" na classe "CASA" e em cada uma das componentes "PORTA", "JANELA" e "BOX". O objetivo deste atributo é indicar quando um objeto esta sendo exibido na tela. Desta forma as funções do tipo "SetCor" ou "SetEstado" teriam condições de re-exibir os elementos necessários.
10. Acrescente comandos de impressão nas rotinas destrutoras de forma a ser possível observar a ordem em que as mesmas são ativadas.