Eu acabei por escrever "errado".

Para melhorar o exemplo, dentro da classe Veiculo, o método andar não pode ter 
implementação.
Seria apenas:
abstract protected function andar();

Quem faz a implementação do método é a "herdeira".


Em 2010/10/15, às 15:54, Rafael V. de Oliveira escreveu:

> Eu não acho que o CodeIgniter é o melhor para utilizar nestes exemplos, uma 
> vez que ele está preso no PHP4.
> 
> Mas a abstração é mais ou menos isso.
> 
> Tanto a pessoa física quanto a jurídica partilha dados em comum.
> Ao herdar as 2 classes de uma super-pai, neste caso a classe Pessoa, eu não 
> preciso reescrever métodos.
> 
> Outro exemplo recorrente é do veículo.
> 
> abstract class Veiculo {
>   public function set_rodas( $quantidade )
>   {
>     $this->rodas = $quantidade;
>   }
> 
>   abstract protected function andar()
>   {
>     echo 'moving, moooooving';
>   }
> }
> 
> class Carro extends Veiculo {
>   protected function andar()
>   {
>     echo 'carro em movimento';
>   } 
> }
> 
> $veiculo = new Carro();
> $veiculo->set_rodas(4);
> $veiculo->andar();
> 
> 
> Mais ou menos isso.
> 
> Corrigam-me se eu estiver errado, mas isso não dá pra fazer no CodeIgniter.
> 
> Em 2010/10/15, às 15:39, Ademir C Gabardo escreveu:
> 
>> Foi a mesma conclusão a que cheguei.
>> Lembrando que esse é apenas um exemplo didático, uma tentativa de 
>> compreender como poderia ser feita a abstração de classes na estrutura do 
>> CodeIgniter.
>> Talvez (e muito provavelmente) existam exemplos mais práticos e simples de 
>> aplicar, mas a faculdade deixa a gente meio bitolado as vezes.
>> Falou em abstração de classe sempre lembra da classe pessoa, exemplo 
>> recorrente.
>>  
>> Eu estou tentando compreender melhor esses conceitos de abstração.
>> 
>> Na prática, eu crio uma classe para pessoa física e outra para jurídica.
>> Não costumo misturar as duas.
>>  
>> Galera, opiniões? Críticas? Mais dúvidas? Novas sugestões?
>>  
>> Att
>> Ademir
>>  
>>  
>> De: [email protected] 
>> [mailto:[email protected]] Em nome de Eric Saboia
>> Enviada em: sexta-feira, 15 de outubro de 2010 11:33
>> Para: CodeIgniter Brasil
>> Assunto: Re: [CodeIgniter] Duvida sobre abstração de Classe
>>  
>> Pensando bem, apesar de não fazer sentido pra mim fazer tal coisa em um 
>> Controller, a solução seria a mesma pra Models:
>> 
>> abstract class Pessoa extends Model {
>> 
>> }
>> 
>> class PessoaFisica extends Pessoa {
>> 
>> }
>> 
>> Dessa forma, PessoaFisica herdaria todos os metodos de Model, além de herdar 
>> os métodos não abstratos de Pessoa, e seria obrigada a implementar os 
>> métodos abstratos de Pessoa
>> 
>> 2010/10/15 Eric Saboia <[email protected]>
>> Nem entendi seu problema, por isso fica difícil ajudar.
>> 
>> Não entendo pra que você quer estender uma classe abstrata em controllers, 
>> no seu exemplo de Pessoas, não seria isso uma entidade, e portanto seria 
>> feito nos Models?
>> 
>> 2010/10/4 Julio Fagundes <[email protected]>
>>  
>> Pois é! tipo em cascata.
>> 
>> Nessa caso se a class abstrata herdar ao controller, acho que matou a 
>> charada não?
>> 
>> Sds
>> Julio Fagundes
>> 
>> 
>> Vinicius Cruz escreveu:
>> Quando diz que não suporta herança múltipla, senão me engano o C suporta, 
>> seria fazer algo assim:
>> 
>> class teste extends teste1, teste3
>> 
>> Portanto, é válida a class abstrata herdar, e a concreta herdar a abstrata.
>> 
>> Att,
>> Vinicius Cruz
>> http://twitter.com/vinaocruz
>> http://www.zime.com.br/
>> 
>> 
>> Em 4 de outubro de 2010 17:21, Ademir C Gabardo <[email protected] 
>> <mailto:[email protected]>> escreveu:
>> 
>> 
>>    Viajar não viajou, mas o problema é que o PHP Não tem suporte a
>>    Herança Multipla, então se ele já herda as propriedades do
>>    Controlle não poderá herdar novamente da classe abstrata, eis o
>>    dilema.
>>         Alguma sugestão?
>>         Att
>>    Ademir
>>     
>>        ----- Original Message -----
>>        *From:* Vinicius Cruz <mailto:[email protected]>
>>        *To:* CodeIgniter Brasil <mailto:[email protected]>
>>        *Sent:* Monday, October 04, 2010 5:11 PM
>>        *Subject:* Re: [CodeIgniter]Duvida sobre abstração de Classe
>> 
>>        No caso, seria adicionar na class abstrata a herança do
>>        Controller? Consequentemente, teriamos as classes concretas
>>        com os métodos herdados da classe abstratas e os métodos do
>>        controller principal.
>> 
>>        Viajei?!
>> 
>>        Att,
>>        Vinicius Cruz
>>        http://twitter.com/vinaocruz
>>        http://www.zime.com.br/
>> 
>> 
>>        Em 4 de outubro de 2010 16:51, Ademir C Gabardo
>>        <[email protected] <mailto:[email protected]>>
>> 
>>        escreveu:
>> 
>>            Galera, estou escrevendo um artigo que servirá como base
>>            para um material para novatos em OO + PHP5 sobre abstração
>>            de classes em PHP e o uso dos Magic Methods do PHP 5.
>>            Para isso, estou usando como exemplo a abstração da classe
>>            pessoa.
>>            Mas aí surgiu uma dúvida cruel.
>>            Imaginem o modelinho.
>>                         //Abstrata
>>            class Pessoa(){
>>            }
>>                         //Concreta
>>            class PessoaFisica extends Pessoa(){
>>            }
>>                         //Concreta
>>            class PessoaJuridica extends Pessoa(){
>>            }
>>                         Como vocês fariam isso no CodeIgniter uma vez que os
>>            controladores já herdam do controller principal?
>> 
>>            Fiquei imaginando um modo de fazer com Interface.
>>            Alguma dica dos membros da lista?
>>                         Abraços
>>            Ademir Gabardo.
>> 
>>            _______________________________________________
>>            [email protected] <mailto:[email protected]>
>> 
>>            http://www.codeigniter.com.br
>>            
>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>> 
>>            ---------------------------
>>            Oportunidade de negócio
>>            http://www.franquiasargohost.net
>>            ---------------------------
>> 
>> 
>>        
>> ------------------------------------------------------------------------
>>        _______________________________________________
>>        [email protected] <mailto:[email protected]>
>> 
>>        http://www.codeigniter.com.br
>>        http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>> 
>>        ---------------------------
>>        Oportunidade de negócio
>>        http://www.franquiasargohost.net
>>        ---------------------------
>> 
>> 
>>    _______________________________________________
>>    [email protected] <mailto:[email protected]>
>> 
>>    http://www.codeigniter.com.br
>>    http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>> 
>>    ---------------------------
>>    Oportunidade de negócio
>>    http://www.franquiasargohost.net
>>    ---------------------------
>> 
>> 
>> ------------------------------------------------------------------------
>> 
>> _______________________________________________
>> [email protected]
>> http://www.codeigniter.com.br
>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>> 
>> ---------------------------
>> Oportunidade de negócio
>> http://www.franquiasargohost.net
>> ---------------------------
>>  
>> 
>> 
>> _______________________________________________
>> [email protected]
>> http://www.codeigniter.com.br
>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>> 
>> ---------------------------
>> Oportunidade de negócio
>> http://www.franquiasargohost.net
>> ---------------------------
>> 
>> 
>> 
>> -- 
>> Eric Saboia - eric.saboia.org
>> PHP Zend Certified Engineer
>> 
>> 
>> 
>> 
>> -- 
>> Eric Saboia - eric.saboia.org
>> PHP Zend Certified Engineer
>> 
>> _______________________________________________
>> [email protected]
>> http://www.codeigniter.com.br
>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>> 
>> ---------------------------
>> Oportunidade de negócio
>> http://www.franquiasargohost.net
>> ---------------------------
> 
> _______________________________________________
> [email protected]
> http://www.codeigniter.com.br
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> 
> ---------------------------
> Oportunidade de negócio
> http://www.franquiasargohost.net
> ---------------------------

_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------

Responder a