Foros-FIUBA Foros HostingPortal
 FAQ  •  Buscar  •  Wiki  •  Apuntes  •  Planet  •  Mapa  •  Eyeon  •  Chat
Preferencias  •  Grupos de Usuarios
Registrarse  •  Perfil  •  Entrá para ver tus mensajes privados  •  Login
Ver tema siguiente
Ver tema anterior

Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente
Autor Mensaje
Uciel
Nivel 6


Edad: 33
Registrado: 16 Ago 2010
Mensajes: 288

Carrera: Informática
argentina.gif
MensajePublicado: Mie May 08, 2013 3:09 am  Asunto:  duda sobre una implemetacion Responder citandoFin de la PáginaVolver arriba

Hola, tengo una duda sobre algo que quiero implementar.

Supongan que tengo una clase madre (A) de la cual heredan varias clases hijas (W, X, Y y Z).

Ahora bien, yo tengo unas lineas de codigo que se repiten (es decir, son identicas, por ej. una validación sobre algo y si ese algo ocurre entonces lanzar error). El asunto es que estas lineas que se repiten solo las necesito para las clases W, X e Y (en esas clases es donde tengo que repetir el codigo). Es decir, Z no tiene que tener esa linea de codigo. La pregunta es:

¿si tenes una línea de código replicada en diferentes clases "hermanas", cuál es la solución?

En principio se me ocurrio definir un metodo que incluya esa lineas en la clase madre y luego desde las hijas llamarla con "super elNombreDelMetodo". Pero si hago esto, la clase Z estaria heredando un metodo que nunca va a usar :S. Asi que no se que hacer.

Alguna ayudita por favor Sad


Tauro Género:Masculino Caballo OfflineGalería Personal de UcielVer perfil de usuarioEnviar mensaje privado
DiegoSLTS
Nivel 6


Edad: 37
Registrado: 14 Ago 2006
Mensajes: 219
Ubicación: Bernal, Quilmes
Carrera: Informática y Sistemas
argentina.gif
MensajePublicado: Mie May 08, 2013 9:21 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Podés hacer que A tenga dos clases hijas nomás, B y Z. En B ponés el código en común y esa la extendés para crear W, X e Y.

O sea, si W, X e Y tienen algo en común capaz existe una abstracción para eso.

Si es muy poco código igual tendrías que ver si se justifica...

Otra es poner el código que usan W, X e Y en la clase A como definición "estandard" de ese método, y en Z redefinirlo como lo necesites.

Y sino la otra (ya queda medio feo, pero si priorizás no repetir código puede servirte) es definir ese código en una función separada, en otra clase fuera de la jerarquía en algún método estático, y llamarla dentro de W, X e Y en la reeimplementación del método que es igual solo para esas 3.

_________________
No tengo firma...

.... un momento... SI TENGO!

Cancer Género:Masculino Tigre OfflineGalería Personal de DiegoSLTSVer perfil de usuarioEnviar mensaje privadoEnviar emailVisitar sitio web del usuarioYahoo MessengerMSN Messenger
Uciel
Nivel 6


Edad: 33
Registrado: 16 Ago 2010
Mensajes: 288

Carrera: Informática
argentina.gif
MensajePublicado: Mie May 08, 2013 11:24 am  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

son todas muy buenas ideas Smile

Cuando pones:

"Si es muy poco código igual tendrías que ver si se justifica... "

en realidad es una linea de codigo nomas, pero digamos que SI se justifica porque ya me corrigieron que esta mal como lo hice.

Entonces: ¿cual me recomendas? ¿cual usarias?


Tauro Género:Masculino Caballo OfflineGalería Personal de UcielVer perfil de usuarioEnviar mensaje privado
DiegoSLTS
Nivel 6


Edad: 37
Registrado: 14 Ago 2006
Mensajes: 219
Ubicación: Bernal, Quilmes
Carrera: Informática y Sistemas
argentina.gif
MensajePublicado: Mie May 08, 2013 12:32 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Antes que nada, tengo entendido que usan Pharo ahora y no conozco el lenguaje, te respondo usando ejemplos medio genéricos para trabajar con POO, fijate si encontrás algo equivalente :P.

No puedo elegir una así nomás, depende del código. ¿Que hace esa linea?

Si es por ejemplo evaluar una cuenta, capaz podés hacer lo último que te sugerí. Sería como tener tu propia clase "Math" con métodos estáticos (como las de Java + C++, que hacés Math.pow(a,b) y te devuelve "a a la b"). Eso solamente si esa linea es algo que vayas a usar en mas lados!

Ahora, si la linea es un simple llamado a una función no arreglás mucho haciendo lo que dije recién, porque estarías reemplazando un llamado por otro nada mas. ¿En la clase A el método no tiene ninguna definición? ¿Esa linea tiene sentido en A? Si tiene sentido ponela en A, y la redefinís en Z.
Si no tiene sentido fijate que significa esa linea para las clases w, x e Y y hace la clase B como te comentaba antes.

_________________
No tengo firma...

.... un momento... SI TENGO!

Cancer Género:Masculino Tigre OfflineGalería Personal de DiegoSLTSVer perfil de usuarioEnviar mensaje privadoEnviar emailVisitar sitio web del usuarioYahoo MessengerMSN Messenger
Uciel
Nivel 6


Edad: 33
Registrado: 16 Ago 2010
Mensajes: 288

Carrera: Informática
argentina.gif
MensajePublicado: Mie May 08, 2013 11:08 pm  Asunto:  (Sin Asunto) Responder citandoFin de la PáginaVolver arriba

Si si, estamos usando Pharo.

En fin, le comente a uno de los ayudantes y me dijo que la "opcion" correcta era:

"poner el código que usan W, X e Y en la clase A como definición "estandard" de ese método, y en Z redefinirlo como lo necesites."

Asi que eso es lo que hare!!

Gracias por la ayuda DiegoSLTS Smile

Saludos


Tauro Género:Masculino Caballo OfflineGalería Personal de UcielVer perfil de usuarioEnviar mensaje privado
Mostrar mensajes de anteriores:      
Responder al tema Ver tema anteriorEnviar por mail a un amigo.Mostrar una Lista de los Usuarios que vieron este TemaGuardar este Tema como un archivoPrintable versionEntrá para ver tus mensajes privadosVer tema siguiente

Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro
No podés responder a temas en este foro
No podés editar tus mensajes en este foro
No podés borrar tus mensajes en este foro
No podés votar en encuestas en este foro
No Podéspostear archivos en este foro
No Podés bajar archivos de este foro


Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker
365 Attacks blocked.

Powered by phpBB2 Plus, phpBB Styles and Kostenloses Forum based on phpBB © 2001/6 phpBB Group :: FI Theme :: Mods y Créditos

Foros-FIUBA está hosteado en Neolo.com Cloud Hosting

[ Tiempo: 0.2726s ][ Pedidos: 20 (0.2325s) ]