Felipe_ls 0 Denunciar post Postado Agosto 22, 2005 Olá galera! To iniciando no mundo da POO e estou com uma duvida que esta me deixando cada vez mais confuso... Qual é a diferença basica e utilidade das classes "abstract" e "interface"? Segundo algumas apostilas que li pela net, elas servem para fazer polimorfismo, não sei se isso é verdade... Desde já, obrigado! Vlw! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
luis-restart 0 Denunciar post Postado Agosto 22, 2005 Fala cara,olha eu nao manjo muuito de oop em php, mas pelo que venho estudando, eh mais ou menos assim:classe abstrata -> por exemplo uma classe FORMAS, classe TRIANGULO e classe TRAPEZIO. As classes TRIANGULO e TRAPEZIO herdam as caracteriticas da classe FORMAS e nao da pra se criar um objeto da classe FORMAS soh por exemplo, do que eu li e do que meu amigo Kino explicou pra mim, uma classe abstrata eh basicamente isso, algo como uma classe generica, que serve pra outras mas nenhum objeto pode ser criado apartir dela...interface-> sobre interface pode ser lido aqui: http://www.php.net/manual/pt_BR/language.oop5.interfaces.php . Mais ou menos como pra que organizar o code, uma interface serve pra voce listar quais metodos existem e quais variaveis vao ser atribuidas Interfaces de Objetos permite a criação de código que especifica quais métodos e variáveis uma classe deve implementar, sem ter que definir como esses métodos serão tratadosE é isso, le mais no link que voce vai intender melhor do que eu tentando explicar...se puis algo errado alguem corrige por favor...[]sluis Compartilhar este post Link para o post Compartilhar em outros sites
Felipe_ls 0 Denunciar post Postado Agosto 23, 2005 Bem, valeu kra!Sobre a teoria eu ja intendi, basicamente é isso mesmo...A minha duvida é de como utilizar esses tipos de classe...Vlw... Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Agosto 23, 2005 seria tipo PUBLIC e PRIVATEnao exatamente isso, mas tipo issorsss Compartilhar este post Link para o post Compartilhar em outros sites
luis-restart 0 Denunciar post Postado Agosto 23, 2005 Bom,pela minha resposta se voce pensar um pouco, ja acha uma utilidade:a Interface nao eh uma classe e sim algo que ajuda voce a organizar o codigo, com ela voce define quais metodos(funcoes,etc) e variaveis a classe deve implementar e depois na classe na qual a interface for implementada voce diz o conteudo dos metodos, eh algo como que pra organizar.classe Abstrata serve, ao meu ver, para poubar linhas de codigos, como no exemplo que eu citei, das classes FORMA, TRIANGULO e TRAPEZIO, a classe FORMA soh vai ser escrita uma unica vez e herdada para as outras ja que vai ser sempre a mesma coisa e o fato de nenhum objeto ser criado a partir dela unicamente eh que a torna uma classe abstrata.Bom, nao tenho 100% de certeza do que escrevi, mesmo porque isso eu estou estudando agora com a ajuda de uns amigos do serviço e do www.php.net :P Restou alguma duvida??[]s Luis Fernando Compartilhar este post Link para o post Compartilhar em outros sites
Felipe_ls 0 Denunciar post Postado Agosto 23, 2005 Agora sim... :) Valeu pela ajuda!Já deu uma clareada nas idéias...Eu tava fuçando na internet e vi um artigo falando que o abstract pode ser usado pra fazer polimorfismo, assim você pode usar um unico metodo que é comum entre todas as classes filhas, para então, dependendo dos dados inputados, se fazer a herança da classe certa, que consegue processar esses dados...Só não sei ainda como fazer isso ainda... :P Valeu pessoal... Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Agosto 23, 2005 Vamos supor o seguinte cenário para entender classes abstratas. Teremos a classe Pessoa, Pessoa Juridica e Pessoa Fisica. Concorda comigo que Pessoa vai conter dados comuns a Pessoa Fisica e Pessoa Juridica, mas que esses 2 terão informações diferentes? beleza? Em nosso sistema, por um motivo qualquer de requisito, não faz sentido existir uma pessoa simplesmente como Pessoa, este tem que ser uma Pessoa Fisica ou uma Pessoa Juridica. Código: PHP abstract class Pessoa { private $nome; private $login; private $senha; private $email; private $telefone; // sets e gets function incluir() { } function excluir() { } function alterar() { } function ler() { } function autenticar() { } } class PessoaFisica extends Pessoa { private $cpf; private $dtnascimento; private $rg; // sets e gets } class PessoaJuridica extends Pessoa { private $cnpj; private $razaosocial; private $inscestadual; // sets e gets } Sendo assim, se você inicializar um objeto desta forma: PHP $pessoa = new Pessoa(); Não será possivel, a seguinte mensagem de erro será exibida: Fatal error: Cannot instantiate abstract class Pessoa in ... on line XX Para um funcionamento correto, você teria que inicializar um objeto de PessoaFisica ou de PessoaJuridica, tipo: PHP $pf = new PessoaFisica(); $pj = new PessoaJuridica(); É isso ai pessoas, uma classe abstrata tem o unico objetivo de não poder ser instanciada. Isto depende unica e exclusivamente da modelagem do projeto. Compartilhar este post Link para o post Compartilhar em outros sites
Felipe_ls 0 Denunciar post Postado Agosto 23, 2005 Hmm intendi...Ela funciona como um encapsulamento de classes, assim impede alguem de instanciar alguns metodos da classe abstrata, é isso? Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Agosto 24, 2005 Artigo excelente recomendado pelo Prog em outro fórum: http://www.rau-tu.unicamp.br/nou-rau/softw...ument/?down=133 Isso mesmo, a classe abstrata só pode ser extendida. E como o Prog amostrou como declarar um método opcional: function incluir() { } Você também pode declarar um obrigatório: public abstract function incluir(); Leia o artigo do Pablo Dall'Oglio, bom apetite! =) Compartilhar este post Link para o post Compartilhar em outros sites
Felipe_ls 0 Denunciar post Postado Agosto 24, 2005 Legal com esse seu segundo exemplo todas as classes filhas deverão ter um metodo "incluir", jah no primeiro não... Agora já dá para eu seguir em frente... ;) Ahh e muito bom esse artigo, já tive a oportunidade de ler antes e gostei pra caramba, aliás, foi através dele que comecei a pesquisar mais sobre POO no PHP... Valeu todo mundo! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites