SlideShare uma empresa Scribd logo
Orientação a Objetos na Prática
          Entenda o contexto da modelagem de software e sistemas, descubra a
            importância e as principais características da orientação a objetos.



  Andre Luiz Monteiro da Costa
andre.monteiro@prof.infnet.edu.br
Palestrante

 • Desenvolvedor JAVA.

 • Ex-docente do Senac - curso de desenvolvedor JAVA.

 • Ex-docente das Faculdades São José e Moacyr Bastos.

 • Ex-Analista de Sistemas da IplanRio.

 • Analista de Sistemas da FAPES/BNDES.

 • Docente da Academia do Concurso Público – gestão TI.

 • Docente da SOFEP.

 • Docente do Instituto INFNET.
                                                          2
O paradigma da Orientação a Objetos

    Um paradigma é uma forma de abordar um problema.

    O paradigma da orientação a objetos surgiu no fim
    dos anos 60.

    Hoje em dia, praticamente suplantou o paradigma
    anterior, o paradigma estruturado...




                                                        3
O paradigma da Orientação a Objetos

    Alan Kay, um dos pais do paradigma da orientação a
    objetos, formulou a chamada analogia biológica.

    “Como seria um sistema de software que funcionasse
    como um ser vivo?




                                                         4
Analogia Biológica

    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.




                                                           5
Analogia Biológica

    De uma forma mais geral, Kay pensou em como
    construir um sistema de software a partir de agentes
    autônomos que interagem entre si.

    Com isso, ele estabeleceu os princípios da orientação
    a objetos.




                                                            6
Orientação a Objetos - Princípios

    Tudo é um objeto.
    Pense em um objeto como uma super variável: ele
    armazena dados, mas você também pode fazer
    requisições a esse objeto, pedindo que ele faça
    operações sobre si próprio. Em teoria, você pode
    representar qualquer elemento conceitual no
    problema que você está tentando resolver (cachorros,
    livros, sócios, empréstimos, etc.) como um objeto no
    seu programa.




                                                           7
Orientação a Objetos - Princípios

    Um programa é uma coleção de objetos dizendo uns
    aos outros o que fazer.
    Para fazer uma requisição a um objeto você “manda
    uma mensagem” para este objeto. Mais
    concretamente, você pode pensar em uma mensagem
    como sendo uma chamada de um procedimento ou
    função pertencente a um objeto em particular.




                                                        8
Orientação a Objetos - Princípios

    Um objeto pode ser composto por vários outros
    objetos
    Em outras palavras: você pode criar um novo tipo de
    objeto empacotando objetos existentes. Dessa forma,
    você pode adicionar complexidade a um programa e
    escondê-la por trás da simplicidade de uso dos
    objetos.




                                                          9
Orientação a Objetos - Princípios

    Todo objeto tem um tipo.
    Usando as palavras certas, cada objeto é uma
    instância de uma classe, onde classe é um sinônimo
    de tipo. A questão mais importante relativa a uma
    classe é “que mensagens eu posso enviar para uma
    instância dessa classe?”




                                                         10
Orientação a Objetos - Princípios

    Todos os objetos de um dado tipo podem receber as
    mesmas mensagens.
    Além disso, uma vez que, por exemplo, um objeto do
    tipo “círculo” é também um objeto do tipo “forma
    geométrica”, o objeto “círculo” aceita qualquer
    mensagem endereçada a uma “forma geométrica”.
    Essa capacidade de “subtituição” de um objeto por
    outro é um dos mais poderosos conceitos em
    orientação a objetos.




                                                         11
Objeto

  •   Definição:
       • Um conceito, uma abstração com significado

         específico em um contexto


  •   Propósito:
       • Representar uma entidade do mundo real




  •   Objetos possuem:
      • Identidade

      • Características que determinam seu estado

      • Comportamento específico definido por um

        conjunto de ações
                                                      12
Abstração

   Uma abstração é qualquer modelo que inclui
   os aspectos relevantes de alguma coisa, ao
   mesmo tempo em que ignora os menos
   importantes.




                                                13
Exemplo

  Beija-Flor

               Identidade: ‘o beija-flor que vem ao meu jardim’
               Características:
                   penas azuis
                   bico fino
                   vôo rápido

               Comportamento:
                  voar
                  piar




                                                                  14
Exemplo

   Pessoa


            Identidade: ‘Mário’
            Características:
               olhos pretos
               nasceu em 16/02/70
               pesa 70kg
               mede 1,70m
            Comportamento:
               andar
               falar
               comer
               rir

                                    15
Exemplo

  Telefone

             Identidade:: número 2576-0989
             Características:
                 azul
                 2.4 GHz
                 tone

             Comportamento:
                tocar
                discar




                                             16
Exemplo

  Ônibus
           Identidade: placa LXY 7684
           Características:
              cor amarela
              30 assentos
              a diesel

           Comportamento:
              frear
              andar
              correr
              buzinar
              acelerar



                                        17
Objeto

  Representação


                              Identidade
         Características
            (estado)‫‏‬




                           Comportamento
                           Serviços,
                           Interface ou
                           protocolo
                   Mário


                                           18
Objeto

     Implementação
      › Interface Visível
            Conjunto de operações

      › Parte encapsulada (escondida)‫‏‏‬
            Estado do Objeto - Atributos
            Implementação de suas operações - Métodos



  Estado do
  Objeto (valor                           Serviços,
  de seus                                 Operações
  atributos)‫‏‬                             ou Interface
                                          da Classe
                                                         19
Encapsulamento

   Na terminologia da orientação a objetos, diz-se que
   um objeto possui uma interface.

   A interface de um objeto é o que ele conhece e o que
   ele sabe fazer, sem descrever como o objeto conhece
   ou faz.

   A interface de um objeto define os serviços que ele
   pode realizar e conseqüentemente as mensagens que
   ele recebe.



                                                          20
Encapsulamento

  Uma interface pode ter várias
  formas de implementação.

  Mas, pelo Princípio do
  Encapsulamento, a
  implementação de um
  serviço no objeto servidor
  não importa para o objeto
  cliente. (O cliente confia em
  interfaces e não em
  implementações)‫‏‬
                                  21
Classe

    Definição:
     › Abstrações utilizadas para representar um
       conjunto de objetos com características e
       comportamento idênticos

    Uma classe pode ser vista como uma “fábrica de
    objetos”




                                                     22
Classe

   Tecnicamente falando, objetos são “instâncias” de
   uma classe em tempo de execução

    › Todos os objetos são instâncias de alguma classe

    › Todos os objetos de uma classe são idênticos no
      que diz respeito a sua interface e implementação

    › O que difere um objeto de outro é seu estado e sua
      identidade




                                                           23
Classe – Notação Gráfica


    • Segundo a OMG:




                           24
Exemplo



                                             classe



          Identidade::o beija-flor que vem ao meu jardim
          Características:                     instância da
             cor das penas: azuis              classe (objeto)‫‏‬
             formato do bico: fino
             velocidade de vôo: rápida

          Comportamento:
              voar
              piar
                                                                  25
Exemplo



                                           classe


          Identidade:: meu pombo correio
          Características:
             cor das penas: cinza          instância da
             formato do bico: curto        classe (objeto)‫‏‬
             velocidade de vôo: média
          Comportamento:
              voar
              piar
                                                              26
Implementação em Java




                        27
Exemplo



                                                 classe


          Identidade: ‘Telefone da minha casa’
          Características:
              marca: Siemens                     instância da
              número: 2576-0989                  classe (objeto)‫‏‬
              discagem: pulso

           Comportamento:
               tocar
               discar
                                                                    28
Exemplo



                                      classe


          Identidade: ‘Meu celular’

          Características:
             marca: Nokia             instância da
             número: 99193467         classe (objeto)‫‏‬
             discagem: tom

          Comportamento:
              tocar
              discar
                                                         29
Implementação em Java




                        30
Classes



                        Classe




          Instâncias
           (objetos)‫‏‬




                                 31
Implementação em Java




                        32
Implementação em Java




                        33
Atributos

    Descrevem as características das instâncias de uma classe
    Seus valores definem o estado do objeto
    O estado de um objeto pode mudar ao longo de sua existência
    A identidade de um objeto, contudo, nunca muda

                                    Funcionário_Helena

                                 Nome=Helena Reis
                                 Nasc=28/01/1965
                                 Salário = 4.000

                                 InformarSalário         Funcionário_Mário
                                 CalcularIdade
                                                    Nome=Mário Sá
                                                    Nasc=16/02/1970
                                                    Salário = 3.000

                                                    InformarSalário
                                                    CalcularIdade




                                                                             34
Serviços/Operações

    Representam o comportamento das instâncias de uma classe
    Correspondem às ações das instâncias de uma classe




                                          Funcionário_Helena
                       4000
                                       Nome=Helena Reis
                                       Nasc=28/01/1965
                                       Salário = 4.000

                                       InformarSalário         Funcionário_Mário
                                       CalcularIdade
                                                          Nome=Mário Sá
                                3000                      Nasc=16/02/1970
                                                          Salário = 3.000
                    Informar
                                                          InformarSalário
                    Salário?                              CalcularIdade




                                                                                   35
Implementação em Java




                        36
Serviços/Métodos

    Alguns métodos especiais:
     › Construtores – criam objetos de uma classe
     › Destrutores – destroem objetos de uma classe




                                                      37
Passos para a criação de um objeto

    Declarar uma referência para o objeto

    Funcionario funcionario;



    Criar uma instância do objeto

    funcionario = new Funcionario();

    O sistema operacional aloca espaço em memória para o novo
    objeto e preenche os seus atributos com valores default (zero
    para números, nil para referências, false para booleanos, string
    vazia para Strings.



                                                                       38
Passos para a criação de um objeto

    Se houver um método construtor, este é invocado

    O método construtor é usado para alterar os valores default dos
    atributos, possibilitando que o objeto se torne disponível para a
    aplicação já em um estado pré-definido


    Modificação explícita do estado do objeto
    funcionario.salario = 4000; //se atributo é público
    funcionario.gravaSalario(4000); // caso contrário

    A referência para o objeto pode ser usada para alterar o estado
    dos atributos do objeto.




                                                                        39
O método construtor (FAQ)‫‏‏‬

    É obrigatória a inclusão de um método construtor na
    classe?
     › Não. Um construtor default é herdado de TObject.
       Este construtor aloca espaço para o novo objeto
       em memória e cria um objeto com os atributos e
       referências todas preenchidas com zeros.
  • Quando então devo escrever um método construtor?
    › Quando houver atributos privados que não
      possam mais ser alterados uma vez que o objeto
      tenha sido instanciado
    › Quando o objeto for um objeto complexo, cuja
      arquitetura interna (atributos e referências) não é
      conhecida pelo programador.
                                                            40
Herança

    O que é herança?
      Herdar é derivar características de gerações
      precedentes.
      No mundo da Programação Orientada a Objetos, o
      termo é associado com uma das formas de
      reutilização de software.
      Através da herança, novas classes podem ser
      derivadas das classes existentes.
      A nova classe herda propriedades e métodos da
      classe base.
      A nova classe também pode adicionar suas
      próprias propriedades e métodos.

                                                       41
Herança

   Para que serve a herança?

   Considere a criação de uma classe ClasseB.




   Que métodos estão disponíveis através de uma
   referência para a ClasseB (isto é, um objeto)?




                                                    42
Herança

   Suponha agora que a classe ClasseB herda de
   ClasseA




   Que métodos estão agora disponíveis para uma
   referência da ClasseB (um objeto) ?

                                                  43
Herança

   Poderoso mecanismo para o reaproveitamento de
   código.

   O objeto da classe classeB tem agora disponíveis os
   métodos da classe ClasseA sem ser necessário
   reescrevê-los na classe ClasseB.

   Um objeto da classe ClasseB também é um objeto da
   classe ClasseA.




                                                         44
Herança

   Facilita a manutenção do código: Os métodos não
   são replicados. Se for necessário alterar o código do
   método m3(), basta alterá-lo na classe ClasseA.

   A classe ClasseB pode "recusar" parte da herança,
   reimplementando os métodos herdados,
   sobrescrevendo-os.




                                                           45
Herança




     O método m3(), agora disponível para objetos da
     classe ClasseB, é aquele implementado em ClasseB.



                                                         46
Herança

  Várias subclasses podem herdar da mesma
  superclasse (Herança Simples).




                                            47
Herança

   Em Java, não é permitido herdar de mais de uma
   classe (Herança Múltipla).




                  ERRADO!!!!

                                                    48
Herança

   A hierarquia de herança pode ter vários níveis




   Que métodos estão agora disponíveis para uma
   instância de ClasseC?
                                                    49
Herança

    A Herança também pode surgir a partir da refatoração
    de classes existentes de modo a eliminar a
    duplicação de código




  Grande quantidade de atributos e métodos duplicados...

                                                           50
Herança

   Refatoração



                       Superclasse
                 (características comuns)‫‏‬




                                    Subclasses
                            (características específicas)‫‏‬




                                                             51
Herança

  O mecanismo de herança pode ser melhor entendido
  através do seguinte exemplo:




                                                     52
Herança

    A classe ContaBancaria tem 4 atributos:
     › nome: armazena o nome do cliente
     › cpf: armazena o número do CPF do cliente
     › numeroConta: armazena o número da conta do
       cliente
     › saldo: armazena o saldo da conta

   Os métodos depositar e sacar são usados para fazer um depósito
   ou retirada da conta bancária.

   A classe ContaBancária, sozinha, não é suficiente para realizar
   todas as transações bancárias. Existem geralmente dois tipos de
   contas: a conta corrente e a conta de investimentos.
                                                                     53
Herança

  Vamos derivar duas subclasses que herdam da
  superclasse ContaCorrente




 As subclasses ContaInvestimento e ContaCorrente herdam as
 propriedades e métodos da classe ContaBancaria
                                                             54
Composição

   A classe contém referências para objetos de outras
   classes:
    › Estas referências são também atributos da classe.

   Uma maneira alternativa de estender a funcionalidade
   de uma classe agregando funcionalidades de outras
   classes.

   Herança x Composição
   É UM x TEM UM



                                                          55
Composição

   O mecanismo de herança nem sempre é apropriado

   Estender funcionalidade através de herança pode não
   ser "natural":
    › Uma conta de investimento é uma conta bancária!

    › Uma conta de investimento não é uma Pessoa!




                                                         56
Composição




  • Se um proprietário tiver mais de um carro, a
    informação ficará redundante.



                                                   57
Composição

   • Utilizando uma conexão de ocorrência, o modelo
     poderia ser melhorado da seguinte forma:




                                                      58
Polimorfismo

    "Programação Genérica".

    Trata objetos na mesma hierarquia de classes como
    se todos fossem objetos da superclasse.

    Tornam o programa extensível:
     › Facilidade para adicionar novas classes.



    Nesta seção: invocaremos os métodos das
    subclasses usando referências para a superclasse

                                                        59
Polimorfismo

    Conceito Chave
    Objetos das subclasses podem ser tratados como
    objetos da superclasse
                              A classe B É UMA classe A
                              → Um objeto da classe B
   ::Project2

                A             pode ser usado em qualquer
      m1(...)                 lugar onde um objeto da
      m2(...)
                              classe A é esperado.

                B

      m1(...)
      m3(...)

                                    B     A


                                                           60
Polimorfismo

         Tabelas Virtuais

                 Classe A
                                       ::Project2
 operação            método invocado
 m1()‫‏‬               A.m1()‫‏‬                        A

 m2()‫‏‬               A.m2()‫‏‬              m1(...)
                                          m2(...)




                                                    B
                 Classe B
                                          m1(...)
 operação            método invocado      m3(...)

 m1()‫‏‬               B.m1()‫‏‬
 m2()‫‏‬               A.m2()‫‏‬
 m3()‫‏‬               B.m3()‫‏‬
                                                        61
Polimorfismo

     Chamadas polimórficas permitem simplificar a lógica
     condicional dos programas




 Imagine um sistema   ::Unit1     JW indows                           JLinux

 construído para        close(...)                        close(...)
                        maximize(...)                     maximize(...)
 trabalhar tanto em     minimize(...)                     minimize(...)
 Windows quanto em      move(...)                         move(...)
                        open(...)                         open(...)
 Linux

                                                  jWin;
                                         JWindows jWin;
                                                jLin;
                                         JLinux jLin;




                                                                               62
Polimorfismo
                                    TObject);
procedure TForm1.FormCreate(Sender: TObject);
begin
   if SO='Windows' then
      jWin := JWindows.Create
   else
      jLin := JLinux.Create;
              JLinux.Create;
end;
                                                        Observe a quantidade
                                           TMessage);
procedure TForm1.WMSysCommand(var Message: TMessage);   de lógica
begin
      (Message.wParam
   if (Message.wParam = SC_MINIMIZE) then
                                                        condicional!
      if SO='Windows' then
         jWin.minimize
      else
         jLin.minimize
           (Message.wParam
   else if (Message.wParam = SC_MAXIMIZE) then
      if SO='Windows' then
         jWin.maximize
      else
         jLin.maximize
           (Message.wParam
   else if (Message.wParam = SC_CLOSE) then
                                                                               63
Polimorfismo

       Solução Polimórfica
                    ::Unit1

                                                       Janela

                                            close(...)
                                            maximize(...)
 var                                        minimize(...)
   jan: Janela;
   jan: Janela;                             move(...)
                                            open(...)




                                   JLinux                                 JW indows

                       close(...)                               close(...)
                       maximize(...)                            maximize(...)
                       minimize(...)                            minimize(...)
                       move(...)                                move(...)
                       open(...)                                open(...)




                                                                                      64
Polimorfismo
                                    TObject);
procedure TForm1.FormCreate(Sender: TObject);
begin
   if SO='Windows' then
      jan := JWindows.Create
   else
      jan := JLinux.Create;
             JLinux.Create;
end;

                                           TMessage);
procedure TForm1.WMSysCommand(var Message: TMessage);
begin
      (Message.wParam
   if (Message.wParam = SC_MINIMIZE) then
      jan.minimize
   else if (Message.wParam = SC_MAXIMIZE) then
           (Message.wParam                              Observe a
      jan.maximize
                                                        ausência de
   else if (Message.wParam = SC_CLOSE) then
           (Message.wParam
      jan.close                                         lógica
           (Message.wParam
   else if (Message.wParam = SC_MOVE) then              condicional
      jan.move
   else
      inherited;
end;
                                                                      65
Polimorfismo

          Observe ainda como seria fácil acrescentar uma
          janela MOTIF para o Sun Solaris
::Unit1

                                    Janela

                         close(...)
                         maximize(...)
                         minimize(...)
                         move(...)
                         open(...)




               JLinux               JSolaris             JW indows

   close(...)            close(...)            close(...)
   maximize(...)         maximize(...)         maximize(...)
   minimize(...)         minimize(...)         minimize(...)
   move(...)             move(...)             move(...)
   open(...)             open(...)             open(...)




                                                                     66
Polimorfismo
                                    TObject);
procedure TForm1.FormCreate(Sender: TObject);
begin
   if SO='Windows' then
      jan := JWindows.Create                            Adicionou-se mais
   else if SO = 'Linux' then
      jan := JLinux.Create                              uma linha aqui...
   else
             JSolaris.Create;
      jan := JSolaris.Create;
end;

                                           TMessage);
procedure TForm1.WMSysCommand(var Message: TMessage);
begin
      (Message.wParam
   if (Message.wParam = SC_MINIMIZE) then
      jan.minimize
           (Message.wParam
   else if (Message.wParam = SC_MAXIMIZE) then
      jan.maximize
           (Message.wParam
   else if (Message.wParam = SC_CLOSE) then             ... e nada mudou
      jan.close
           (Message.wParam
   else if (Message.wParam = SC_MOVE) then
                                                        aqui!
      jan.move
   else
      inherited;
end;

                                                                            67
68
Diagrama de casos de uso


  • Formado por: Atores, Casos de Uso e
    relacionamentos:
    › Que atores realizam os casos de uso;
    › Quais casos de uso incluem (usam) outros casos
      de uso;
    › Quais casos de uso trazem funcionalidades
      (estendem) de outros casos de uso;




                                                       69
Diagrama de casos de uso




                           70
Ator


 • Papel que o usuário desempenha com relação ao
   sistema.
                                        <<actor>>

                                         Aluno


 • Principal    o caso de uso tenta satisfazer ao
          seu objetivo no sistema;

 • Secundário      qualquer outro que participa
                no caso de uso;



                                                    71
Caso de Uso


 • Técnica para captação de requisitos de
   um sistema.
   › Funcional    funcionalidades do sistema;
   › Não-funcional    características de
     qualidade relacionadas às funcionalidades;




                                                  72
Caso de Uso


 • Descrevem interações típicas entre
   usuários de um sistema, através de
   cenários:
   › Típico ( ou principal ) comportamento
     esperado;
   › Alternativo    desvios no comportamento.




                                                73
Caso de Uso - estereótipos


  • Extends
    › relacionamento que especifica como e quando
      um determinado comportamento ocorrerá.
    › pode também determinar um comportamento
      opcional.




                                                    74
Caso de Uso - estereótipos


  • Include
    › define que o caso de uso contém um
      comportamento de outro caso de uso.
    › comportamento obrigatório.




                                            75
Caso de Uso - descrição


     • Cada caso de uso tem uma descrição o
       qual descreve a funcionalidade que será
       construída no sistema proposto.




                                                 76
Diagrama de Classes




                      77
Diagrama de Classes


  • Descreve os tipos de objetos presentes no sistema e
    os vários relacionamentos estáticos existentes entre
    eles.

  • Também mostra atributos e operações das classes.
     › Atributos valores dos campos;
     › Operações  ações que uma classe sabe
       realizar;




                                                           78
Classe Abstrata

                  • Representa uma
                    estrutura que não
                    será implementada,
                    mas de importância
                    visual para o
                    problema;

                  • Muito usada com
                    herança;
                                         79
Classe Abstrata

    Não pode ser instanciada diretamente,
    apenas por instâncias de subclasses;
    Normalmente tem uma ou mais operações
    abstratas (sem implementação);

    NOTAÇÃO
    NOTAÇÃO:
      Nome da classe em itálico
                         itá
      Rotulado com {abstract}
      Rotulado com <<abstract>>

                                            80
Classe - Visibilidade

                        operaç
   Qualquer atributo ou operação pode ser
   rotulado.
   rotulado.

                        abreviaç
   A UML fornece quatro abreviações para
   visibilidade:
   visibilidade:

     +     público
     -     privado
     ~            (default)‫‏‬
           pacote (default)‫‏‬
     #     protegido
                                            81
Classe – associação

   • Declara que pode existir uma
     ligação entre as instâncias das
     classes.
                      associação




                      Classe associativa
                                           82
Classe – associação bidirecional



  • Par de atributos inversamente
    vinculados.




                                    83
Classe – multiplicidade

  • Indica quantos objetos podem
    preencher o atributo;

  • Mais comuns são:
    › 1 (obrigatório);
    › 0..1 (opcional);
    › * (múltiplos – 0 ou mais)‫‏‏‬



                                    84
Classe – dependência

             • É um relacionamento
               conceitual (não físico).

             • Uma alteração na classe
               fornecedora pode
               impactar a classe
               dependente.


                                          85
Classe – generalização


                         • É um
                           relacionamento
                           sistemático
                           entre classes.

                         • É o processo de
                           herança.



                                            86
Classe – generalização

         GENERALIZAÇÃO
                         • É um
                           relacionamento
                           sistemático
                           entre classes.

                         • É o processo de
                           herança.


ESPECIALIZAÇÃ
O                                           87
Classe – agregação X composição


                     • É uma
                       associação com
                       significado
                       mais forte;

                     • Relacionamento
                       do tipo: “É
                       parte de...”.
                                        88
Classe – pacotes


    Agrupam classes em estrutura hierárquica;

    Fornecem visão das dependências entre os
    principais elementos de um sistema;

    Uma classe é membro de um único pacote;

    Pacotes contém subpacotes e classes;

    Toda classe deve ter um nome exclusivo
    dentro do pacote a que pertence;
                                                89
Classe – pacotes




                   90
Diagramas de Interação


  • Tornam as chamadas entre participantes cristalinas;

  • Fornecem visão excepcional a respeito de quais
    participantes estão realizando quais
    comportamentos;




                                                          91
Diagrama de Comunicação


  • Enfatiza os vínculos de dados entre os vários
    participantes na interação;

  • Permite livre posicionamento dos PARTICIPANTES,
    com numeração decimal aninhada;

  • Diagrama de Colaboração (UML 1.x)




                                                      92
Diagrama de Comunicação




                          93
Diagrama de Sequência


  • Indica clareza na interação dos participantes;

  • Usado para observar o comportamento de vários
    objetos dentro do mesmo caso de uso;

  • Objeto = participante




                                                     94
Diagrama de Sequência




                        95
Diagrama de Máquina de Estado


  • Utilizados para especificar o comportamento da
    instância de um único objeto;

  • Possui estado inicial e   final,
    estados e transições ;




                                                     96
Diagrama de Máquina de Estado




                                97
Diagrama de Atividades


  • Descreve processo de negócio e fluxo de trabalho;

  • Suportam comportamento paralo (diferença para
    fluxograma);

  • Semelhante Diagrama de Estados;




                                                        98
Diagrama de Atividades




                         Mostra “quem”
                          faz “o quê”




                                         99
Ferramentas CASE para UML


  • Rational Rose (IBM)‫‏‏‬


  • Enterprise Architect (Sparx Systems)‫‏‏‬


  • ArgoUML (Tigris)‫‏‏‬


  • Jude (Change Vision)‫‏‏‬




                                             100
Links Úteis


       • BlueJ – www.bluej.org
       • UML – www.uml.org
       • Jude – jude.change-vision.com




                                         101
A Formação do Infnet


    Formação Desenvolvedor Java

      Código   Nome do curso                                                                               Horas


               Projeto de Sistemas e Orientação a Objetos com UML
       I550                                                                                                40 h
               Ensinar conceitos de orientação a objetos e sua utilização no processo de desenvolvimento
               de software usando UML.


               Java Programming
       I552                                                                                                48 h
               Ensinar a programar em Java para alunos que já sabem programar em qualquer outra
               linguagem.



               Java Web Applications
       I554                                                                                                48 h
               Ensinar questões avançadas do desenvolvimento de aplicações Web com a linguagem de
               programação Java e os frameworks mais usados no mercado.




                                                                                                                   102
A Formação do Infnet
Formação Desenvolvedor Java: Sistemas Distribuídos
            Código   Nome do curso                                                            Horas

                     Projeto de Sistemas e Orientação a Objetos com UML
             I550    Ensinar conceitos de orientação a objetos e sua utilização no processo   40 h
                     de desenvolvimento de software usando UML.

                     Java Programming
             I552    Ensinar a programar em Java para alunos que já sabem programar em        48 h
                     qualquer outra linguagem.

                     Java Web Applications
                     Ensinar questões avançadas do desenvolvimento de aplicações Web
             I554                                                                             48 h
                     com a linguagem de programação Java e os frameworks mais usados
                     no mercado.

                     Java Enterprise Applications
             I556    Ensinar conceitos avançados de programação em Java para sistemas         48 h
                     com alta demanda de acesso e segurança.

                     Java Security
             I558    Ensinar conceitos avançados de segurança em Java para sistemas           24 h
                     desktop e J2EE.


                     Java Mobile
             I560    Ensinar programação Java para dispositivos móveis, como celulares e      32 h
                     hand helds.


                     Java Workshop
             I562    Colocar em prática o conhecimento avançado de desenvolvimento de         32 h
                     aplicações Java.


                                                                                                      103
Perguntas




            104
OBRIGADO !




             105
Contatos

                                         www.infnet.edu.br
                                      cursos@infnet.edu.br
                                             2122-8800


                               Esta palestra está disponível em:

   http://www.infnet.edu.br/Home/Eventos/CiclodePalestraseMiniCursos/EventosemTI/tabid/257/Default.aspx


                                          Ministrada por
                               André Luiz Monteiro da Costa


                                                E-mail:
                                andre.monteiro@prof.infnet.edu.br



                                                                                                          106

Mais conteúdo relacionado

Mais procurados

Comunicação visual conceito,signos-v001-parte 1
Comunicação visual conceito,signos-v001-parte 1Comunicação visual conceito,signos-v001-parte 1
Comunicação visual conceito,signos-v001-parte 1
PEDRO DAVID
 
Fundamentos do design
Fundamentos do designFundamentos do design
Fundamentos do design
drimartinez
 
Aula10 fluxogramas
Aula10 fluxogramasAula10 fluxogramas
Aula10 fluxogramas
Kércia Silva
 
Introdução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareIntrodução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de Software
Daniel Cukier
 
13 - Tipos de Processos x Arranjo Físico
13 - Tipos de Processos x Arranjo Físico13 - Tipos de Processos x Arranjo Físico
13 - Tipos de Processos x Arranjo Físico
Philippe Elias
 
Eav audio e imersão 2
Eav audio e imersão 2Eav audio e imersão 2
Eav audio e imersão 2
UNIP. Universidade Paulista
 
(Breve) Introdução ao Design
(Breve) Introdução ao Design(Breve) Introdução ao Design
(Breve) Introdução ao Design
Marcio Duarte
 
Topicos De Um Projeto
Topicos De Um ProjetoTopicos De Um Projeto
Topicos De Um Projeto
bethbal
 
Aula 1 473 - as funções da empresa
Aula 1   473 - as funções da empresaAula 1   473 - as funções da empresa
Aula 1 473 - as funções da empresa
Luciana C. L. Silva
 
[cv - 2011.2] 04-elementos relacionais
[cv - 2011.2] 04-elementos relacionais[cv - 2011.2] 04-elementos relacionais
[cv - 2011.2] 04-elementos relacionais
Eduardo Novais
 
Classificação dos Sistemas de Produção - Parte 1
Classificação dos Sistemas de Produção - Parte 1Classificação dos Sistemas de Produção - Parte 1
Classificação dos Sistemas de Produção - Parte 1
Philippe Elias
 
Gráfico de Gantt
Gráfico de GanttGráfico de Gantt
Gráfico de Gantt
Andrea Dalforno
 
Aula 3 - Planejamento e Controle da Produção II
Aula 3 - Planejamento e Controle da Produção IIAula 3 - Planejamento e Controle da Produção II
Aula 3 - Planejamento e Controle da Produção II
Unidade Acedêmica de Engenharia de Produção
 
Design e composição gráfica
Design e composição gráficaDesign e composição gráfica
Design e composição gráfica
Pedro Fidalgo
 
Aula 06 cores especiais
Aula 06   cores especiaisAula 06   cores especiais
Aula 06 cores especiais
Elizeu Nascimento Silva
 
01 introdução à algebra relacional
01   introdução à algebra relacional01   introdução à algebra relacional
01 introdução à algebra relacional
charlesoliveira13
 
[slides] Planejamento, Execução e Controle de Projetos (2015: 2º semestre)
[slides] Planejamento, Execução e Controle de Projetos (2015: 2º semestre)[slides] Planejamento, Execução e Controle de Projetos (2015: 2º semestre)
[slides] Planejamento, Execução e Controle de Projetos (2015: 2º semestre)
Alessandro Almeida
 
Roteiro para escrever projetos
Roteiro para escrever projetosRoteiro para escrever projetos
Cadeia de suprimentos no agronegócio brasileiro: desafios e oportunidades.
Cadeia de suprimentos no agronegócio brasileiro: desafios e oportunidades.Cadeia de suprimentos no agronegócio brasileiro: desafios e oportunidades.
Cadeia de suprimentos no agronegócio brasileiro: desafios e oportunidades.
Conselho Regional de Administração de São Paulo
 
Modais de transporte aula 4
Modais de transporte aula 4Modais de transporte aula 4
Modais de transporte aula 4
Luis Gustavo Lomi
 

Mais procurados (20)

Comunicação visual conceito,signos-v001-parte 1
Comunicação visual conceito,signos-v001-parte 1Comunicação visual conceito,signos-v001-parte 1
Comunicação visual conceito,signos-v001-parte 1
 
Fundamentos do design
Fundamentos do designFundamentos do design
Fundamentos do design
 
Aula10 fluxogramas
Aula10 fluxogramasAula10 fluxogramas
Aula10 fluxogramas
 
Introdução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareIntrodução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de Software
 
13 - Tipos de Processos x Arranjo Físico
13 - Tipos de Processos x Arranjo Físico13 - Tipos de Processos x Arranjo Físico
13 - Tipos de Processos x Arranjo Físico
 
Eav audio e imersão 2
Eav audio e imersão 2Eav audio e imersão 2
Eav audio e imersão 2
 
(Breve) Introdução ao Design
(Breve) Introdução ao Design(Breve) Introdução ao Design
(Breve) Introdução ao Design
 
Topicos De Um Projeto
Topicos De Um ProjetoTopicos De Um Projeto
Topicos De Um Projeto
 
Aula 1 473 - as funções da empresa
Aula 1   473 - as funções da empresaAula 1   473 - as funções da empresa
Aula 1 473 - as funções da empresa
 
[cv - 2011.2] 04-elementos relacionais
[cv - 2011.2] 04-elementos relacionais[cv - 2011.2] 04-elementos relacionais
[cv - 2011.2] 04-elementos relacionais
 
Classificação dos Sistemas de Produção - Parte 1
Classificação dos Sistemas de Produção - Parte 1Classificação dos Sistemas de Produção - Parte 1
Classificação dos Sistemas de Produção - Parte 1
 
Gráfico de Gantt
Gráfico de GanttGráfico de Gantt
Gráfico de Gantt
 
Aula 3 - Planejamento e Controle da Produção II
Aula 3 - Planejamento e Controle da Produção IIAula 3 - Planejamento e Controle da Produção II
Aula 3 - Planejamento e Controle da Produção II
 
Design e composição gráfica
Design e composição gráficaDesign e composição gráfica
Design e composição gráfica
 
Aula 06 cores especiais
Aula 06   cores especiaisAula 06   cores especiais
Aula 06 cores especiais
 
01 introdução à algebra relacional
01   introdução à algebra relacional01   introdução à algebra relacional
01 introdução à algebra relacional
 
[slides] Planejamento, Execução e Controle de Projetos (2015: 2º semestre)
[slides] Planejamento, Execução e Controle de Projetos (2015: 2º semestre)[slides] Planejamento, Execução e Controle de Projetos (2015: 2º semestre)
[slides] Planejamento, Execução e Controle de Projetos (2015: 2º semestre)
 
Roteiro para escrever projetos
Roteiro para escrever projetosRoteiro para escrever projetos
Roteiro para escrever projetos
 
Cadeia de suprimentos no agronegócio brasileiro: desafios e oportunidades.
Cadeia de suprimentos no agronegócio brasileiro: desafios e oportunidades.Cadeia de suprimentos no agronegócio brasileiro: desafios e oportunidades.
Cadeia de suprimentos no agronegócio brasileiro: desafios e oportunidades.
 
Modais de transporte aula 4
Modais de transporte aula 4Modais de transporte aula 4
Modais de transporte aula 4
 

Destaque

Programacao Funcional Em Ruby
Programacao Funcional Em RubyProgramacao Funcional Em Ruby
Programacao Funcional Em Ruby
Elomar Souza
 
Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre
Ambiente Livre
 
Pentaho, Hadoop , Big Data e Data Lakes
Pentaho, Hadoop , Big Data e Data LakesPentaho, Hadoop , Big Data e Data Lakes
Pentaho, Hadoop , Big Data e Data Lakes
Ambiente Livre
 
Calc avancado
Calc avancadoCalc avancado
Calc avancado
Jorge Vaz
 
Automatizacao de tarefas
Automatizacao de tarefasAutomatizacao de tarefas
Automatizacao de tarefas
arturramisio
 
Unidade 7 - Estruturando Banco de Dados com o BR Office Base
Unidade 7  - Estruturando Banco de Dados com o BR Office BaseUnidade 7  - Estruturando Banco de Dados com o BR Office Base
Unidade 7 - Estruturando Banco de Dados com o BR Office Base
Rogerio P C do Nascimento
 
Programacao de macros_com_libre_office_basic_slideshare
Programacao de macros_com_libre_office_basic_slideshareProgramacao de macros_com_libre_office_basic_slideshare
Programacao de macros_com_libre_office_basic_slideshare
Marcio Junior Vieira
 
Boas Práticas de Design em Aplicações Ruby on Rails
Boas Práticas de Design em Aplicações Ruby on RailsBoas Práticas de Design em Aplicações Ruby on Rails
Boas Práticas de Design em Aplicações Ruby on Rails
rinaldifonsecanascimento
 
Pentaho
PentahoPentaho
Pentaho
Tiago Barreto
 
Programação de Macros com LibreOffice Basic
Programação de Macros com LibreOffice BasicProgramação de Macros com LibreOffice Basic
Programação de Macros com LibreOffice Basic
Ambiente Livre
 
MongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a DocumentosMongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a Documentos
UNIFESP - Universidade Federal de São Paulo
 
Unidade 7 - Estruturando Banco de Dados com o BR Office Base - parte 2
Unidade 7  - Estruturando Banco de Dados com o BR Office Base - parte 2Unidade 7  - Estruturando Banco de Dados com o BR Office Base - parte 2
Unidade 7 - Estruturando Banco de Dados com o BR Office Base - parte 2
Rogerio P C do Nascimento
 
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
Ambiente Livre
 
NoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBNoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDB
Rodrigo Hjort
 
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e PentahoBig Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Ambiente Livre
 
Big Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveBig Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hive
Flavio Fonte, PMP, ITIL
 
OS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATAOS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATA
Leonardo Dias
 

Destaque (17)

Programacao Funcional Em Ruby
Programacao Funcional Em RubyProgramacao Funcional Em Ruby
Programacao Funcional Em Ruby
 
Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre
 
Pentaho, Hadoop , Big Data e Data Lakes
Pentaho, Hadoop , Big Data e Data LakesPentaho, Hadoop , Big Data e Data Lakes
Pentaho, Hadoop , Big Data e Data Lakes
 
Calc avancado
Calc avancadoCalc avancado
Calc avancado
 
Automatizacao de tarefas
Automatizacao de tarefasAutomatizacao de tarefas
Automatizacao de tarefas
 
Unidade 7 - Estruturando Banco de Dados com o BR Office Base
Unidade 7  - Estruturando Banco de Dados com o BR Office BaseUnidade 7  - Estruturando Banco de Dados com o BR Office Base
Unidade 7 - Estruturando Banco de Dados com o BR Office Base
 
Programacao de macros_com_libre_office_basic_slideshare
Programacao de macros_com_libre_office_basic_slideshareProgramacao de macros_com_libre_office_basic_slideshare
Programacao de macros_com_libre_office_basic_slideshare
 
Boas Práticas de Design em Aplicações Ruby on Rails
Boas Práticas de Design em Aplicações Ruby on RailsBoas Práticas de Design em Aplicações Ruby on Rails
Boas Práticas de Design em Aplicações Ruby on Rails
 
Pentaho
PentahoPentaho
Pentaho
 
Programação de Macros com LibreOffice Basic
Programação de Macros com LibreOffice BasicProgramação de Macros com LibreOffice Basic
Programação de Macros com LibreOffice Basic
 
MongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a DocumentosMongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a Documentos
 
Unidade 7 - Estruturando Banco de Dados com o BR Office Base - parte 2
Unidade 7  - Estruturando Banco de Dados com o BR Office Base - parte 2Unidade 7  - Estruturando Banco de Dados com o BR Office Base - parte 2
Unidade 7 - Estruturando Banco de Dados com o BR Office Base - parte 2
 
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
Pentaho com Hadoop – O Canivete Suíço do Cientistas de Dados para Big Data An...
 
NoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDBNoSQL: onde, como e por quê? Cassandra e MongoDB
NoSQL: onde, como e por quê? Cassandra e MongoDB
 
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e PentahoBig Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
 
Big Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hiveBig Data - O que é o hadoop, map reduce, hdfs e hive
Big Data - O que é o hadoop, map reduce, hdfs e hive
 
OS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATAOS CINCO Vs DO BIG DATA
OS CINCO Vs DO BIG DATA
 

Semelhante a Orientação a objetos na prática

Aula 04.pdf
Aula 04.pdfAula 04.pdf
Aula 04.pdf
GreiceSilva21
 
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfAPOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
pedrina4
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
Mahayana2706
 
Orientacao a Objetos
Orientacao a ObjetosOrientacao a Objetos
Orientacao a Objetos
Robson Silva Espig
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
Regis Magalhães
 
2.1 introdução a oo
2.1 introdução a oo2.1 introdução a oo
2.1 introdução a oo
PAULO Moreira
 
Aula 01 introdução aoo
Aula 01   introdução aooAula 01   introdução aoo
Aula 01 introdução aoo
Maria Alice Jovinski
 
01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...
01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...
01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...
odnanfer
 
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
César Augusto Pessôa
 
Oo presentation básica
Oo presentation básicaOo presentation básica
Oo presentation básica
Lorena de Souza
 
3.1 orientação objetos
3.1  orientação objetos3.1  orientação objetos
3.1 orientação objetos
Frank Coelho
 
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
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
danielrpgj30
 
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
 
1 - Introduação - Classes - Objetos.pdf
1 - Introduação - Classes - Objetos.pdf1 - Introduação - Classes - Objetos.pdf
1 - Introduação - Classes - Objetos.pdf
JoberthSilva
 
Conceitos de Orientação A Objeto
Conceitos de Orientação A ObjetoConceitos de Orientação A Objeto
Conceitos de Orientação A Objeto
Luciano Almeida
 
Introdução à programação por objectos final
Introdução à programação por objectos finalIntrodução à programação por objectos final
Introdução à programação por objectos final
emcp11
 
Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)
guest18b3c00
 
Linguagem de programação introdução v1
Linguagem de programação   introdução v1Linguagem de programação   introdução v1
Linguagem de programação introdução v1
Carlos Melo
 
aula 1.pptx
aula 1.pptxaula 1.pptx
aula 1.pptx
EduquesuaRedeSocial
 

Semelhante a Orientação a objetos na prática (20)

Aula 04.pdf
Aula 04.pdfAula 04.pdf
Aula 04.pdf
 
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdfAPOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
APOO.INT- S01 Paradigma de Orientação a Objetos (2).pdf
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Orientacao a Objetos
Orientacao a ObjetosOrientacao a Objetos
Orientacao a Objetos
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
2.1 introdução a oo
2.1 introdução a oo2.1 introdução a oo
2.1 introdução a oo
 
Aula 01 introdução aoo
Aula 01   introdução aooAula 01   introdução aoo
Aula 01 introdução aoo
 
01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...
01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...
01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...
 
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
 
Oo presentation básica
Oo presentation básicaOo presentation básica
Oo presentation básica
 
3.1 orientação objetos
3.1  orientação objetos3.1  orientação objetos
3.1 orientação objetos
 
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
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação 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
 
1 - Introduação - Classes - Objetos.pdf
1 - Introduação - Classes - Objetos.pdf1 - Introduação - Classes - Objetos.pdf
1 - Introduação - Classes - Objetos.pdf
 
Conceitos de Orientação A Objeto
Conceitos de Orientação A ObjetoConceitos de Orientação A Objeto
Conceitos de Orientação A Objeto
 
Introdução à programação por objectos final
Introdução à programação por objectos finalIntrodução à programação por objectos final
Introdução à programação por objectos final
 
Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)
 
Linguagem de programação introdução v1
Linguagem de programação   introdução v1Linguagem de programação   introdução v1
Linguagem de programação introdução v1
 
aula 1.pptx
aula 1.pptxaula 1.pptx
aula 1.pptx
 

Mais de TI Infnet

Mit em Arquitetura de Software
Mit em Arquitetura de SoftwareMit em Arquitetura de Software
Mit em Arquitetura de Software
TI Infnet
 
MBA em Comércio Eletrônico
MBA em Comércio EletrônicoMBA em Comércio Eletrônico
MBA em Comércio Eletrônico
TI Infnet
 
Mit em Gestão de Bancos de Dados com Oracle
Mit em Gestão de Bancos de Dados com OracleMit em Gestão de Bancos de Dados com Oracle
Mit em Gestão de Bancos de Dados com Oracle
TI Infnet
 
Inúmeras Razões para Migrar de Oracle 10g para 11g
Inúmeras Razões para Migrar de Oracle 10g para 11g Inúmeras Razões para Migrar de Oracle 10g para 11g
Inúmeras Razões para Migrar de Oracle 10g para 11g
TI Infnet
 
Paralelos Pmbok & Engenharia de Software
Paralelos Pmbok & Engenharia de SoftwareParalelos Pmbok & Engenharia de Software
Paralelos Pmbok & Engenharia de Software
TI Infnet
 
Desenvolvimento Ria com Java
Desenvolvimento Ria com JavaDesenvolvimento Ria com Java
Desenvolvimento Ria com Java
TI Infnet
 
Liderança
LiderançaLiderança
Liderança
TI Infnet
 
Metodologia de Gerenciamento De Projetos
Metodologia de Gerenciamento De ProjetosMetodologia de Gerenciamento De Projetos
Metodologia de Gerenciamento De Projetos
TI Infnet
 
Cobit
CobitCobit
Cobit
TI Infnet
 
Palestra infnet cenário da terceirização de ti no setor público melhores p...
Palestra infnet   cenário da terceirização de ti no setor público  melhores p...Palestra infnet   cenário da terceirização de ti no setor público  melhores p...
Palestra infnet cenário da terceirização de ti no setor público melhores p...
TI Infnet
 
Os Impactos da Lei Sarbanes Oxley no Processo de Auditoria e Gestão de TI
Os Impactos da Lei Sarbanes Oxley no Processo de Auditoria e Gestão de TIOs Impactos da Lei Sarbanes Oxley no Processo de Auditoria e Gestão de TI
Os Impactos da Lei Sarbanes Oxley no Processo de Auditoria e Gestão de TI
TI Infnet
 
Utilização do Modelo de Processos de Negócio pela TI
Utilização do Modelo de Processos de Negócio pela TIUtilização do Modelo de Processos de Negócio pela TI
Utilização do Modelo de Processos de Negócio pela TI
TI Infnet
 
Governança de TI e Segurança da Informação
Governança de TI e Segurança da InformaçãoGovernança de TI e Segurança da Informação
Governança de TI e Segurança da Informação
TI Infnet
 
Apresentação de Governança
Apresentação de GovernançaApresentação de Governança
Apresentação de Governança
TI Infnet
 
Atualizações do PMBOK 4ª Edição
Atualizações do PMBOK 4ª EdiçãoAtualizações do PMBOK 4ª Edição
Atualizações do PMBOK 4ª Edição
TI Infnet
 
O desafio na Gestão de Projetos de TI
O desafio na Gestão de Projetos de TIO desafio na Gestão de Projetos de TI
O desafio na Gestão de Projetos de TI
TI Infnet
 
Gestão de Carreira em TI
Gestão de Carreira em TIGestão de Carreira em TI
Gestão de Carreira em TI
TI Infnet
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
TI Infnet
 
Virtualização em Sistemas Computacionais - Palestra Infnet
Virtualização em Sistemas Computacionais - Palestra InfnetVirtualização em Sistemas Computacionais - Palestra Infnet
Virtualização em Sistemas Computacionais - Palestra Infnet
TI Infnet
 
Portaria No 1 398, De 18 De Setembro De 2009
Portaria No  1 398, De 18 De Setembro De 2009Portaria No  1 398, De 18 De Setembro De 2009
Portaria No 1 398, De 18 De Setembro De 2009
TI Infnet
 

Mais de TI Infnet (20)

Mit em Arquitetura de Software
Mit em Arquitetura de SoftwareMit em Arquitetura de Software
Mit em Arquitetura de Software
 
MBA em Comércio Eletrônico
MBA em Comércio EletrônicoMBA em Comércio Eletrônico
MBA em Comércio Eletrônico
 
Mit em Gestão de Bancos de Dados com Oracle
Mit em Gestão de Bancos de Dados com OracleMit em Gestão de Bancos de Dados com Oracle
Mit em Gestão de Bancos de Dados com Oracle
 
Inúmeras Razões para Migrar de Oracle 10g para 11g
Inúmeras Razões para Migrar de Oracle 10g para 11g Inúmeras Razões para Migrar de Oracle 10g para 11g
Inúmeras Razões para Migrar de Oracle 10g para 11g
 
Paralelos Pmbok & Engenharia de Software
Paralelos Pmbok & Engenharia de SoftwareParalelos Pmbok & Engenharia de Software
Paralelos Pmbok & Engenharia de Software
 
Desenvolvimento Ria com Java
Desenvolvimento Ria com JavaDesenvolvimento Ria com Java
Desenvolvimento Ria com Java
 
Liderança
LiderançaLiderança
Liderança
 
Metodologia de Gerenciamento De Projetos
Metodologia de Gerenciamento De ProjetosMetodologia de Gerenciamento De Projetos
Metodologia de Gerenciamento De Projetos
 
Cobit
CobitCobit
Cobit
 
Palestra infnet cenário da terceirização de ti no setor público melhores p...
Palestra infnet   cenário da terceirização de ti no setor público  melhores p...Palestra infnet   cenário da terceirização de ti no setor público  melhores p...
Palestra infnet cenário da terceirização de ti no setor público melhores p...
 
Os Impactos da Lei Sarbanes Oxley no Processo de Auditoria e Gestão de TI
Os Impactos da Lei Sarbanes Oxley no Processo de Auditoria e Gestão de TIOs Impactos da Lei Sarbanes Oxley no Processo de Auditoria e Gestão de TI
Os Impactos da Lei Sarbanes Oxley no Processo de Auditoria e Gestão de TI
 
Utilização do Modelo de Processos de Negócio pela TI
Utilização do Modelo de Processos de Negócio pela TIUtilização do Modelo de Processos de Negócio pela TI
Utilização do Modelo de Processos de Negócio pela TI
 
Governança de TI e Segurança da Informação
Governança de TI e Segurança da InformaçãoGovernança de TI e Segurança da Informação
Governança de TI e Segurança da Informação
 
Apresentação de Governança
Apresentação de GovernançaApresentação de Governança
Apresentação de Governança
 
Atualizações do PMBOK 4ª Edição
Atualizações do PMBOK 4ª EdiçãoAtualizações do PMBOK 4ª Edição
Atualizações do PMBOK 4ª Edição
 
O desafio na Gestão de Projetos de TI
O desafio na Gestão de Projetos de TIO desafio na Gestão de Projetos de TI
O desafio na Gestão de Projetos de TI
 
Gestão de Carreira em TI
Gestão de Carreira em TIGestão de Carreira em TI
Gestão de Carreira em TI
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Virtualização em Sistemas Computacionais - Palestra Infnet
Virtualização em Sistemas Computacionais - Palestra InfnetVirtualização em Sistemas Computacionais - Palestra Infnet
Virtualização em Sistemas Computacionais - Palestra Infnet
 
Portaria No 1 398, De 18 De Setembro De 2009
Portaria No  1 398, De 18 De Setembro De 2009Portaria No  1 398, De 18 De Setembro De 2009
Portaria No 1 398, De 18 De Setembro De 2009
 

Último

Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ismael Ash
 
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negóciosExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
ronaldos10
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
Faga1939
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
Ismael Ash
 
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebuliçãoExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão
 

Último (6)

Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
 
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negóciosExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
 
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebuliçãoExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebulição
 

Orientação a objetos na prática

  • 1. Orientação a Objetos na Prática Entenda o contexto da modelagem de software e sistemas, descubra a importância e as principais características da orientação a objetos. Andre Luiz Monteiro da Costa andre.monteiro@prof.infnet.edu.br
  • 2. Palestrante • Desenvolvedor JAVA. • Ex-docente do Senac - curso de desenvolvedor JAVA. • Ex-docente das Faculdades São José e Moacyr Bastos. • Ex-Analista de Sistemas da IplanRio. • Analista de Sistemas da FAPES/BNDES. • Docente da Academia do Concurso Público – gestão TI. • Docente da SOFEP. • Docente do Instituto INFNET. 2
  • 3. O paradigma da Orientação a Objetos Um paradigma é uma forma de abordar um problema. O paradigma da orientação a objetos surgiu no fim dos anos 60. Hoje em dia, praticamente suplantou o paradigma anterior, o paradigma estruturado... 3
  • 4. O paradigma da Orientação a Objetos Alan Kay, um dos pais do paradigma da orientação a objetos, formulou a chamada analogia biológica. “Como seria um sistema de software que funcionasse como um ser vivo? 4
  • 5. Analogia Biológica 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. 5
  • 6. Analogia Biológica De uma forma mais geral, Kay pensou em como construir um sistema de software a partir de agentes autônomos que interagem entre si. Com isso, ele estabeleceu os princípios da orientação a objetos. 6
  • 7. Orientação a Objetos - Princípios Tudo é um objeto. Pense em um objeto como uma super variável: ele armazena dados, mas você também pode fazer requisições a esse objeto, pedindo que ele faça operações sobre si próprio. Em teoria, você pode representar qualquer elemento conceitual no problema que você está tentando resolver (cachorros, livros, sócios, empréstimos, etc.) como um objeto no seu programa. 7
  • 8. Orientação a Objetos - Princípios Um programa é uma coleção de objetos dizendo uns aos outros o que fazer. Para fazer uma requisição a um objeto você “manda uma mensagem” para este objeto. Mais concretamente, você pode pensar em uma mensagem como sendo uma chamada de um procedimento ou função pertencente a um objeto em particular. 8
  • 9. Orientação a Objetos - Princípios Um objeto pode ser composto por vários outros objetos Em outras palavras: você pode criar um novo tipo de objeto empacotando objetos existentes. Dessa forma, você pode adicionar complexidade a um programa e escondê-la por trás da simplicidade de uso dos objetos. 9
  • 10. Orientação a Objetos - Princípios Todo objeto tem um tipo. Usando as palavras certas, cada objeto é uma instância de uma classe, onde classe é um sinônimo de tipo. A questão mais importante relativa a uma classe é “que mensagens eu posso enviar para uma instância dessa classe?” 10
  • 11. Orientação a Objetos - Princípios Todos os objetos de um dado tipo podem receber as mesmas mensagens. Além disso, uma vez que, por exemplo, um objeto do tipo “círculo” é também um objeto do tipo “forma geométrica”, o objeto “círculo” aceita qualquer mensagem endereçada a uma “forma geométrica”. Essa capacidade de “subtituição” de um objeto por outro é um dos mais poderosos conceitos em orientação a objetos. 11
  • 12. Objeto • Definição: • Um conceito, uma abstração com significado específico em um contexto • Propósito: • Representar uma entidade do mundo real • Objetos possuem: • Identidade • Características que determinam seu estado • Comportamento específico definido por um conjunto de ações 12
  • 13. Abstração Uma abstração é qualquer modelo que inclui os aspectos relevantes de alguma coisa, ao mesmo tempo em que ignora os menos importantes. 13
  • 14. Exemplo Beija-Flor Identidade: ‘o beija-flor que vem ao meu jardim’ Características: penas azuis bico fino vôo rápido Comportamento: voar piar 14
  • 15. Exemplo Pessoa Identidade: ‘Mário’ Características: olhos pretos nasceu em 16/02/70 pesa 70kg mede 1,70m Comportamento: andar falar comer rir 15
  • 16. Exemplo Telefone Identidade:: número 2576-0989 Características: azul 2.4 GHz tone Comportamento: tocar discar 16
  • 17. Exemplo Ônibus Identidade: placa LXY 7684 Características: cor amarela 30 assentos a diesel Comportamento: frear andar correr buzinar acelerar 17
  • 18. Objeto Representação Identidade Características (estado)‫‏‬ Comportamento Serviços, Interface ou protocolo Mário 18
  • 19. Objeto Implementação › Interface Visível Conjunto de operações › Parte encapsulada (escondida)‫‏‏‬ Estado do Objeto - Atributos Implementação de suas operações - Métodos Estado do Objeto (valor Serviços, de seus Operações atributos)‫‏‬ ou Interface da Classe 19
  • 20. Encapsulamento Na terminologia da orientação a objetos, diz-se que um objeto possui uma interface. A interface de um objeto é o que ele conhece e o que ele sabe fazer, sem descrever como o objeto conhece ou faz. A interface de um objeto define os serviços que ele pode realizar e conseqüentemente as mensagens que ele recebe. 20
  • 21. Encapsulamento Uma interface pode ter várias formas de implementação. Mas, pelo Princípio do Encapsulamento, a implementação de um serviço no objeto servidor não importa para o objeto cliente. (O cliente confia em interfaces e não em implementações)‫‏‬ 21
  • 22. Classe Definição: › Abstrações utilizadas para representar um conjunto de objetos com características e comportamento idênticos Uma classe pode ser vista como uma “fábrica de objetos” 22
  • 23. Classe Tecnicamente falando, objetos são “instâncias” de uma classe em tempo de execução › Todos os objetos são instâncias de alguma classe › Todos os objetos de uma classe são idênticos no que diz respeito a sua interface e implementação › O que difere um objeto de outro é seu estado e sua identidade 23
  • 24. Classe – Notação Gráfica • Segundo a OMG: 24
  • 25. Exemplo classe Identidade::o beija-flor que vem ao meu jardim Características: instância da cor das penas: azuis classe (objeto)‫‏‬ formato do bico: fino velocidade de vôo: rápida Comportamento: voar piar 25
  • 26. Exemplo classe Identidade:: meu pombo correio Características: cor das penas: cinza instância da formato do bico: curto classe (objeto)‫‏‬ velocidade de vôo: média Comportamento: voar piar 26
  • 28. Exemplo classe Identidade: ‘Telefone da minha casa’ Características: marca: Siemens instância da número: 2576-0989 classe (objeto)‫‏‬ discagem: pulso Comportamento: tocar discar 28
  • 29. Exemplo classe Identidade: ‘Meu celular’ Características: marca: Nokia instância da número: 99193467 classe (objeto)‫‏‬ discagem: tom Comportamento: tocar discar 29
  • 31. Classes Classe Instâncias (objetos)‫‏‬ 31
  • 34. Atributos Descrevem as características das instâncias de uma classe Seus valores definem o estado do objeto O estado de um objeto pode mudar ao longo de sua existência A identidade de um objeto, contudo, nunca muda Funcionário_Helena Nome=Helena Reis Nasc=28/01/1965 Salário = 4.000 InformarSalário Funcionário_Mário CalcularIdade Nome=Mário Sá Nasc=16/02/1970 Salário = 3.000 InformarSalário CalcularIdade 34
  • 35. Serviços/Operações Representam o comportamento das instâncias de uma classe Correspondem às ações das instâncias de uma classe Funcionário_Helena 4000 Nome=Helena Reis Nasc=28/01/1965 Salário = 4.000 InformarSalário Funcionário_Mário CalcularIdade Nome=Mário Sá 3000 Nasc=16/02/1970 Salário = 3.000 Informar InformarSalário Salário? CalcularIdade 35
  • 37. Serviços/Métodos Alguns métodos especiais: › Construtores – criam objetos de uma classe › Destrutores – destroem objetos de uma classe 37
  • 38. Passos para a criação de um objeto Declarar uma referência para o objeto Funcionario funcionario; Criar uma instância do objeto funcionario = new Funcionario(); O sistema operacional aloca espaço em memória para o novo objeto e preenche os seus atributos com valores default (zero para números, nil para referências, false para booleanos, string vazia para Strings. 38
  • 39. Passos para a criação de um objeto Se houver um método construtor, este é invocado O método construtor é usado para alterar os valores default dos atributos, possibilitando que o objeto se torne disponível para a aplicação já em um estado pré-definido Modificação explícita do estado do objeto funcionario.salario = 4000; //se atributo é público funcionario.gravaSalario(4000); // caso contrário A referência para o objeto pode ser usada para alterar o estado dos atributos do objeto. 39
  • 40. O método construtor (FAQ)‫‏‏‬ É obrigatória a inclusão de um método construtor na classe? › Não. Um construtor default é herdado de TObject. Este construtor aloca espaço para o novo objeto em memória e cria um objeto com os atributos e referências todas preenchidas com zeros. • Quando então devo escrever um método construtor? › Quando houver atributos privados que não possam mais ser alterados uma vez que o objeto tenha sido instanciado › Quando o objeto for um objeto complexo, cuja arquitetura interna (atributos e referências) não é conhecida pelo programador. 40
  • 41. Herança O que é herança? Herdar é derivar características de gerações precedentes. No mundo da Programação Orientada a Objetos, o termo é associado com uma das formas de reutilização de software. Através da herança, novas classes podem ser derivadas das classes existentes. A nova classe herda propriedades e métodos da classe base. A nova classe também pode adicionar suas próprias propriedades e métodos. 41
  • 42. Herança Para que serve a herança? Considere a criação de uma classe ClasseB. Que métodos estão disponíveis através de uma referência para a ClasseB (isto é, um objeto)? 42
  • 43. Herança Suponha agora que a classe ClasseB herda de ClasseA Que métodos estão agora disponíveis para uma referência da ClasseB (um objeto) ? 43
  • 44. Herança Poderoso mecanismo para o reaproveitamento de código. O objeto da classe classeB tem agora disponíveis os métodos da classe ClasseA sem ser necessário reescrevê-los na classe ClasseB. Um objeto da classe ClasseB também é um objeto da classe ClasseA. 44
  • 45. Herança Facilita a manutenção do código: Os métodos não são replicados. Se for necessário alterar o código do método m3(), basta alterá-lo na classe ClasseA. A classe ClasseB pode "recusar" parte da herança, reimplementando os métodos herdados, sobrescrevendo-os. 45
  • 46. Herança O método m3(), agora disponível para objetos da classe ClasseB, é aquele implementado em ClasseB. 46
  • 47. Herança Várias subclasses podem herdar da mesma superclasse (Herança Simples). 47
  • 48. Herança Em Java, não é permitido herdar de mais de uma classe (Herança Múltipla). ERRADO!!!! 48
  • 49. Herança A hierarquia de herança pode ter vários níveis Que métodos estão agora disponíveis para uma instância de ClasseC? 49
  • 50. Herança A Herança também pode surgir a partir da refatoração de classes existentes de modo a eliminar a duplicação de código Grande quantidade de atributos e métodos duplicados... 50
  • 51. Herança Refatoração Superclasse (características comuns)‫‏‬ Subclasses (características específicas)‫‏‬ 51
  • 52. Herança O mecanismo de herança pode ser melhor entendido através do seguinte exemplo: 52
  • 53. Herança A classe ContaBancaria tem 4 atributos: › nome: armazena o nome do cliente › cpf: armazena o número do CPF do cliente › numeroConta: armazena o número da conta do cliente › saldo: armazena o saldo da conta Os métodos depositar e sacar são usados para fazer um depósito ou retirada da conta bancária. A classe ContaBancária, sozinha, não é suficiente para realizar todas as transações bancárias. Existem geralmente dois tipos de contas: a conta corrente e a conta de investimentos. 53
  • 54. Herança Vamos derivar duas subclasses que herdam da superclasse ContaCorrente As subclasses ContaInvestimento e ContaCorrente herdam as propriedades e métodos da classe ContaBancaria 54
  • 55. Composição A classe contém referências para objetos de outras classes: › Estas referências são também atributos da classe. Uma maneira alternativa de estender a funcionalidade de uma classe agregando funcionalidades de outras classes. Herança x Composição É UM x TEM UM 55
  • 56. Composição O mecanismo de herança nem sempre é apropriado Estender funcionalidade através de herança pode não ser "natural": › Uma conta de investimento é uma conta bancária! › Uma conta de investimento não é uma Pessoa! 56
  • 57. Composição • Se um proprietário tiver mais de um carro, a informação ficará redundante. 57
  • 58. Composição • Utilizando uma conexão de ocorrência, o modelo poderia ser melhorado da seguinte forma: 58
  • 59. Polimorfismo "Programação Genérica". Trata objetos na mesma hierarquia de classes como se todos fossem objetos da superclasse. Tornam o programa extensível: › Facilidade para adicionar novas classes. Nesta seção: invocaremos os métodos das subclasses usando referências para a superclasse 59
  • 60. Polimorfismo Conceito Chave Objetos das subclasses podem ser tratados como objetos da superclasse A classe B É UMA classe A → Um objeto da classe B ::Project2 A pode ser usado em qualquer m1(...) lugar onde um objeto da m2(...) classe A é esperado. B m1(...) m3(...) B A 60
  • 61. Polimorfismo Tabelas Virtuais Classe A ::Project2 operação método invocado m1()‫‏‬ A.m1()‫‏‬ A m2()‫‏‬ A.m2()‫‏‬ m1(...) m2(...) B Classe B m1(...) operação método invocado m3(...) m1()‫‏‬ B.m1()‫‏‬ m2()‫‏‬ A.m2()‫‏‬ m3()‫‏‬ B.m3()‫‏‬ 61
  • 62. Polimorfismo Chamadas polimórficas permitem simplificar a lógica condicional dos programas Imagine um sistema ::Unit1 JW indows JLinux construído para close(...) close(...) maximize(...) maximize(...) trabalhar tanto em minimize(...) minimize(...) Windows quanto em move(...) move(...) open(...) open(...) Linux jWin; JWindows jWin; jLin; JLinux jLin; 62
  • 63. Polimorfismo TObject); procedure TForm1.FormCreate(Sender: TObject); begin if SO='Windows' then jWin := JWindows.Create else jLin := JLinux.Create; JLinux.Create; end; Observe a quantidade TMessage); procedure TForm1.WMSysCommand(var Message: TMessage); de lógica begin (Message.wParam if (Message.wParam = SC_MINIMIZE) then condicional! if SO='Windows' then jWin.minimize else jLin.minimize (Message.wParam else if (Message.wParam = SC_MAXIMIZE) then if SO='Windows' then jWin.maximize else jLin.maximize (Message.wParam else if (Message.wParam = SC_CLOSE) then 63
  • 64. Polimorfismo Solução Polimórfica ::Unit1 Janela close(...) maximize(...) var minimize(...) jan: Janela; jan: Janela; move(...) open(...) JLinux JW indows close(...) close(...) maximize(...) maximize(...) minimize(...) minimize(...) move(...) move(...) open(...) open(...) 64
  • 65. Polimorfismo TObject); procedure TForm1.FormCreate(Sender: TObject); begin if SO='Windows' then jan := JWindows.Create else jan := JLinux.Create; JLinux.Create; end; TMessage); procedure TForm1.WMSysCommand(var Message: TMessage); begin (Message.wParam if (Message.wParam = SC_MINIMIZE) then jan.minimize else if (Message.wParam = SC_MAXIMIZE) then (Message.wParam Observe a jan.maximize ausência de else if (Message.wParam = SC_CLOSE) then (Message.wParam jan.close lógica (Message.wParam else if (Message.wParam = SC_MOVE) then condicional jan.move else inherited; end; 65
  • 66. Polimorfismo Observe ainda como seria fácil acrescentar uma janela MOTIF para o Sun Solaris ::Unit1 Janela close(...) maximize(...) minimize(...) move(...) open(...) JLinux JSolaris JW indows close(...) close(...) close(...) maximize(...) maximize(...) maximize(...) minimize(...) minimize(...) minimize(...) move(...) move(...) move(...) open(...) open(...) open(...) 66
  • 67. Polimorfismo TObject); procedure TForm1.FormCreate(Sender: TObject); begin if SO='Windows' then jan := JWindows.Create Adicionou-se mais else if SO = 'Linux' then jan := JLinux.Create uma linha aqui... else JSolaris.Create; jan := JSolaris.Create; end; TMessage); procedure TForm1.WMSysCommand(var Message: TMessage); begin (Message.wParam if (Message.wParam = SC_MINIMIZE) then jan.minimize (Message.wParam else if (Message.wParam = SC_MAXIMIZE) then jan.maximize (Message.wParam else if (Message.wParam = SC_CLOSE) then ... e nada mudou jan.close (Message.wParam else if (Message.wParam = SC_MOVE) then aqui! jan.move else inherited; end; 67
  • 68. 68
  • 69. Diagrama de casos de uso • Formado por: Atores, Casos de Uso e relacionamentos: › Que atores realizam os casos de uso; › Quais casos de uso incluem (usam) outros casos de uso; › Quais casos de uso trazem funcionalidades (estendem) de outros casos de uso; 69
  • 70. Diagrama de casos de uso 70
  • 71. Ator • Papel que o usuário desempenha com relação ao sistema. <<actor>> Aluno • Principal o caso de uso tenta satisfazer ao seu objetivo no sistema; • Secundário qualquer outro que participa no caso de uso; 71
  • 72. Caso de Uso • Técnica para captação de requisitos de um sistema. › Funcional funcionalidades do sistema; › Não-funcional características de qualidade relacionadas às funcionalidades; 72
  • 73. Caso de Uso • Descrevem interações típicas entre usuários de um sistema, através de cenários: › Típico ( ou principal ) comportamento esperado; › Alternativo desvios no comportamento. 73
  • 74. Caso de Uso - estereótipos • Extends › relacionamento que especifica como e quando um determinado comportamento ocorrerá. › pode também determinar um comportamento opcional. 74
  • 75. Caso de Uso - estereótipos • Include › define que o caso de uso contém um comportamento de outro caso de uso. › comportamento obrigatório. 75
  • 76. Caso de Uso - descrição • Cada caso de uso tem uma descrição o qual descreve a funcionalidade que será construída no sistema proposto. 76
  • 78. Diagrama de Classes • Descreve os tipos de objetos presentes no sistema e os vários relacionamentos estáticos existentes entre eles. • Também mostra atributos e operações das classes. › Atributos valores dos campos; › Operações ações que uma classe sabe realizar; 78
  • 79. Classe Abstrata • Representa uma estrutura que não será implementada, mas de importância visual para o problema; • Muito usada com herança; 79
  • 80. Classe Abstrata Não pode ser instanciada diretamente, apenas por instâncias de subclasses; Normalmente tem uma ou mais operações abstratas (sem implementação); NOTAÇÃO NOTAÇÃO: Nome da classe em itálico itá Rotulado com {abstract} Rotulado com <<abstract>> 80
  • 81. Classe - Visibilidade operaç Qualquer atributo ou operação pode ser rotulado. rotulado. abreviaç A UML fornece quatro abreviações para visibilidade: visibilidade: + público - privado ~ (default)‫‏‬ pacote (default)‫‏‬ # protegido 81
  • 82. Classe – associação • Declara que pode existir uma ligação entre as instâncias das classes. associação Classe associativa 82
  • 83. Classe – associação bidirecional • Par de atributos inversamente vinculados. 83
  • 84. Classe – multiplicidade • Indica quantos objetos podem preencher o atributo; • Mais comuns são: › 1 (obrigatório); › 0..1 (opcional); › * (múltiplos – 0 ou mais)‫‏‏‬ 84
  • 85. Classe – dependência • É um relacionamento conceitual (não físico). • Uma alteração na classe fornecedora pode impactar a classe dependente. 85
  • 86. Classe – generalização • É um relacionamento sistemático entre classes. • É o processo de herança. 86
  • 87. Classe – generalização GENERALIZAÇÃO • É um relacionamento sistemático entre classes. • É o processo de herança. ESPECIALIZAÇÃ O 87
  • 88. Classe – agregação X composição • É uma associação com significado mais forte; • Relacionamento do tipo: “É parte de...”. 88
  • 89. Classe – pacotes Agrupam classes em estrutura hierárquica; Fornecem visão das dependências entre os principais elementos de um sistema; Uma classe é membro de um único pacote; Pacotes contém subpacotes e classes; Toda classe deve ter um nome exclusivo dentro do pacote a que pertence; 89
  • 91. Diagramas de Interação • Tornam as chamadas entre participantes cristalinas; • Fornecem visão excepcional a respeito de quais participantes estão realizando quais comportamentos; 91
  • 92. Diagrama de Comunicação • Enfatiza os vínculos de dados entre os vários participantes na interação; • Permite livre posicionamento dos PARTICIPANTES, com numeração decimal aninhada; • Diagrama de Colaboração (UML 1.x) 92
  • 94. Diagrama de Sequência • Indica clareza na interação dos participantes; • Usado para observar o comportamento de vários objetos dentro do mesmo caso de uso; • Objeto = participante 94
  • 96. Diagrama de Máquina de Estado • Utilizados para especificar o comportamento da instância de um único objeto; • Possui estado inicial e final, estados e transições ; 96
  • 97. Diagrama de Máquina de Estado 97
  • 98. Diagrama de Atividades • Descreve processo de negócio e fluxo de trabalho; • Suportam comportamento paralo (diferença para fluxograma); • Semelhante Diagrama de Estados; 98
  • 99. Diagrama de Atividades Mostra “quem” faz “o quê” 99
  • 100. Ferramentas CASE para UML • Rational Rose (IBM)‫‏‏‬ • Enterprise Architect (Sparx Systems)‫‏‏‬ • ArgoUML (Tigris)‫‏‏‬ • Jude (Change Vision)‫‏‏‬ 100
  • 101. Links Úteis • BlueJ – www.bluej.org • UML – www.uml.org • Jude – jude.change-vision.com 101
  • 102. A Formação do Infnet Formação Desenvolvedor Java Código Nome do curso Horas Projeto de Sistemas e Orientação a Objetos com UML I550 40 h Ensinar conceitos de orientação a objetos e sua utilização no processo de desenvolvimento de software usando UML. Java Programming I552 48 h Ensinar a programar em Java para alunos que já sabem programar em qualquer outra linguagem. Java Web Applications I554 48 h Ensinar questões avançadas do desenvolvimento de aplicações Web com a linguagem de programação Java e os frameworks mais usados no mercado. 102
  • 103. A Formação do Infnet Formação Desenvolvedor Java: Sistemas Distribuídos Código Nome do curso Horas Projeto de Sistemas e Orientação a Objetos com UML I550 Ensinar conceitos de orientação a objetos e sua utilização no processo 40 h de desenvolvimento de software usando UML. Java Programming I552 Ensinar a programar em Java para alunos que já sabem programar em 48 h qualquer outra linguagem. Java Web Applications Ensinar questões avançadas do desenvolvimento de aplicações Web I554 48 h com a linguagem de programação Java e os frameworks mais usados no mercado. Java Enterprise Applications I556 Ensinar conceitos avançados de programação em Java para sistemas 48 h com alta demanda de acesso e segurança. Java Security I558 Ensinar conceitos avançados de segurança em Java para sistemas 24 h desktop e J2EE. Java Mobile I560 Ensinar programação Java para dispositivos móveis, como celulares e 32 h hand helds. Java Workshop I562 Colocar em prática o conhecimento avançado de desenvolvimento de 32 h aplicações Java. 103
  • 104. Perguntas 104
  • 105. OBRIGADO ! 105
  • 106. Contatos www.infnet.edu.br cursos@infnet.edu.br 2122-8800 Esta palestra está disponível em: http://www.infnet.edu.br/Home/Eventos/CiclodePalestraseMiniCursos/EventosemTI/tabid/257/Default.aspx Ministrada por André Luiz Monteiro da Costa E-mail: andre.monteiro@prof.infnet.edu.br 106