Ver Mensaje Individual
  #8 (permalink)  
Antiguo 06/06/2013, 17:12
Avatar de dashtrash
dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: ¿cual es la diferencia entre clase u objeto?

Una clase, a nivel de código, no es más que la definición de un ámbito.
El siguiente php:
Código PHP:
Ver original
  1. function p(){ }
  2. $a=0;
  3. p();
declara una función, y una variable en el ámbito global.La llamada a la función "p()" es la forma de acceder a una función que ha sido definida en el ámbito global.
Una clase es simplemente un tipo de ámbito distinto, donde existen variables y funciones, de la misma forma que en el ámbito global.
La diferencia es que , a diferencia del ámbito global, que sólo hay uno, con clases puedes crear tantos ámbitos como quieras, y a eso se llaman instancias, u "objetos".
Se crea un nuevo ámbito con el operador new, que devuelve una variable a través de la cual se accede a variables y funciones visibles de ese nuevo ámbito.

En PHP hay más contextos.Por ejemplo, namespaces, funciones....Puedes crear tantos namespaces o funciones como quieras, pero las reglas de visibilidad son distintas, y la forma de acceder a ellos no es a través de variables.

Pero la clase es un ámbito en sí mismo, sin necesidad de instancias.En ese ámbito existen las variables y miembros estáticos.Por lo tanto, tanto los objetos como las clases, definen ámbitos, pero no son el mismo.Una clase no es sólo un "concepto", o una "plantilla".Define su propio ámbito, al que se accede no a través de una variable, sino a través del nombre de la clase.

En otros lenguajes, una clase puede tener muchas otras propiedades que no tienen las instancias.O las clases son, a su vez, instancias de otras clases.Pero tanto los objetos como las clases, existen "fisicamente" en el lenguaje de programación, y son cosas distintas.

Cuando crees que la clase es un "concepto", y los objetos son las "realidades", que la clase es el "molde" del que se crean los objetos, estás hablando de una cosa distinta : programación orientada a objetos.Que está relacionada con el soporte del lenguaje de clases y objetos? Si.Que son lo mismo? No.
Normalmente, esas metáforas fallan en la misma cosa: bajo esas metáforas, qué sería un método, o una variable miembro estática?

En definitiva, una clase y un objeto son 2 cosas que existen y tienen propiedades dentro del lenguaje, y son distintas entre sí.Y una clase como construcción de un lenguaje de programación, y como concepto usado en la filosofía de programación orientada a objetos, tampoco son exactamente lo mismo.

Última edición por dashtrash; 06/06/2013 a las 17:22