Ver Mensaje Individual
  #9 (permalink)  
Antiguo 29/11/2008, 22:51
Avatar de Acron_0248
Acron_0248
 
Fecha de Ingreso: junio-2005
Ubicación: 127.0.0.1
Mensajes: 1.648
Antigüedad: 18 años, 10 meses
Puntos: 18
Respuesta: Mi primer objeto - critiquen!!!

Abstract no define realmente control de acceso a propiedades o métodos, al menos no de la forma que lo hacen private, protected y similares.

Abstract solo indica que un método se ha declarado en una clase pero que en dicha clase no se ha definido la implementación del método, quiere decir que otras clases hijas se deberán encargar de esa implementación

Sin embargo, cierto es que una clase abstracte no debe ser implementada de forma directa al crear un objeto, sino que debería ser extendida y luego crear un objeto de la clase hija, en dicho sentido, sip, puedes ver el usar cosas como protected o private en una clase abstracta como un refuerzo, obviamente el dejar las propiedades y métodos como públicos en una clase abstracta no es que esté mal.

En todo caso, si defines cosas como protected o private en una clase abstracta lo que estarás definiendo es la forma en que las clases que extiendan a la abstracta van a funcionar, esto sería un ejemplo de ello:
Código PHP:
abstract class Operacion 
{
    private 
$_operando1;
    private 
$_operando2;
    protected 
$_resultado;

    protected function 
__construct($operando1$operando2)
    {
        
$this->_operando1 $operando1;
        
$this->_operando2 $operando2;
        
$this->_resultado $this->_operando1 $this->_operando2;
    }

    public abstract function 
resta($operando1$opreando2);
}

class 
SumaResta extends Operacion
{
    public function 
__construct($num1$num2)
    {
         if (
$num1 == "" || $num2 == "") {
             die(
'No hay nada que sumar.');
         } else if (!
ctype_digit($num1) || !ctype_digit($num2)) {
             die(
'Solo se aceptan námeros para hacer la suma.');
         } else {
             
parent::__construct($num1$num2);
             echo 
$this->_resultado;
         }
    }

     public function 
resta($num1$num2)
     {
          
$this->_resultado $num1 $num2;
     }

__________________
Usuario Reigistrado de linux #399288

Última edición por Acron_0248; 29/11/2008 a las 23:12