Comunidad de diseño web y desarrollo en internet online

Ayuda!

Citar            
MensajeEscrito el 09 Jul 2010 01:48 pm
ok mi amigos de CL como les va!
mi pregunta es la siguiente.

si tengo una super clase llamada Banco y en esa clase tengo dos metodos llamados Condulta y Cuenta muy bien
por otro lado tengo una sub clase llamada Cajeros que hereda el metodo consulta ahora el dilema mio es como ago para que la subClase Cajero no herede el metodo Cuenta O que no sea accesible desde esa subclase ? :?

mis amigos ayudenme porfavor de esa respuesta depende un gran avanze en POO :?

GRACIAS Dios les bendiga a todos

chauuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu :lol:

Por calibre

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Jul 2010 03:07 pm
Para que Cuenta no sea accesible desde ningun lado y solo de banco debes hacerla privada "private function" y para que Consulta sea accesible desde cualquier otro lado debe ser publica "public function", si lo que quieres es que Consulta sea privada pero accesible desde las subClases debe ser protected "protected function"


Saludos!!

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jul 2010 05:26 pm
Esta es mi superClase Banco

Código ActionScript :

package {
   import flash.display.Sprite;
   import flash.events.Event;
   import flash.events.MouseEvent;
   import flash.display.MovieClip
   import Cajero

   public class Banco extends Sprite
   {
      public var l:Number = 0;
      private var count:String = "cuenta Creada";
      public var mc:MovieClip;
      public var sprite:Sprite = new Sprite();
      
      public function Banco(mc:MovieClip)
      {
         this.mc = mc;
         
      }
      public function Cuenta():void{
         trace(this.count)
      }
      
      public function Click():void{
         this.mc.addEventListener(MouseEvent.MOUSE_DOWN,this.Comprovar);
         
      }
      
      private function Comprovar(m:MouseEvent):void{
         this.mc.addEventListener(Event.ENTER_FRAME,this.Consulta);
         
      }
      
      protected function Consulta(e:Event):void{
         this.l++
         if(this.l > 1 && this.l <= 100){
            if(this.l == 100){
            trace("Consulta Listra"+"-Loading: "+this.l)
            Remove();
            }
         }else{
            trace("Generando Consulta")
         }
      }
      
      private function Remove():void{
         this.mc.removeEventListener(Event.ENTER_FRAME,this.Consulta);
      }
   }
}



Esta es mi subClase Cajero

Código ActionScript :

package {
   import flash.display.Sprite
   import flash.display.MovieClip
   import flash.events.Event;
   import flash.events.MouseEvent;
   
   public class Cajero extends Banco {

      public function Cajero(mc:MovieClip) {
         super(mc)
      }
      
      override protected function Consulta(e:Event):void {
         super.Consulta(e);
         
      }
   }
}


mi Archivo FLA

Código ActionScript :

import Banco

var cajero:Cajero = new Cajero(circle);
var banco:Banco = new Banco(circle2);
cajero.Cuenta() (<-----ES ESTE MI PROBLEMA NO QUIERO QUE CAJERO HEREDE CUENTA)
banco.Click();
cajero.Click()   


AHORA SI AYUDA PLEASE ESTA MEJOR DETALLADO SALUDOS!

Por calibre

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Jul 2010 06:22 pm
Jeje date un descanso a veces eso te ayuda a visualizar las cosas mas facil.

Mira como en banco tienes una funcion que se llama Remove y es private si intentas hacer

Código ActionScript :

cajero.Remove()


Te va marcar u error ya que no se heredan las funciones privadas,solo tendrias que hacer que cuenta en lugar de ser public sea private y se te soluciona.
Si no vas a implementar nada diferente en la funcion Consulta en el Cajero no es necesario que hagas un override.

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jul 2010 07:21 pm
no Angel eso lo se lo de la function Remove
solo quiero que me digas como ago para que el metodo Cuenta no sea accesible desde cajero porque es logico que un cajero automatico no va a crear una cuenta en eso se basa mi ejemplo no quiero que cajero cree una cuenta porque no puede entonces como ago eso ?

si te fijas cuando desde cajero llamo a cuenta la ejecuta y no quiero eso dime como lo ago angel

y gracias por las respuesta y ten pasiencia conmigo gracias mi hermano

Por calibre

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Jul 2010 07:26 pm

calibre escribió:

no Angel eso lo se lo de la function Remove
solo quiero que me digas como ago para que el metodo Cuenta no sea accesible desde cajero porque es logico que un cajero automatico no va a crear una cuenta en eso se basa mi ejemplo no quiero que cajero cree una cuenta porque no puede entonces como ago eso ?

si te fijas cuando desde cajero llamo a cuenta la ejecuta y no quiero eso dime como lo ago angel

osea que si sea accesible desde Banco pero desde cuenta no pero quiero heredar el metodo Consulta

y gracias por las respuesta y ten pasiencia conmigo gracias mi hermano

Por calibre

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Jul 2010 07:26 pm

Angel Roberto escribió:

solo tendrias que hacer que cuenta en lugar de ser public sea private y se te soluciona.


private function Cuenta

Por Angel Roberto

Claber

248 de clabLevel



 

safari
Citar            
MensajeEscrito el 09 Jul 2010 07:34 pm
osea que si yo ago

desde el FLA

la llamada

import Banco

var cajero:Cajero = new Cajero(circle);
var banco:Banco = new Banco(circle2);
cajero.Cuenta();
banco.Cuenta();<---- entonces si la declaro privada entonces desde el fla no seria accesible y eso es lo que quiero que sea accesible desde el fla cuendo la llame pero cuando aga esto( cajero.Cuenta ) no me deje

Por calibre

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Jul 2010 07:43 pm
porque fijate necesito el metodo Consulta y su funcionalidad para que cajero se aproveche de ella pero no quiero que cajero herede crear Cuenta

osea

en conclucion es

Banco----------
Consulta,Cuenta <---------------------que sean accesibles desde el fla
-------------------

Cajero-----------
solamente Consulta <-----------------Cuando herede solamente Consulta sea accesibles desde el fla no Cuenta
--------------------------

Por calibre

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Jul 2010 07:51 pm
No puedes hacer una funcion publica y no heredable lo que puedes hacer es sobreescribir la funcion Cuenta en la clase Cajero:

Código ActionScript :

class Banco{
   public function Cuenta(){
   //ejecutas lo que sea
   }
}

class Cajero extends Banco{
   override public function Cuenta(){
   return;
   //no dejas que se ejecute nada
   }
}

Por Angel Roberto

Claber

248 de clabLevel



 

safari
Citar            
MensajeEscrito el 09 Jul 2010 07:55 pm
jejejeje gracias Angel muuuuuuuuuuuuuuuuuuuuuuuuuuchas gracias te explico ahora esa solucion que me diste ya la tenia hecha pero al no tener tanta experiencia con la programacion orientada a objeto creia que avia otra solucion mas eleganta

esa misma la tenia gracias Angel de verdad queria estar seguro sete agradece

seyaaaaaaaaaaaaaaaaaaaaaaaaa!

Por calibre

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 09 Jul 2010 08:01 pm
No hay de que.

Saludos!!

Por Angel Roberto

Claber

248 de clabLevel



 

safari

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.