cassiombc 0 Denunciar post Postado Maio 8, 2012 Galera , gostaria de saber porque esse método não funfa. Classe Conta <?php class Conta { private $numero; private $saldo; public function __construct() { $this->numero = rand(777, 9999); } public function getNumero() { return $this->numero; } public function getSaldo() { return $this->saldo; } public function creditar($valor) { if ($valor < 0) { return false; } $this->saldo = $this->saldo + $valor; } public function debitar($valor) { if ($valor < 0) { return false; } $this->saldo = $this->saldo + $valor; } public function transferir($valor, Conta $contadest) { if ($contadest->numero == 0 || $valor < 0) { return false; } $this->debitar($valor); $contadest->creditar($valor); } public function __toString() { return "A conta solicitada de numero: ". $this->numero . " com saldo= ". $this->saldo."<br/>"; } } ?> Classe Poupança <?php class Poupanca extends Conta{ public function RenderJuros(){ $this->saldo = 333; } } ?> Index <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <?php include 'Conta.php'; include 'Poupanca.php'; $conta1 = new Conta(); $conta1->creditar(100); $conta2 = new Conta(); $conta2->creditar(200); $conta1->transferir(50, $conta2); $poupa = new Poupanca(); $poupa->creditar(100); $poupa->RenderJuros(); print $conta1; echo"<br/>"; print $conta2; echo"<br/>"; print $poupa; echo"<br/>"; ?> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Maio 8, 2012 o q espcificamente n funciona? a poupanaça? Compartilhar este post Link para o post Compartilhar em outros sites
William Phantom 32 Denunciar post Postado Maio 8, 2012 Não vi bem mas essa código é pra que? explica direito Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Maio 8, 2012 se o problema era a poupança.... lembre q saldo é privado logo a classe poupança n herda esse atributo. você pode mudar de private para protected. A visibilidade de uma propriedade ou método pode ser definida prefixando a declaração com as palavras-chave: 'public','protected' ou 'private'. Itens declarados como public podem ser acessados por todo mundo. Protected limita o acesso a classes herdadas (e para a classe que define o item). Private limita a visibilidade para apenas a classe que define o item. http://php.net/manual/pt_BR/language.oop5.visibility.php aqui você so esta sobrescrevendo o valor de saldo e não somando. mude de = para += public function RenderJuros(){ $this->saldo = 333; } e esse trecho de codigo aqui? o debitar ta igual o creditar.... public function creditar($valor) { if ($valor < 0) { return false; } $this->saldo = $this->saldo + $valor; } public function debitar($valor) { if ($valor < 0) { return false; } $this->saldo = $this->saldo + $valor; } Compartilhar este post Link para o post Compartilhar em outros sites
cassiombc 0 Denunciar post Postado Maio 9, 2012 Estou tentando pegar o saldo e alterar como metodo RenderJuros(). Mas o shini me informou que ele sendo private não posso acessar o método. O problema é que eu desejo que o metodo acima citado efetue uma alteração no saldo da conta. Exemplo public function RenderJuros() { $this->getSaldo = $this->saldo * 0.05; } RESOLVIDO(Mas não sei se esta da maneira certa) Galera eu não queria criar o método setSaldo para que o saldo não fosse alterado manualmente e sim somente via credito ou débito, mas como foi a única maneira que encontrei para resolver a solução(não sei se está certo). <?php class Poupanca extends Conta { public function RenderJuros() { $saldo = $this->getSaldo() * 0.05; $this->setSaldo($saldo); } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Maio 9, 2012 e qual o problema do $saldo ser protected? Compartilhar este post Link para o post Compartilhar em outros sites
cassiombc 0 Denunciar post Postado Maio 9, 2012 Galera estou com uma outra dúvida no momento. Gostaria de saber como devo proceder para o seguinte fato: Uma conta possui os metodos de creditar e debitar, uma conta de cheque especial possui um saldo alem do estabelecido pelo motivo do cheque, gostaria de saber como vou definir o metodo Creditar e Debitar da classe conta, pois eu preciso sobrescrever esses metodos na classe ContaEspecial, pois vou verificar se o saldo da conta é 0 e disponibilizar um valor para o cliente. Compartilhar este post Link para o post Compartilhar em outros sites
cassiombc 0 Denunciar post Postado Maio 10, 2012 Consegui resolver , apenas reescrevo o metodos nas classes em que desejo que ele se comporte de maneira exclusiva daquela classe, no caso é SOBRESCREVER e Não SOBRECARGA. Moderador pode fechar o Tópico com Resolvido. Obrigado aa todos que cooperaram. Compartilhar este post Link para o post Compartilhar em outros sites
atomicBRblaster 1 Denunciar post Postado Maio 10, 2012 e qual o problema do $saldo ser protected? Se as variáveis da classe Conta deverão ser acessíveis em suas classes filhas, deverão ter escopo protegido (protected). Variáveis privadas são acessíveis somente dentro do escopo da classe que a possui. Compartilhar este post Link para o post Compartilhar em outros sites
Roger Souza 0 Denunciar post Postado Agosto 22, 2012 alguém pode me ajudar... to querendo colocar credito em um usuário! Ex: o Google Adwords funciona assim, você compra os créditos para criar uma campanha, mas os créditos só são liberados qndo o pagamento é confirmado. Apos ter confirmado o usuário poderá criar a campanha Compartilhar este post Link para o post Compartilhar em outros sites