Exercicio
1. Descreva os três recursos característicos das linguagens orientadas a objetos.
Tipos de dados abstratos
Herança
Vinculação dinâmica
2. Qual é a diferença entre uma variável de classe e uma variável de instancia?
Variável de classe: pertence à classe em vez de ao seu objeto, então existe apenas uma copia para a classe.
Variável de instancia: armazena o estado do objeto.
3. O que é herança múltipla?
Herança de duas ou mais classes.
4. O que é uma variável poliformica?
Variável que pode armazenar dados de diferentes tipos.
5. O que é um método sobrescrevedor?
É uma função existente, mas podem fazer modificações.
6. O que é um método virtual ?
É usar uma classe abstrata que não possui implementação
7. O que é um método abstrato ? O que é uma classe abstrata ?
Quando o projeto de uma hierarquia de herança resulta em uma ou mais classes tão altas na hierarquia que uma instanciação delas não faria sentido, chama se método abstrato. Entende se por classe abstrata uma classe que inclui pelo menos um método abstrato.
8. Descreva brevemente as oito questões de projeto usadas neste capitulo para linguagens orientadas a objetos.
Exclusividade dos objetos: Um projetista de linguagem totalmente comprometido com o modelo de objetos de computação projeta um sistema de objetos que absorve todos os outros conceitos.
As subclasses são subtipos?: Um relacionamento “é-um(a)” se mantem entre uma classe derivada e sua classe pai?; Uma classe derivada é um subtipo se tiver um relacionamento “é-um(a)” com sua classe pai.
Verificação de tipos e polimorfismo: O Polimorfismo pode exigir uma verificação de tipo dinâmico de parâmetros e o valor de retorno; Se o método sobrescrevedor tiver o mesmo número de tipos de parâmetros e de retorno do que o método sobrescrito, a verificação pode ser estática.
Herança simples e múltipla: Herança múltipla permite uma nova classe herdar de duas ou mais classes.
Alocação e liberação de objetos: São objetos alocados em qualquer lugar; Alocados