Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

quitZAUMMM

OOP/EOP – O que é isto ?

Recommended Posts

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 saber

    como 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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.