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