Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/03/2009, 16:20
Avatar de Ronruby
Ronruby
 
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 10 meses
Puntos: 416
Respuesta: extensiones de clases

Cita:
Lo que quisiera saber es si en este caso, ya que voy a usar metodos de la clase mysql, seria conveniente hacer le una extension 'Register' a la clase 'MySQL'... o hacer una clase totalmente aparte...
Cuando quieras saber si tienes que extender una clase siempre usa IS-A (ES-UN) y HAS-A (TIENE-UN)
Cuando hay una relacion IS-A, entonces extiendes. Pero si hay una relacion HAS-A, instancias la clase.
Ejemplo:
Registro ES-UNA Conexion MySQL no tiene sentido en lo absoluto, ya que la clase Registro NO es una conexion hacia mysql.
Pero sin embargo:
Registro TIENE-UNA Conexion MySQL si tiene sentido, es decir que tendras que instanciar el objeto MySQL en la clase Registro en vez de extenderla.

Otro ejemplo:
Perro ES-UN Animal tiene sentido, mientras que
Perro TIENE-UN Animal no lo tiene. Esto quiere decir que la clase Perro extiende a Animal.

(No siempre se usa este criterio, pero es de mucha utilidad)

Cita:
y si alguien me podria explicarme los tipos de clases, he visto en algunos escript el 'abstract class' etc. o al menos darme algun lugar donde pueda leer al respecto y que sea entendible...
Una clase abstracta es una clase que no se puede instanciar.

Imaginate el ejemplo de la clase Animal.
Esa clase contiene las subclases: Perro, Gato, Leon, etc..

Si quisieramos hacer una instancia de Perro, no hay problema:
$dog = new Perro(); //esto es un perro

Pero, como se veria un animal:
$animal = new Animal(); //esto es una cosa rara
Talvez algo asi:
http://www.gamerevolution.com/images...rd_animals.jpg

En ese caso, el unico proposito de la clase Animal es ser extendida para que las subclases hereden los metodos de esta. Por lo tanto, la clase Animal es ABSTRACTA.

Esa explicación la he sacado del libro Head First Java 2nd Edition (Muy recomendado para aquellos que quieran entender OOP). Es mas o menos lo que recuerdo, espero que sea entendible.