Linguagem de Programação C++

Universidade Federal de Santa Catarina

Departamento de Engenharia Elétrica, CTC

Prof. Eduardo Augusto Bezerra

Profa. Cristiane Woszezenki


Exercícios sobre relacionamentos entre classes


1. Estudar a classe Carro listada a seguir no exercício 3, e entender o relacionamento com as demais classes. Fornecer o diagrama de classes.

2. Criar uma classe Veiculo com funções 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 a seguir.

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);
}


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 está 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.