PHP - cual es el sentido de usar las clase abstractas

   
Vista:
Imágen de perfil de jorge

cual es el sentido de usar las clase abstractas

Publicado por jorge jor_0203@yahoo.com.mx (19 intervenciones) el 05/04/2014 11:44:08
1-¿cual es el sentido de usar las clase abstractas
es decir da lo mismo solo instaciar al método nacer()
o hay algo que al usar la palabra extends obliga a realizar
la clase ?
2-¿cual es el uso correcto o como debo entender el uso de la clase abstracta?

3-Me podían explicar esto de las clases abstractas "Si queremos que las subclases implementen comportamientos obligatoriamente podemos definir métodos abstractos" ¿es decir como podemos obligar ? .

abstract class animales
{
abstract function nacer();
}


class mamiferos extends animales
{
public function nacer()
{
echo "los mamiferos nacen del parto de la madre";
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

cual es el sentido de usar las clase abstractas

Publicado por xve (5516 intervenciones) el 05/04/2014 22:06:44
Hola Jorge, entre otras cosas, las clases abstractas tiene su utilidad, ya que ademas de no poder ser instanciadas, pueden obligar a quien las instancie a definir unas funciones de forma obligada.
Yo la verdad no las he utilizado nunca, pero si son utilizadas en lugares donde hay varios desarrolladores haciendo uso de las mismas clases.

Aquí encontraras la documentación oficial:
http://www.php.net/manual/es/language.oop5.abstract.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jorge

cual es el sentido de usar las clase abstractas

Publicado por jorge (19 intervenciones) el 06/04/2014 08:58:42
sigo no entendiendo esto
-Me podrías explicar esto de las clases abstractas "Si queremos que las subclases implementen comportamientos obligatoriamente podemos definir métodos abstractos" ¿es decir como podemos obligar ?

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

cual es el sentido de usar las clase abstractas

Publicado por xve (5516 intervenciones) el 06/04/2014 20:58:38
Hola Jorge, este es el ejemplo que viene en la pagina del PHP.
1
2
3
4
5
6
7
8
9
10
11
abstract class AbstractClass
{
    // Forzando la extensión de clase para definir este método
    abstract protected function getValue();
    abstract protected function prefixValue($prefix);
 
    // Método común
    public function printOut() {
        print $this->getValue() . "\n";
    }
}

Al definir abstract protected function getValue();, dentro de una clase abstract obliga a que cualquier que herede de esta clase tiene que crear el método getValue()

coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jorge

cual es el sentido de usar las clase abstractas

Publicado por jorge (19 intervenciones) el 06/04/2014 21:34:21
hola si pongo esto en otra clase no entiendo bien como esta esta siendo obligada, es decir solo porque la llamo y esta en otra clase eso es lo que se entiende como obligación

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
abstract class AbstractClass
{
    // Forzando la extensión de clase para definir este método
    abstract protected function getValue();
    abstract protected function prefixValue($prefix);
 
    // Método común
    public function printOut() {
        print $this->getValue() . "\n";
    }
}
 
class bar extends AbstractClass
{
public function printOut()
{
   print $this->getValue() . "\n";
 }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

cual es el sentido de usar las clase abstractas

Publicado por xve (5516 intervenciones) el 07/04/2014 07:45:41
Hola Jorge, si ejecutas el código que nos has mostrado, veras que te da un error del tipo: Fatal error: Class bar contains 2 abstract methods and must therefore be declared abstract or implement the remaining methods

Por el simple hecho de heredar de una clase abstracta, estas obligado a definir las funciones abstractas que se hayan definido en dicha clase... para tu ejemplo, para que te funcione, tienes que hacer algo como:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
abstract class AbstractClass
{
    // Forzando la extensión de clase para definir este método
    abstract protected function getValue();
    abstract protected function prefixValue($prefix);
 
    // Método común
    public function printOut() {
        print $this->getValue() . "\n";
    }
}
 
class bar extends AbstractClass
{
    public function getValue()
    {
        print "...";
    }
 
    public function prefixValue($prefix)
    {
        print $prefix;
    }
 
    public function printOut()
    {
        print $this->getValue() . "\n";
    }
}
?>

Fíjate que se ha tenido que definir la clase prefixValue incluso con sus variables.

He publicado un ejemplo para ver si lo ves mas claro:
http://www.lawebdelprogramador.com/foros/PHP/1431588-Ejemplo_de_utilizacion_de_una_clase_abstracta.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jorge

cual es el sentido de usar las clase abstractas

Publicado por jorge (19 intervenciones) el 07/04/2014 07:55:32
Entonces todos los métodos que estén adentro de la clase abstracta debe ser llamada en la otra clase si no dan error, eso es correcto y eso hace que sea obligatorio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

cual es el sentido de usar las clase abstractas

Publicado por xve (5516 intervenciones) el 07/04/2014 08:51:37
Solo los métodos definidos como abstractos... en tu ejemplo, no seria necesario sobrescribir el método printOut() de la clase AbstractClass, pero si es necesario definir los métodos: getValue y prefixValue.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jorge

cual es el sentido de usar las clase abstractas

Publicado por jorge (19 intervenciones) el 07/04/2014 10:24:39
entonces cuando sea una clase abstracta
que tenga métodos públicos no es necesario llamarlos en la otra clase
y eso no dará un error, pero si tengo en la clase abstracta métodos abstractos
si deben estar estar en la clase de llamada si no darán un error , eso es correcto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

cual es el sentido de usar las clase abstractas

Publicado por xve (5516 intervenciones) el 07/04/2014 13:21:42
Si, exacto!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jorge

cual es el sentido de usar las clase abstractas

Publicado por jorge (19 intervenciones) el 08/04/2014 00:55:02
una pregunta mas, todo esto que me enseñaste es grandioso, pero habla otra cosa por lo cual es importante usar las clases abstractas o eso es todo ya que me dices que no todos saben usarlas y lo que me dijiste fue genial pero eso es todo o hay mas teoría que saber.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

cual es el sentido de usar las clase abstractas

Publicado por xve (5516 intervenciones) el 08/04/2014 06:05:41
Hola Jorge, esa es la parte que yo conozco de las clases abstractas, creo que no hay mas... aunque como siempre, yo te recomendaría la documentación oficial.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jorge

cual es el sentido de usar las clase abstractas

Publicado por jorge (19 intervenciones) el 09/04/2014 06:51:24
mil gracias por todo
lo que me enseñaste vale oro
que Dios te bendiga
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

cual es el sentido de usar las clase abstractas

Publicado por xve (5516 intervenciones) el 09/04/2014 17:05:32
Gracias por comentarlo... me alegra que te haya sido de ayuda...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar