MC600 - Segundo semestre de 2003 - LISTA 12 ------------------------------------------- 1. Crie um diagrama de herança de classes para o seguinte conjunto de classes: - classe "AnimalDeEstimacao" extende Object. - classe "Cachorro" extende "AnimalDeEstimacao", tem o atributo "vacinado" e os métodos late(), pula() e fingeDeMorto().* - classe "Gato" extende "AnimalDeEstimacao", tem o atributo "tipo" e os métodos arranhaSofa(), mia() e fogeDoDono(). - classe "Poodle" extende "Cachorro" e tem os métodos chateia() e destroiCorrepondencia(); - classe "PitBull" extende "Cachorro" e tem o atributo "vitimas" e os métodos persegueCiclista() e comePoodle(). - classe "ViraLata" extende "Cachorro" e tem os métodos persegueBicicleta(), persegueCarro() e reviraLixo(). - classe "CachorroDeMadame" extende "Cachorro" e tem os métodos chateia() e destroiCorrepondencia(); 2. Com relação ao diagrama do exercício 1, supondo que eu tenha uma variável "c" do tipo Cachorro. Se "c" faz referência no momento a um objeto do tipo Poodle, é possível chamar c.chateia()? Por que? 3. Em relação ao mecanismo de herança em Java, responda: a. o que uma subclasse herda da superclasse b. como herança ajuda a reaproveitar código. 4. O que significa ``herança múltipla'' em orientação a objetos? Existe algum mecanismo de herança múltipla em Java? 5. Suponha que tenhamos uma classe Shape em Java com subclasses Rectangle e Circle, sendo que nenhuma destas duas últimas é subclasse da outra, e também uma subclasse Square de Rectangle. Suponha ainda que os objetos s, r, c e q sejam instâncias das classes Shape, Rectangle, Circle e Square, respectivamente. Quais atribuições abaixo são permitidas e quais não são: a. s = c; b. r = s; c. q = c; d. s = q;