Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I...

58

Transcript of Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I...

Page 1: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.
Page 2: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Curso de Aprendizado Industrial

Desenvolvedor WEB

Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa

Programação Orientada a Objetos

Page 3: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

PROGRAMACÃO ORIENTADA A OBJETOS(cont.)

Page 4: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Significa esconder informações. Objetiva-se com o encapsulamento, proteger o estado e o comportamento interno do objeto, disponibilizando somente uma camada de interface com o ambiente externo para que seja efetuado a comunicação com o objeto.

Encapsulamento ou Encapsulação

Page 5: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Encapsulamento ou Encapsulação

Estado + Comportamento

Interface publica

Representação gráfica de um objeto

Page 6: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  O reflexo do encapsulamento na Orientação a Objeto, é que todo o objeto na sua estrutura elementar possui uma membrana de proteção ao longo de seu núcleo. O acesso ao estado e comportamento só é permitido através da passagem pela camada de comunicação representada pela membrana.

Page 7: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Em programação, somente a assinatura do método, ou seja, a chamada da função está publicada na interface. O conjunto da assinatura de todos os métodos também é conhecida como Application Programming Interface (API).

  Para um desenvolvedor utilizar objetos é necessário que ele conheça somente API dos mesmos. A complexidade de como um objeto foi implementado, esta encapsulada, não sendo relevante neste processo.

Page 8: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Exemplo 1

Visão do mundo real:• Sempre escondemos do mundo externo alguns

atributos pessoais;• Definimos, através de ações se iremos ou não

externar estes atributos.

Salário

getSalário

Salário*0.3

O CunhadoSalário/2

O Leão do Imposto de Renda

salário/10

A namoradinha

Page 9: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Pode-se ilustrar esta situação através da seguinte análise. Quando se dirige um carro é necessário compreender como o motor funciona com todas as suas “milhares” de peças.

  O motorista abstrai a complexidade interna do motor e fixa-se na interface disponibilizada por quem construiu o Carro, portanto as interfaces seriam os pedais de aceleração, freio e embreagem, painel com medidor de velocidade,etc.

Exemplo 2

Page 10: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Pessoas Objeto complexo

Pessoas Objeto menos complexo

Escopo do Mundo Real Escopo do Mundo Real

Abstração de um objeto do mundo real

Page 11: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  A definição básica sobre a abstração é supressão de detalhe, visando controlar a complexidade das características essenciais. Na orientação a Objeto pode-se aplicar este conceito no processo de especificação, construção e uso de classe.

  No processo de especificação é necessário, pois os objetos identificados no mundo real normalmente são muitos complexos .

Uso da Abstração

Page 12: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Por exemplo: Imagine o que seria modelar uma “ classe pessoa” com todos os atributos e comportamentos?

Para a redução da complexidade da classe pessoa é necessário delimitar o escopo com base no domínio do sistema que esta pessoa será modelada,considerando somente os aspectos relevantes.

Page 13: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Por exemplo    Para um sistema acadêmico uma pessoa pode representar um aluno, sendo neste escopo somente necessário os atributos nome, matricula e idade. As demais características que não são essenciais nesse contexto serão abstratas .

  Como os detalhes ficam internos e escondidos no objeto. Pessoa pode-se subentender que este objeto possui quaisquer características de uma Pessoa do mundo real.

Page 14: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  A abstração também se aplica na construção de uma classe.

  Uma primeira etapa é definir toda a interface da classe, ou seja como os componentes externos irão interagir com a classe e qual o comportamento esperado pela mesma.

  O objetivo nesta etapa é somente a de definir a interface, ficando no que a classe deve fazer e não como a interface será implementada.

Page 15: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Muitas vezes definimos uma classe que não representa verdadeiramente algo do mundo real que precise ser instanciado (usado em programas). É o caso da classe Funcionário criada neste exemplo. Na prática, objetos do tipo Funcionario nunca serão usados, pois instanciaremos apenas objetos a partir de Gerente e Secretaria. Funcionário é apenas uma classe que surgiu da necessidade de uma generalização. Classes assim são chamadas de abstratas.

Exemplo de abstração

Page 16: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Portanto, abstrai-se a implementação interna e concentra-se na especificação da interface que representa o protocolo de comunicação com o externo.

  Um critério de programação para a redução de acoplamento é programar para uma interface e não para uma implementação. Com a interface bem definida, pode-se abstrair o mundo externo e focar-se em como realizar o que foi especificado na interface.

Page 17: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Uma classe pode representar genericamente uma ou mais classe. Assim, classes podem ser definidas a partir de uma classe pai. O recurso de herança estabelece que uma classe que herda de outra classe possui todas as suas características, atributos e comportamentos.

  Semelhante a herança genética do mundo real, a onde filhos mantém as características dos pais, a classe pai também denominado com superclasse, pois passa todas as características para a classe filha.

Herança de Classe

Page 18: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  A classe filha ou subclasse além de conter os atributos e comportamentos da superclasse, pode acrescentar algo especifico a sua funcionalidade ou reescrever ou redefinir métodos da superclasse.

  O termo overridden(reescrever) é utilizado quando a subclasse reescreve ou redefine um método herdado da subclasse

Page 19: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.
Page 20: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Exemplo 2

Page 21: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Podem ser um pouco confuso, porque a subclasse tem mais características que a superclasse

  Subclasse é mais específica que a superclasse

  Toda subclasse é um objeto da sua superclasse, mas não vice-versa.

  Usa-se formas de estruturas hierárquicas (árvores)

Page 22: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Uma superclasse pode ser ainda definida como uma classe concreta (como quaisquer classe convencional) ou uma Abstrata por definição não permitindo a criação de objetos, portanto não é possível a criação de instâncias a partir desta classe.

Page 23: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

A criação de um objeto a partir de uma classe é chamada de processo de instanciação.

A instanciação na realidade corresponde à alocação da memória para armazenar informações de um objeto, semelhante ao que ocorre na declaração de uma variável qualquer.

Para realizar a instanciação de um objeto qualquer, é usado o operador new(em java).

Enquanto a classe representa um modelo abstrato que serve apenas como base, os objetos representam modelos concretos.

Page 24: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

A definição de uma classe como abstrata pode parecer algo estranho, visto que uma estrutura das funções principais de uma classe e a geração de objetos .

A declaração de classe abstrata é algo comum e deve ser utilizada quando não faz sentido a geração de instancias da superclasse .

Page 25: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Métodos abstratos não possuem implementação e são assinadas na classe abstrata.

  As classes que herdam da classe abstrata, são obrigadas a implementar os métodos abstratos herdados da superclasse.

Métodos Abstratos

Page 26: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Tenho a classe abstrata Funcionario, com o método abstrato getBonificacao; as classes Gerente e Presidente estendendo Funcionario e implementando o método getBonificacao; e, por fim, a classe Diretor, que estende Gerente, mas não implementa o método getBonificacao.

Exemplo

Page 27: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  De forma objetiva, uma classe abstrata serve apenas como modelo para uma classe concreta (classe que comumente usamos).

  Os métodos abstratos definidos em uma classe abstrata o que devem obrigatoriamente ser implementados em uma classe concreta. Mas se uma classe abstrata herdar outra classe abstrata, a classe que herda não precisa implementar os métodos abstratos.

  Para criarmos uma classe ou método abstrato usamos a palavra-chave abstract.

Analise !

Page 28: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Associados ao conceito de herança apresentam-se os conceitos de Especialização e Generalização.

  A especialização ocorre quando uma subclasse, além de herdar da superclasse, acrescenta características especificas diferente da superclasse.

  Já o conceito de generalização procede quando existem classe que possuem características em comum e cria-se uma classe genérica, ou seja uma superclasse que englobe essas características.

Especialização e Generalização

Page 29: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Duas subclasse PessoaFisica e PessoaJuridica que possuem atributos e um método em comum.Neste caso aplica-se a generalização sobre os elementos em comum encapsulando - os em uma superclasse Pessoa que é uma abstração das subclasses.

  Os atributos e métodos particulares das subclasses PessoaFisica e PessoaJuridica é a especialização da classe Pessoa.

Exemplo

Page 30: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Generalização

Especialização

Representação gráfica da Especialização e Generalização.

Exemplo 1

Page 31: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Exemplo 2

Page 32: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  O uso de heranças é um recurso poderoso, mas mal aplicado gera graves problemas nos projetos Orientados a Objetos.

  Muitos Professores já apresentaram ou ainda apresentam a herança como o principal recurso da Orientação a Objetos e a forma ideal para alcançar a reutilização .

  Orientação a objetos vai muito além de heranças e que a reutilização pode ser alcançada através de outros formas.

Page 33: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Para determinar o nível de acesso dos elementos de uma classe, são usados os qualificadores de acesso public, private e protected. Por meio das restrições de acesso é possível assegurar que certas variáveis de instância tenham valores restritos que só podem ser acessados da própria classe e não por intermédio de classes externas, mantendo uma certa segurança com relação à integridade do valor armazenado.

  Dica: sempre defina os atributos de uma classe como privados, a não ser que tenha uma boa justificativa para não serem.

Nível de Acesso

Page 34: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Tipos de Qualificadores de acessos

public

private

protected

<default>

Estes atributos e métodos são sempre acessíveis em todos os métodos de todas as classes. Este é o nível menos rígido de encapsulamento, que equivale a não encapsular.

Estes atributos e métodos são acessíveis somente nos métodos (todos) da própria classe. Este é o nível mais rígido de encapsulamento.

Estes atributos e métodos são acessíveis no pacote, nos métodos da própria classe e suas subclasses, o que será visto em Herança.

Visível no pacote e na classe.

Page 35: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Exemplo em Java

public class Produto { int codigo; String nome; double preco; //métodos

}

Page 36: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  A forma como os objetos colaboram em um sistema Orientado a objetos é feito basicamente através de troca de mensagens.

  As mensagens são utilizadas para comunicação entre objetos para a troca de dados e realização de ações.

  Ações são implementadas através de métodos que são publicadas nas camadas de interface do objeto.

Métodos, Métodos Construtor, Sobrecarga e Polimorfismo

Page 37: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Em programação os métodos são as funções que possuem um parâmetro de retorno ou não, sendo neste caso do tipo void. Um método possui também um nome e seus parâmetros

Page 38: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Exemplos:

Métodos

Page 39: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Por exemplo:  O método public double getDistancia(int x, int y) enumerando os seus elementos estruturais.

public double getDistancia(int x, int y)

Modificador Parâmetro de retorno

Nome do Método

Conjunto de Parâmetros de entrada

Page 40: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

public class Pessoa{// Atributos

private String nome;private String sexo;

// Métodospublic void andar( ){ System.out.println[nome + “ está andando...”]; }}

Page 41: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  O conjunto nome mais parâmetros também é conhecido como a assinatura do método Ou seja uma assinatura é um método

Em uma classe não é possível a ocorrência de métodos com a mesma assinatura, porém podem existir métodos com o mesmo nome, mas parâmetros diferentes.

Page 42: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

class Conta { // ... outros métodos e atributos ...

boolean saca(double valor) { if (this.saldo < valor) { return false; } else { this.saldo = this.saldo - valor; return true; } } }

Outro Exemplo

Page 43: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  This é usado para fazer auto-referência ao próprio contexto em que se encontra. Resumidamente, this sempre será a própria classe ou o objeto já instanciado.

  Esse conceito de auto-referência é importante para que possamos criar métodos construtores sobrecarregados e métodos acessores mais facilmente.

Comando em Java

Page 44: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  O método construtor é um método especial que está presente em todas as classes.

  Este método deve possuir o mesmo nome da classe.

  Por exemplo:  A classe Ponto poderia ter um método construtor public Ponto() .

  Além disso, diferente de outros métodos , o método construtor não possui parâmetros de retorno, nem mesmo a declaração void.

Método Construtor

Page 45: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

public class Pessoa{ // Atributos private String nome; private String sexo; // construtores Pessoa [String nome, String sexo]{ this.nome = nome; this.sexo =sexo; // Métodos public void andar( ){ System.out.println(nome + “ está andando...”); }}

Exemplo

Page 46: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Em uma classe podem existir vários métodos construtores desde que possuam parâmetros diferentes.Outras característica importante é em relação a sua utilização.

  Quando o objeto nasce , ou seja é instanciada a partir de uma classe o primeiro método a ser executado é o método construtor.

  Como foi mencionado, uma classe obrigatoriamente tem pelo menos um método construtor.

Page 47: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  O conceito Sobrecarga ou overloanding é definido com métodos em uma classe que possuem o mesmo nome, mas parâmetros diferentes.

  Ressaltando que pode-se ter vários métodos com o mesmo nome, pois o que identifica um método é o seu nome associado com os seus parâmetros.

  Portanto, para uma classe Ponto existe a ocorrência de sobrecarga de construtores quando está têm os métodos public Ponto() e public Ponto(int x , int y).

  Observa-se a ocorrência de sobrecarga em métodos construtores ou não.

Sobrecarga ou overloanding

Page 48: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

A sobrecarga está sendo aplicada, por exemplo, quando são declarados dois construtores para uma mesma classe, sendo um sem parâmetros e outro com parâmetros.

private double saldo; public Conta(){}public Conta(double saldo){this.saldo=saldo }}Podemos, então , criar objetos dessa classe de dois modos :Conta c= new Conta(); ou Conta c= new Conta(100); inicializando o saldo com algum valor

Page 49: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Objetos no mundo real que estão sobre uma mesma hierarquia podem possuir comportamentos definidos pelos seus pais, mas realizá-las de forma particular.

  Definimos Polimorfismo como um princípio a partir do qual as classes derivadas de uma única classe base são capazes de invocar os métodos que, embora apresentem a mesma assinatura, comportam-se de maneira diferente para cada uma das classes derivadas.

Polimofismo

Page 50: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Com o Polimorfismo, os mesmos atributos e objetos podem ser utilizados em objetos distintos, porém,

com implementações lógicas diferentes.

Exemplos: Podemos assumir que uma bola de futebol e uma camisa da seleção brasileira são artigos esportivos, mais que o cálculo deles em uma venda é calculado de formas diferentes.

Polimofismo

Page 51: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Uma superclasse FiguraGeometrica com o método public double calculeArea(), notoriamente esta superclasse não tem como responder a este método, pois a função desta classe é ser um conceito genérico.

  O objetivo desta classe é definir que todo figura geométrica tem o comportamento de calculo de área .

  Já a subclasse Quadrado e Triangulo vão possuir o método de calculo de área , sendo que a implementação para cada classe se dará de forma particular.

  A importância de definir um conceito padronizado é a facilidade de absorver futuras mudanças.

Outro Exemplo

Page 52: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Podemos dizer que uma classe chamada Vendedor e outra chamada Diretor podem ter como base uma classe chamada Pessoa, com um método chamado CalcularVendas.

Se este método (definido na classe base) se comportar de maneira diferente para as chamadas feitas a partir de uma instância de Vendedor e para as chamadas feitas a partir de uma instância de Diretor, ele será considerado um método polimórfico, ou seja, um método de várias formas.

Outro Exemplo

Page 53: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Assim podemos ter na classe base o método CalcularVendas:

public decimal CalcularVendas() {

decimal valorUnitario = decimal.MinValue; decimal produtosVendidos = decimal.MinValue;

return valorUnitario * produtosVendidos;

}

Page 54: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Na classe Vendedor temos o mesmo método, mais com a codificação diferente:

public decimal CalcularVendas() { decimal valorUnitario = 50; decimal produtosVendidos = 1500; return valorUnitario * produtosVendidos; }

Page 55: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

 O mesmo ocorre na classe Diretor:

public decimal CalcularVendas() { decimal valorUnitario = 150; decimal produtosVendidos = 3800; decimal taxaAdicional = 100; return taxaAdicional + (valorUnitario produtosVendidos); } Assim temos um mesmo método, com diferentes formas.

Page 56: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Uma nova classe Retângulo que herda de FiguraGeometrica tem também o método public double calculoArea() apesar do método possuir a mesma assinatura a sua realização seguira as características da classe Retângulo.

  Conclui-se, que um comportamento pode ter varias formas de ser respondido a depender do tipo de objeto, denominando-se como polimórfico.

Outro Exemplo

Page 57: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

  Analise !!

  A vantagem do polimorfismo reflete-se no baixo acoplamento no projeto .

  Um objeto pode estar acoplado a um objeto sem necessariamente saber o seu tipo .

  E o impacto com as mudanças no programa serão mínimas.

Page 58: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Programação Orientada a.

Desafio!!

Responder Lista 1