2011-09-21 14 views
5

Dada la siguiente representación de UML, ¿cómo puedo obtener una instancia de BullDog, que solo tiene expuestos los métodos getter?Producir una copia de solo lectura de una clase, howto

  • La instancia del BullDog no debe tener ninguno de los métodos setter disponibles.
  • Instancia de la BullDog sólo debe tener métodos getter (3 de ellos) disponibles

Básicamente la pregunta es .. ¿qué yo echo a new BullDog?

enter image description here

+0

btw ... ¿Qué pasa si miDog.getMetabolism() vuelve como algo "no saludable". El nombre de su interfaz será contradictorio – Shawn

+0

y ¿por qué solo las mascotas sanas pueden metabolizar? Sin duda, todas las mascotas pueden devolver una tasa de metabolismo y solo entonces se puede determinar la salud. –

Respuesta

4

Desde HealthyPet y mascotas no están relacionados no hay nada que puede echar a que le dará los 3 métodos getter (getMetabolism(), getName() y getAge()). Ahora bien, si HealthyPet extendió Pet (y realmente no estoy seguro de por qué no lo hace) estarías en el negocio. Porque entonces podías lanzar a HealthyPet, regresar esa interfaz, y una persona que llamaba solo vería los 3 métodos getter (por supuesto que estoy hablando sin una introspección elegante que debería permitirle descubrir todo).

+0

Excelente. ¡Gracias Señor! – JAM

1

Necesita HealthyPet para extender Pet. Luego, transfiere su instancia de BullDog a HealthyPet.

Cuestiones relacionadas