SlideShare a Scribd company logo
1 of 74
Download to read offline
2ULHQWDomR D 2EMHWRV
'D 7HRULD j 3UiWLFD HP -DYD
               CCUEC/Unicamp
                 outubro/99
Roteiro
5HXWLOL]DomR GH 3URMHWR H 6RIWZDUH

 3 Design Patterns (Padrões de Projeto)
 3 Frameworks
 3 Componentes
 3 RMI (Remote Method Invocation)
Reutilização de Projeto

3 'HVLJQ 3DWWHUQV - padrões de projeto e análise

3 )UDPHZRUNV orientados a objetos
Padrões de Projeto e Análise

              3DGU}HV GH RUJDQL]DomR GH KLHUDUTXLDV GH
FODVVHV SURWRFRORV H GLVWULEXLomR GH UHVSRQVDELOLGDGHV HQWUH FODVVHV
            TXH FDUDFWHUL]DP FRQVWUXo}HV HOHPHQWDUHV GH
                     SURMHWR RULHQWDGR D REMHWRV

 8P SDGUmR GH SURMHWR p XP HVWUXWXUD TXH DSDUHFH UHSHWLGDPHQWH
 QRV SURMHWRV RULHQWDGRV D REMHWRV SDUD UHVROYHU XP GHWHUPLQDGR
     SUREOHPD GH IRUPD IOH[tYHO H DGDSWiYHO GLQDPLFDPHQWH
Padrões de Projeto e Análise
Descrição padrão de um “design pattern”

      objetivo
      motivação
      aplicabilidade
      estrutura
      participantes
      colaborações
      conseqüências
      implementação
      exemplo de codificação
Padrões de Projeto
2EVHUYHU

Suponhamos uma aplicação de Administração de Solicitação
 de Serviços (ASS) de uma empresa prestadora de serviços,
   onde serviços-objeto devem ser sempre comunicados a
             respeito da alteração do estado do
     funcionário-objeto responsável pela sua execução.

   Como modelar a estrutura de dados e os métodos das
 classes Serviço e Funcionário para atender esse requisito?
Padrões de Projeto
2EVHUYHU: define uma dependência de um para muitos entre objetos de tal forma
             que quando um objeto muda de estado, todos os seus dependentes são
              notificados e atualizados automaticamente

                      observers
    Subject                                              Observer
   Attach(Observer)
   Detach(Observer)       for all o in observers{        Update()
   Notify()               o .Update()}


                                                       ConcreteObserver
  ConcreteSubject                           subject
                                                      Update()
  GetState()          return subjectState
  SetState()                                          observerState
   subjectState

                                                                      observerState=
                                                                       subject.GetState()
Padrões de Projeto
6WDWH

  Suponhamos que na nossa aplicação ASS, serviços-objeto,
 dependendo do estado em que se encontram (espera, parado,
em andamento, finalizado), tenham comportamentos diferentes,
     ou seja, reajem diferentemente à mesma mensagem.
                  Por exemplo: calculaValor()


        Como modelar a estrutura de dados e os métodos da
           classe Serviço para atender a esse requisito?
Padrões de Projeto
6WDWH: permite um objeto alterar seu comportamento quando seu estado
           interno se altera. Parecerá que o objeto mudou de classe.

                          state
    Context                                         State

   Request()                                        Handle()




   State    Handle()              ConcreteStateA        ConcreteStateB

                                  Handle()                  Handle()
Padrões de Projeto
RPSRVLWH

   Na nossa aplicação ASS, um serviço pode ser um serviço de
rede, de produção, de suporte ou de desenvolvimento de sistemas.
   Este último é na verdade uma composição de serviços que
      devem ser executados pela área de desenvolvimento e
         pelas outras especialidades mencionadas acima.
  Quando um objeto-serviço receber a mensagem “descrever()”,
   não queremos nos preocupar com o tipo de serviço que está
                     recebendo a mensagem.

    Como estruturar a classe Serviço de forma a permitir essa
                           facilidade?
Padrões de Projeto
RPSRVLWH
                                                   Representa hierarquias do
                                                   tipo parte-todo
    Client                 Component
                       Operation()                 Clientes ignoram a diferença
                       Add(Component)              entre composições de objetos
                       Remove(Component)           e objetos individuais
                       GetChild(int)



                                               children
            Leaf             Composite
         Operation()       Operation()             Forall g in children
                           Add(component)          g.Operation();
                           Remove(Component)
                           GetChild(int)
Padrões de Projeto



5HFRQKHFLPHQWR GH XP SDGUmR GH SURMHWR
Padrões de Projeto
RPR XVDU SDGU}HV GH IRUPD HILFD]
 Estude os padrões aos quais você já tenha acesso
 Procure por conceitos básicos similares
 Aplique o padrão
 Não espere que tudo possa ser resolvido pelos padrões

RPR GHVFREULU QRYRV SDGU}HV
 O padrão pode ser utilizado em outros lugares?
 Utilize o padrão várias vezes
 Espere fazer mudanças em seu diagrama de classes
Padrões de Projeto
9DQWDJHQV
  Aumentam a produtividade dos desenvolvedores
  Aumentam a consistência entre as aplicações
  São potencialmente melhores do que os códigos reutilizáveis
  Podem ser utilizados em combinação para resolverem problemas difíceis
  Existem novos padrões sendo desenvolvidos todos os dias

'HVYDQWDJHQV
  Precisamos aprender um grande número de padrões
  Alguns desenvolvedores não estão abertos a aceitar o trabalho dos outros
  Os padrões não são códigos
Frameworks
Classes abstratas funcionam como um molde para as suas
                       subclasses.
  Da mesma forma, um projeto constituído por classes
   abstratas funciona como um molde para aplicações.
Um projeto constituído por classes abstratas é denominado
    IUDPHZRUN GH DSOLFDo}HV RULHQWDGR D REMHWRV

       Um framework pode ser considerado como uma
           infra-estrutura de classes que provêem o
         comportamento necessário para implementar
         aplicações dentro de um domínio através dos
       mecanismos de especialização e composição de
      objetos, típicos das linguagens orientadas a objetos
Frameworks - Visão Conceitual
                          Estrutura de controle
                                                         Classes abstratas
 )UDPHZRUN


Chamadas a operações                                Chamadas a operações
implementadas pelo                                  implementadas pelo framework
usuário

                                                              $SOLFDomR HVSHFtILFD
        Classes específicas implementadas pelo usuário




      Visão conceitual da estrutura de um framework
Frameworks - Exemplo
09  0RGHO9LHZRQWUROOHU

Modelo: contém os dados da aplicação junto com a lógica dos negócios
          que define como alterar e acessar os dados; o modelo pode ser
          compartilhado entre vários objetos, visões e controladores.

Visão: é a forma de apresentação dos dados do modelo para o mundo externo,
        pode ser na forma de GUI, fala, som, listagens ou mesmo em uma
        saída não orientada a usuários, como ligar um ar condicionado.


Controlador: é a forma de tratar a entrada do usuário ou outro meio e dar
               feedback para o modelo, normalmente alterando alguns de
               seus dados.
Framework MVC

               0RGHOR            Mudei!
Mudei !

               Por favor,
               me passe os
     9LVmR       dados
                             RQWURODGRU
Framework MVC

           0RGHOR

                          Altere dados


9LVmR                          RQWURODGRU
         Altere apresentação



                                         O usuário interage
MVC - Exemplo
MVC - Model/View/Controller

                   0RGHOR


    Visão
                            Visão                 Controlador
 DWHJRULD
 9DORU
                                    Controlador
  Controlador
Reutilização de Software

 3 3DFRWHV 3DFNDJHV
3 RPSRQHQWHV

 3 :UDSSHUV
Packages
3DFNDJHV são conjuntos de classes relacionadas entre si
   de forma que ofereçam facilidades uma às outras.

Java traz uma grande quantidade de classes agrupadas em
     pacotes que estão prontas para serem utilizadas
                   pelo programador.
Packages
$OJXQV H[HPSORV GH 3DFNDJHV HP -DYD
MDYDODQJ - base da linguagem Java
          (Boolean, Character, Double, Float, Integer, Long, math, Object, String,..)

MDYDLR - pacote que permite manipulação de streams lendo ou gravando em arquivos
         (DataInputStream, FileInputStream, FileOutputStream, PrintScreen)

MDYDXWLO - pacote que provê uma miscelânea de classes úteis incluindo estrutura de
            dados, time, date, geração de números randômicos, etc..

MDYDDZW - pacote que provê um conjunto de manipulações de interface para o
          usuário tais como windows, caixas de diálogo, botões, cores, checkboxes..

MDYDDSSOHW - pacote que habilita a criação de applets através da classe Applet e também
             provê recursos de áudio
Packages - Exemplo
import java.applet.*;
import java.awt.*;
import java.util.Date;

public class 'LJLWDOORFN extends java.applet.Applet implements Runnable {

          Font theFont = new Font(“TimesRoman”, Font.BOLD, 24);
          Date theDate;
          Thread runner;

          public void VWDUW ()
          { if ( runner == null ) { runner = new Thread(this); runner.start();} }

          public void VWRS ()
          { if (runner != null) { runner.stop(); runner = null;} }
Packages - Exemplo
    public void UXQ ()
    { while (true)
             { theDate = new Date(); repaint();
                try { Thread.sleep(1000);}
                catch (InterruptedException e) {}
             }
    }

    public void SDLQW (Graphics g)
    { g.setFont(theFont);
      g.drawString(theDate.toString(), 10, 50);
    }
}
Componentes
Um componente é um pedaço de código encapsulado e
    acessível apenas a partir de sua interface

Um componente possui:

• seu FRPSRUWDPHQWR H[WHUQR (o que ele faz) que é definido
na sua especificação
• suas RSHUDo}HV LQWHUQDV (como ele faz o que se propõe a fazer)
que está escondido do mundo externo e pode ser entendido
apenas se examinarmos seu código fonte
• seu H[HFXWiYHO (runtime binário .exe .dll)
Componentes
           Componentes de negócio são essencialmente REMHWRV
    Cada componente implementa a OyJLFD GH QHJyFLR e as propriedades
                   relativas a uma entidade do mundo real.
 O que os distingue dos objetos tradicionais é a capacidade de ser utilizados
por aplicações produzidas em GLIHUHQWHV OLQJXDJHQV H WHFQRORJLDV, rodando
                    sobre diferentes sistemas operacionais.
     A tecnologia de componentes altera radicalmente a forma como os
                 sistemas de informação são desenvolvidos.
     Os componentes podem ser considerados como blocos básicos de
                                  construção.
  3DUD FULDU XP QRYR VLVWHPD RV GHVHQYROYHGRUHV DSHQDV FRPELQDP
                                FRPSRQHQWHV
Java Beans - Componentes Java
    Arquitetura Java de FRPSRQHQWHV UHXWLOL]iYHLV
             independente de plataforma.

Um -DYD%HDQ é um componente de software reutilizável
    que pode ser manipulado visualmente em uma
              ferramenta de construção
  (construtor de páginas Web, construtor visual de aplicações,
                      construtor de GUIs)
Projeto SanFrancisco - IBM
Wrappers - legacy systems

    Um ZUDSSHU é um componente que fornece serviços
         implementados por aplicações OHJDF.

Um ZUDSSHU pode ser utilizado para eliminar as dependências
  entre os sistemas atuais e fornecer a funcionalidade das
    aplicações OHJDF para novas soluções baseadas em
                       componentes.
Objetos Distribuídos em Java
 O sistema RMI (Remote Method Invocation) permite que um
     objeto rodando em uma máquina virtual Java (JVM)
chame métodos de um objeto que esteja rodando em outra JVM.

     RMI permite a comunicação remota entre programas
                     escritos em Java.

    RMI provê um mecanismo através do qual o servidor e
       o cliente se comunicam e passam informações.
      Estas aplicações são chamadas de aplicações de
                     REMHWRV GLVWULEXtGRV
RMI - Ambiente de Execução
 0iTXLQD OLHQWH                       0iTXLQD 6HUYLGRUD
                                                       1     Server
               Lookup           RMI Registry                 Interface
               Server               Register
                          7                  4
 OLHQW                             Server
   6                                  2                     3
Security
                      5       6HUYHU                       Security
Manager                                                    Manager
                  8                       8      9
           9
                                8

  Stub                         9                     Skeleton
Metodologia de Desenvolvimento
3   Visão geral - metodologias e UML
3   Técnicas de Análise
3   Projeto: Objetos, Interface e Sistema
3   Método Integrado
3   Considerações Gerais
3   Java Studio
Metodologia

Coleção de WpFQLFDV H GLUHWUL]HV para construção,
manutenção e melhoria em produtos de software.

Fornece uma base de comunicação, um conjunto de
 técnicas e uma base para engenharia de software.
Fases Clássicas
$QiOLVH GH
                             ,PSOHPHQWDomR          Teste de Unidades
5HTXLVLWRV
                                                    Teste do Sistema
                                                    Teste de Aceitação

         $QiOLVH
                                       7HVWH



                                               ,PSODQWDomR
                   3URMHWR
                                               FRQYHUVmR
Estratégia Paralela
                                                     Estudo Piloto
                                                     Abordagem Faseada
Modelo Espiral

                3ODQHMDPHQWR        $QiOLVH GH 5LVFRV
Análise de
requisitos

Planejamento                                   continua ou não ?
baseado nos
requisitos do                                        (P GLUHomR DR
usuário                                            VLVWHPD FRPSOHWR
                $YDOLDomR            (QJHQKDULD
                GR XVXiULR              (processo de desenvolvimento)
Metodologia OO



2 TXH ID] FRP TXH XPD PHWRGRORJLD GH GHVHQYROYLPHQWR GH
     VLVWHPDV VHMD FRQVLGHUDGD 2ULHQWDGD D 2EMHWRVquot;
Metodologia OO
    Uma metodologia de desenvolvimento de sistemas é
considerada Orientada a Objetos se ela orienta a construção
 de sistemas a partir do entendimento do mundo real como
um conjunto de objetos que comunicam-se entre si de forma
                         coordenada
Metodologia OO
4XDLV VmR DV SULQFLSDLV DWLYLGDGHV quot;

  • Entender quais são os REMHWRV envolvidos no domínio do problema

  • Entender como se FRPXQLFDP no mundo real

  • 3URMHWDU a forma como devem ser LPSOHPHQWDGRV
Metodologia OO
4XDLV DV SULQFLSDLV WpFQLFDV XWLOL]DGDVquot;

  • Entendimento do mundo real - Revisão de processos, Use cases

  • Objetos e seus relacionamentos - Modelo de Objetos, CRC, DTE, DI

  • Projeto - Padrões de projeto, frameworks, componentes

  • Implementação - ambientes de desenvolvimento, middleware (RMI),
                               banco de dados
Métodos de Desenvolvimento OO

%RRFK - Object-Oriented Design with Applications

:LUIV%URFN - Designing Object-Oriented Software (5)

5XPEDXJK - Object-Oriented Modeling and Design (207)

RDGRXUGRQ - Object-Oriented Analysis

-DFREVRQ - OO Software Engineering - A 8VH DVH Driven Approach

6KODHU0HOORU - Object /LIHFFOHV-Modeling the World in States

ROHPDQ et al: Fusion - OO Development: The )XVLRQ Method
Métodos de Desenvolvimento OO
                   (VWUDWpJLD

Escolher um Método como sendo o método SULQFLSDO
    para ser seguido e ater-se à sua notação para
                todo o ciclo de vida.

Usar WpFQLFDV GH RXWURV PpWRGRV para dar suporte aos
     esforços de modelagem e desenvolvimento.
UML - Unified Modeling Language
                              Rumbaugh
             Booch
                                                Jacobson
  Odell
  (classificação)
                                                         Meyer
Shlaer-Mellor                80/                         (condições pré e pós)
(ciclo de vida)
                                                       Harel
                                                       (diag. de estado)
Gamma et al
(Frameworks, padrões)
                                              Wirfs-Brock
                    Fusion                    (responsabilidades)
                    (desc.operações,
                    numeração de mensagens)
Análise Orientada a Objetos
Análise Dinâmica vs Análise Estática

A $QiOLVH (VWiWLFD descreve a estruturas e os relacionamentos
          entre os objetos do domínio do problema
               (Modelo de Classes de Objetos)


A $QiOLVH 'LQkPLFD descreve o comportamento dos objetos
    em termos de suas mudanças ao longo do tempo
                      (DTE, DI)
Análise - Use Case
                                             Ator: Usuário
                                             Atividade: Registrar solicitação no sistema
                                             Evento: necessidade de execução de um serviço
           Registrar Solicitação

                                             Curso básico de ação:
                                             1) cliente informa nome, e-mail, telefone,....
           Ler nova solicitação              2) cliente informa área destino dentro do CPD
Usuário                                      3) cliente escolhe produto na lista de produtos
                                                existentes
                                   Gerente   4) o sistema gera um número de solicitação
          Consulta s solicitação
                                             5) apresentar opção de vincular solicitação a
                                                outra já existente
                                             6) avisar área destino que existe uma nova
                                                solicitação para ela

      'LDJUDPD GR 8VH DVH                     'HVFULomR GR 8VH DVH
Análise - Modelo de Classes

            Solicitação        gera           Serviço     executado      Funcionário


data solicitação                      descrição                                   nome
usuário                               data-início                                 função
descrição                                           responsável                   e-mail
                                      data-final
justificativa

                            recebe
                      executa             Área Técnica        trabalha
                   autoriza                                              chefia
                                            nome
                                            objetivo


   'LDJUDPD GH FODVVHV H[WUDtGR D SDUWLU GD DQiOLVH GRV 8VH DVHV
Análise - CRC
Classes/responsabilidades/colaboradores
            ODVVH 6HUYLoR
            6XSHUFODVVH
           5HVSRQVDELOLGDGHV                 RODERUDGRUHV
          $incluir
          $obter o no. de serviços ativos
          $obter no. solic por serviço    Solicitação
          obter identificação
          obter data previsão inicio
          ....
          obter usuários por produto      Solicitação
             
          obter área responsável          Área técnica



     )HHGEDFN SDUD YDOLGDU RV PpWRGRV GD FODVVH
Análise - Diagrama de Interação (DI)
5HJLVWUDU 6ROLFLWDomR QR VLVWHPD SHOR XVXiULR
Cliente    Área técnica       Serviço   Solicitação   Solicitação   ÁreaTécnica


 E-mail

área receptora                    receber(sol)

Produto/serviço

Dados da solicitação

Vincular(sol)
Análise - Diagrama Transição de Estado

             alocar(recurso)
             (recurso não é suficiente)

                                           alocar(recurso)
     DEULU                                 (recurso é suficiente)

                $JXDUGDQGR                                             (P FXUVR
                                          desalocar(recurso)
                                          (recurso não é suficiente)


                                                                        desalocar(recurso)
                                                                        (recurso é suficiente)
Relacionamento entre as Técnicas de Análise


               Use case




               Modelo de
                Classes




                 CRC           DI
   DTE
Análise

No final da análise, já sabemos quais os objetos do “negócio”
  envolvidos e como eles devem interagir de forma geral,
  através do modelo de classes e do diagrama de interação
Projeto Orientado a Objetos
Projeto

6HUi TXH DV FODVVHV GH QHJyFLR VmR VXILFLHQWHV SDUD D
            LPSOHPHQWDomR GR VLVWHPD quot;

  3 O modelo de objetos pode ser otimizado ?

  3 Como o usuário vai interagir com o sistema ?

  3 Quem irá controlar o fluxo de mensagens ?

  3 Quem vai interagir com o banco de dados ?
Projeto
Tanto o domínio do problema, como o domínio da solução
      devem ser entendidos como um conjunto de
                   classes de objetos
  • ODVVHV GH LQWHUIDFH - interação com o usuário

  • ODVVHV GH FRQWUROH - seqüência das mensagens

  • ODVVHV GH EDQFR GH GDGRV - persistência dos dados

  • ODVVHV GH QHJyFLR - relacionadas no modelo de análise
Projeto
3ULQFLSDLV DWLYLGDGHV GH SURMHWR
3URMHWR GH 2EMHWRV
    • Otimização e refinamento do modelo de classes da análise
     • Conversão para o modelo relacional de banco de dados

3URMHWR GH ,QWHUIDFH
     Define a forma de interação dos usuários com a aplicação
     sendo construída

3URMHWR GH 6LVWHPD
    Produz uma arquitetura de aplicação a qual inclui decisões
    sobre a organização do sistema e a alocação de módulos
    em componentes de hardware e software
Projeto
                       7HFQRORJLDV GH DSRLR
3URMHWR GH 2EMHWRV
    • Design Patterns (padrões de projeto)
     • Packages


3URMHWR GH ,QWHUIDFH
     Utilização segundo um Guia de Estilo que oriente a utilização
     correta de recursos gráficos (GUIs), formulários, frames e outros,
     considerando o ambiente de implementação (por exemplo, Web)

3URMHWR GH 6LVWHPD
    Arquiteturas de aplicação , frameworks, componentes
Projeto de Interface
Etapas principais

3   Análise de usuários e tarefas
3   Projeto inicial da interface
3   Avaliação da interface sem o usuário
3   Teste da interface com os usuários
3   Construção da interface
3   Acompanhar a utilização da interface pelos usuários
3   Adaptar o projeto de interface
Projeto de Interface
Princípios básicos

         3 Transparência
         3   Robustez
         3   Orientação
         3   Produtividade
         3   Integridade
Projeto de Interface
Princípios básicos (cont)

        3 Controle
        3   Clusterização
        3   Visibilidade
        3   Consistência Inteligente
        3   Utilização de cores como complemento
Projeto de Objetos
Etapas básicas
3   Projetar algoritmos para implementar os métodos
3   Otimizar caminhos de acesso aos dados
3   Implementar controle para interações externas
3   Ajustar a estrutura de classes para aumentar a herança
3   Projetar associações
3   Determinar a representação de objetos
3   Empacotar classes e associações em módulos
Projeto de Objetos
Exemplo de refinamento do modelo de classes da análise
        AreaTecnica       responsável      Produto

                                        ObterAreaTecnica()




        AreaTecnica                          Produto
                                          area:AreaTecnica
                                         ObterAreaTecnica()

 Associações de mão única são atravessadas apenas em uma direção
 Regra Geral: implementada como atributos de ponteiro
Projeto de Objetos
Exemplo de refinamento do modelo de classes da análise
        Area Técnica           executa      Solicitação

     adicionarSolicita(so)




         Area Técnica                         Solicitação
      sol: set Solicitacao   não nulo      area: AreaTecnica
     adicionarSolicita(so)                conectar_area(area)

 Associação bidirecional: execução bem-sucedida de QHZ 6ROLFLWDomR requer
 execução bem-sucedida de FRQHFWDUBDUHD de maneira a ter um vínculo
 bidirecional consistente
Projeto de Sistemas
Questões básicas para a Arquitetura da Aplicação

  3   Organização geral e estrutura de controle global
  3   Atribuição de funcionalidade aos módulos
  3   Composição dos módulos
  3   Distribuição física dos módulos
  3   Protocolos para comunicação
  3   Sincronização e acesso aos dados
  3   Expansão e desempenho
Tecnologias de Implementação
3 Linguagens Orientadas a Objetos
     Java, C++, Smalltalk
3 Ambientes de Desenvolvimento
     VisualAge for Java(IBM)
     Visual Café (Symantec)
     Jbuilder 3 (Borland)
3 Banco de Dados Orientado a Objetos
     O2 (O2 Technology)
     Objectstore (Object Design Inc.)
     Gemstone (Servio Logic)
     Jasmine (Computer Associates)
Método Integrado
                                             Fase 2


                               Implementação          Gerenciamento
                                do Processo            do Processo
               Fase 1                    4P                       5P
Entendimento      Análise do    Projeto do
 do Negócio        Processo      Processo
                                                                       Projeto   Implem
     1                  2              3
                               Requisitos         Análise     B
                                  4S                  5S

    Visão Geral

                                                                        6S         7S
                                                Fase 3
Aprendizado
,PSOHPHQWDomR GH XPD PHWRGRORJLD 22

3 Mudança de paradigma - treinamento intensivo
3 Protótipos sem compromissos
3 Primeiros sistemas devem ser livres...
3 Grupo formal de metodologia - proposta e treinamento
3 Acerto do ambiente de desenvolvimento - suporte, padrões
3 Administração de classes/objetos - Biblioteca de Classes
3 Ferramenta CASE
Orientação a Objetos
Benefícios
3 Reaproveitamento
3 Estabilidade
3 Projetista pensa em termos de comportamento dos objetos e
    não em detalhes de baixo nível
3 Construção de objetos cada vez mais complexos
3 Confiabilidade
3 Verificação de precisão
3 Novos mercados de software
3 Desenvolvimento acelerado
3 Integridade
Orientação a Objetos
Benefícios
3 Programação facilitada
3 Manutenção facilitada
3 Ciclo de vida dinâmico
3 Refinamento durante a construção
3 Modelagem mais realista
3 Melhor comunicação entre profissionais de sistema e clientes
3 Interoperabilidade
3 Processamento cliente-servidor
3 Processamento distribuído e em paralelo
3 Bibliotecas de classes industrializadas e corporativas
Java Studio
8P DPELHQWH GH GHVHQYROYLPHQWR 2ULHQWDGR D 2EMHWRV
Referências
(1) Análise e Projeto Orientados a Objetos
   Scott W. Ambler (IBPI Press)

(2) Modelagem e Projetos Baseados em Objetos
    J. Rumbaugh et. al (Campus)

(3) Princípios de Análise e Projeto Baseados em Objetos
    James Martin (Campus)

(4) Design Patterns - Elements os Reusable Object-Oriented Software
    Erich Gamma et. al (Addison-Wesley)

(5) Manual do Visual Age for Java

(6) Software Engineering - A Practitioner´s Approach
    Roger S. Pressman

More Related Content

What's hot

Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Adriano Teixeira de Souza
 
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareAplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareCesar Rocha
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasBreno Vitorino
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Marcelo Zeferino
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Ryan Padilha
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetosPaulo Carvalho
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 

What's hot (14)

Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 
Padrões de projeto
Padrões de projetoPadrões de projeto
Padrões de projeto
 
Mvc delphi
Mvc delphiMvc delphi
Mvc delphi
 
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareAplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de software
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e Técnicas
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
POO - 17 - Interfaces
POO - 17 - InterfacesPOO - 17 - Interfaces
POO - 17 - Interfaces
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Framework struts2v2.5
Framework struts2v2.5Framework struts2v2.5
Framework struts2v2.5
 

Similar to Orientacao A Objetos Da Teoria A Pratica Em Java

Similar to Orientacao A Objetos Da Teoria A Pratica Em Java (20)

Orientação a objetos da teoria a prática em java
Orientação a objetos   da teoria a prática em java Orientação a objetos   da teoria a prática em java
Orientação a objetos da teoria a prática em java
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_js
 
Asp net mvc
Asp net mvcAsp net mvc
Asp net mvc
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Grails
GrailsGrails
Grails
 
Aula1
Aula1Aula1
Aula1
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVC
 
Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010
 
Apresentação dissertação
Apresentação dissertaçãoApresentação dissertação
Apresentação dissertação
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Prog web 08-php-mvc
Prog web 08-php-mvcProg web 08-php-mvc
Prog web 08-php-mvc
 
ApresentaçãO Mvc
ApresentaçãO MvcApresentaçãO Mvc
ApresentaçãO Mvc
 
Apresentação M V C
Apresentação M V CApresentação M V C
Apresentação M V C
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 

More from elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

More from elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Orientacao A Objetos Da Teoria A Pratica Em Java

  • 1. 2ULHQWDomR D 2EMHWRV 'D 7HRULD j 3UiWLFD HP -DYD CCUEC/Unicamp outubro/99
  • 2. Roteiro 5HXWLOL]DomR GH 3URMHWR H 6RIWZDUH 3 Design Patterns (Padrões de Projeto) 3 Frameworks 3 Componentes 3 RMI (Remote Method Invocation)
  • 3. Reutilização de Projeto 3 'HVLJQ 3DWWHUQV - padrões de projeto e análise 3 )UDPHZRUNV orientados a objetos
  • 4. Padrões de Projeto e Análise 3DGU}HV GH RUJDQL]DomR GH KLHUDUTXLDV GH FODVVHV SURWRFRORV H GLVWULEXLomR GH UHVSRQVDELOLGDGHV HQWUH FODVVHV TXH FDUDFWHUL]DP FRQVWUXo}HV HOHPHQWDUHV GH SURMHWR RULHQWDGR D REMHWRV 8P SDGUmR GH SURMHWR p XP HVWUXWXUD TXH DSDUHFH UHSHWLGDPHQWH QRV SURMHWRV RULHQWDGRV D REMHWRV SDUD UHVROYHU XP GHWHUPLQDGR SUREOHPD GH IRUPD IOH[tYHO H DGDSWiYHO GLQDPLFDPHQWH
  • 5. Padrões de Projeto e Análise Descrição padrão de um “design pattern” objetivo motivação aplicabilidade estrutura participantes colaborações conseqüências implementação exemplo de codificação
  • 6. Padrões de Projeto 2EVHUYHU Suponhamos uma aplicação de Administração de Solicitação de Serviços (ASS) de uma empresa prestadora de serviços, onde serviços-objeto devem ser sempre comunicados a respeito da alteração do estado do funcionário-objeto responsável pela sua execução. Como modelar a estrutura de dados e os métodos das classes Serviço e Funcionário para atender esse requisito?
  • 7. Padrões de Projeto 2EVHUYHU: define uma dependência de um para muitos entre objetos de tal forma que quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente observers Subject Observer Attach(Observer) Detach(Observer) for all o in observers{ Update() Notify() o .Update()} ConcreteObserver ConcreteSubject subject Update() GetState() return subjectState SetState() observerState subjectState observerState= subject.GetState()
  • 8. Padrões de Projeto 6WDWH Suponhamos que na nossa aplicação ASS, serviços-objeto, dependendo do estado em que se encontram (espera, parado, em andamento, finalizado), tenham comportamentos diferentes, ou seja, reajem diferentemente à mesma mensagem. Por exemplo: calculaValor() Como modelar a estrutura de dados e os métodos da classe Serviço para atender a esse requisito?
  • 9. Padrões de Projeto 6WDWH: permite um objeto alterar seu comportamento quando seu estado interno se altera. Parecerá que o objeto mudou de classe. state Context State Request() Handle() State Handle() ConcreteStateA ConcreteStateB Handle() Handle()
  • 10. Padrões de Projeto RPSRVLWH Na nossa aplicação ASS, um serviço pode ser um serviço de rede, de produção, de suporte ou de desenvolvimento de sistemas. Este último é na verdade uma composição de serviços que devem ser executados pela área de desenvolvimento e pelas outras especialidades mencionadas acima. Quando um objeto-serviço receber a mensagem “descrever()”, não queremos nos preocupar com o tipo de serviço que está recebendo a mensagem. Como estruturar a classe Serviço de forma a permitir essa facilidade?
  • 11. Padrões de Projeto RPSRVLWH Representa hierarquias do tipo parte-todo Client Component Operation() Clientes ignoram a diferença Add(Component) entre composições de objetos Remove(Component) e objetos individuais GetChild(int) children Leaf Composite Operation() Operation() Forall g in children Add(component) g.Operation(); Remove(Component) GetChild(int)
  • 12. Padrões de Projeto 5HFRQKHFLPHQWR GH XP SDGUmR GH SURMHWR
  • 13. Padrões de Projeto RPR XVDU SDGU}HV GH IRUPD HILFD] Estude os padrões aos quais você já tenha acesso Procure por conceitos básicos similares Aplique o padrão Não espere que tudo possa ser resolvido pelos padrões RPR GHVFREULU QRYRV SDGU}HV O padrão pode ser utilizado em outros lugares? Utilize o padrão várias vezes Espere fazer mudanças em seu diagrama de classes
  • 14. Padrões de Projeto 9DQWDJHQV Aumentam a produtividade dos desenvolvedores Aumentam a consistência entre as aplicações São potencialmente melhores do que os códigos reutilizáveis Podem ser utilizados em combinação para resolverem problemas difíceis Existem novos padrões sendo desenvolvidos todos os dias 'HVYDQWDJHQV Precisamos aprender um grande número de padrões Alguns desenvolvedores não estão abertos a aceitar o trabalho dos outros Os padrões não são códigos
  • 15. Frameworks Classes abstratas funcionam como um molde para as suas subclasses. Da mesma forma, um projeto constituído por classes abstratas funciona como um molde para aplicações. Um projeto constituído por classes abstratas é denominado IUDPHZRUN GH DSOLFDo}HV RULHQWDGR D REMHWRV Um framework pode ser considerado como uma infra-estrutura de classes que provêem o comportamento necessário para implementar aplicações dentro de um domínio através dos mecanismos de especialização e composição de objetos, típicos das linguagens orientadas a objetos
  • 16. Frameworks - Visão Conceitual Estrutura de controle Classes abstratas )UDPHZRUN Chamadas a operações Chamadas a operações implementadas pelo implementadas pelo framework usuário $SOLFDomR HVSHFtILFD Classes específicas implementadas pelo usuário Visão conceitual da estrutura de um framework
  • 17. Frameworks - Exemplo 09 0RGHO9LHZRQWUROOHU Modelo: contém os dados da aplicação junto com a lógica dos negócios que define como alterar e acessar os dados; o modelo pode ser compartilhado entre vários objetos, visões e controladores. Visão: é a forma de apresentação dos dados do modelo para o mundo externo, pode ser na forma de GUI, fala, som, listagens ou mesmo em uma saída não orientada a usuários, como ligar um ar condicionado. Controlador: é a forma de tratar a entrada do usuário ou outro meio e dar feedback para o modelo, normalmente alterando alguns de seus dados.
  • 18. Framework MVC 0RGHOR Mudei! Mudei ! Por favor, me passe os 9LVmR dados RQWURODGRU
  • 19. Framework MVC 0RGHOR Altere dados 9LVmR RQWURODGRU Altere apresentação O usuário interage
  • 20. MVC - Exemplo MVC - Model/View/Controller 0RGHOR Visão Visão Controlador DWHJRULD 9DORU Controlador Controlador
  • 21. Reutilização de Software 3 3DFRWHV 3DFNDJHV
  • 22. 3 RPSRQHQWHV 3 :UDSSHUV
  • 23. Packages 3DFNDJHV são conjuntos de classes relacionadas entre si de forma que ofereçam facilidades uma às outras. Java traz uma grande quantidade de classes agrupadas em pacotes que estão prontas para serem utilizadas pelo programador.
  • 24. Packages $OJXQV H[HPSORV GH 3DFNDJHV HP -DYD MDYDODQJ - base da linguagem Java (Boolean, Character, Double, Float, Integer, Long, math, Object, String,..) MDYDLR - pacote que permite manipulação de streams lendo ou gravando em arquivos (DataInputStream, FileInputStream, FileOutputStream, PrintScreen) MDYDXWLO - pacote que provê uma miscelânea de classes úteis incluindo estrutura de dados, time, date, geração de números randômicos, etc.. MDYDDZW - pacote que provê um conjunto de manipulações de interface para o usuário tais como windows, caixas de diálogo, botões, cores, checkboxes.. MDYDDSSOHW - pacote que habilita a criação de applets através da classe Applet e também provê recursos de áudio
  • 25. Packages - Exemplo import java.applet.*; import java.awt.*; import java.util.Date; public class 'LJLWDOORFN extends java.applet.Applet implements Runnable { Font theFont = new Font(“TimesRoman”, Font.BOLD, 24); Date theDate; Thread runner; public void VWDUW () { if ( runner == null ) { runner = new Thread(this); runner.start();} } public void VWRS () { if (runner != null) { runner.stop(); runner = null;} }
  • 26. Packages - Exemplo public void UXQ () { while (true) { theDate = new Date(); repaint(); try { Thread.sleep(1000);} catch (InterruptedException e) {} } } public void SDLQW (Graphics g) { g.setFont(theFont); g.drawString(theDate.toString(), 10, 50); } }
  • 27. Componentes Um componente é um pedaço de código encapsulado e acessível apenas a partir de sua interface Um componente possui: • seu FRPSRUWDPHQWR H[WHUQR (o que ele faz) que é definido na sua especificação • suas RSHUDo}HV LQWHUQDV (como ele faz o que se propõe a fazer) que está escondido do mundo externo e pode ser entendido apenas se examinarmos seu código fonte • seu H[HFXWiYHO (runtime binário .exe .dll)
  • 28. Componentes Componentes de negócio são essencialmente REMHWRV Cada componente implementa a OyJLFD GH QHJyFLR e as propriedades relativas a uma entidade do mundo real. O que os distingue dos objetos tradicionais é a capacidade de ser utilizados por aplicações produzidas em GLIHUHQWHV OLQJXDJHQV H WHFQRORJLDV, rodando sobre diferentes sistemas operacionais. A tecnologia de componentes altera radicalmente a forma como os sistemas de informação são desenvolvidos. Os componentes podem ser considerados como blocos básicos de construção. 3DUD FULDU XP QRYR VLVWHPD RV GHVHQYROYHGRUHV DSHQDV FRPELQDP FRPSRQHQWHV
  • 29. Java Beans - Componentes Java Arquitetura Java de FRPSRQHQWHV UHXWLOL]iYHLV independente de plataforma. Um -DYD%HDQ é um componente de software reutilizável que pode ser manipulado visualmente em uma ferramenta de construção (construtor de páginas Web, construtor visual de aplicações, construtor de GUIs)
  • 31. Wrappers - legacy systems Um ZUDSSHU é um componente que fornece serviços implementados por aplicações OHJDF. Um ZUDSSHU pode ser utilizado para eliminar as dependências entre os sistemas atuais e fornecer a funcionalidade das aplicações OHJDF para novas soluções baseadas em componentes.
  • 32. Objetos Distribuídos em Java O sistema RMI (Remote Method Invocation) permite que um objeto rodando em uma máquina virtual Java (JVM) chame métodos de um objeto que esteja rodando em outra JVM. RMI permite a comunicação remota entre programas escritos em Java. RMI provê um mecanismo através do qual o servidor e o cliente se comunicam e passam informações. Estas aplicações são chamadas de aplicações de REMHWRV GLVWULEXtGRV
  • 33. RMI - Ambiente de Execução 0iTXLQD OLHQWH 0iTXLQD 6HUYLGRUD 1 Server Lookup RMI Registry Interface Server Register 7 4 OLHQW Server 6 2 3 Security 5 6HUYHU Security Manager Manager 8 8 9 9 8 Stub 9 Skeleton
  • 34. Metodologia de Desenvolvimento 3 Visão geral - metodologias e UML 3 Técnicas de Análise 3 Projeto: Objetos, Interface e Sistema 3 Método Integrado 3 Considerações Gerais 3 Java Studio
  • 35. Metodologia Coleção de WpFQLFDV H GLUHWUL]HV para construção, manutenção e melhoria em produtos de software. Fornece uma base de comunicação, um conjunto de técnicas e uma base para engenharia de software.
  • 36. Fases Clássicas $QiOLVH GH ,PSOHPHQWDomR Teste de Unidades 5HTXLVLWRV Teste do Sistema Teste de Aceitação $QiOLVH 7HVWH ,PSODQWDomR 3URMHWR FRQYHUVmR
  • 37. Estratégia Paralela Estudo Piloto Abordagem Faseada
  • 38. Modelo Espiral 3ODQHMDPHQWR $QiOLVH GH 5LVFRV Análise de requisitos Planejamento continua ou não ? baseado nos requisitos do (P GLUHomR DR usuário VLVWHPD FRPSOHWR $YDOLDomR (QJHQKDULD GR XVXiULR (processo de desenvolvimento)
  • 39. Metodologia OO 2 TXH ID] FRP TXH XPD PHWRGRORJLD GH GHVHQYROYLPHQWR GH VLVWHPDV VHMD FRQVLGHUDGD 2ULHQWDGD D 2EMHWRVquot;
  • 40. Metodologia OO Uma metodologia de desenvolvimento de sistemas é considerada Orientada a Objetos se ela orienta a construção de sistemas a partir do entendimento do mundo real como um conjunto de objetos que comunicam-se entre si de forma coordenada
  • 41. Metodologia OO 4XDLV VmR DV SULQFLSDLV DWLYLGDGHV quot; • Entender quais são os REMHWRV envolvidos no domínio do problema • Entender como se FRPXQLFDP no mundo real • 3URMHWDU a forma como devem ser LPSOHPHQWDGRV
  • 42. Metodologia OO 4XDLV DV SULQFLSDLV WpFQLFDV XWLOL]DGDVquot; • Entendimento do mundo real - Revisão de processos, Use cases • Objetos e seus relacionamentos - Modelo de Objetos, CRC, DTE, DI • Projeto - Padrões de projeto, frameworks, componentes • Implementação - ambientes de desenvolvimento, middleware (RMI), banco de dados
  • 43. Métodos de Desenvolvimento OO %RRFK - Object-Oriented Design with Applications :LUIV%URFN - Designing Object-Oriented Software (5) 5XPEDXJK - Object-Oriented Modeling and Design (207) RDGRXUGRQ - Object-Oriented Analysis -DFREVRQ - OO Software Engineering - A 8VH DVH Driven Approach 6KODHU0HOORU - Object /LIHFFOHV-Modeling the World in States ROHPDQ et al: Fusion - OO Development: The )XVLRQ Method
  • 44. Métodos de Desenvolvimento OO (VWUDWpJLD Escolher um Método como sendo o método SULQFLSDO para ser seguido e ater-se à sua notação para todo o ciclo de vida. Usar WpFQLFDV GH RXWURV PpWRGRV para dar suporte aos esforços de modelagem e desenvolvimento.
  • 45. UML - Unified Modeling Language Rumbaugh Booch Jacobson Odell (classificação) Meyer Shlaer-Mellor 80/ (condições pré e pós) (ciclo de vida) Harel (diag. de estado) Gamma et al (Frameworks, padrões) Wirfs-Brock Fusion (responsabilidades) (desc.operações, numeração de mensagens)
  • 47. Análise Dinâmica vs Análise Estática A $QiOLVH (VWiWLFD descreve a estruturas e os relacionamentos entre os objetos do domínio do problema (Modelo de Classes de Objetos) A $QiOLVH 'LQkPLFD descreve o comportamento dos objetos em termos de suas mudanças ao longo do tempo (DTE, DI)
  • 48. Análise - Use Case Ator: Usuário Atividade: Registrar solicitação no sistema Evento: necessidade de execução de um serviço Registrar Solicitação Curso básico de ação: 1) cliente informa nome, e-mail, telefone,.... Ler nova solicitação 2) cliente informa área destino dentro do CPD Usuário 3) cliente escolhe produto na lista de produtos existentes Gerente 4) o sistema gera um número de solicitação Consulta s solicitação 5) apresentar opção de vincular solicitação a outra já existente 6) avisar área destino que existe uma nova solicitação para ela 'LDJUDPD GR 8VH DVH 'HVFULomR GR 8VH DVH
  • 49. Análise - Modelo de Classes Solicitação gera Serviço executado Funcionário data solicitação descrição nome usuário data-início função descrição responsável e-mail data-final justificativa recebe executa Área Técnica trabalha autoriza chefia nome objetivo 'LDJUDPD GH FODVVHV H[WUDtGR D SDUWLU GD DQiOLVH GRV 8VH DVHV
  • 50. Análise - CRC Classes/responsabilidades/colaboradores ODVVH 6HUYLoR 6XSHUFODVVH 5HVSRQVDELOLGDGHV RODERUDGRUHV $incluir $obter o no. de serviços ativos $obter no. solic por serviço Solicitação obter identificação obter data previsão inicio .... obter usuários por produto Solicitação obter área responsável Área técnica )HHGEDFN SDUD YDOLGDU RV PpWRGRV GD FODVVH
  • 51. Análise - Diagrama de Interação (DI) 5HJLVWUDU 6ROLFLWDomR QR VLVWHPD SHOR XVXiULR
  • 52. Cliente Área técnica Serviço Solicitação Solicitação ÁreaTécnica E-mail área receptora receber(sol) Produto/serviço Dados da solicitação Vincular(sol)
  • 53. Análise - Diagrama Transição de Estado alocar(recurso) (recurso não é suficiente) alocar(recurso) DEULU (recurso é suficiente) $JXDUGDQGR (P FXUVR desalocar(recurso) (recurso não é suficiente) desalocar(recurso) (recurso é suficiente)
  • 54. Relacionamento entre as Técnicas de Análise Use case Modelo de Classes CRC DI DTE
  • 55. Análise No final da análise, já sabemos quais os objetos do “negócio” envolvidos e como eles devem interagir de forma geral, através do modelo de classes e do diagrama de interação
  • 57. Projeto 6HUi TXH DV FODVVHV GH QHJyFLR VmR VXILFLHQWHV SDUD D LPSOHPHQWDomR GR VLVWHPD quot; 3 O modelo de objetos pode ser otimizado ? 3 Como o usuário vai interagir com o sistema ? 3 Quem irá controlar o fluxo de mensagens ? 3 Quem vai interagir com o banco de dados ?
  • 58. Projeto Tanto o domínio do problema, como o domínio da solução devem ser entendidos como um conjunto de classes de objetos • ODVVHV GH LQWHUIDFH - interação com o usuário • ODVVHV GH FRQWUROH - seqüência das mensagens • ODVVHV GH EDQFR GH GDGRV - persistência dos dados • ODVVHV GH QHJyFLR - relacionadas no modelo de análise
  • 59. Projeto 3ULQFLSDLV DWLYLGDGHV GH SURMHWR 3URMHWR GH 2EMHWRV • Otimização e refinamento do modelo de classes da análise • Conversão para o modelo relacional de banco de dados 3URMHWR GH ,QWHUIDFH Define a forma de interação dos usuários com a aplicação sendo construída 3URMHWR GH 6LVWHPD Produz uma arquitetura de aplicação a qual inclui decisões sobre a organização do sistema e a alocação de módulos em componentes de hardware e software
  • 60. Projeto 7HFQRORJLDV GH DSRLR 3URMHWR GH 2EMHWRV • Design Patterns (padrões de projeto) • Packages 3URMHWR GH ,QWHUIDFH Utilização segundo um Guia de Estilo que oriente a utilização correta de recursos gráficos (GUIs), formulários, frames e outros, considerando o ambiente de implementação (por exemplo, Web) 3URMHWR GH 6LVWHPD Arquiteturas de aplicação , frameworks, componentes
  • 61. Projeto de Interface Etapas principais 3 Análise de usuários e tarefas 3 Projeto inicial da interface 3 Avaliação da interface sem o usuário 3 Teste da interface com os usuários 3 Construção da interface 3 Acompanhar a utilização da interface pelos usuários 3 Adaptar o projeto de interface
  • 62. Projeto de Interface Princípios básicos 3 Transparência 3 Robustez 3 Orientação 3 Produtividade 3 Integridade
  • 63. Projeto de Interface Princípios básicos (cont) 3 Controle 3 Clusterização 3 Visibilidade 3 Consistência Inteligente 3 Utilização de cores como complemento
  • 64. Projeto de Objetos Etapas básicas 3 Projetar algoritmos para implementar os métodos 3 Otimizar caminhos de acesso aos dados 3 Implementar controle para interações externas 3 Ajustar a estrutura de classes para aumentar a herança 3 Projetar associações 3 Determinar a representação de objetos 3 Empacotar classes e associações em módulos
  • 65. Projeto de Objetos Exemplo de refinamento do modelo de classes da análise AreaTecnica responsável Produto ObterAreaTecnica() AreaTecnica Produto area:AreaTecnica ObterAreaTecnica() Associações de mão única são atravessadas apenas em uma direção Regra Geral: implementada como atributos de ponteiro
  • 66. Projeto de Objetos Exemplo de refinamento do modelo de classes da análise Area Técnica executa Solicitação adicionarSolicita(so) Area Técnica Solicitação sol: set Solicitacao não nulo area: AreaTecnica adicionarSolicita(so) conectar_area(area) Associação bidirecional: execução bem-sucedida de QHZ 6ROLFLWDomR requer execução bem-sucedida de FRQHFWDUBDUHD de maneira a ter um vínculo bidirecional consistente
  • 67. Projeto de Sistemas Questões básicas para a Arquitetura da Aplicação 3 Organização geral e estrutura de controle global 3 Atribuição de funcionalidade aos módulos 3 Composição dos módulos 3 Distribuição física dos módulos 3 Protocolos para comunicação 3 Sincronização e acesso aos dados 3 Expansão e desempenho
  • 68. Tecnologias de Implementação 3 Linguagens Orientadas a Objetos Java, C++, Smalltalk 3 Ambientes de Desenvolvimento VisualAge for Java(IBM) Visual Café (Symantec) Jbuilder 3 (Borland) 3 Banco de Dados Orientado a Objetos O2 (O2 Technology) Objectstore (Object Design Inc.) Gemstone (Servio Logic) Jasmine (Computer Associates)
  • 69. Método Integrado Fase 2 Implementação Gerenciamento do Processo do Processo Fase 1 4P 5P Entendimento Análise do Projeto do do Negócio Processo Processo Projeto Implem 1 2 3 Requisitos Análise B 4S 5S Visão Geral 6S 7S Fase 3
  • 70. Aprendizado ,PSOHPHQWDomR GH XPD PHWRGRORJLD 22 3 Mudança de paradigma - treinamento intensivo 3 Protótipos sem compromissos 3 Primeiros sistemas devem ser livres... 3 Grupo formal de metodologia - proposta e treinamento 3 Acerto do ambiente de desenvolvimento - suporte, padrões 3 Administração de classes/objetos - Biblioteca de Classes 3 Ferramenta CASE
  • 71. Orientação a Objetos Benefícios 3 Reaproveitamento 3 Estabilidade 3 Projetista pensa em termos de comportamento dos objetos e não em detalhes de baixo nível 3 Construção de objetos cada vez mais complexos 3 Confiabilidade 3 Verificação de precisão 3 Novos mercados de software 3 Desenvolvimento acelerado 3 Integridade
  • 72. Orientação a Objetos Benefícios 3 Programação facilitada 3 Manutenção facilitada 3 Ciclo de vida dinâmico 3 Refinamento durante a construção 3 Modelagem mais realista 3 Melhor comunicação entre profissionais de sistema e clientes 3 Interoperabilidade 3 Processamento cliente-servidor 3 Processamento distribuído e em paralelo 3 Bibliotecas de classes industrializadas e corporativas
  • 73. Java Studio 8P DPELHQWH GH GHVHQYROYLPHQWR 2ULHQWDGR D 2EMHWRV
  • 74. Referências (1) Análise e Projeto Orientados a Objetos Scott W. Ambler (IBPI Press) (2) Modelagem e Projetos Baseados em Objetos J. Rumbaugh et. al (Campus) (3) Princípios de Análise e Projeto Baseados em Objetos James Martin (Campus) (4) Design Patterns - Elements os Reusable Object-Oriented Software Erich Gamma et. al (Addison-Wesley) (5) Manual do Visual Age for Java (6) Software Engineering - A Practitioner´s Approach Roger S. Pressman