Hm.. eu vejo estensões de classes abstratas como uma especificação de certa
classe, com a obrigação de implementação de certos aspectos.

No exemplo de Pessoa, ambas PessoaFisica e PessoaJuridica tem pouquíssimo
realmente em comum, mas se for dar um exemplo:

- Como atributos: "nome" e "registro" (CPF OU CNPJ), que estariam na classe
Pessoa, pois todo tipo de pessoa irá possuir tais atributos.

- Como método concreto: PessoaFisica e PessoaJuridica terão fim em algum
momento, por isso, poderia criar o método "encerrar", que colocaria uma data
de término (ou morte), motivo, e etc. Talvez esse método não precisasse se
comportar de maneira diferente para PessoaFisica e Juridica, e por isso
estaria implementado diretamente na classe Pessoa.

- Como método abstrato:  Pessoa deve ser cobrada, mas cada tipo de Pessoa
será cobrada de uma maneira diferente, por isso, colocaria o método cobrar
abstrato na classe Pessoa, obrigando as classes que a estendem a implementar
a forma como tal pessoa será cobrada.

- Como método específico: PessoaFisica anda, PessoaJuridica não, sendo
assim, o método andar só poderia existir na classe PessoaFisica, e nunca na
classe Pessoa.

Deu pra entender? Eu, ao contrário de você, sou muito pior em citar exemplos
teóricos do que práticos, acabei me bitolando na prática.. ;D

2010/10/15 Ademir C Gabardo <[email protected]>

>  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
> ---------------------------
>
>


-- 
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
---------------------------

Responder a