5
Programação Orientado a objetos 1.0 – Introduçao O desenvolvimento de software é extremamente amplo. Nesse mercado, existem diversas linguagens de programação, que seguem diferentes paradigmas. Um desses paradigmas é a Orientação a Objetos, que atualmente é o mais difundido entre todos. Isso acontece porque se trata de um padrão que tem evoluído muito, principalmente em questões voltadas para segurança e reaproveitamento de código, o que é muito importante no desenvolvimento de qualquer aplicação moderna. A POO (programação Orientada a Objetos) foi criada para tentar aproximar o mundo real do mundo virtual: a idéia fundamental é tentar simular o mundo real, utilizando abstrações de objetos, dentro do computador. Assim, o programador é responsável por moldar o mundo dos objetos, e explicar para estes objetos devem interagir entre si. Esses objetos "conversam" uns com os outros através do envio de mensagens. Orientação a objetos é uma maneira de programar que ajuda na organização e resolve muitos problemas enfrentados pela programação procedural. A seguir são apresentados dois conceitos que são de grande importâncai dentro da programação orientada a objetos: herança e polimorfismo. 2.0 – Herança O reuso de código é uma das grandes vantagens da programação orientada a objetos. Muito disso se dá por uma caracaterísticas conhecida como herança que otimiza a produção da aplicação em tempo e linhas de código. Herança é um mecanismo que permite que características comuns a diversas classes sejam fatoradas em uma classe base, ou superclasse. Na Herança temos dois tipos principais de classe: 1. Classe Base ou superclasse: A classe que concede as características a outra classe; 2. Classe Derivada ou subclasse: A classe que herda as características da classe base. Uma classe derivada geralmente é uma implementação especifica de um caso mais geral. deve apenas definir as características que a tornam única. Observe uma relação de herança no mundo animal. Os animais, sob uma descrição abstrata, apresentam características, tais como tamanho, raça. Apresentam também aspectos comportamentais como mover-se, dormir, comer, respirar, etc. Esses características e

Programação Orientado a Objetos: Henrança e Polimorfismo com exemplos em java

  • Upload
    poop

  • View
    247

  • Download
    23

Embed Size (px)

DESCRIPTION

Pequeno resumo de conceitos relacionados ao paradigma orientado a objetos, feitos por mim. Dois conceitos são abordados: herança e polimorfismo.

Citation preview

Programao Orientado a objetos1.0 Introduao O desenvolvimento de software extremamente amplo. Nesse mercado, existem diversas linguagens de programao, que seguem diferentes paradigmas. Um desses paradigmas a Orientao a Objetos, que atualmente o mais difundido entre todos. Isso acontece porque se trata de um padro que tem evoludo muito, principalmente em questes voltadas para segurana e reaproveitamento de cdigo, o que muito importante no desenvolvimento de qualquer aplicao moderna.A POO (programao Orientada a Objetos) foi criada para tentar aproximar o mundo real do mundo virtual: a idia fundamental tentar simular o mundo real, utilizando abstraes de objetos, dentro do computador. Assim, o programador responsvel por moldar o mundo dos objetos, e explicar para estes objetos devem interagir entre si. Esses objetos "conversam" uns com os outros atravs do envio de mensagens. Orientao a objetos uma maneira de programar que ajuda na organizao e resolve muitos problemas enfrentados pela programao procedural. A seguir so apresentados dois conceitos que so de grande importncai dentro da programao orientada a objetos: herana e polimorfismo.

2.0 HeranaO reuso de cdigo uma das grandes vantagens da programao orientada a objetos. Muito disso se d por uma caracatersticas conhecida como herana que otimiza a produo da aplicao em tempo e linhas de cdigo.Herana um mecanismo que permite que caractersticas comuns a diversas classes sejam fatoradas em uma classe base, ou superclasse. Na Herana temos dois tipos principais de classe:1. Classe Base ou superclasse: A classe que concede as caractersticas a outra classe;2. Classe Derivada ou subclasse: A classe que herda as caractersticas da classe base.Uma classe derivada geralmente uma implementao especifica de um caso mais geral. deve apenas definir as caractersticas que a tornam nica. Observe uma relao de herana no mundo animal. Os animais, sob uma descrio abstrata, apresentam caractersticas, tais como tamanho, raa. Apresentam tambm aspectos comportamentais como mover-se, dormir, comer, respirar, etc. Esses caractersticas e aspectos comportamentais definem a classe dos animais. Analisando os mamferos, que so filhos da classe animais, veremos atributos, alm dos atributos da classe animal, detalhados e especficos a ele, como por exemplo, tipo de dente, pelos e coportamento como, por exemplo, mamar. Assim, podemos afirmar que os mamferos so classificados como uma classe derivada dos animais, que por sua vez, so uma classe base dos mamferos.

2.1 Tipos de heranaEm herana podemos econtrar trs variaes: extenso, especificao e combinao de extensao e especificao. Essas variaes so descritas a seguir.

2.1.1 - ExtensoExtenso um tipo de herana onde a subclasse estende a superclasse, acrescentando novos membros (atributos e/ou mto-dos). Dessa forma, alm das caractersticas presentes na classe base, caracteristicas especficas na clsse derivada so adicionadas. A superclasse permanece inalterada, motivo pelo qual este tipo de relacionamento normalmente referenciado como herana estrita.Veja o seguinte Exemplo 1 que exempla o tipo de herana exteno.

Exemplo 1. A Classe Funcionrio a superclasse e a Classe Gerente subclasseclass Funcionario { String nome; String cpf; double salario; // mtodos devem vir aqui}class Gerente extends Funcionario { int senha; public boolean autentica(int senha) { // implementao do mtodo } }}

Em todo momento que criarmos um objeto do tipo Gerente, este objeto possuir tambm os atributos definidos na classe Funcionario, pois um Gerente um Funcionario, alm de ter um mtodo especfico chamado autentica.

1.4.2 - EspecificaoEspecicao um tipo de herana onde a superclasse especica o que uma subclasse deve oferecer, mas no implementa nenhuma funcionalidade. Veja o Exemplo 2 na linguagem de programao java. Java um tipo de classe chamada interface que como se fosse um contratato a ser cumprido pela subclasse para implementao de mtodos.

Exemplo 2. Exemplo de especificaao em Javainterface Autenticavel { boolean autentica(int senha);}

class Gerente extends Funcionario implements Autenticavel { private int senha; // outros atributos e mtodos public boolean autentica(int senha) { // implementao do mtodo}

No momento em que a classe Gerente implementa a interface Autentica, aquela precisa escrever os mtodos pedidos por esta, nesse caso ela obrigada a implementar o mtodo autentica senha. Ou seja, a interface Autentica especifica o que as suas subclasses Gerente ir implementar.

1.4.2 Combinao de extensao e especificaoNo tipo de herana combinao de extenso e especicao a subclasse herda a classe e uma implementao padro de (pelo menos alguns) mtodos da superclasse. A subclasse pode ento redenir mtodos para especializar o comportamento em relao ao que oferecido pela superclasse, ou ter que oferecer alguma implementao para mtodos que a superclasse tenha declarado, mas no implementado.

3.4 PolimorfismoComo sabemos, as classes filhas herdam as caractersticas (atributos) e aes (mtodos) de seus ancestrais. Entretanto, em alguns casos, necessrio que as aes para um mesmo mtodo seja diferente. Polimorfismo significa muitas formas e em POO o princpio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar mtodos que tm a mesma identicao (assinatura) mas comportamentos distintos, especializados para cada classe derivada. Em outras palavras, o polimorfismo consiste na alterao do funcionamento interno de um mtodo herdado de um objeto pai.Existem quatro tipo de polimorfismo incluso, paramtrico, sobreposio/sobrescrio, sobrecargaNem todas as linguagens de programao implementam todos os tipos de polimorfismo. A seguir so vistos dois tipo de polimorfismo com mais detalhes.

3.4.2 sobreposioSempre que tiver uma classe que herde o mtodo de uma superclasse, poder sobrescrever esse mtodo. O beneficio chave da sobrescrio o recurso de definir um comportamento que seja especifico de determinado tipo de subclasse. Exemplo 3. Exemplo de sobreposio em java1. publicclassAnimal{2. voidcomer(){3. System.out.println("Animalcomendo...");4. }

1. classDogextendsAnimal{2. //Dogsobrescreveuomtodocomer3. voidcomer(){4. System.out.println("Dogcomendo...");5. }6. }

O Exemplo 3, escrito em java, demonstra a subclasse Dog que herda a classe Animal sobrescrevendo o mtodo comer ( ) (linha 3 e 4, respectivamente) dessa classe.

3.4.3 SobrecargaEste tipo de polimorfismo permite a existncia de vrios mtodos de mesmo nome, porm variando no nmero e tipo de argumentos. Veja o Exemplo 4 que mostra um exemplo de sobrecarga na linguagem Java.

Exemplo 4. Exemplo de sobrecarga na linguagem java1. publicclassAnimal{2. voidcomer(intx,Strings){3. System.out.println("Animalcomendo...");4. }5. }

1. classDogextendsAnimal{2. voidcomer(intx,floats){3. System.out.println("Dogcomendo 1...");4. }5. 6. voidcomer(intx,doubles){7. System.out.println("Dogcomendo 2...");8. }9. }

No exemplo acima, a classe Dog, que um subclasse de Animal, sobrecarrega o mtodo comer, pois muda o tipo de dados da varivels dos argumetos presente no mtodo. A deciso sobre qual mtodo ser chamado quando existirem dois ou mais mtodos com o mesmo nome ser feita pelo compilador, que verificar se os tipos de dados passados como argumentos casam com alguma das assinaturas daquele mtodo.RefernciasDEITEL, H. M. Java: Como Programar. 6. ed. So Paulo: Pearson Prentice Hall, 2005.SIERRA, K.; BATES, B.Certificao Sun para Programador JAVA 5 Guia de Estudo.Rio de Janeiro: Alta Books. 2006.