SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
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);
       }
     }

Weitere ähnliche Inhalte

Was ist angesagt?

Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetossoncino
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0César Augusto Pessôa
 
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 JavaDaniel Brandão
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a pooSedu
 
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, interfacesRafael Pinheiro
 
Programação orientada a objetos – II
Programação orientada a objetos – IIProgramação orientada a objetos – II
Programação orientada a objetos – IIGabriel Faustino
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01 Léo Dias
 
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
 
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 objetosNécio de Lima Veras
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismoArthur Emanuel
 
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.5César Augusto Pessôa
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
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 objetosLeonardo Melo Santos
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosDaniel Brandão
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
 

Was ist angesagt? (20)

Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0
 
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
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
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
 
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
 
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 HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 
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)
 
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
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
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
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
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
 
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
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 

Andere mochten auch

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çãoIgor 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çosIgor Takenami
 
Desenvolvimento para iOS
Desenvolvimento para iOSDesenvolvimento para iOS
Desenvolvimento para iOSIgor 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
 
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 SistemasIgor Takenami
 

Andere mochten auch (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
 

Ähnlich wie Programação Orientada a Objetos

Ähnlich wie 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
 

Kürzlich hochgeladen

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamentalAntônia marta Silvestre da Silva
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorEdvanirCosta
 

Kürzlich hochgeladen (20)

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de Professor
 

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); } }