SlideShare uma empresa Scribd logo
http://www.takenami.com.br




Orientação a Objetos
       Igor Takenami




       Versão 1.0
http://www.takenami.com.br



                      Histórico
• SIMULA
 - Anos 60
 - Utilizada para simulações
 - Conceitos de Classe e SubClasse
• SMALLTALK
 - Anos 70
 - Desenvolvida pela XEROX
 - Primeira linguagem orientada a objetos de fato
 - Cada elemento do SMALLTALK é tratado como um objeto
http://www.takenami.com.br



                 Analogia Biológica
• Alan Kay,
  - Um dos pais do paradigma da orientação a objetos
  - Analogia biológica
• Como seria um sistema de software que funcionasse como
  um ser vivo?
• Cada “célula” interagiria com outras células através do envio
  de mensagens para realizar um objetivo comum
• Adicionalmente, cada célula se comportaria como uma
  unidade autónoma
• Construir um sistema de software a partir de agentes
  autónomos que interagem entre si
http://www.takenami.com.br



   Princípios da Orientação a Objetos
• Qualquer coisa é um objeto
• Objetos realizam tarefas através da troca de
 mensagens com outros objetos
• Cada objeto pertence a uma determinada classe
• Uma classe agrupa objetos similares
• A classe define as características e
 comportamento associado ao objeto
http://www.takenami.com.br



   Programação Orientação a Objetos
• Sistema de software como um conjunto de
 agentes interconectados
• Agentes = Objetos
• Cada objeto é responsável por realizar tarefas
 específicas
• É através da interação entre objetos que uma
 tarefa computacional é realizada
http://www.takenami.com.br




 Linguagens
Orientadas a
  Objetos
     Simula
   Smalltalk
       C++
  Object Pascal
       Java
      .NET
http://www.takenami.com.br




Um sistema Orientado a Objetos é
uma simulação de um cenário real
     (vida) ou fictício (filme)
http://www.takenami.com.br




Para construir sistemas Orientados a
 Objetos é necessário entender os
  conceitos por trás do paradigma
http://www.takenami.com.br



                   Objeto
• Unidade que utilizamos para representar
 abstrações em um sistema computacional
• No mundo real objeto é tudo que podemos
 tocar
• No mundo imaginário um objeto é tudo que
 podemos representar
http://www.takenami.com.br




A interação entre estes objetos formam grupo
 de objetos mais complexos que agrupado a
   outros grupos de objetos complexos dão
origem ao sistemas reais, como por exemplo o
         funcionamento de um carro
http://www.takenami.com.br



      Características dos Objetos
• Único
• Possui atributos que definem caraterísticas e/ou
 estado
• Possuem capacidade de realizar ações que
 chamamos de métodos ou funções
• Normalmente se diz que um objeto é uma
 instância de uma Classe.
• O que é uma Classe ?
http://www.takenami.com.br



                    Classe
• Estrutura (molde) que define os atributos e/ou
 estados de um conjunto de objetos com
 características similares.
• Define o comportamento de seus objetos (ações
 que o objeto pode fazer) através de métodos.
• Descreve os serviços (ações) providos por seus
 objetos
• Quais informações eles podem armazenar
http://www.takenami.com.br



        Atributos de uma Classe
• Caraterísticas e/ou estado de uma classe
• Após a classe ser instanciada em um objeto os
 atributos vão receber valores (caraterísticas e/ou
 estados) que definem o objeto
http://www.takenami.com.br



        Métodos de uma Classe
• Conjunto de ações que um determinado objeto
 pode executar
• Definem o que um objeto pode fazer
• São acionados por outros objetos
 - Os objetos se comunicam através de métodos
 - Troca de mensagens
http://www.takenami.com.br



           Construtor da Classe
• Método especial definido na classe e executado
 no momento que o objeto é instanciado
• Diferente de outro método pois não possui
 retorno
• Deve ter o mesmo nome da classe.
• Pode receber parâmetros
 - Normalmente utilizados para inicializar os valores
   dos atributos do objeto
http://www.takenami.com.br




Para representar classes e objetos
   em modelos computacionais
  podemos utilizar uma notação
          chamada UML
http://www.takenami.com.br



                    UML
• Unified Modeling Language
• Linguagem para representação de modelos
 visuais com um significado especifico e
 padronizado
• UML não é uma linguagem de programação
• Os modelos são representados através de
 diagramas que possuem semântica própria
• O diagrama que representa a descrição das
 classes é o Diagrama de Classes
http://www.takenami.com.br



Estereótipo de uma Classe em UML


         Nome da Classe

        Atributos da Classe

        Métodos da Classe
http://www.takenami.com.br



Estrutura básica de uma classe
 public class Carro {

     String cor;                               Atributos
     String marca;
     int velocidade;

     public Carro(String cor, String marca){
       this.cor = cor;
       this.marca = marca;                     Construtor
       velocidade = 0;
     }

     public void acelerar(){
       velocidade++;
     }                                         Métodos
     public void parar(){
       velocidade = 0;
     }

 }
http://www.takenami.com.br



Representação UML
http://www.takenami.com.br



 Instanciando uma Classe

public class Main {
  public static void main(String[] args) {
      Carro fusca = new Carro("preto", "volkswagen");
      fusca.acelerar();
      fusca.acelerar();
      fusca.parar();
  }
}
http://www.takenami.com.br




  Abstração
Depende do Observador !!
http://www.takenami.com.br




     Abstração
   Uma abstração é qualquer
 modelo que inclui os aspectos
 relevantes de alguma coisa, ao
mesmo tempo em que ignora os
      menos importantes
http://www.takenami.com.br



                  Abstração
• Representa as características que devem conter
 em uma classe para atender a um determinado
 problema
• Somente as características necessárias para
 atender a um determinado problema
• Representação de um determinado ponto de
 vista ou abstração do problema
http://www.takenami.com.br




Para desenvolver aplicações O.O. é necessário
   identificar os objetos na vira real, extrair a
classe que aquele objeto pertence e selecionar
os atributos e métodos que serão necessários
      levando em consideração o modelo
  computacional que está sendo desenvolvido
http://www.takenami.com.br




O modelo O.O. é o conjunto de classes
   que visam resolver um problema
     computacional levando em
 consideração como este problema é
      abordado no mundo real
http://www.takenami.com.br



                 Associações
• Forma como uma classe se relaciona com outra
 classe
• Uma classe pode conter atributos que geram
 instâncias de outra classe
 - Uma classe pode conter outra classe como atributo
 - Quando isto ocorre dizemos que uma classe possui
   outra classe associada a ela
http://www.takenami.com.br



                                              Associações
public class Carro {                                     public class Motor {
                                                           int cavalos;
    String cor;                                            int rotacoes;             Observe que o
    String marca;
    int velocidade;                                                                 construtor não é
                                                             public Motor(){           necessário
    Motor ferrari;
                                                             }
    public Carro(String cor, String marca){
                                                             public void diminuir_giro(){
        this.cor = cor;
        this.marca = marca;                                    System.out.println("Diminuindo as rotações do motor.");
        velocidade = 0;                                        rotacoes-=1000;
                                                             }
        ferrari = new Motor();
    }                                                        public void aumentar_giro(){
    public void acelerar(){                                    System.out.println("Aumentando as rotações do motor.");
      ferrari.aumentar_giro();                                 rotacoes+=1000;
      velocidade = ferrari.trabalho_do_motor() / 1000;       }
    }
                                                             public int trabalho_do_motor(){
    public void parar(){
                                                               return rotacoes * cavalos;
      velocidade = 0;
    }                                                        }
                                                         }
}
http://www.takenami.com.br



Representação UML
http://www.takenami.com.br



              Encapsulamento
• Separar o programa em partes, tornando cada
 parte mais isolada possível uma da outra
• A idéia é tornar o software mais flexível, fácil de
 modificar e de criar novas implementações
• Permite utilizar o objeto de uma classe sem
 necessariamente conhecer sua implementação
• Protege o acesso direto aos atributos de uma
 instância fora da classe onde estes foram criados
http://www.takenami.com.br




     Uma grande vantagem do
  encapsulamento é que toda parte
encapsulada pode ser modificada sem
que os usuários da classe em questão
           sejam afetados
http://www.takenami.com.br



                   Herança
• Capacidade que uma classe tem de herdar as
 características e comportamentos de outra
 classe
• Classe pai é chamada de superclasse e a filha de
 subclasse
• Em Java só é permitido herdar de uma única
 classe, ou seja, não permite herança múltipla
http://www.takenami.com.br




O objetivo da herança é especializar o
entendimento de uma classe criando
       novas características e
 comportamentos que vão além da
             superclasse
http://www.takenami.com.br




Ao mesmo tempo que a especialização
amplia o entendimento de uma classe, a
 generalização vai no sentido inverso e
define um modelo menos especializado
            e mais genérico
http://www.takenami.com.br



                              Herança
Superclasse de Morcego - Generalização        Subclasse de Mamifero - Especialização


public class Mamifero {                          public class Morcego extends Mamifero {
  int altura;                                      int tamanho_presa;
  double peso;                                     public void voar(){
  public void mamar(){                               System.out.println("Morcego Voando");
    System.out.println("Mamifero mamando");        }
  }                                              }
}
http://www.takenami.com.br



              Classe Morcego
• Quais as características de morcego ?
 - altura
 - peso
 - tamanho_presa
• Quais ações o morcego pode fazer ?
 - mamar
 - voar
http://www.takenami.com.br




  Se usarmos os princípios de lógica
 podemos dizer que todo morcego é
   mamífero porém NÃO podemos
afirmar que todo mamífero é morcego
http://www.takenami.com.br



                     Observe
   1) Mamifero animal_mamifero = new Morcego();
   2) Morcego batman = new Mamifero();

• Com base no que foi dito até aqui podemos deduzir que o item
  2 deve causar um erro já que não é possível garantir que todo
  mamífero seja um morcego
• Já o item 1 pode parecer estranho, pois a variável é do tipo
  Mamífero e o objeto para o qual a variável se refere é do tipo
  Morcego
• Devemos saber que toda variável pode receber um objeto que
  seja compatível com o seu tipo e neste caso todo Morcego
  CERTAMENTE é um Mamífero
http://www.takenami.com.br



O código apresentado funciona?


Mamifero animal_mamifero = new Morcego();
animal_mamifero.mamar();
animal_mamifero.voar();
Morcego batman = (Morcego) animal_mamifero;
batman.voar();
http://www.takenami.com.br



                  Conclusão
• Todo Morcego é um Mamífero, porem não pode
 realizar todas as ações de um morcego
 - A variável que recebe o objeto é do tipo Mamífero
• Para o Morcego voar é necessário criar uma
 nova variável do tipo Morcego e atribuir o objeto
 que estava na variável animal_mamifero
• Este tipo de operação recebe o nome de TYPE
 CAST
http://www.takenami.com.br



Representação UML
http://www.takenami.com.br



                                     Sobrescrita
• Substitui o comportamento de uma subclasse
 quando herdada da superclasse
• Na prática a sobrescrita reescreve um método
 que já tinha sido definido na superclasse

  public class Mamifero{                          public class Golfinho extends Mamifero{

      ...                                             ...

      public void andar(){                            public void andar(){
        System.out.println("Mamifero andando");         System.out.println("Golfinho Nadando");
      }                                               }

  }                                               }
http://www.takenami.com.br



                 Sobrecarga
• É a capacidade de definir métodos com o mesmo
 nome
 - Possuem a mesma funcionalidade
• Necessário que a assinatura seja diferente
 - A mudança na assinatura ocorre alterando a
   quantidade e/ou tipo de parâmetros que um método
   recebe
http://www.takenami.com.br



Exemplo de Sobrecarga
     public int somar(int v1, int v2){
       return v1 + v2;
     }

     public int operar(int v1, int v2){
       return somar(v1, v2);
     }

     public int operar (char op, int v1, int v2){
       switch(op){
           case '+':
              return somar(v1, v2);
              break;
           case '-':
              return subtrair(v1, v2);
       }
     }

Mais conteúdo relacionado

Mais procurados

Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
Daniel Brandão
 
POO - Aula 09 - Herança
POO - Aula 09 - HerançaPOO - Aula 09 - Herança
POO - Aula 09 - Herança
Felipe J. R. Vieira
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
Elaine Cecília Gatto
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
Daniel Brandão
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetossoncino
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
Ludimila Monjardim Casagrande
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento WebSérgio Souza Costa
 
Programação orientada a objetos – II
Programação orientada a objetos – IIProgramação orientada a objetos – II
Programação orientada a objetos – II
Gabriel Faustino
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Rodrigo Bueno Santa Maria, BS, MBA
 
POO - Aula 1
POO - Aula 1POO - Aula 1
POO - Aula 1
Diego Armando
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5
César Augusto Pessôa
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 
Aula 3 introducao a orientação a objetos
Aula 3   introducao a orientação a objetosAula 3   introducao a orientação a objetos
Aula 3 introducao a orientação a objetos
Rafael Pinheiro
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
Leonardo Melo Santos
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
Marconi Rodrigues
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
Arthur Emanuel
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
Vinícius de Paula
 
Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosEvandro Agnes
 

Mais procurados (20)

Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
POO - Aula 09 - Herança
POO - Aula 09 - HerançaPOO - Aula 09 - Herança
POO - Aula 09 - Herança
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Programação orientada a objetos – II
Programação orientada a objetos – IIProgramação orientada a objetos – II
Programação orientada a objetos – II
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
 
POO - Aula 1
POO - Aula 1POO - Aula 1
POO - Aula 1
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Aula 3 introducao a orientação a objetos
Aula 3   introducao a orientação a objetosAula 3   introducao a orientação a objetos
Aula 3 introducao a orientação a objetos
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
POO - 06 - Encapsulamento
POO - 06 - EncapsulamentoPOO - 06 - Encapsulamento
POO - 06 - Encapsulamento
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
 
Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetos
 

Destaque

Introdução a Gerência de Configuração
Introdução a Gerência de ConfiguraçãoIntrodução a Gerência de Configuração
Introdução a Gerência de Configuração
Igor Takenami
 
SOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a ServiçosSOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a Serviçosalinebicudo
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de SoftwareIgor Takenami
 
Introdução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a ServiçosIntrodução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a Serviços
Igor Takenami
 
Desenvolvimento para iOS
Desenvolvimento para iOSDesenvolvimento para iOS
Desenvolvimento para iOS
Igor Takenami
 
Introdução a Qualidade de Software
Introdução a Qualidade de SoftwareIntrodução a Qualidade de Software
Introdução a Qualidade de SoftwareIgor Takenami
 
Introdução ao RUP
Introdução ao RUPIntrodução ao RUP
Introdução ao RUP
Igor Takenami
 
Arquitetura Orientada a Servicos (SOA)
Arquitetura Orientada a Servicos (SOA)Arquitetura Orientada a Servicos (SOA)
Arquitetura Orientada a Servicos (SOA)
Marcelo Sávio
 
Introdução a Arquitetura de Sistemas
Introdução a Arquitetura de SistemasIntrodução a Arquitetura de Sistemas
Introdução a Arquitetura de Sistemas
Igor Takenami
 

Destaque (9)

Introdução a Gerência de Configuração
Introdução a Gerência de ConfiguraçãoIntrodução a Gerência de Configuração
Introdução a Gerência de Configuração
 
SOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a ServiçosSOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a Serviços
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de Software
 
Introdução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a ServiçosIntrodução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a Serviços
 
Desenvolvimento para iOS
Desenvolvimento para iOSDesenvolvimento para iOS
Desenvolvimento para iOS
 
Introdução a Qualidade de Software
Introdução a Qualidade de SoftwareIntrodução a Qualidade de Software
Introdução a Qualidade de Software
 
Introdução ao RUP
Introdução ao RUPIntrodução ao RUP
Introdução ao RUP
 
Arquitetura Orientada a Servicos (SOA)
Arquitetura Orientada a Servicos (SOA)Arquitetura Orientada a Servicos (SOA)
Arquitetura Orientada a Servicos (SOA)
 
Introdução a Arquitetura de Sistemas
Introdução a Arquitetura de SistemasIntrodução a Arquitetura de Sistemas
Introdução a Arquitetura de Sistemas
 

Semelhante a Programação Orientada a Objetos

Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
Secretaria de Educação de Goiás
 
OOP Java
OOP JavaOOP Java
OOP Java
Jorge Cardoso
 
08 modificadores static
08   modificadores static08   modificadores static
08 modificadores static
Artur Todeschini
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1
Elaine Cecília Gatto
 
Apostila de uml
Apostila de umlApostila de uml
Apostila de umlaudiclerio
 
Patterns
PatternsPatterns
Patterns
gersaoliveira
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
Juliano Weber
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
Saulo Arruda
 
Java: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceJava: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, Interface
Arthur Emanuel
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
Luis Ferreira
 
Mini aula-java
Mini aula-javaMini aula-java
Mini aula-java
Wanderlei Silva do Carmo
 
Prototype1 - thiago
Prototype1 - thiagoPrototype1 - thiago
Prototype1 - thiagotceufrasio1
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
John Godoi
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gof
Yan Justino
 
v
vv
Java Básico :: Orientação a objetos
Java Básico :: Orientação a objetosJava Básico :: Orientação a objetos
Java Básico :: Orientação a objetos
Wesley R. Bezerra
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
elliando dias
 
05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - I
Fabio Moura Pereira
 

Semelhante a Programação Orientada a Objetos (20)

Java7
Java7Java7
Java7
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
OOP Java
OOP JavaOOP Java
OOP Java
 
08 modificadores static
08   modificadores static08   modificadores static
08 modificadores static
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
Apostila de uml
Apostila de umlApostila de uml
Apostila de uml
 
Patterns
PatternsPatterns
Patterns
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
Java: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceJava: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, Interface
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Mini aula-java
Mini aula-javaMini aula-java
Mini aula-java
 
Prototype1 - thiago
Prototype1 - thiagoPrototype1 - thiago
Prototype1 - thiago
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gof
 
v
vv
v
 
Java Básico :: Orientação a objetos
Java Básico :: Orientação a objetosJava Básico :: Orientação a objetos
Java Básico :: Orientação a objetos
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
 
05 - Sincronização de Threads - I
05 - Sincronização de Threads - I05 - Sincronização de Threads - I
05 - Sincronização de Threads - I
 

Último

Saudações e como se apresentar em português
Saudações e como se apresentar em portuguêsSaudações e como se apresentar em português
Saudações e como se apresentar em português
jacctradutora
 
Profissão de Sociólogo - Bourdieu et al.
Profissão de Sociólogo - Bourdieu et al.Profissão de Sociólogo - Bourdieu et al.
Profissão de Sociólogo - Bourdieu et al.
FelipeCavalcantiFerr
 
Junho Violeta - Sugestão de Ações na Igreja
Junho Violeta - Sugestão de Ações na IgrejaJunho Violeta - Sugestão de Ações na Igreja
Junho Violeta - Sugestão de Ações na Igreja
Comando Resgatai
 
Unificação da Itália e a formação da Alemanha
Unificação da Itália e a formação da AlemanhaUnificação da Itália e a formação da Alemanha
Unificação da Itália e a formação da Alemanha
Acrópole - História & Educação
 
UFCD_8298_Cozinha criativa_índice do manual
UFCD_8298_Cozinha criativa_índice do manualUFCD_8298_Cozinha criativa_índice do manual
UFCD_8298_Cozinha criativa_índice do manual
Manuais Formação
 
proposta curricular ou plano de cursode lingua portuguesa eja anos finais ( ...
proposta curricular  ou plano de cursode lingua portuguesa eja anos finais ( ...proposta curricular  ou plano de cursode lingua portuguesa eja anos finais ( ...
proposta curricular ou plano de cursode lingua portuguesa eja anos finais ( ...
Escola Municipal Jesus Cristo
 
CIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptx
CIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptxCIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptx
CIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptx
MariaSantos298247
 
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
"Está o lascivo e   doce passarinho " de Luís Vaz de Camões"Está o lascivo e   doce passarinho " de Luís Vaz de Camões
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
goncalopecurto
 
DeClara n.º 76 MAIO 2024, o jornal digital do Agrupamento de Escolas Clara de...
DeClara n.º 76 MAIO 2024, o jornal digital do Agrupamento de Escolas Clara de...DeClara n.º 76 MAIO 2024, o jornal digital do Agrupamento de Escolas Clara de...
DeClara n.º 76 MAIO 2024, o jornal digital do Agrupamento de Escolas Clara de...
IsabelPereira2010
 
o que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sulo que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sul
CarlaInsStaub
 
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdfProjeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Bibliotecas Infante D. Henrique
 
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptxSlides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
LuizHenriquedeAlmeid6
 
Slide Internet Slang ingles 9 ano f.pptx
Slide Internet Slang ingles 9 ano f.pptxSlide Internet Slang ingles 9 ano f.pptx
Slide Internet Slang ingles 9 ano f.pptx
JOYCEAlves762488
 
Evolução - Teorias evolucionistas - Darwin e Lamarck
Evolução - Teorias evolucionistas - Darwin e LamarckEvolução - Teorias evolucionistas - Darwin e Lamarck
Evolução - Teorias evolucionistas - Darwin e Lamarck
luanakranz
 
Caça-palavras - ortografia S, SS, X, C e Z
Caça-palavras - ortografia  S, SS, X, C e ZCaça-palavras - ortografia  S, SS, X, C e Z
Caça-palavras - ortografia S, SS, X, C e Z
Mary Alvarenga
 
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
PROPOSTA CURRICULAR  EDUCACAO FISICA.docxPROPOSTA CURRICULAR  EDUCACAO FISICA.docx
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
Escola Municipal Jesus Cristo
 
curso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdfcurso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdf
LeandroTelesRocha2
 
América Latina: Da Independência à Consolidação dos Estados Nacionais
América Latina: Da Independência à Consolidação dos Estados NacionaisAmérica Latina: Da Independência à Consolidação dos Estados Nacionais
América Latina: Da Independência à Consolidação dos Estados Nacionais
Valéria Shoujofan
 
Acróstico - Reciclar é preciso
Acróstico   -  Reciclar é preciso Acróstico   -  Reciclar é preciso
Acróstico - Reciclar é preciso
Mary Alvarenga
 
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptxSlides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
LuizHenriquedeAlmeid6
 

Último (20)

Saudações e como se apresentar em português
Saudações e como se apresentar em portuguêsSaudações e como se apresentar em português
Saudações e como se apresentar em português
 
Profissão de Sociólogo - Bourdieu et al.
Profissão de Sociólogo - Bourdieu et al.Profissão de Sociólogo - Bourdieu et al.
Profissão de Sociólogo - Bourdieu et al.
 
Junho Violeta - Sugestão de Ações na Igreja
Junho Violeta - Sugestão de Ações na IgrejaJunho Violeta - Sugestão de Ações na Igreja
Junho Violeta - Sugestão de Ações na Igreja
 
Unificação da Itália e a formação da Alemanha
Unificação da Itália e a formação da AlemanhaUnificação da Itália e a formação da Alemanha
Unificação da Itália e a formação da Alemanha
 
UFCD_8298_Cozinha criativa_índice do manual
UFCD_8298_Cozinha criativa_índice do manualUFCD_8298_Cozinha criativa_índice do manual
UFCD_8298_Cozinha criativa_índice do manual
 
proposta curricular ou plano de cursode lingua portuguesa eja anos finais ( ...
proposta curricular  ou plano de cursode lingua portuguesa eja anos finais ( ...proposta curricular  ou plano de cursode lingua portuguesa eja anos finais ( ...
proposta curricular ou plano de cursode lingua portuguesa eja anos finais ( ...
 
CIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptx
CIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptxCIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptx
CIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptx
 
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
"Está o lascivo e   doce passarinho " de Luís Vaz de Camões"Está o lascivo e   doce passarinho " de Luís Vaz de Camões
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
 
DeClara n.º 76 MAIO 2024, o jornal digital do Agrupamento de Escolas Clara de...
DeClara n.º 76 MAIO 2024, o jornal digital do Agrupamento de Escolas Clara de...DeClara n.º 76 MAIO 2024, o jornal digital do Agrupamento de Escolas Clara de...
DeClara n.º 76 MAIO 2024, o jornal digital do Agrupamento de Escolas Clara de...
 
o que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sulo que está acontecendo no Rio grande do Sul
o que está acontecendo no Rio grande do Sul
 
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdfProjeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
 
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptxSlides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
 
Slide Internet Slang ingles 9 ano f.pptx
Slide Internet Slang ingles 9 ano f.pptxSlide Internet Slang ingles 9 ano f.pptx
Slide Internet Slang ingles 9 ano f.pptx
 
Evolução - Teorias evolucionistas - Darwin e Lamarck
Evolução - Teorias evolucionistas - Darwin e LamarckEvolução - Teorias evolucionistas - Darwin e Lamarck
Evolução - Teorias evolucionistas - Darwin e Lamarck
 
Caça-palavras - ortografia S, SS, X, C e Z
Caça-palavras - ortografia  S, SS, X, C e ZCaça-palavras - ortografia  S, SS, X, C e Z
Caça-palavras - ortografia S, SS, X, C e Z
 
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
PROPOSTA CURRICULAR  EDUCACAO FISICA.docxPROPOSTA CURRICULAR  EDUCACAO FISICA.docx
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
 
curso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdfcurso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdf
 
América Latina: Da Independência à Consolidação dos Estados Nacionais
América Latina: Da Independência à Consolidação dos Estados NacionaisAmérica Latina: Da Independência à Consolidação dos Estados Nacionais
América Latina: Da Independência à Consolidação dos Estados Nacionais
 
Acróstico - Reciclar é preciso
Acróstico   -  Reciclar é preciso Acróstico   -  Reciclar é preciso
Acróstico - Reciclar é preciso
 
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptxSlides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
 

Programação Orientada a Objetos

  • 2. http://www.takenami.com.br Histórico • SIMULA - Anos 60 - Utilizada para simulações - Conceitos de Classe e SubClasse • SMALLTALK - Anos 70 - Desenvolvida pela XEROX - Primeira linguagem orientada a objetos de fato - Cada elemento do SMALLTALK é tratado como um objeto
  • 3. http://www.takenami.com.br Analogia Biológica • Alan Kay, - Um dos pais do paradigma da orientação a objetos - Analogia biológica • Como seria um sistema de software que funcionasse como um ser vivo? • Cada “célula” interagiria com outras células através do envio de mensagens para realizar um objetivo comum • Adicionalmente, cada célula se comportaria como uma unidade autónoma • Construir um sistema de software a partir de agentes autónomos que interagem entre si
  • 4. http://www.takenami.com.br Princípios da Orientação a Objetos • Qualquer coisa é um objeto • Objetos realizam tarefas através da troca de mensagens com outros objetos • Cada objeto pertence a uma determinada classe • Uma classe agrupa objetos similares • A classe define as características e comportamento associado ao objeto
  • 5. http://www.takenami.com.br Programação Orientação a Objetos • Sistema de software como um conjunto de agentes interconectados • Agentes = Objetos • Cada objeto é responsável por realizar tarefas específicas • É através da interação entre objetos que uma tarefa computacional é realizada
  • 6. http://www.takenami.com.br Linguagens Orientadas a Objetos Simula Smalltalk C++ Object Pascal Java .NET
  • 7. http://www.takenami.com.br Um sistema Orientado a Objetos é uma simulação de um cenário real (vida) ou fictício (filme)
  • 8. http://www.takenami.com.br Para construir sistemas Orientados a Objetos é necessário entender os conceitos por trás do paradigma
  • 9. http://www.takenami.com.br Objeto • Unidade que utilizamos para representar abstrações em um sistema computacional • No mundo real objeto é tudo que podemos tocar • No mundo imaginário um objeto é tudo que podemos representar
  • 10. http://www.takenami.com.br A interação entre estes objetos formam grupo de objetos mais complexos que agrupado a outros grupos de objetos complexos dão origem ao sistemas reais, como por exemplo o funcionamento de um carro
  • 11. http://www.takenami.com.br Características dos Objetos • Único • Possui atributos que definem caraterísticas e/ou estado • Possuem capacidade de realizar ações que chamamos de métodos ou funções • Normalmente se diz que um objeto é uma instância de uma Classe. • O que é uma Classe ?
  • 12. http://www.takenami.com.br Classe • Estrutura (molde) que define os atributos e/ou estados de um conjunto de objetos com características similares. • Define o comportamento de seus objetos (ações que o objeto pode fazer) através de métodos. • Descreve os serviços (ações) providos por seus objetos • Quais informações eles podem armazenar
  • 13. http://www.takenami.com.br Atributos de uma Classe • Caraterísticas e/ou estado de uma classe • Após a classe ser instanciada em um objeto os atributos vão receber valores (caraterísticas e/ou estados) que definem o objeto
  • 14. http://www.takenami.com.br Métodos de uma Classe • Conjunto de ações que um determinado objeto pode executar • Definem o que um objeto pode fazer • São acionados por outros objetos - Os objetos se comunicam através de métodos - Troca de mensagens
  • 15. http://www.takenami.com.br Construtor da Classe • Método especial definido na classe e executado no momento que o objeto é instanciado • Diferente de outro método pois não possui retorno • Deve ter o mesmo nome da classe. • Pode receber parâmetros - Normalmente utilizados para inicializar os valores dos atributos do objeto
  • 16. http://www.takenami.com.br Para representar classes e objetos em modelos computacionais podemos utilizar uma notação chamada UML
  • 17. http://www.takenami.com.br UML • Unified Modeling Language • Linguagem para representação de modelos visuais com um significado especifico e padronizado • UML não é uma linguagem de programação • Os modelos são representados através de diagramas que possuem semântica própria • O diagrama que representa a descrição das classes é o Diagrama de Classes
  • 18. http://www.takenami.com.br Estereótipo de uma Classe em UML Nome da Classe Atributos da Classe Métodos da Classe
  • 19. http://www.takenami.com.br Estrutura básica de uma classe public class Carro { String cor; Atributos String marca; int velocidade; public Carro(String cor, String marca){ this.cor = cor; this.marca = marca; Construtor velocidade = 0; } public void acelerar(){ velocidade++; } Métodos public void parar(){ velocidade = 0; } }
  • 21. http://www.takenami.com.br Instanciando uma Classe public class Main { public static void main(String[] args) { Carro fusca = new Carro("preto", "volkswagen"); fusca.acelerar(); fusca.acelerar(); fusca.parar(); } }
  • 23. http://www.takenami.com.br Abstração Uma abstração é qualquer modelo que inclui os aspectos relevantes de alguma coisa, ao mesmo tempo em que ignora os menos importantes
  • 24. http://www.takenami.com.br Abstração • Representa as características que devem conter em uma classe para atender a um determinado problema • Somente as características necessárias para atender a um determinado problema • Representação de um determinado ponto de vista ou abstração do problema
  • 25. http://www.takenami.com.br Para desenvolver aplicações O.O. é necessário identificar os objetos na vira real, extrair a classe que aquele objeto pertence e selecionar os atributos e métodos que serão necessários levando em consideração o modelo computacional que está sendo desenvolvido
  • 26. http://www.takenami.com.br O modelo O.O. é o conjunto de classes que visam resolver um problema computacional levando em consideração como este problema é abordado no mundo real
  • 27. http://www.takenami.com.br Associações • Forma como uma classe se relaciona com outra classe • Uma classe pode conter atributos que geram instâncias de outra classe - Uma classe pode conter outra classe como atributo - Quando isto ocorre dizemos que uma classe possui outra classe associada a ela
  • 28. http://www.takenami.com.br Associações public class Carro { public class Motor { int cavalos; String cor; int rotacoes; Observe que o String marca; int velocidade; construtor não é public Motor(){ necessário Motor ferrari; } public Carro(String cor, String marca){ public void diminuir_giro(){ this.cor = cor; this.marca = marca; System.out.println("Diminuindo as rotações do motor."); velocidade = 0; rotacoes-=1000; } ferrari = new Motor(); } public void aumentar_giro(){ public void acelerar(){ System.out.println("Aumentando as rotações do motor."); ferrari.aumentar_giro(); rotacoes+=1000; velocidade = ferrari.trabalho_do_motor() / 1000; } } public int trabalho_do_motor(){ public void parar(){ return rotacoes * cavalos; velocidade = 0; } } } }
  • 30. http://www.takenami.com.br Encapsulamento • Separar o programa em partes, tornando cada parte mais isolada possível uma da outra • A idéia é tornar o software mais flexível, fácil de modificar e de criar novas implementações • Permite utilizar o objeto de uma classe sem necessariamente conhecer sua implementação • Protege o acesso direto aos atributos de uma instância fora da classe onde estes foram criados
  • 31. http://www.takenami.com.br Uma grande vantagem do encapsulamento é que toda parte encapsulada pode ser modificada sem que os usuários da classe em questão sejam afetados
  • 32. http://www.takenami.com.br Herança • Capacidade que uma classe tem de herdar as características e comportamentos de outra classe • Classe pai é chamada de superclasse e a filha de subclasse • Em Java só é permitido herdar de uma única classe, ou seja, não permite herança múltipla
  • 33. http://www.takenami.com.br O objetivo da herança é especializar o entendimento de uma classe criando novas características e comportamentos que vão além da superclasse
  • 34. http://www.takenami.com.br Ao mesmo tempo que a especialização amplia o entendimento de uma classe, a generalização vai no sentido inverso e define um modelo menos especializado e mais genérico
  • 35. http://www.takenami.com.br Herança Superclasse de Morcego - Generalização Subclasse de Mamifero - Especialização public class Mamifero { public class Morcego extends Mamifero { int altura; int tamanho_presa; double peso; public void voar(){ public void mamar(){ System.out.println("Morcego Voando"); System.out.println("Mamifero mamando"); } } } }
  • 36. http://www.takenami.com.br Classe Morcego • Quais as características de morcego ? - altura - peso - tamanho_presa • Quais ações o morcego pode fazer ? - mamar - voar
  • 37. http://www.takenami.com.br Se usarmos os princípios de lógica podemos dizer que todo morcego é mamífero porém NÃO podemos afirmar que todo mamífero é morcego
  • 38. http://www.takenami.com.br Observe 1) Mamifero animal_mamifero = new Morcego(); 2) Morcego batman = new Mamifero(); • Com base no que foi dito até aqui podemos deduzir que o item 2 deve causar um erro já que não é possível garantir que todo mamífero seja um morcego • Já o item 1 pode parecer estranho, pois a variável é do tipo Mamífero e o objeto para o qual a variável se refere é do tipo Morcego • Devemos saber que toda variável pode receber um objeto que seja compatível com o seu tipo e neste caso todo Morcego CERTAMENTE é um Mamífero
  • 39. http://www.takenami.com.br O código apresentado funciona? Mamifero animal_mamifero = new Morcego(); animal_mamifero.mamar(); animal_mamifero.voar(); Morcego batman = (Morcego) animal_mamifero; batman.voar();
  • 40. http://www.takenami.com.br Conclusão • Todo Morcego é um Mamífero, porem não pode realizar todas as ações de um morcego - A variável que recebe o objeto é do tipo Mamífero • Para o Morcego voar é necessário criar uma nova variável do tipo Morcego e atribuir o objeto que estava na variável animal_mamifero • Este tipo de operação recebe o nome de TYPE CAST
  • 42. http://www.takenami.com.br Sobrescrita • Substitui o comportamento de uma subclasse quando herdada da superclasse • Na prática a sobrescrita reescreve um método que já tinha sido definido na superclasse public class Mamifero{ public class Golfinho extends Mamifero{ ... ... public void andar(){ public void andar(){ System.out.println("Mamifero andando"); System.out.println("Golfinho Nadando"); } } } }
  • 43. http://www.takenami.com.br Sobrecarga • É a capacidade de definir métodos com o mesmo nome - Possuem a mesma funcionalidade • Necessário que a assinatura seja diferente - A mudança na assinatura ocorre alterando a quantidade e/ou tipo de parâmetros que um método recebe
  • 44. http://www.takenami.com.br Exemplo de Sobrecarga public int somar(int v1, int v2){ return v1 + v2; } public int operar(int v1, int v2){ return somar(v1, v2); } public int operar (char op, int v1, int v2){ switch(op){ case '+': return somar(v1, v2); break; case '-': return subtrair(v1, v2); } }