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

Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
Arthur Emanuel
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
Moises Omena
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
soncino
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
Daniel Brandão
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
Daniel Brandão
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
Gleydson Sousa
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
Ludimila Monjardim Casagrande
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
Luciano Ramalho
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
Ludimila Monjardim Casagrande
 
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
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
Nécio de Lima Veras
 
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
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
Leonardo Melo Santos
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
Ludimila Monjardim Casagrande
 
Aula 06 - Diagrama de classes
Aula 06 - Diagrama de classesAula 06 - Diagrama de classes
Aula 06 - Diagrama de classes
Leinylson Fontinele
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos Básicos
Fabio Moura Pereira
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
Elaine Cecília Gatto
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
Marcio Marinho
 
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
 
Curso CSS 3 - Aula Introdutória com conceitos básicos
Curso CSS 3 - Aula Introdutória com conceitos básicosCurso CSS 3 - Aula Introdutória com conceitos básicos
Curso CSS 3 - Aula Introdutória com conceitos básicos
Tiago Antônio da Silva
 

Mais procurados (20)

Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
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
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
 
Programação orientada a objetos – II
Programação orientada a objetos – IIProgramação orientada a objetos – II
Programação orientada a objetos – II
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
Aula 06 - Diagrama de classes
Aula 06 - Diagrama de classesAula 06 - Diagrama de classes
Aula 06 - Diagrama de classes
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos Básicos
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
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
 
Curso CSS 3 - Aula Introdutória com conceitos básicos
Curso CSS 3 - Aula Introdutória com conceitos básicosCurso CSS 3 - Aula Introdutória com conceitos básicos
Curso CSS 3 - Aula Introdutória com conceitos básicos
 

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ços
alinebicudo
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de Software
Igor 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 Software
Igor 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

Java7
Java7Java7
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
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
Endel Silva
 
Apostila de uml
Apostila de umlApostila de uml
Apostila de uml
audiclerio
 
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 - thiago
tceufrasio1
 
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
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Rafael Pinheiro
 

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
 
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
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfaces
 

Último

Noite Alva! José Ernesto Ferraresso.ppsx
Noite Alva! José Ernesto Ferraresso.ppsxNoite Alva! José Ernesto Ferraresso.ppsx
Noite Alva! José Ernesto Ferraresso.ppsx
Luzia Gabriele
 
escrita criativa utilizada na arteterapia
escrita criativa   utilizada na arteterapiaescrita criativa   utilizada na arteterapia
escrita criativa utilizada na arteterapia
shirleisousa9166
 
As Ideias Têm Consequências - Richard M. Weaver
As Ideias Têm Consequências - Richard M. WeaverAs Ideias Têm Consequências - Richard M. Weaver
As Ideias Têm Consequências - Richard M. Weaver
C4io99
 
Licao de adultos Topico 1 CPAD edit.pptx
Licao de adultos Topico 1 CPAD edit.pptxLicao de adultos Topico 1 CPAD edit.pptx
Licao de adultos Topico 1 CPAD edit.pptx
jetroescola
 
A experiência do professor. Publicado EM 08.07.2024
A experiência do professor. Publicado EM 08.07.2024A experiência do professor. Publicado EM 08.07.2024
A experiência do professor. Publicado EM 08.07.2024
Espanhol Online
 
Texto e atividade - O que fazemos com a água que usamos.
Texto e atividade -  O que fazemos com a água que usamos.Texto e atividade -  O que fazemos com a água que usamos.
Texto e atividade - O que fazemos com a água que usamos.
Mary Alvarenga
 
Trabalho Colaborativo na educação especial.pdf
Trabalho Colaborativo na educação especial.pdfTrabalho Colaborativo na educação especial.pdf
Trabalho Colaborativo na educação especial.pdf
marcos oliveira
 
Alfabetização de adultos.pdf
Alfabetização de             adultos.pdfAlfabetização de             adultos.pdf
Alfabetização de adultos.pdf
arodatos81
 
Mini livro sanfona - Minha Escola Tem História.
Mini livro  sanfona - Minha Escola Tem História. Mini livro  sanfona - Minha Escola Tem História.
Mini livro sanfona - Minha Escola Tem História.
Mary Alvarenga
 
Atividade Dias dos Pais - Meu Pai, Razão da Minha História.
Atividade Dias dos Pais -  Meu Pai, Razão da Minha História.Atividade Dias dos Pais -  Meu Pai, Razão da Minha História.
Atividade Dias dos Pais - Meu Pai, Razão da Minha História.
Mary Alvarenga
 
Aprendizagem Imersiva: Conceitos e Caminhos
Aprendizagem Imersiva: Conceitos e CaminhosAprendizagem Imersiva: Conceitos e Caminhos
Aprendizagem Imersiva: Conceitos e Caminhos
Leonel Morgado
 
Temática – Projeto para Empreendedores Locais
Temática – Projeto para Empreendedores LocaisTemática – Projeto para Empreendedores Locais
Temática – Projeto para Empreendedores Locais
Colaborar Educacional
 
1°ao5°ano_HISTÓRIA_ORGANIZADOR CURRICULAR BIMESTRAL (1) educação infantil fu...
1°ao5°ano_HISTÓRIA_ORGANIZADOR CURRICULAR BIMESTRAL (1)  educação infantil fu...1°ao5°ano_HISTÓRIA_ORGANIZADOR CURRICULAR BIMESTRAL (1)  educação infantil fu...
1°ao5°ano_HISTÓRIA_ORGANIZADOR CURRICULAR BIMESTRAL (1) educação infantil fu...
antonio carlos
 
Relatório de Atividades 2016 CENSIPAM.pdf
Relatório de Atividades 2016 CENSIPAM.pdfRelatório de Atividades 2016 CENSIPAM.pdf
Relatório de Atividades 2016 CENSIPAM.pdf
Falcão Brasil
 
Guerra de reconquista da Península ibérica
Guerra de reconquista da Península ibéricaGuerra de reconquista da Península ibérica
Guerra de reconquista da Península ibérica
felipescherner
 
CALENDÁRIO GRADUAÇÃO 2024-07ddddd-04 (1).pdf
CALENDÁRIO GRADUAÇÃO 2024-07ddddd-04 (1).pdfCALENDÁRIO GRADUAÇÃO 2024-07ddddd-04 (1).pdf
CALENDÁRIO GRADUAÇÃO 2024-07ddddd-04 (1).pdf
CristviaFerreira
 
Apostila em LIBRAS - Curso Básico ENAP 2019.pdf
Apostila em LIBRAS - Curso Básico ENAP 2019.pdfApostila em LIBRAS - Curso Básico ENAP 2019.pdf
Apostila em LIBRAS - Curso Básico ENAP 2019.pdf
pattyhsilva271204
 
Slides Lição 2, CPAD, O Livro de Rute, 3Tr24.pptx
Slides Lição 2, CPAD, O Livro de Rute, 3Tr24.pptxSlides Lição 2, CPAD, O Livro de Rute, 3Tr24.pptx
Slides Lição 2, CPAD, O Livro de Rute, 3Tr24.pptx
LuizHenriquedeAlmeid6
 

Último (20)

Noite Alva! José Ernesto Ferraresso.ppsx
Noite Alva! José Ernesto Ferraresso.ppsxNoite Alva! José Ernesto Ferraresso.ppsx
Noite Alva! José Ernesto Ferraresso.ppsx
 
RECORDANDO BONS MOMENTOS! _
RECORDANDO BONS MOMENTOS!               _RECORDANDO BONS MOMENTOS!               _
RECORDANDO BONS MOMENTOS! _
 
escrita criativa utilizada na arteterapia
escrita criativa   utilizada na arteterapiaescrita criativa   utilizada na arteterapia
escrita criativa utilizada na arteterapia
 
As Ideias Têm Consequências - Richard M. Weaver
As Ideias Têm Consequências - Richard M. WeaverAs Ideias Têm Consequências - Richard M. Weaver
As Ideias Têm Consequências - Richard M. Weaver
 
Licao de adultos Topico 1 CPAD edit.pptx
Licao de adultos Topico 1 CPAD edit.pptxLicao de adultos Topico 1 CPAD edit.pptx
Licao de adultos Topico 1 CPAD edit.pptx
 
A experiência do professor. Publicado EM 08.07.2024
A experiência do professor. Publicado EM 08.07.2024A experiência do professor. Publicado EM 08.07.2024
A experiência do professor. Publicado EM 08.07.2024
 
Texto e atividade - O que fazemos com a água que usamos.
Texto e atividade -  O que fazemos com a água que usamos.Texto e atividade -  O que fazemos com a água que usamos.
Texto e atividade - O que fazemos com a água que usamos.
 
Trabalho Colaborativo na educação especial.pdf
Trabalho Colaborativo na educação especial.pdfTrabalho Colaborativo na educação especial.pdf
Trabalho Colaborativo na educação especial.pdf
 
Alfabetização de adultos.pdf
Alfabetização de             adultos.pdfAlfabetização de             adultos.pdf
Alfabetização de adultos.pdf
 
Mini livro sanfona - Minha Escola Tem História.
Mini livro  sanfona - Minha Escola Tem História. Mini livro  sanfona - Minha Escola Tem História.
Mini livro sanfona - Minha Escola Tem História.
 
Atividade Dias dos Pais - Meu Pai, Razão da Minha História.
Atividade Dias dos Pais -  Meu Pai, Razão da Minha História.Atividade Dias dos Pais -  Meu Pai, Razão da Minha História.
Atividade Dias dos Pais - Meu Pai, Razão da Minha História.
 
TALENTOS DA NOSSA ESCOLA .
TALENTOS DA NOSSA ESCOLA                .TALENTOS DA NOSSA ESCOLA                .
TALENTOS DA NOSSA ESCOLA .
 
Aprendizagem Imersiva: Conceitos e Caminhos
Aprendizagem Imersiva: Conceitos e CaminhosAprendizagem Imersiva: Conceitos e Caminhos
Aprendizagem Imersiva: Conceitos e Caminhos
 
Temática – Projeto para Empreendedores Locais
Temática – Projeto para Empreendedores LocaisTemática – Projeto para Empreendedores Locais
Temática – Projeto para Empreendedores Locais
 
1°ao5°ano_HISTÓRIA_ORGANIZADOR CURRICULAR BIMESTRAL (1) educação infantil fu...
1°ao5°ano_HISTÓRIA_ORGANIZADOR CURRICULAR BIMESTRAL (1)  educação infantil fu...1°ao5°ano_HISTÓRIA_ORGANIZADOR CURRICULAR BIMESTRAL (1)  educação infantil fu...
1°ao5°ano_HISTÓRIA_ORGANIZADOR CURRICULAR BIMESTRAL (1) educação infantil fu...
 
Relatório de Atividades 2016 CENSIPAM.pdf
Relatório de Atividades 2016 CENSIPAM.pdfRelatório de Atividades 2016 CENSIPAM.pdf
Relatório de Atividades 2016 CENSIPAM.pdf
 
Guerra de reconquista da Península ibérica
Guerra de reconquista da Península ibéricaGuerra de reconquista da Península ibérica
Guerra de reconquista da Península ibérica
 
CALENDÁRIO GRADUAÇÃO 2024-07ddddd-04 (1).pdf
CALENDÁRIO GRADUAÇÃO 2024-07ddddd-04 (1).pdfCALENDÁRIO GRADUAÇÃO 2024-07ddddd-04 (1).pdf
CALENDÁRIO GRADUAÇÃO 2024-07ddddd-04 (1).pdf
 
Apostila em LIBRAS - Curso Básico ENAP 2019.pdf
Apostila em LIBRAS - Curso Básico ENAP 2019.pdfApostila em LIBRAS - Curso Básico ENAP 2019.pdf
Apostila em LIBRAS - Curso Básico ENAP 2019.pdf
 
Slides Lição 2, CPAD, O Livro de Rute, 3Tr24.pptx
Slides Lição 2, CPAD, O Livro de Rute, 3Tr24.pptxSlides Lição 2, CPAD, O Livro de Rute, 3Tr24.pptx
Slides Lição 2, CPAD, O Livro de Rute, 3Tr24.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); } }