Ver Mensaje Individual
  #2  
Antiguo 01-05-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Reputación: 25
__cadetill Va por buen camino
jejeje, me ha gustado esta encuesta Juan Antonio

Para los que han contestado que son "expertos" en OOP o piensan que tienen un buen nivel... aquí les dejo una preguntas, a ver que tan buen nivel tienen
(aviso: ésto está sacado de un ejercicio real de la universidad en la asignatura de OOP que se realiza en Java)

1. Supongamos que partimos de un lenguaje idéntico a Java pero con la particularidad que no existen las palabras clave abstract ni extends, es decir, sólo se podrá hacer herencia entre clases vía interfaces. (para aquellos que no lo sepan, abstract = que en Delphi y extends = hereda de).
Preguntas:
a) Se ha perdido la posibilidad de propagar código automáticamente entre clases dentro la jerarquía de herencia. Siempre se tendrá que implementar desde 0 todos los métodos que se definen en los interfaces de los que heredamos. ¿Esta afirmación es totalmente cierta? ¿Qué manera hay para reaprovechar el máximo posible del código de las clases sin tener que partir de 0?
b) ¿si se tuviera que partir absolutamente de 0al momento de implementar cada subclase, crees que el mecanismo de herencia pierde totalmente su sentido? ¿Qué propiedades pueden conservarse aun que puedan ser útiles?

2. Suponemos que partimos de un lenguaje idéntico a Java pero con herencia múltiple y que el compilador:
a) obliga a que todos los atributos sean privados
b) cuando una clase hereda de varias, busca si todos los métodos que no son privados definidos a la superclase tienen cabeceras diferentes i, si encuentra alguna repetida, da error.
Pregunta:
¿Es esto suficiente para que todo funcione? ¿Se tendría que buscar también entre los métodos y atributos privados?

3. Una clase con un método abstracto ha de ser a la vez abstracta para que no se pueda instanciar. Dado que siempre se puede redefinirán método a una subclase, ¿qué crees que aporta el hecho de declararlo abstracto respecto a simplemente declararlo y implementarlo sin código y de esta manera no perder la posibilidad de instanciar la clase? ¿Por qué si la clase tiene un método abstracto no se puede dejar instanciar?


Alguna pregunta es básica, otras no tanto, pero todas tienen "su cosa". Ahora... que tanto sabes de POO???? Podeis contestar las preguntas y las debatimos entre todos si quereis

Por cierto, no es lo mismo saber OOP (la teoría) que saber implementarla en Delphi (conocimiento de clases, de donde derivan,..... de Delphi)

PD: Prometo publicar las respuestas dentro de un tiempo

Última edición por __cadetill fecha: 01-05-2004 a las 14:39:24.
Responder Con Cita