Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] extender <> instanciar

Estas en el tema de extender <> instanciar en el foro de PHP en Foros del Web. Estoy aprendiendo POO y MVC Corrijanme si me equivoco, gracias class Manzana extends Fruta {} Entiendo que Manzana hereda cosas de Fruta Entiendo que Manzana ...
  #1 (permalink)  
Antiguo 10/04/2014, 15:59
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 10 meses
Puntos: 9
extender <> instanciar

Estoy aprendiendo POO y MVC

Corrijanme si me equivoco, gracias

class Manzana extends Fruta {}

Entiendo que Manzana hereda cosas de Fruta
Entiendo que Manzana extiende de Fruta
Supongo que Fruta esta instanciada en Manzana

No entiendo bien que es una instancia
  #2 (permalink)  
Antiguo 10/04/2014, 16:54
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: extender <> instanciar

Para dudas como esta, nada mejor que el manual oficial: Herencia de Objetos

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 10/04/2014, 17:44
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: extender <> instanciar

Gracias por responder
Sigo con la misma duda

Según tu enlace y lo que yo creo entender:

La herencia: por ejemplo las frutas en general tienen unos atributos, cómo la monda, las pepitas o la vitamina C, una Manzana hereda esos Atributos y los suma a los suyos personales como por ejemplo, el color o el sabor

Cita:
La herencia es un principio de programación bien establecido y PHP hace uso de él en su modelado de objetos. Este principio afectará la manera en que muchas clases y objetos se relacionan unas con otras.

Por ejemplo, cuando se extiende una clase, la subclase hereda todos los métodos públicos y protegidos de la clase padre. A menos que una clase sobrescriba esos métodos, mantendrán su funcionalidad original.

Esto es útil para la definición y abstracción de la funcionalidad y permite la implementación de funcionalidad adicional en objetos similares sin la necesidad de reimplementar toda la funcionalidad compartida.
  #4 (permalink)  
Antiguo 10/04/2014, 17:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: extender <> instanciar

Instanciar una clase es, para decirlo en pocas palabras, crear un objeto de esa clase en memoria.
Cuando defines las clases no estás creando objetos, sino definiendo cómo van a ser, qué propiedades tendrán, y cuáles métodos implementará. Pero no creas el objeto, sólo defines sus características.
Es lo mismo que definir la clase "Perro", que ladra, come, duerme, etc. Pero no puedes acariciar al perro hasta que esté "instanciado".
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 10/04/2014 a las 19:49
  #5 (permalink)  
Antiguo 10/04/2014, 20:59
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: extender <> instanciar

ok, entonces instanciar es -> $objRequest = new Request();

con lo cual extender(heredar clase) e instanciar(clase de un objeto) son cosas distintas

muchas gracias
  #6 (permalink)  
Antiguo 10/04/2014, 22:37
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 10 meses
Puntos: 81
Respuesta: extender <> instanciar

Muy distintas, a ver te daré un ejemplo que escape un poco de los códigos. Tenemos la clase Persona, sus propiedades pueden ser: nombre, edad, estatura, peso, etc. Ahora lo instanciamos? qué es instanciar? pues crear un objeto de esa clase? (Whatt?). Si tenemos clase persona que es una definición, entonces una instancia, o un objeto de esa clase puede ser José, pues José es una persona. La clase es solo una definición abstracta, pero José es alguien concreto. Así pues cuando escribimos una clase estamos definiendo qué características tiene y como se comportaría un objeto de esa clase, sus atributos y métodos. Cuando la instanciamos pues tenemos un objeto que tiene todas esas propiedades y métodos. Y entonces para qué lo instanciamos? Por qué no trabajamos directamente con esas propiedades y métodos? Pues sí se podría hacer, pero creamos instancias para que pueda existir dos o más objetos de la misma clase pero con diferentes VALORES de propiedades. Vale decir, José y María, ambos son dos instancias (u objetos) de la clase Persona, porque ambos tienen las mismas propiedaes, como nombres, edades, estaturas, pero ambos no tienen ni el mismo nombre, ni al misma edad, ni la misma estatura. Son dos objetos de la misma clase, pero no son iguales.

Y qué es heredar? Pues estas clases seguro no heredan dinero, sino sus propiedaes y métodos. Tenemos la clase Persona, ahora yo quiero definir una clase: Trabajador, la clase extiende a la clase Persona, eso quiere decir que hereda todas sus propiedades y métodos y puede tener definidos otras propiedades y métodos. Así, Trabajador puedo definirla con la propiedad, labor, la propiedad empresa, la propiedad salario, etc.

Espero que te haya servido de algo mis explicaciones.
  #7 (permalink)  
Antiguo 11/04/2014, 06:08
 
Fecha de Ingreso: enero-2008
Mensajes: 581
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: extender <> instanciar

Un poco lioso al principio, Muchas gracias a todos ;)

INSTANCIAR $objRequest = new Request();
HEREDAR class Naranja extends Fruta {}
Instanciar y Heredar nada tienen que ver una a la otra
Una clase abstracta no puede INTANCIARSE en un OBJETO
  #8 (permalink)  
Antiguo 11/04/2014, 06:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: extender <> instanciar

Cita:
Iniciado por quico5 Ver Mensaje
Una clase abstracta no puede INTANCIARSE en un OBJETO
No. Una clase abstracta no se instancia. Para hacerlo debería existir en el universo una instancia que sólo pudiese tener esas propiedades, atributos y métodos, cosa muy poco probable.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: extender, instanciar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:01.