elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Dudas con heredar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Dudas con heredar  (Leído 3,707 veces)
cyberserver

Desconectado Desconectado

Mensajes: 162


Lo que una mente crea, otra lo destruye


Ver Perfil WWW
Dudas con heredar
« en: 20 Diciembre 2009, 21:31 pm »

Hola amigos, estoy confundido con heredar clases!!!

Ley en internet que heredar es para reutilizar codigo y poder usar los metodos de la clase!!! pero que no es lo mismo que si tengo mi clase junta la instancio y utilizo sus metodos???

Que chiste tiene heredar el codigo si puedo llamar la clase instanciandola y usando sus metodos (reutilizandolo)


En línea






sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: Dudas con heredar
« Respuesta #1 en: 20 Diciembre 2009, 22:08 pm »

supongamos que heredas de jframe para crear una ventana de mantenimiento de personal y para aserla usas 400 lineas de codigo te pareseria que cadaves que quieras mostrar la ventana de mantenimiento vuelvas a escribir las 400 lineas de codigo  :laugh:


En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Dudas con heredar
« Respuesta #2 en: 20 Diciembre 2009, 22:30 pm »

No me quedo clara la pregunta ni la respuesta.
Pero creo que quieres saber que es la herencia y para que sirve.
Ejemplo
Tienes una clase Punto
Código
  1. public class Punto{
  2. float x;
  3. float y;
  4. public Punto(float x,float y){
  5. this.x = x;
  6. this.y = y;
  7. }
  8. public float getNorma(){
  9. return Math.sqrt(x*x+y*y);
  10. }
  11. }
  12.  
Ahora quieres crear un circulo para eso necistas un punto y el radio, lo haremos sin herencia
Código
  1. public class Circulo{
  2. float x;
  3. float y;
  4. float r;
  5. public Circulo(float x,float y,float r){
  6. this.x = x;
  7. this.y = y;
  8. this.r = r;
  9. }
  10. public float getNorma(){
  11. return Math.sqrt(x*x+y*y);
  12. }
  13. public float getArea(){
  14.  return Math.PI*r*r;
  15. }
  16. }
  17.  
Ves tuve que copiar todo y agregar esa nueva función
ahora con herencia
Código
  1. public class Circulo extends Punto{
  2. float r;
  3. public Circulo(float x,float y,float r){
  4. super(x,y);
  5. this.r = r;
  6. }
  7. public float getArea(){
  8.  return Math.PI*r*r;
  9. }
  10. }
  11.  
Ves como me ahorre codigo? y considerar que circulo hereda todas las funciones de Punto (en este caso la norma del punto) y agregamos una función nueva.
Hay que recordar que podemos sobre escribir funciones pero no explicare aqui.
Saludos
En línea

mayofunk

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Dudas con heredar
« Respuesta #3 en: 24 Diciembre 2009, 20:26 pm »

En esto de la programación orientada a objetos uno además de programar, tiene que pensar con dicho enfoque.

Uno va construyendo elementos a base de otros, ejemplo, un auto es un transporte, tal como lo es un camion o un avion, osea podemos decir que auto, avion, camion, son clases que heredan de una clase transporte.
La gracia de esto, es que la clase transporte tiene propiedades o metodos que son comunes a todas las clases hijas, y en estas hay metodos y propiedades exclusivas de las mismas.

Más pragmaticamente hablando, sin ir más lejos la clase String hereda de Object (en verdad todas las clases de java heredan de Object).
Un Object se puede instanciar, borrar, etc,, esto quiere decir que todas las clases que heredan de Object, pueden ser instanciadas, borradas, copiadas,etc...

Salu2.

En línea

Ragnarok
Colaborador
***
Desconectado Desconectado

Mensajes: 4.590


Shrödingerificado


Ver Perfil
Re: Dudas con heredar
« Respuesta #4 en: 26 Diciembre 2009, 19:27 pm »

Lo más sencillo es que te cojas un libro con patrones de diseño y los apliques, después de un tiempo tendrás la aplicación automatizada y no tendrás esta clase de dudas.

La explicación de mayofunk es mejor que la de egyware, más que nada porque con la de egyware usaríamos siempre herencia para todo, no son más que ventajas, en su explicación, la realidad es diferente. Lo explico a continuación.

Es muy sencillo, un coche es un transporte, como dice mayofunk, todo aquello que sea subclase, es decir, que se puedan aplicar los mismos métodos que a la clase padre y además alguno más es susceptible de utilizar herencia. Un conductor podría beneficiarse de la herencia, por ejemplo podemos decir que usamos al taxista para llegar de una ciudad a otra, podemos utilizar los atributos de precio, en este caso añadiendo el coste del salario del taxista, etc.

Y hasta es posible que nuestro programa funcione correctamente. Pero no es un programa mantenible, y pueden pasar cosas muy malas por cometer errores conceptuales bastante graves. El taxista usará los métodos del taxi, pero no es subclase de taxi, de lo contrario podríamos hablar de cuantas plazas tiene un taxista, que se entiende que es su taxi, pero también podríamos comprarlo, arreglarlo, etc.

Es decir, si en el futuro, la clase vehículo se modifica y el programa que estamos utilizando permite la compra-venta de vehículos podemos encontrarnos con que las subclases de vehículos, como el taxista, se compra y se vende también, si alguien hiciera algo así debería ir a la cárcel, bien por promover la esclavitud o por ser un programador tan horrible. En cualquier caso, estaría muy mal hecho...
En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
cyberserver

Desconectado Desconectado

Mensajes: 162


Lo que una mente crea, otra lo destruye


Ver Perfil WWW
Re: Dudas con heredar
« Respuesta #5 en: 23 Enero 2010, 20:15 pm »

OOORALE!!!! gracias por su atencion e interes por ayudar...!!!

Pero me surgio una duda no con relacion a lo que digeron si con con heredar e instanciar.

 :D Tengo entendido que para poder heredar de una clase esta tiene k estar en la ruta de los paquetes de la maquina virtual, y para poder instanciarla necesita estar en  esta misma ruta o en el path justo alado de la clase que lo instancia.

Pero mi duda es.

¿Podre heredar o instanciar de una clase k esta en un servidor en internet?
En línea






egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Dudas con heredar
« Respuesta #6 en: 23 Enero 2010, 20:25 pm »

Si la descargas y la cargas en tu JVM con el ClassLoader por defecto, ningun problema
En línea

cyberserver

Desconectado Desconectado

Mensajes: 162


Lo que una mente crea, otra lo destruye


Ver Perfil WWW
Re: Dudas con heredar
« Respuesta #7 en: 25 Enero 2010, 05:46 am »

aiiii no ma........  :-X

Digooo pero heredar de la clase cuando esta en el servidor..... :)
En línea






egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Dudas con heredar
« Respuesta #8 en: 25 Enero 2010, 15:20 pm »

Si quieres crear una nueva clase digamos AlVuelo cuando se esta ejecutando lo veo imposible.
Pero para heredar(crear una nueva class) una clase debes ya tenerla a mano junto en tu classpath con tu JDK.
Ahora si tienes una clase que hereda(ya compilada) de algo que no esta en tu classpath podrias retrazar la carga de la clase a heredar. Luego bajas la clase la cargas y luego cargas a la otra.
No te puedo mostrar codigo porque no tengo tiempo.
Pero revisa ClassLoader o URLClassLoader(nota algunos AV lo toman como Virus)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Heredar varios objetos + PHP
PHP
Shell Root 6 4,177 Último mensaje 9 Noviembre 2011, 00:52 am
por WHK
se puede heredar de JOptionPane ??
Java
jhonatanAsm 4 3,626 Último mensaje 3 Febrero 2012, 14:39 pm
por jhonatanAsm
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines