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

PDF
POO - 01 - Introdução ao Paradigma Orientado a Objetos
PPTX
JAVA - Orientação a Objetos
PDF
Aula 02 - Principios da Orientação a Objetos (POO)
PPT
Conceitos básicos de programação orientada a objetos
PPTX
Programação orientada a objetos
PPTX
Programação Orientado a Objetos
PDF
Java orientação a objetos (associacao, composicao, agregacao)
PPT
Análise Orientada a Objetos - Objetos E Classes
POO - 01 - Introdução ao Paradigma Orientado a Objetos
JAVA - Orientação a Objetos
Aula 02 - Principios da Orientação a Objetos (POO)
Conceitos básicos de programação orientada a objetos
Programação orientada a objetos
Programação Orientado a Objetos
Java orientação a objetos (associacao, composicao, agregacao)
Análise Orientada a Objetos - Objetos E Classes

Mais procurados (20)

PDF
Aula 1 - Introdução a POO
PPT
Servidores Web
PDF
POO - 11 - Prática de Herança
PDF
Aula 09 - introducao oo
PDF
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
PDF
Aula 2 - POO: Fundamentos da linguagem Java
PPT
Aula 5 - Modelo de Entidade e Relacionamento - MER
PDF
POO - 10 - Herança
PDF
Aula orientação a objetos
PDF
Diagrama de Classes
PDF
POO - Aula 10 - Polimorfismo
PDF
Fundamentos e princípios do projeto orientado a objetos
PDF
Análise e Projeto de Sistemas
PDF
Aula 02 - Introdução ao PHP
PPT
Apresentação da UML
PDF
Encapsulamento em Orientação a Objetos
PDF
Curso de HTML5 - Aula 01
PPT
PDF
Java orientação a objetos (interfaces)
PPTX
Introdução básica ao JavaScript
Aula 1 - Introdução a POO
Servidores Web
POO - 11 - Prática de Herança
Aula 09 - introducao oo
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Aula 2 - POO: Fundamentos da linguagem Java
Aula 5 - Modelo de Entidade e Relacionamento - MER
POO - 10 - Herança
Aula orientação a objetos
Diagrama de Classes
POO - Aula 10 - Polimorfismo
Fundamentos e princípios do projeto orientado a objetos
Análise e Projeto de Sistemas
Aula 02 - Introdução ao PHP
Apresentação da UML
Encapsulamento em Orientação a Objetos
Curso de HTML5 - Aula 01
Java orientação a objetos (interfaces)
Introdução básica ao JavaScript
Anúncio

Destaque (9)

PDF
Introdução a Gerência de Configuração
PPT
SOA - Arquitetura Orientada a Serviços
PDF
Introdução a Testes de Software
PDF
Introdução a Arquitetura Orientada a Serviços
PDF
Desenvolvimento para iOS
PDF
Introdução a Qualidade de Software
PDF
Introdução ao RUP
PDF
Arquitetura Orientada a Servicos (SOA)
PDF
Introdução a Arquitetura de Sistemas
Introdução a Gerência de Configuração
SOA - Arquitetura Orientada a Serviços
Introdução a Testes de Software
Introdução a Arquitetura Orientada a Serviços
Desenvolvimento para iOS
Introdução a Qualidade de Software
Introdução ao RUP
Arquitetura Orientada a Servicos (SOA)
Introdução a Arquitetura de Sistemas
Anúncio

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

PDF
Curso de OO com C# - Parte 01 - Orientação a objetos
PPT
Java aula 2
PPTX
Linguagem de programação implementação de classes
PDF
Design patterns
PPTX
Aula01-IntroducaoOO.pptx
PPTX
Framework Entities - Apresentação da Defesa da Dissertacao
ODP
Paradigma Orientado a Objeto
PPT
Classes e Objectos JAVA
PDF
Script c
PPTX
3- POO
PPTX
PDF
02_revisao_OO.pdf
PPTX
Programação Orientada a Objetos - Uso da O.O. em Java
PDF
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
PDF
Oop java
PDF
Introdução à programação em Android e iOS - OOP Java
PPTX
Módulo 9 - Introdução à Programação Orientada a Objectos
PPSX
Java & orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
Java aula 2
Linguagem de programação implementação de classes
Design patterns
Aula01-IntroducaoOO.pptx
Framework Entities - Apresentação da Defesa da Dissertacao
Paradigma Orientado a Objeto
Classes e Objectos JAVA
Script c
3- POO
02_revisao_OO.pdf
Programação Orientada a Objetos - Uso da O.O. em Java
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Oop java
Introdução à programação em Android e iOS - OOP Java
Módulo 9 - Introdução à Programação Orientada a Objectos
Java & orientação a objetos

Último (20)

PPTX
disciplulado curso preparatorio para novos
PPTX
Trabalho Cidades sustentáveis ou Utopia.pptx
PPTX
norma regulamentadora numero vinte nr 20
PDF
edital-de-chamamento-publico-no-3-2025.pdf
PPTX
Lição 8 EBD.pptxtudopossonaquelequemimfortalece
PPTX
1. A Cultura do Palco - muitos palcos, um espetáculo.pptx
PPTX
4. A cultura do cinema e as vanguardas.pptx
PPTX
16. MODERNISMO - PRIMEIRA GERAÇÃO - EDIÇÃO 2021 (1).pptx
PPSX
A epistemologia de Wilheim G Leibniz.ppsx
PPTX
AULA METodologia MODIFIC PART 1 MSC.pptx
PDF
A relação entre funções executivas e desempenho acadêmico em crianças com Tra...
PDF
Formação politica brasil_2017.pptx.pdf
PPTX
EMBRIOLOGIA ANIMAL - fases do desenvolvimento.pptx
PDF
[Slides] A Literatura no ENEM 2017 (1).pdf
PDF
Uma Introdução às Ciências do Alcorão (Islam)
PDF
Combate a Incêndio - Estratégias e Táticas de Combate a Incêndio por Francis...
PDF
DOENÇAS SEXUALMENTE TRANSMISSIVEIS E SUAS POLARIDADES
PPTX
GUERRAFRIA.pptdddddddddddddddddddddddddx
PPTX
INTRODUÇÃO AO ESTUDO DA ANATOMIA HUMANA [Salvo automaticamente].pptx
PPTX
cijma-2501231hejjeiei45156-38f87891.pptx
disciplulado curso preparatorio para novos
Trabalho Cidades sustentáveis ou Utopia.pptx
norma regulamentadora numero vinte nr 20
edital-de-chamamento-publico-no-3-2025.pdf
Lição 8 EBD.pptxtudopossonaquelequemimfortalece
1. A Cultura do Palco - muitos palcos, um espetáculo.pptx
4. A cultura do cinema e as vanguardas.pptx
16. MODERNISMO - PRIMEIRA GERAÇÃO - EDIÇÃO 2021 (1).pptx
A epistemologia de Wilheim G Leibniz.ppsx
AULA METodologia MODIFIC PART 1 MSC.pptx
A relação entre funções executivas e desempenho acadêmico em crianças com Tra...
Formação politica brasil_2017.pptx.pdf
EMBRIOLOGIA ANIMAL - fases do desenvolvimento.pptx
[Slides] A Literatura no ENEM 2017 (1).pdf
Uma Introdução às Ciências do Alcorão (Islam)
Combate a Incêndio - Estratégias e Táticas de Combate a Incêndio por Francis...
DOENÇAS SEXUALMENTE TRANSMISSIVEIS E SUAS POLARIDADES
GUERRAFRIA.pptdddddddddddddddddddddddddx
INTRODUÇÃO AO ESTUDO DA ANATOMIA HUMANA [Salvo automaticamente].pptx
cijma-2501231hejjeiei45156-38f87891.pptx

Programação Orientada a Objetos