quitZAUMMM 18 Denunciar post Postado Janeiro 8, 2008 Uma rápida explicação Se você já programou em algumas linguagens mais "fósseis" tipo Clipper, Cobol, Basic, Fortran, etc, você conhece a forma de programação procedural. Um programa deste tipo tem comandos que são executados em seqüência, um após o outro, a menos que você especifique algum desvio ou execução de um bloco de comandos (sub-rotina) ; mas de qualquer forma, a partir do desvio ou do bloco os comandos continuam sendo executados em seqüência. Esta seqüência é definida pelo programador e o usuário não tem nenhum tipo de controle sobre o fluxo da execução. Este estilo de programação é bem velho e dominou a informática durante a "era do caracter", quando reinavam os sistemas Unix (sem interface gráfica), Novell, DOS e outros. Com o advento da interface gráfica, este estilo de programação se tornou inviável, pois num programa existem diversos objetos como janelas, botões, ícones e quem determina o que e quando vai ser executado é o usuário e seu poderoso mouse. Foi aí que nasceu a OOP/EOP (na verdade, elas nasceram antes da interface gráfica, senão teria sido impossível criar as próprias interfaces). Antes de começarmos a falar sobre Visual Dataflex, é de extrema importância que conheçamos pelo menos os conceitos mais básicos de OOP/EOP. Mas o que significam estas siglas ? OOP é a abreviatura de Object Oriented Programming ou Programação Orientada a Objetos EOP é a abreviatura de Event Oriented Programming ou Programação Orientada a Eventos Para começar, não confunda OOP com EOP. A EOP faz parte da OOP, mas a recíproca não é verdadeira. Vamos esclarecer: Programação orientada a objetos significa trabalhar com classes, objetos, propriedades, encapsulação, métodos, herança, polimorfismo, ligação. Não se desespere: breve esclareceremos todos estes termos. Exemplos de linguagens OOP : Visual Dataflex, Delphi, Java. Programação orientada a eventos significa trabalhar apenas com objetos e os eventos que possam afetá-los de alguma forma e aos quais ele pode responder. Exemplos de linguagens EOP : Access, Visual Basic. Vamos levar estes conceitos para o “mundo real”. Um exemplo de programação procedural poderia ser uma receita de bolo : 1. Pegue uma tigela 2. Separe trigo, ovos, açúcar, fermento, etc. 3. Jogue tudo dentro da tigela 4. Os ovos estão com casca ? 5. Não: vá para o passo 7 6. Sim: tire as cascas e volte ao passo 3 7. Misture tudo 8. Ponha no forno 9. Divirta-se Se quiséssemos sofisticar muito mais a arte de comer um bolo, poderíamos usar a OOP, para fazer mais ou menos assim: Classe Tigela é Vasilhame Propriedade Cor = Azul Propriedade Capacidade = 2 Kg Propriedade Quebra = Verdadeiro FimDaClasse Classe Ingrediente é Alimento Propriedade ÉTrigo = Falso Propriedade ÉOvo = Falso Propriedade ÉAçúcar = Falso Propriedade ÉFermento = Falso Propriedade Perecível = Verdadeiro Evento EstáEstragado Execute JoguarNoLixo FimDoEvento Procedimento JogarNoLixo Se existe Lixeira então Coloque nela Senão Jogue pela janela FimDoProcedimento FimDaClasse Classe AlimentosQueEngordam é Alimento Propriedade AumentaColesterol = Verdadeiro Propriedade CausaInfarto = Verdadeiro FimDaClasse Classe ComedorCompulsivo é Humano Função EstáGordo recebe Peso retorna Resposta Se Peso é maior que 100 kg Resposta = Verdadeiro Senão Resposta = Falso FimDaFunção Evento AoSentirFome Execute ComerUmBolo FimDoEvento Procedimento ComerUmBolo Se EstáGordo(150 Kg) = Verdadeiro Saia deste Procedimento Senão Execute FazerUmBolo Execute Comer FimDoProcedimento FimDaClasse Objeto JoãozinhoPesoPesado é ComedorCompulsivo Evento AoFicar15MinutosSemComer Dispare o Evento AoSentirFome FimDoEvento FimDoObjeto Objeto Bolo é AlimentosQueEngordam Propriedade Sabor = Jiló Propriedade TemGlacê = Verdadeira Use Tigela Use Ingrediente Objeto MinhaTigela é uma Tigela Cor = Verde FimDoObjeto Objeto Trigo é Ingrediente ÉTrigo = Verdadeiro FimDoObjeto Objeto Ovo é Ingrediente ÉOvo = Verdadeiro FimDoObjeto Objeto Açúcar é Ingrediente Éaçúcar = Verdadeiro FimDoObjeto Objeto Fermento é Ingrediente ÉFermento = Verdadeiro FimDoObjeto Procedimento FazerUmBolo Mova Trigo para Tigela Mova Ovo para Tigela Se CheirouMal dispare EstáEstragado Mova Açúcar para Tigela Mmova Fermento para Tigela Mmisture tudo Leve ao forno FimDoProcedimento FimDoObjeto {Bolo} FimDoPrograma. Observe que em OOP, você não tem uma execução passo a passo, como em procedural. Você define vários objetos, procedimentos, eventos, funções e, dependendo do evento que ocorrer, a coisa começa a funcionar. No nosso exemplo, o evento que iniciaria todo o processo seria AoFicar15MinutosSemComer do objeto JoãozinhoPesoPesado. Vamos então esclarecer os conceitos de OOP. Classe é uma construção genérica que define propriedades, métodos e funções que serão usados por objetos ou outras classes. Toda classe é “filha” de alguma outra classe “mãe”, que por sua vez é filha de alguma outra, e assim hierarquicamente até chegar a classe mais alta, que seria a “matriarca” de todas. Em nosso exemplo, definimos várias classes derivadas de outras, cada uma com seus métodos e propriedades: Tigela, derivada de Vasilhame; Ingrediente, derivada de Alimento;AlimentosQueEngordam, derivada de Alimentos. Objeto, na teoria OOP, é uma instância de alguma classe e, efetivamente, a forma que temos de interagir com o programa. Um objeto sempre pertence a alguma classe e herda dela todas as suas propriedades e métodos, além de poder definir os seus próprios ou redefinir os que foram herdados. Em nosso exemplo criamos vários objetos : JoãozinhoPesoPesado, da classe Humanos; Bolo, da classe Alimentos; Tigela, da classe Vasilhame. Note que o objeto Tigela foi criado dentro do objeto Bolo. Isto é uma característica da OOP: um objeto pode conter outros objetos, que por sua vez podem conter outros e assim sucessivamente. Um objeto contido em outro objeto é chamado objeto-filho e, onseqüentemente, um objeto que contém outro é chamado objeto-pai. Observe que isto não acontece com as classes :uma classe nunca contém ou está contida em outra classe. Ela é derivada de alguma classe ancestral e poderá ser a origem de alguma classe descendente.[/b] Propriedade (ou atributo) é uma característica de um objeto ou de uma classe. Em nosso exemplo, o objeto Bolo tem duas propriedades, Sabor e TemGlace; a classe Tigela tem as propriedades Cor, Capacidade e Quebra. Encapsulação é uma característica da OOP na qual os objetos têm mecanismos internos que ficam totalmente ocultos do usuário. Por isto um objeto muitas vezes é considerado uma “caixa-preta”. Você utiliza um objeto que faz determinadas coisas dependendo de algum evento ou valor de alguma propriedade, mas não precisa necessariamente sabercomo ele faz isto. No exemplo, você pode utilizar o objeto Bolo sem precisar saber em detalhes o que acontece dentro do método FazerOBolo. Método (ou ação) é alguma operação realizada pelo objeto ou pela classe. Em nosso exemplo, a classe ComedorCompulsivo tem os métodos AoSentirFome e ComerUmBolo. Herança é a capacidade que uma classe ou objeto têm de herdar características e métodos de sua classe ancestral e, se for o caso, modificá-los. No nosso exemplo, o objeto MinhaTigela, definido dentro do objeto Bolo, herdou todas as propriedades de sua classe Tigela (Cor, Capacidade e Quebra) e alterou uma delas (Cor = Verde). Poliformismo é a capacidade que objetos diferentes têm de reagir da sua maneira a um mesmo evento. Por exemplo, para o objeto JoãozinhoPesoPesado, o evento AoSentirFome dispara o método ComerUmBolo ; já para um objeto Cavalo, que seria de outra classe, o mesmo evento dispararia o método ComerCapim. Ligação é o ato de um objeto ou classe conectar uma ação sua a outro objeto ou classe. No exemplo, o evento ComerUmBolo, da classe ComedorCompulsivo, dispara o evento FazerUmBolo do objeto Bolo. Os conceitos que acabamos de ver fazem parte de todas as linguagens OOP, mas não das EOP. A EOP trabalha apenas com objetos e eventos e não tem, conseqüentemente, nenhum suporte para todas estas outras características da OOP. Entre as vantagens da OOP sobre a programação procedural, podemos destacar: Objetos podem ser utilizados em vários projetos diferentes, sem que o programador tenha que se preocupar com sua estrutura interna: ele apenas precisa saber como se comunicar com eles, através de suas propriedades ou métodos. A manutenção do código fica muito mais fácil, pois se você necessita, por exemplo, alterar alguma característica ou método do objeto, você fará esta mudança apenas nele, sem se preocupar com o restante do programa. Num desenvolvimento em equipe, cada programador precisa se preocupar apenas com a classe ou objeto que está trabalhando e expor aos demais somente o que ele faz e como utilizá-lo. Como dissemos, quem utiliza uma classe ou objeto precisa saber apenas o que ele faz e não como ele faz. Compartilhar este post Link para o post Compartilhar em outros sites
DIMEBAG 0 Denunciar post Postado Outubro 4, 2008 Excelente. Falowz. Compartilhar este post Link para o post Compartilhar em outros sites
ÞņР0 Denunciar post Postado Junho 22, 2009 muito bem explicado o POO. Compartilhar este post Link para o post Compartilhar em outros sites
Pantoja 5 Denunciar post Postado Março 14, 2010 Show sua aula de POO amigo, você é o cara! Compartilhar este post Link para o post Compartilhar em outros sites
cz_shiryu 0 Denunciar post Postado Novembro 5, 2010 Parabéns! Excelente tópico. Muito bem explicado. Sou estudante do curso Sistemas de Informações em uma escola técnica federal no Mato Grosso. Contudo, a qualidade das aulas de programação são muito ruins. Você foi tão elucidativo nesse teu tópico que conseguiu ascender mais ainda a minha vontade de estudar linguagens de programação. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 8, 2010 Isso ae mano.. estuda q é dahora kkk []s Compartilhar este post Link para o post Compartilhar em outros sites