SlideShare uma empresa Scribd logo
1 de 103
Integração de Tecnologias UML – CORBA - Java   A Convergência das Tecnologias Tutorial por José Eduardo Zindel Deboni Voxxel Consultoria de Sistemas
Objetivos do Tutorial ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
O que é um Tutorial ? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Os sistemas atuais são… ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
A arquitetura de n camadas ok objetos HTMLs CGIs Camada de  Apresentação Camada de Negócios Camada de Dados webserver Corba / iiop Corba / iiop Corba / iiop Http/ cgi RDBMS OODBMS Arquivos
Convergência para objetos Análise e Modelagem Projeto e Arquitetura Implementação UML CORBA Java Lente convergente  Da Orientação a Objetos
Tecnologias Orientadas a Objeto ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Como fica a Engenharia de Software? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Respostas: ,[object Object],[object Object],[object Object],[object Object],[object Object]
Novas questões: ,[object Object],[object Object],[object Object]
Abordagem ,[object Object],[object Object],[object Object]
Integração entre as tecnologias
O que é a UML? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Seqüência de diagramas* Comportamento interno Comportamento Externo Estrutura Implementação Casos de Uso Eventos Colaboração Atividades Estados Classes Componentes Distribuição Pacotes * esta seqüência não faz parte da UML é apenas uma sugestão
Casos de Uso ,[object Object],[object Object],[object Object],[object Object],[object Object]
Diagramas de Casos de Uso Cliente Vendedor Gerente Fazer  Pedidos Aprovar Crédito Entregar Material Sistema
Diagramas de Classes ,[object Object],[object Object],[object Object],[object Object],[object Object]
Exemplos de representação Pessoa Pessoa nome: Texto idade: inteiro cadastrar() ,[object Object],[object Object],[object Object],+nome: Texto #RG : inteiro +casado : boolean=false +cadastra() +criar(RG:inteiro)
Modelo de Classes
Diagramas de Interação ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Diagrama de seqüência de eventos
Diagrama de Estados Emprestado Disponível Atrasado Reservado Emprestar Retornar Retornar [ExisteReserva] Emprestar [DataReserva<Hoje] [DataEmprestimo>Hoje] /AvisarUsuário Devolver [AvisarGerente] Devolver [ExisteReserva] /AvisarUsuario
Diagramas de Implementação ,[object Object],[object Object],[object Object]
Diagrama de Componentes GUI Libs BancoDeDados
Diagrama de Dsitribuição Impressora Cliente:PC Servidor:Host1
Integração da implementação GUI Libs BancoDeDados Cliente:PC Servidor:Unix
Pacotes Agrupam os objetos Pode-se usar para  identificar as camadas
Integração entre os diagramas
Mapeamento de um URL http://www.empresa.com.br/aplic/horas/index.html www.empresa.com.br
Integração entre as tecnologias
Modelo UML de sistemas Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
UML e Java – ida e volta ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Mapeamento em uma  c lasse java public   class  Funcionario  {  private   String nome = &quot;&quot;;  private   int  telefone = 0;  private   boolean  ativo =  false ;  public   void  novo ()  {  }  }
Mapeamento de uma Applet java import  java.applet.*; import  java.awt.*; public   class  Funcionario  extends  Applet  {  private   String nome = &quot;&quot;;  private   int  telefone = 0;  private   boolean  ativo =  false ;  public   void  novo () {  }  } Applet {abstract} Funcionario {final} -nome:String -telefone:int -ativo:boolean +novo( ):void
Exemplo de diagrama de estado ListandoItens INIT CLOSE EditandoItens iniciar [teste1==true] /modifica=false fechar [teclaCancel=true] /BD.fechar() fechar [TeclaCancel()==true] /BD.fechar( editar [teclaEdit()==true] /BD.abrir() fechar [teclaOK()==true] /BD.fechar()
Código do diagrama de estado class   DEMO  {   private  String currentState = &quot;INIT&quot; ;   //States:  INIT,  CLOSE,  ListandoItens,  EditandoItens    //Events:  nullEvent,  iniciar,  fechar,  editar  void  process ( String anEvent ) {   if  ( ( currentState == &quot;INIT&quot; ) && ( anEvent == &quot;iniciar&quot; ) && ( teste1== true  ) )   {  currentState = &quot;ListandoItens&quot; ; modifica= false   return ;  }   if  ( ( currentState == &quot;ListandoItens&quot; ) && ( anEvent == &quot;fechar&quot; ) && ( teclaCancel= true  ) )   {  currentState = &quot;CLOSE&quot; ; BD.fechar()  return ;  }   if  ( ( currentState == &quot;ListandoItens&quot; ) && ( anEvent == &quot;editar&quot; ) && ( teclaEdit()== true  ) )   {  currentState = &quot;EditandoItens&quot; ; BD.abrir()  return ;  }   …   else   return ;    } }
Métodos para relacionar classes ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Interface UML, Java ou CORBA  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Interfaces UML e Java public   class  impClasse  implements  ClasseModelo { public   void  criar (String p) { // //  aqui devem ser inserido o códig o //  do método // } } public   interface  ClasseModelo   {  public   void  criar (String p1);  }
Herança public   class  classeFilha  extends  classeMae {  } Toda a funcionalidade da mãe  é Transferida para a classe filha como Se fosse dela.
Agregação public   class  ClasseA  {  private  Recursos oRec =  new  Recursos() ; } A ClasseA agora dispões dos  recursos da classe Recursos  atraves da instância oRec A classe de Recursos deve estar diponível
Todas as opções juntas public   class  minhaClasse  extends  classeMae implements  ClasseModelo  {  private  Recursos oRec =  new  Recursos() ; }
Integração entre as tecnologias
O que é a tecnologia CORBA? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Integração Cliente/Servidor ORB – barramento de objetos Object Request Broker Os serviços são distribuidos na forma de Objetos em um barramento
CORBA algumas características ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Anatomia do CORBA 2.0 Cliente interface Servico _STUB _SKELTON BOA ORB IIOP - Internet InterORB Protocol
A UML modela as interfaces float balance Account makeDeposit makeWithdrawal A linguagem IDL suporta  Os princípios da  Orientação a Objetos
Exemplo de interface IDL // IDL interface Account { //Attributes attribute float balance; readonly attribute string owner; //Operations void makeDeposit(in float amount, out float newBalance); void makeWithdrawal(in float amount, out float newBalance); };  float balance Account makeDeposit makeWithdrawal
A interface IDL faz a ligação Interface IDL Cliente Servidor Cliente Stub Server Stub IDL compiler Compilador em  linguagem nativa
idl2java Interface.idl idl2java InterfaceHolder.java InterfaceHelper.java _st_Interface _sk_Interface _InterfaceImplBase.java Interface.java Cliente Servidor _exemplo_Interface.java
Distribuição da aplicação org.omg.CORBA.Object _InterfaceImplBase.java Interface.java ImplementacaoInterface.java org.omg.CORBA.ORB org.omg.CORBA.ORB Cliente Servidor
Passos para a criação de  Definição  das Interfaces IDL Cliente Servidor Cliente Stub Server Stub Implementação dos  métodos ( ling .  nativa) ORB 7 1 2 3 4 9 8 5 Ling .  Nativa Cria  aplicação 6
CORBA e UML ,[object Object],[object Object],[object Object]
CORBA e Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Metodo para desenvolvimento Análise Projeto Codigo Modelo Interface IDL Cliente Java/outras Browser Servidor Java/outras Negócio Modelagem UML/CORBA Implementação CORBA/Java ORB Servidor Web
Seqüência de passos Projeto Análise Implementação Cliente interface Servico _STUB _SKELTON BOA ORB IIOP - Internet InterORB Protocol
Apresentação do Problema ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Análise ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Analise ,[object Object],[object Object],[object Object],Criar um Modelo de Interfaces
Projeto ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Projeto ,[object Object],[object Object],[object Object],[object Object],Criar Classes de Implementação das Interfaces,  Aplicar patterns e manipular o modelo de análise Relacionar (herança, implementação ou composição) com as classes da arquitetura e da linguagem de programação
Implementação ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Implementação   ,[object Object],[object Object],[object Object],Gerar código dos modelos Complementar os códigos com programação Fazer a Engenharia Reversa para atualizar os modelos
Resumo do Método ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Importância de um CASE ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exemplo de Aplicação  ,[object Object]
Receita … ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Visitem nossa cozinha…  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ferramenta CASE ,[object Object],[object Object],[object Object],[object Object],[object Object]
Exemplo de Ferramenta CASE
Ambiente Java ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Editor Java
Ferramentas  ,[object Object],[object Object],[object Object],[object Object]
Ambiente de rede - execução ,[object Object],[object Object],[object Object],[object Object]
Arquitetura  Servidor Desenvolvedor Cliente navegador Servidor WEB Servidor ORB Servidor BD CASE Ambiente Desenv. Bibliotecas
O prato principal… Sistema para consulta  em uma lista de telefones
Diagrama de Caso de Uso O usuário entra com um nome e consulta o telefone de uma lista de telefones  armazenada em um arquivo
Diagrama de Classes (inicial)
Diagrama de seqüência de eventos
Modelo de estados do Usuario
Modelo de Classes final
Diagrama de Implementação Usuario Lista lista.txt
Exemplo da apresentação
Código da aplicação import  java.io.*; public   class  aLista  implements  Lista{ public  String procura(String texto){ String linha,alinha= &quot;não encontrei :&quot; +texto; try  { FileInputStream is =  new  FileInputStream( &quot;lista.txt&quot; ); DataInputStream ds =  new  DataInputStream(is); while  ((linha = ds.readLine())!= null ) {  if (linha.indexOf(texto)!=-1) alinha=linha; } ds.close(); is.close(); }  catch  (IOException e) {   System.out.println( &quot;Erro: &quot; +e); } return (alinha);} }
Aplicação distribuida
Tradução da interface para IDL     interface Lista{ string procura(in string texto); };  Código gerado pelo CASE Lista -procura( string ):string
Pré-compilador  idl2java
Classes de implementação Java Classes CORBA Classes analise (UML)
Interface Lista.java (gerada) public   interface  Lista  extends  org.omg.CORBA.Object { /** <p> Operation: <b>::Lista::procura</b>. <pre> string procura( in string texto ); </pre> </p> */ public  java.lang.String procura( java.lang.String texto ); }    
A interface Lista ,[object Object],[object Object]
A implementação da interface ,[object Object],public   class  aLista  extends  _ListaImplBase{
Criar uma aplicação servidora public static void main(String args[]){ try  { // inicializa o ORB orb = org.omg.CORBA.ORB.init(args, null ); // inicializa o BOA boa = orb.BOA_init(); // criar o objeto l =  new  aLista(&quot;minha lista&quot;); // exportar o objeto criado boa.obj_is_ready(l); // Pronto para atender os pedidos boa.impl_is_ready(); }  catch  (org.omg.CORBA.SystemException e) { System.err.println(e); } }
Inicilização do serviço
Classes de implementação Java Classes CORBA Classes analise (UML)
Classe Usuario (cliente) ,[object Object],[object Object],  // inicializa o orb orb = org.omg.CORBA.ORB.init(arg, null );   // liga no objeto   lis = ListaHelper.bind(orb,  &quot;minha lista&quot; );
Modificações na classe Usuario public   class  oUsuario  extends  Frame{ public   static  Lista lis; public  Label l =  new  Label( &quot;Procura :&quot; ); public  Button b =  new  Button( &quot;Ok&quot; ); public  TextField t =  new  TextField(40); public   static  org.omg.CORBA.ORB orb; public   static   void  main(String arg[]) {   // inicializa o orb orb = org.omg.CORBA.ORB.init(arg, null );   // liga no objeto   l is = ListaHelper.bind(orb,  &quot;minha lista&quot; );   Usuario u =  new  Usuario(); ...
Sequencia para execução ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Seqüência de execução
Exemplo de resultado
Leitura Recomendada ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Conclusão ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Dúvidas? ,[object Object],[object Object],[object Object],[object Object]

Mais conteúdo relacionado

Mais procurados

Padrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAAPadrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAAAricelio Souza
 
Aula 05 - UML e Padrões de Projeto
Aula 05 - UML e Padrões de ProjetoAula 05 - UML e Padrões de Projeto
Aula 05 - UML e Padrões de ProjetoVinícius de Paula
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 
UML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesUML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesRodrigo Cascarrolho
 
Padrão de Projeto - Adapter
Padrão de Projeto - AdapterPadrão de Projeto - Adapter
Padrão de Projeto - AdapterJuliana Cindra
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto AdapterMatheus Andrade
 
Uml
UmlUml
Umllcbj
 
Mvc
MvcMvc
Mvclcbj
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01John Godoi
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaCharles Jungbeck
 

Mais procurados (20)

Uml ppoint
Uml ppointUml ppoint
Uml ppoint
 
Padrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAAPadrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAA
 
Aula 05 - UML e Padrões de Projeto
Aula 05 - UML e Padrões de ProjetoAula 05 - UML e Padrões de Projeto
Aula 05 - UML e Padrões de Projeto
 
Apresentação da UML
Apresentação da UMLApresentação da UML
Apresentação da UML
 
Principais diagramas da UML
Principais diagramas da UMLPrincipais diagramas da UML
Principais diagramas da UML
 
Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
UML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesUML - Criando Diagramas Eficientes
UML - Criando Diagramas Eficientes
 
Padrão de Projeto - Adapter
Padrão de Projeto - AdapterPadrão de Projeto - Adapter
Padrão de Projeto - Adapter
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto Adapter
 
Uml
UmlUml
Uml
 
UML
UMLUML
UML
 
Mvc
MvcMvc
Mvc
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Uml
UmlUml
Uml
 
Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1
 
Aula diagrama de classes
Aula diagrama de classesAula diagrama de classes
Aula diagrama de classes
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 
A Linguagem UML
A Linguagem UMLA Linguagem UML
A Linguagem UML
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 

Semelhante a Integração de Tecnologias

Framework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoFramework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoMarcius Brandão
 
lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova Rogério Cardoso
 
CursoUML - Unified Modeling Language
CursoUML - Unified Modeling LanguageCursoUML - Unified Modeling Language
CursoUML - Unified Modeling Languageelliando dias
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Adriano Teixeira de Souza
 
TDC Floripa 2015 Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...
TDC Floripa 2015 Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...Rafael Chaves
 
Apostila de uml
Apostila de umlApostila de uml
Apostila de umlaudiclerio
 
Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Jhonefj
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) Grupo Treinar
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacaotaniamaciel
 

Semelhante a Integração de Tecnologias (20)

Uml
UmlUml
Uml
 
Framework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da DissertacaoFramework Entities - Apresentação da Defesa da Dissertacao
Framework Entities - Apresentação da Defesa da Dissertacao
 
Aula1
Aula1Aula1
Aula1
 
Introdução ao Entity Framework 4
Introdução ao Entity Framework 4Introdução ao Entity Framework 4
Introdução ao Entity Framework 4
 
lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
CursoUML - Unified Modeling Language
CursoUML - Unified Modeling LanguageCursoUML - Unified Modeling Language
CursoUML - Unified Modeling Language
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
 
UMLIntro.pptx
UMLIntro.pptxUMLIntro.pptx
UMLIntro.pptx
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
TDC Floripa 2015 Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...
TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...TDC Floripa 2015  Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...
TDC Floripa 2015 Desenvolvendo Sistemas de Gestão a partir de Modelos Execut...
 
Apostila de uml
Apostila de umlApostila de uml
Apostila de uml
 
Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02Umlv4 090813182632-phpapp02
Umlv4 090813182632-phpapp02
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
UML1.pdf
UML1.pdfUML1.pdf
UML1.pdf
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
 

Mais de 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
 

Mais de 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
 

Integração de Tecnologias

  • 1. Integração de Tecnologias UML – CORBA - Java A Convergência das Tecnologias Tutorial por José Eduardo Zindel Deboni Voxxel Consultoria de Sistemas
  • 2.
  • 3.
  • 4.
  • 5. A arquitetura de n camadas ok objetos HTMLs CGIs Camada de Apresentação Camada de Negócios Camada de Dados webserver Corba / iiop Corba / iiop Corba / iiop Http/ cgi RDBMS OODBMS Arquivos
  • 6. Convergência para objetos Análise e Modelagem Projeto e Arquitetura Implementação UML CORBA Java Lente convergente Da Orientação a Objetos
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12. Integração entre as tecnologias
  • 13.
  • 14. Seqüência de diagramas* Comportamento interno Comportamento Externo Estrutura Implementação Casos de Uso Eventos Colaboração Atividades Estados Classes Componentes Distribuição Pacotes * esta seqüência não faz parte da UML é apenas uma sugestão
  • 15.
  • 16. Diagramas de Casos de Uso Cliente Vendedor Gerente Fazer Pedidos Aprovar Crédito Entregar Material Sistema
  • 17.
  • 18.
  • 20.
  • 22. Diagrama de Estados Emprestado Disponível Atrasado Reservado Emprestar Retornar Retornar [ExisteReserva] Emprestar [DataReserva<Hoje] [DataEmprestimo>Hoje] /AvisarUsuário Devolver [AvisarGerente] Devolver [ExisteReserva] /AvisarUsuario
  • 23.
  • 24. Diagrama de Componentes GUI Libs BancoDeDados
  • 25. Diagrama de Dsitribuição Impressora Cliente:PC Servidor:Host1
  • 26. Integração da implementação GUI Libs BancoDeDados Cliente:PC Servidor:Unix
  • 27. Pacotes Agrupam os objetos Pode-se usar para identificar as camadas
  • 29. Mapeamento de um URL http://www.empresa.com.br/aplic/horas/index.html www.empresa.com.br
  • 30. Integração entre as tecnologias
  • 31.
  • 32.
  • 33. Mapeamento em uma c lasse java public class Funcionario { private String nome = &quot;&quot;; private int telefone = 0; private boolean ativo = false ; public void novo () { } }
  • 34. Mapeamento de uma Applet java import java.applet.*; import java.awt.*; public class Funcionario extends Applet { private String nome = &quot;&quot;; private int telefone = 0; private boolean ativo = false ; public void novo () { } } Applet {abstract} Funcionario {final} -nome:String -telefone:int -ativo:boolean +novo( ):void
  • 35. Exemplo de diagrama de estado ListandoItens INIT CLOSE EditandoItens iniciar [teste1==true] /modifica=false fechar [teclaCancel=true] /BD.fechar() fechar [TeclaCancel()==true] /BD.fechar( editar [teclaEdit()==true] /BD.abrir() fechar [teclaOK()==true] /BD.fechar()
  • 36. Código do diagrama de estado class DEMO { private String currentState = &quot;INIT&quot; ; //States: INIT, CLOSE, ListandoItens, EditandoItens //Events: nullEvent, iniciar, fechar, editar void process ( String anEvent ) { if ( ( currentState == &quot;INIT&quot; ) && ( anEvent == &quot;iniciar&quot; ) && ( teste1== true ) ) { currentState = &quot;ListandoItens&quot; ; modifica= false return ; } if ( ( currentState == &quot;ListandoItens&quot; ) && ( anEvent == &quot;fechar&quot; ) && ( teclaCancel= true ) ) { currentState = &quot;CLOSE&quot; ; BD.fechar() return ; } if ( ( currentState == &quot;ListandoItens&quot; ) && ( anEvent == &quot;editar&quot; ) && ( teclaEdit()== true ) ) { currentState = &quot;EditandoItens&quot; ; BD.abrir() return ; } … else return ; } }
  • 37.
  • 38.
  • 39. Interfaces UML e Java public class impClasse implements ClasseModelo { public void criar (String p) { // // aqui devem ser inserido o códig o // do método // } } public interface ClasseModelo { public void criar (String p1); }
  • 40. Herança public class classeFilha extends classeMae { } Toda a funcionalidade da mãe é Transferida para a classe filha como Se fosse dela.
  • 41. Agregação public class ClasseA { private Recursos oRec = new Recursos() ; } A ClasseA agora dispões dos recursos da classe Recursos atraves da instância oRec A classe de Recursos deve estar diponível
  • 42. Todas as opções juntas public class minhaClasse extends classeMae implements ClasseModelo { private Recursos oRec = new Recursos() ; }
  • 43. Integração entre as tecnologias
  • 44.
  • 45. Integração Cliente/Servidor ORB – barramento de objetos Object Request Broker Os serviços são distribuidos na forma de Objetos em um barramento
  • 46.
  • 47. Anatomia do CORBA 2.0 Cliente interface Servico _STUB _SKELTON BOA ORB IIOP - Internet InterORB Protocol
  • 48. A UML modela as interfaces float balance Account makeDeposit makeWithdrawal A linguagem IDL suporta Os princípios da Orientação a Objetos
  • 49. Exemplo de interface IDL // IDL interface Account { //Attributes attribute float balance; readonly attribute string owner; //Operations void makeDeposit(in float amount, out float newBalance); void makeWithdrawal(in float amount, out float newBalance); }; float balance Account makeDeposit makeWithdrawal
  • 50. A interface IDL faz a ligação Interface IDL Cliente Servidor Cliente Stub Server Stub IDL compiler Compilador em linguagem nativa
  • 51. idl2java Interface.idl idl2java InterfaceHolder.java InterfaceHelper.java _st_Interface _sk_Interface _InterfaceImplBase.java Interface.java Cliente Servidor _exemplo_Interface.java
  • 52. Distribuição da aplicação org.omg.CORBA.Object _InterfaceImplBase.java Interface.java ImplementacaoInterface.java org.omg.CORBA.ORB org.omg.CORBA.ORB Cliente Servidor
  • 53. Passos para a criação de Definição das Interfaces IDL Cliente Servidor Cliente Stub Server Stub Implementação dos métodos ( ling . nativa) ORB 7 1 2 3 4 9 8 5 Ling . Nativa Cria aplicação 6
  • 54.
  • 55.
  • 56. Metodo para desenvolvimento Análise Projeto Codigo Modelo Interface IDL Cliente Java/outras Browser Servidor Java/outras Negócio Modelagem UML/CORBA Implementação CORBA/Java ORB Servidor Web
  • 57. Seqüência de passos Projeto Análise Implementação Cliente interface Servico _STUB _SKELTON BOA ORB IIOP - Internet InterORB Protocol
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 72.
  • 74.
  • 75.
  • 76. Arquitetura Servidor Desenvolvedor Cliente navegador Servidor WEB Servidor ORB Servidor BD CASE Ambiente Desenv. Bibliotecas
  • 77. O prato principal… Sistema para consulta em uma lista de telefones
  • 78. Diagrama de Caso de Uso O usuário entra com um nome e consulta o telefone de uma lista de telefones armazenada em um arquivo
  • 79. Diagrama de Classes (inicial)
  • 81. Modelo de estados do Usuario
  • 83. Diagrama de Implementação Usuario Lista lista.txt
  • 85. Código da aplicação import java.io.*; public class aLista implements Lista{ public String procura(String texto){ String linha,alinha= &quot;não encontrei :&quot; +texto; try { FileInputStream is = new FileInputStream( &quot;lista.txt&quot; ); DataInputStream ds = new DataInputStream(is); while ((linha = ds.readLine())!= null ) { if (linha.indexOf(texto)!=-1) alinha=linha; } ds.close(); is.close(); } catch (IOException e) { System.out.println( &quot;Erro: &quot; +e); } return (alinha);} }
  • 87. Tradução da interface para IDL     interface Lista{ string procura(in string texto); }; Código gerado pelo CASE Lista -procura( string ):string
  • 89. Classes de implementação Java Classes CORBA Classes analise (UML)
  • 90. Interface Lista.java (gerada) public interface Lista extends org.omg.CORBA.Object { /** <p> Operation: <b>::Lista::procura</b>. <pre> string procura( in string texto ); </pre> </p> */ public java.lang.String procura( java.lang.String texto ); }    
  • 91.
  • 92.
  • 93. Criar uma aplicação servidora public static void main(String args[]){ try { // inicializa o ORB orb = org.omg.CORBA.ORB.init(args, null ); // inicializa o BOA boa = orb.BOA_init(); // criar o objeto l = new aLista(&quot;minha lista&quot;); // exportar o objeto criado boa.obj_is_ready(l); // Pronto para atender os pedidos boa.impl_is_ready(); } catch (org.omg.CORBA.SystemException e) { System.err.println(e); } }
  • 95. Classes de implementação Java Classes CORBA Classes analise (UML)
  • 96.
  • 97. Modificações na classe Usuario public class oUsuario extends Frame{ public static Lista lis; public Label l = new Label( &quot;Procura :&quot; ); public Button b = new Button( &quot;Ok&quot; ); public TextField t = new TextField(40); public static org.omg.CORBA.ORB orb; public static void main(String arg[]) { // inicializa o orb orb = org.omg.CORBA.ORB.init(arg, null ); // liga no objeto l is = ListaHelper.bind(orb, &quot;minha lista&quot; );   Usuario u = new Usuario(); ...
  • 98.
  • 101.
  • 102.
  • 103.

Notas do Editor

  1. Resumo O tutorial se propõe a desenvolver um sistema de informações integrando todas as tecnologias apresentadas no seminário. O objetivo é mostrar que as tecnologias convergem em um ponto comum para aumentar a qualidade, simplificar a implementação dos sistemas e tornar o desenvolvimento de software realmente uma atividade de engenharia. O tutorial aborda o desenvolvimento baseando-se em modelos da UML que incluem a arquitetura CORBA implementada na linguagem Java. Autor José Eduardo Zindel Deboni (deboni@voxxel.com.br), Engenheiro Naval, Mestre e Doutor em Engenharia da Computação e Sistemas Digitais pela Escola Politécnica. É professor e coordenador de cursos da área de computação da UNIBAN. Consultor da Voxxel Consultoria de Sistemas atuando nas áreas de modelagem orientada a objetos com a UML, programação Java e desenvolvimento de sistemas distribuídos.