Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Utilizar método abstracto en clase abstracta

Estas en el tema de Utilizar método abstracto en clase abstracta en el foro de PHP en Foros del Web. Buenos días. Necesito hacer lo siguiente: Código PHP: abstract class  Clase  {     public abstract function  ciertoA ();     public function  ciertoAyMas (){         return  $this -> ciertoA ()&&..... lo que sea booleano ........;     }  ...
  #1 (permalink)  
Antiguo 23/07/2014, 05:08
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 7 años, 9 meses
Puntos: 0
Exclamación Utilizar método abstracto en clase abstracta

Buenos días. Necesito hacer lo siguiente:
Código PHP:
abstract class Clase {
    public abstract function 
ciertoA();
    public function 
ciertoAyMas(){
        return 
$this->ciertoA()&&.....lo que sea booleano........;
    } 

En pocas palabras, requiero utilizar un método abstracto en una clase abstracta, para que cuando llame a ciertoAyMas() en la clase en la cual instancie esa función abstracta, utilice dicha función implementada.

Escribiéndolo de esta manera me sale el siguiente error:

Catchable fatal error: Object of class Class could not be converted to string in C:\xampp\htdocs\calculadora\cgi-bin\Class.php on line 49

¿Cómo podría lograr este comportamiento?

Muchas gracias por sus respuestas.

Un saludo.
  #2 (permalink)  
Antiguo 23/07/2014, 05:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 11 años, 10 meses
Puntos: 574
Respuesta: Utilizar método abstracto en clase abstracta

Tienes algun error conceptual.

Una clase abstracta se define para ser heredada por otra clase (hija) y sirve de "patron,plantilla" dile como quieras. Es decir la clase que hereda una abstracta esta obligada a implementar los metodos abstractos de la clase abstracta, los cuales no lo estan solo estan "anunciados".


Manual

Cita:
PHP 5 introduce clases y métodos abstractos. Las clases definidas como abstract no se pueden instanciar y cualquier clase que contiene al menos un método abstracto debe ser definida como abstract. Los métodos definidos como abstractos simplemente declaran la estructura del método, pero no pueden definir la implementación.

Cuando se hereda de una clase abstracta, todos los métodos definidos como abstract en la definición de la clase parent deben ser redefinidos en la clase child....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 23/07/2014, 05:46
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 7 años, 9 meses
Puntos: 0
Respuesta: Utilizar método abstracto en clase abstracta

Muchas gracias, entiendo que como lo estoy haciendo no se puede hacer, ya que dispongo realmente de la función solamente donde la he codificado, mientras que en la clase padre solo está definida. Por tanto en la clase padre no puedo hacer este tipo de uso.
El problema que tengo es que varias clases tienen una fórmula matemática en común, pero hay una pequeña parte que varía según la clase. ¿Es posible crear un método en común o algo similar a lo que pretendo hacer, sin que tenga que hacer el paso por parámetro a la función que hace el cálculo matemático?

Muchas gracias por la pronta respuesta
  #4 (permalink)  
Antiguo 23/07/2014, 06:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 11 años, 10 meses
Puntos: 574
Respuesta: Utilizar método abstracto en clase abstracta

Los metodos NO abstractos de la case padre estan disponibles en las clases hijas.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 23/07/2014, 08:53
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 6 años, 6 meses
Puntos: 379
Respuesta: Utilizar método abstracto en clase abstracta

Puedes explicar como varían y que uso les das ? o como esperas usarlas
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #6 (permalink)  
Antiguo 23/07/2014, 17:01
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 7 años, 9 meses
Puntos: 0
Respuesta: Utilizar método abstracto en clase abstracta

A ver, lo que necesito es un método en la clase padre, pero del cual no conozco como está implementado, la clase hija se encarga de ello, luego está el método que hace el cálculo matemático en la clase padre, pero requiere de un dato que depende de cada clase hija, mi idea era si podía crear un método que se usara hacia abajo digamos
  #7 (permalink)  
Antiguo 24/07/2014, 03:38
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 7 años, 9 meses
Puntos: 0
Respuesta: Utilizar método abstracto en clase abstracta

Buenos días:

Finalmente he logrado arreglarlo mediante la forma de arriba, así que les agradezco su ayuda. El error que me daba debía estar en otro lugar.

Un saludo.
  #8 (permalink)  
Antiguo 24/07/2014, 09:39
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 6 años, 6 meses
Puntos: 379
Respuesta: Utilizar método abstracto en clase abstracta

Lo que pides se puede hacer:
Código PHP:
Ver original
  1. abstract class Padre {
  2.  
  3.     abstract protected function operacion();
  4.  
  5.     public function resultado()
  6.     {
  7.         echo $this->operacion();
  8.     }
  9.  
  10. }
  11.  
  12. class Hija extends Padre{
  13.  
  14.     protected function operacion()
  15.     {
  16.         return 'Operacion realizada';
  17.     }
  18. }
  19.  
  20. $hija = new Hija();
  21. $hija->resultado();

Por cierto esto:
Cita:
Catchable fatal error: Object of class Class could not be converted to string in C:\xampp\htdocs\calculadora\cgi-bin\Class.php on line 49
es otro problema; te falta implementar el metodo __toString en la clase Class
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #9 (permalink)  
Antiguo 25/07/2014, 11:17
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 7 años, 9 meses
Puntos: 0
Respuesta: Utilizar método abstracto en clase abstracta

Eso mismo es lo que quería hacer hhs. Lo que pasa es que tenía un código bastante sucio por pruebas y tal y en algún lado hacía algo que no era correcto.

Muchas gracias por vuestra ayuda.

Etiquetas: Ninguno
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 07:55.