<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>Joel Pereira</title>
    <link>http://www.joelpereira.com/</link>
    <description>It is all about .Net</description>
    <copyright>Joel Pereira</copyright>
    <lastBuildDate>Fri, 02 Sep 2005 05:38:24 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.6.4121.1</generator>
    <managingEditor>email@joelpereira.com</managingEditor>
    <webMaster>email@joelpereira.com</webMaster>
    <item>
      <trackback:ping>http://www.joelpereira.com/Trackback.aspx?guid=35f7c4fd-02c1-4971-ac26-f95f561c78d0</trackback:ping>
      <pingback:server>http://www.joelpereira.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.joelpereira.com/PermaLink.aspx?guid=35f7c4fd-02c1-4971-ac26-f95f561c78d0</pingback:target>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Eis o novo blog do time do Winfs.  Vale a pena dar uma olhadinha e na minha opiniao
      os posts do Peter Spiro sao imperdiveis.  Peter Spiro foi o melhor gerente e
      lider de produto que eu conheci ate aqui na Microsoft.  O homem 'e uma fera de
      inteligente e tem uma habilidade para lidar com pessoas fora do comum.
   </p>
        <p>
          <a href="http://blogs.msdn.com/winfs/rss.aspx?CategoryID=10760">http://blogs.msdn.com/winfs/rss.aspx?CategoryID=10760</a>
        </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://www.joelpereira.com/aggbug.ashx?id=35f7c4fd-02c1-4971-ac26-f95f561c78d0" />
      </body>
      <title>Novo Blog Winfs</title>
      <guid>http://www.joelpereira.com/PermaLink.aspx?guid=35f7c4fd-02c1-4971-ac26-f95f561c78d0</guid>
      <link>http://www.joelpereira.com/PermaLink.aspx?guid=35f7c4fd-02c1-4971-ac26-f95f561c78d0</link>
      <pubDate>Fri, 02 Sep 2005 05:38:24 GMT</pubDate>
      <description>&lt;p&gt;
   Eis o novo blog do time do Winfs.&amp;nbsp; Vale a pena dar uma olhadinha e na minha opiniao
   os posts do Peter Spiro sao imperdiveis.&amp;nbsp; Peter Spiro foi o melhor gerente e
   lider de produto que eu conheci ate aqui na Microsoft.&amp;nbsp; O homem 'e uma fera de
   inteligente e tem uma habilidade para lidar com pessoas fora do comum.
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://blogs.msdn.com/winfs/rss.aspx?CategoryID=10760"&gt;http://blogs.msdn.com/winfs/rss.aspx?CategoryID=10760&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.joelpereira.com/aggbug.ashx?id=35f7c4fd-02c1-4971-ac26-f95f561c78d0"&gt;</description>
      <category>Portugues</category>
    </item>
    <item>
      <trackback:ping>http://www.joelpereira.com/Trackback.aspx?guid=50dda30e-8384-496c-bec3-42547f9ebe0f</trackback:ping>
      <pingback:server>http://www.joelpereira.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.joelpereira.com/PermaLink.aspx?guid=50dda30e-8384-496c-bec3-42547f9ebe0f</pingback:target>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      eriTrabalho no time Winfs Api há aproximadamente 1 ano.  Quando comecei
      a trabalhar aqui em 2003 a perspectiva era de que iriamos lancar o proximo sistema
      operacional chamado Langhorn, no inicio de 2006, alias mais ou menos a data que eu
      quero estar voltando para o Brasil.  De lá para cá muita coisa mudou.
   </p>
        <p>
      O componente Winfs foi cortado do Longhorn por varios motivos que a imprensa tem comentado
      e por outros que ninguem sabe, e nao sera eu aqui no meu blog que irei divulgar (ainda
      gosto muito do meu trabalho apesar da Microsoft nao monitorar os blogs dos funcionarios). 
      Com a decisao de corta o Winfs do Longhorn, veio tambem o anuncio de que o Winfs seria
      lancado, de alguma forma, em 2007 e eventualmente estaria de volta no sistema operacional
      em 2009.  Nao sei se eu estou ficando velho ou o que, mas me parece que as pessoas
      aqui na MS passaram a falar em anos como se estivessem falando em meses.  De
      repente em menos de dois anos nao da para fazer absolutamente nada.  Ate entendo
      que para lancar um sistema operacional complexo como o Windows, com uma grade enorme
      de interdependencias, precise de um ciclo de pelo menos 2 anos.  Mas isso nao
      se aplica aos componentes que fazem parte do Windows.  2 anos apenas para o componente
      Winfs é tempo que nao acaba mais, e na minha opiniao era tempo suficiente para
      lancar a versao 1.0.  Como o Steve Balmer e o Bill Gates nao me consultaram antes
      de tomar esta decisao, resultado: Winfs está fora.
   </p>
        <p>
      Depois de tomar conhecimento que o que eu estava fazendo nao iria mais fazer parte
      do Explorer do Longhorn e que a data de lancamento do Winfs passou a ser 2007 no minimo,
      decidi que era muito tempo para ficar no mesmo time sem lancar nada.  Deixa eu
      esclarecer uma coisa, nao tenho duvida alguma de que a visao de um sistema de armazenamento
      unificado tal como o Winfs será implementada pela MS, o Winfs como conhecemos
      hoje ou algo parecido sera lancado em algum momento.  O meu problema é quando. 
      Voce pode perguntar e qual a diferenca de trabalhar por 5 anos e lancar 1 produto
      ou 3 produtos.  Eu acredito que o lancamento de um produto é um evento importantissimo
      no aprendizado de construcao de software.  É exatemente colocando o produto
      na mao dos clientes e recebendo o feeback dos vendedores, consultores, integradores
      e demais involvidos, que se aprende o que foi feito de certo e errado.  Esse
      feedback nao é apenas sobre os detalhes tecnicos das funcionalidades do produto,
      mas se extende ou impacta ate ao processo de desenvolvimento adotado.
   </p>
        <p>
      Bem ja deu para perceber que decidi mudar de time, e se eu identifiquei um ponto negativo
      na MS que é o tempo para lancar um produto do tamanho do Windows, aqui está
      um ponto positivo, quando voce quer mudar de produto ou time existem centenas de vagas
      abertas.  Eu fiz uma selecao bem rigorosa do que eu gostaria de fazer e encontrei
      3 vagas que me interessaram.  Para mudar de time dentro da MS, mesmo ja sendo
      um desenvolvedor, todo mundo para pelo mesmo processo de selecao que os candidatos
      externos passam, é temivel Interview Loop.  Nao sei porque tem esse nome
      Interview Loop pois na verdade o candidato nao acaba no mesmo lugar aonde comecou. 
      O Interview Loop é uma série de entrevistas com no mínimo 5 entrevistadores,
      onde cada entrevista vai ficando mais dificil, isto se voce estiver indo bem. 
      Para ouvir a descricao oficial da MS sobre como é um Interview Loop de uma olhada
      no <a href="http://channel9.msdn.com/ShowPost.aspx?PostID=22755">Channel 9</a>.
   </p>
        <p>
      A minha versão é a seguinte, se voce esta indo bem as perguntas vao ficando
      cada vez mais dificeis, por exemplo um dos interview loops que acabei de passar comecou
      com a pergunta codifique o memmove e acabou com o problema do cavalo no tabuleiro
      de xadrez.  Ate o ultimo entrevistador, provavelmente o Dev Manager ou o General
      Manager, que voce espera que nao lhe pergunte nenhuma questao de codificacao, pode
      acabar fazendo uma perguntinha com codigo.  Meu conselho para quem tem que passar
      por um Interview Loop é nao pare de falar.  Quando o entrevistador lhe der
      um problema, comece analisando as diferentes opcoes para resolver o problema mas é
      fundamental que voce pense alto.  Voce ja deve ter ouvido que nao importa muito
      se voce resolve ou nao o problema, o importante é como voce resolve.  Isso
      nao é totalmente verdade.  Importa muito como voce resolve o problema pois
      o entrevistador assume que voce eventualmente vai resolver o problema.  Na verdade
      existem dois tipos de problemas, aqueles que sao para avaliar a sua capacidade criativa
      e analitica, como por exemplo quantos postos de gasolina existem nos USA, e aqueles
      que avaliam a sua capacidade de resolucao de problemas lógicos ou de codificacao,
      como por exemplo resolver o problema do jogo da velha com desempenho O(1), em tempo
      constante.  Para os problemas que se encaixam na ultima categoria o entrevistador
      esta interessado em ver com voce resolve o problema e que a solucao esteja 100% correta. 
      Para o entrevistador entender a sua linha de raciocinio é fundamental que voce
      nao pare de falar a cada passo, conclusao, duvida, ou opcao que lhe vier a cabeca. 
      Em muitos casos o entrevistador vai lhe dar dicas sem mesmo que ele considere como
      dica.  Por outro lado se voce ficar quieto, travado num ponto do problema, o
      entrevistador vai acabar dando uma dica para voce mas vai contabilizar a dica que
      ele deu para chegar a uma conclusao sobre o seu desempenho.
   </p>
        <p>
      Como disse selecionei 3 vagas e a que mais me interessou foi este time na divisao
      MBS, Microsoft Business Solutions, chamado Axapta.  A MS comprou esta empresa,
      na realidade ela comprou a Navision que tinha comprado a Axalta um tempo antes, uns
      2 anos atras.  O time para onde estou indo sera responsavel pela infraestrutura
      do servidor e ferramentas de desenvolvimento para a solucao de ERP Axapta.  Este
      produto possui uma linguagem de programacao propria chamada X++, que atualmente emite
      codigo interpretado e nativo.  Vou trabalhar no compilador desta linguagem para
      transforma-lo em Managed Code, e introduzir mais uma linguagem ao mundo .Net Framework. 
      Axapta é um produto de ERP para pequenas e medias empresas que permite uma total
      customizacao de acordo com os desejos do cliente.  A MS trabalha com parceiros
      que vendem servicos de customizacao do produto para o cliente final que comprou o
      pacote ERP.  Vou comecar a trabalhar neste novo time daqui duas semanas, enquanto
      isso vou atualizar um documento que tenho uma serie de perguntas de entrevista da
      Microsoft e quem sabe postar algumas destas perguntas aqui no meu blog.
   </p>
        <p>
       
   </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://www.joelpereira.com/aggbug.ashx?id=50dda30e-8384-496c-bec3-42547f9ebe0f" />
      </body>
      <title>Mudando de time</title>
      <guid>http://www.joelpereira.com/PermaLink.aspx?guid=50dda30e-8384-496c-bec3-42547f9ebe0f</guid>
      <link>http://www.joelpereira.com/PermaLink.aspx?guid=50dda30e-8384-496c-bec3-42547f9ebe0f</link>
      <pubDate>Fri, 01 Oct 2004 21:13:56 GMT</pubDate>
      <description>&lt;p&gt;
   eriTrabalho no time Winfs Api h&amp;#225; aproximadamente 1 ano.&amp;nbsp; Quando comecei
   a trabalhar aqui em 2003 a perspectiva era de que iriamos lancar o proximo sistema
   operacional chamado Langhorn, no inicio de 2006, alias mais ou menos a data que eu
   quero estar voltando para o Brasil.&amp;nbsp; De l&amp;#225; para c&amp;#225; muita coisa mudou.
&lt;/p&gt;
&lt;p&gt;
   O componente Winfs foi cortado do Longhorn por varios motivos que a imprensa tem comentado
   e por outros que ninguem sabe, e nao sera eu aqui no meu blog que irei divulgar (ainda
   gosto muito do meu trabalho apesar da Microsoft nao monitorar os blogs dos funcionarios).&amp;nbsp;
   Com a decisao de corta o Winfs do Longhorn, veio tambem o anuncio de que o Winfs seria
   lancado, de alguma forma, em 2007 e eventualmente estaria de volta no sistema operacional
   em 2009.&amp;nbsp; Nao sei se eu estou ficando velho ou o que, mas me parece que as pessoas
   aqui na MS passaram a falar em anos como se estivessem falando em meses.&amp;nbsp; De
   repente em menos de dois anos nao da para fazer absolutamente nada.&amp;nbsp; Ate entendo
   que para lancar um sistema operacional complexo como o Windows, com uma grade enorme
   de interdependencias, precise de um ciclo de pelo menos 2 anos.&amp;nbsp; Mas isso nao
   se aplica aos componentes que fazem parte do Windows.&amp;nbsp; 2 anos apenas para o componente
   Winfs &amp;#233; tempo que nao acaba mais, e na minha opiniao era tempo suficiente para
   lancar a versao 1.0.&amp;nbsp; Como o Steve Balmer e o Bill Gates nao me consultaram antes
   de tomar esta decisao, resultado: Winfs est&amp;#225; fora.
&lt;/p&gt;
&lt;p&gt;
   Depois de tomar conhecimento que o que eu estava fazendo nao iria mais fazer parte
   do Explorer do Longhorn e que a data de lancamento do Winfs passou a ser 2007 no minimo,
   decidi que era muito tempo para ficar no mesmo time sem lancar nada.&amp;nbsp; Deixa eu
   esclarecer uma coisa, nao tenho duvida alguma de que a visao de um sistema de armazenamento
   unificado tal como o Winfs ser&amp;#225; implementada pela MS, o Winfs como conhecemos
   hoje ou algo parecido sera lancado em algum momento.&amp;nbsp; O meu problema &amp;#233; quando.&amp;nbsp;
   Voce pode perguntar e qual a diferenca de trabalhar por 5 anos e lancar 1 produto
   ou 3 produtos.&amp;nbsp; Eu acredito que o lancamento de um produto &amp;#233; um evento importantissimo
   no aprendizado de construcao de software.&amp;nbsp; &amp;#201; exatemente colocando o produto
   na mao dos clientes e recebendo o feeback dos vendedores, consultores, integradores
   e demais involvidos, que se aprende o que foi feito de certo e errado.&amp;nbsp; Esse
   feedback nao &amp;#233; apenas sobre os detalhes tecnicos das funcionalidades do produto,
   mas se extende ou impacta ate ao processo de desenvolvimento adotado.
&lt;/p&gt;
&lt;p&gt;
   Bem ja deu para perceber que decidi mudar de time, e se eu identifiquei um ponto negativo
   na MS que &amp;#233; o tempo para lancar um produto do tamanho do Windows, aqui est&amp;#225;
   um ponto positivo, quando voce quer mudar de produto ou time existem centenas de vagas
   abertas.&amp;nbsp; Eu fiz uma selecao bem rigorosa do que eu gostaria de fazer e encontrei
   3 vagas que me interessaram.&amp;nbsp; Para mudar de time dentro da MS, mesmo ja sendo
   um desenvolvedor, todo mundo para pelo mesmo processo de selecao que os candidatos
   externos passam, &amp;#233; temivel Interview Loop.&amp;nbsp; Nao sei porque tem esse nome
   Interview Loop pois na verdade o candidato nao acaba no mesmo lugar aonde comecou.&amp;nbsp;
   O Interview Loop &amp;#233; uma s&amp;#233;rie de entrevistas com no m&amp;#237;nimo 5 entrevistadores,
   onde cada entrevista vai ficando mais dificil, isto se voce estiver indo bem.&amp;nbsp;
   Para ouvir a descricao oficial da MS sobre como &amp;#233; um Interview Loop de uma olhada
   no &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=22755"&gt;Channel 9&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   A minha vers&amp;#227;o &amp;#233; a seguinte, se voce esta indo bem as perguntas vao ficando
   cada vez mais dificeis, por exemplo um dos interview loops que acabei de passar comecou
   com a pergunta codifique o memmove e acabou com o problema do cavalo no tabuleiro
   de xadrez.&amp;nbsp; Ate o ultimo entrevistador, provavelmente o Dev Manager ou o General
   Manager, que voce espera que nao lhe pergunte nenhuma questao de codificacao, pode
   acabar fazendo uma perguntinha com codigo.&amp;nbsp; Meu conselho para quem tem que passar
   por um Interview Loop &amp;#233; nao pare de falar.&amp;nbsp; Quando o entrevistador lhe der
   um problema, comece analisando as diferentes opcoes para resolver o problema mas &amp;#233;
   fundamental que voce pense alto.&amp;nbsp; Voce ja deve ter ouvido que nao importa muito
   se voce resolve ou nao o problema, o importante &amp;#233; como voce resolve.&amp;nbsp; Isso
   nao &amp;#233; totalmente verdade.&amp;nbsp; Importa muito como voce resolve o problema pois
   o entrevistador assume que voce eventualmente vai resolver o problema.&amp;nbsp; Na verdade
   existem dois tipos de problemas, aqueles que sao para avaliar a sua capacidade criativa
   e analitica, como por exemplo quantos postos de gasolina existem nos USA, e aqueles
   que avaliam a sua capacidade de resolucao de problemas l&amp;#243;gicos ou de codificacao,
   como por exemplo resolver o problema do jogo da velha com desempenho O(1), em tempo
   constante.&amp;nbsp; Para os problemas que se encaixam na ultima categoria o entrevistador
   esta interessado em ver com voce resolve o problema e que a solucao esteja 100% correta.&amp;nbsp;
   Para o entrevistador entender a sua linha de raciocinio &amp;#233; fundamental que voce
   nao pare de falar a cada passo, conclusao, duvida, ou opcao que lhe vier a cabeca.&amp;nbsp;
   Em muitos casos o entrevistador vai lhe dar dicas sem mesmo que ele considere como
   dica.&amp;nbsp; Por outro lado se voce ficar quieto, travado num ponto do problema, o
   entrevistador vai acabar dando uma dica para voce mas vai contabilizar a dica que
   ele deu para chegar a uma conclusao sobre o seu desempenho.
&lt;/p&gt;
&lt;p&gt;
   Como disse selecionei 3 vagas e a que mais me interessou foi este time na divisao
   MBS, Microsoft Business Solutions, chamado Axapta.&amp;nbsp; A MS comprou esta empresa,
   na realidade ela comprou a Navision que tinha comprado a Axalta um tempo antes, uns
   2 anos atras.&amp;nbsp; O time para onde estou indo sera responsavel pela infraestrutura
   do servidor e ferramentas de desenvolvimento para a solucao de ERP Axapta.&amp;nbsp; Este
   produto possui uma linguagem de programacao propria chamada X++, que atualmente emite
   codigo interpretado e nativo.&amp;nbsp; Vou trabalhar no compilador desta linguagem para
   transforma-lo em Managed Code, e introduzir mais uma linguagem ao mundo .Net Framework.&amp;nbsp;
   Axapta &amp;#233; um produto de ERP para pequenas e medias empresas que permite uma total
   customizacao de acordo com os desejos do cliente.&amp;nbsp; A MS trabalha com parceiros
   que vendem servicos de customizacao do produto para o cliente final que comprou o
   pacote ERP.&amp;nbsp; Vou comecar a trabalhar neste novo time daqui duas semanas, enquanto
   isso vou atualizar um documento que tenho uma serie de perguntas de entrevista da
   Microsoft e quem sabe postar algumas destas perguntas aqui no meu blog.
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.joelpereira.com/aggbug.ashx?id=50dda30e-8384-496c-bec3-42547f9ebe0f"&gt;</description>
      <category>Carreira</category>
    </item>
    <item>
      <trackback:ping>http://www.joelpereira.com/Trackback.aspx?guid=675e7a8b-b50f-475c-8f2e-868775f0e4f3</trackback:ping>
      <pingback:server>http://www.joelpereira.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.joelpereira.com/PermaLink.aspx?guid=675e7a8b-b50f-475c-8f2e-868775f0e4f3</pingback:target>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Hoje a organizacao inteira do Sql Server, incluindo obviamente o time Winfs, teve
      uma reuniao com o Steve Balmer.  Obviamente o conteudo desta reuniao nao pode
      ser comentado publicamente mas algumas observacoes pessoais nao deve ofender ninguem.  
   </p>
        <p>
      Primeiro o Steve Balmer foi de longe o melhor orador entre os tres lideres que falaram
      com a gente; Bill Gates, Jim Allchim e Steve Balmer.  Ele como sempre 'e contagiante
      e de um bom senso admiravel.
   </p>
        <p>
      Bem o que mais eu admiro nele 'e a sinceridade com que ele explica situacoes delicadas
      e ao mesmo tempo nao se compromete.  Teve uma hora que ele precisava fazer
      uma analogia, e o exemplo que ele descreveu foi o de que “os jovens acabam realizando
      coisas muito dificeis porque eles nunca experimentaram o fracasso antes, entao eles
      nao tem experiencia previa que indique que certas coisas sao impossiveis de serem
      realizadas.”  Depois de descrever este exemplo, a censura na cabeca dele
      entrou em acao e ele imendou imediatamente a seguinte correcao: “ isto 'e o
      que eles dizem por ai, voces sabem ne?  Nao estou cometendo nenhuma infracao
      de RH.”
   </p>
        <p>
      Antes de morar aqui nos USA eu ja mais entenderia esta observacao, do que ele estaria
      falando?  Bem o que ele precebeu momentos depois da analogia que ele descreveu
      sobre os jovens 'e que aquilo poderia ser interpretado como preconceito contra os
      mais idosos, de que os mais velhos por serem experientes nao conseguem atingir os
      mesmos objetivos e desafios que os mais jovens.  Na minha cabeca brasileira 'e
      mais do que obvio que ele nao estava falando de forma preconceituosa, mas na posicao
      dele, como presidente de uma empresa do tamanho da Microsoft, tudo que se fala tem
      que ser extremamente planejado para que ninguem consiga tirar uma frase fora do contexto
      e acusa-lo de algo.  Alem de cuidar para nao parecer preconceituoso, depois da
      ultima acao judicial ele tem muito mais com que se preocupar quando fala sobre inovacoes
      e competidores.
   </p>
        <p>
      Bem, como disse nao posso comentar nada sobre o conteudo da reuniao, mas se voce acompanha
      as noticias ultimamente ja deve saber o assunto que discutimos.
   </p>
        <img width="0" height="0" src="http://www.joelpereira.com/aggbug.ashx?id=675e7a8b-b50f-475c-8f2e-868775f0e4f3" />
      </body>
      <title>Reuniao com o Steve Balmer </title>
      <guid>http://www.joelpereira.com/PermaLink.aspx?guid=675e7a8b-b50f-475c-8f2e-868775f0e4f3</guid>
      <link>http://www.joelpereira.com/PermaLink.aspx?guid=675e7a8b-b50f-475c-8f2e-868775f0e4f3</link>
      <pubDate>Thu, 09 Sep 2004 04:54:19 GMT</pubDate>
      <description>&lt;p&gt;
   Hoje a organizacao inteira do Sql Server, incluindo obviamente o time Winfs, teve
   uma reuniao com o Steve Balmer.&amp;nbsp; Obviamente o conteudo desta reuniao nao pode
   ser comentado publicamente mas algumas observacoes pessoais nao deve ofender ninguem.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
   Primeiro o Steve Balmer foi de longe o melhor orador entre os tres lideres que falaram
   com a gente; Bill Gates, Jim Allchim e Steve Balmer.&amp;nbsp; Ele como sempre 'e contagiante
   e de um bom senso admiravel.
&lt;/p&gt;
&lt;p&gt;
   Bem o que mais eu admiro nele 'e a sinceridade com que ele explica situacoes delicadas
   e ao mesmo tempo nao se compromete.&amp;nbsp;&amp;nbsp;Teve uma hora que ele precisava fazer
   uma analogia, e o exemplo que ele descreveu foi o de que &amp;#8220;os jovens acabam realizando
   coisas muito dificeis porque eles nunca experimentaram o fracasso antes, entao eles
   nao tem experiencia previa que indique que certas coisas sao impossiveis de serem
   realizadas.&amp;#8221;&amp;nbsp; Depois de descrever este exemplo, a censura na cabeca dele
   entrou em acao e ele imendou imediatamente a seguinte correcao: &amp;#8220; isto 'e o
   que eles dizem por ai, voces sabem ne?&amp;nbsp; Nao estou cometendo nenhuma infracao
   de RH.&amp;#8221;
&lt;/p&gt;
&lt;p&gt;
   Antes de morar aqui nos USA eu ja mais entenderia esta observacao, do que ele estaria
   falando?&amp;nbsp; Bem o que ele precebeu momentos depois da analogia que ele descreveu
   sobre os jovens 'e que aquilo poderia ser interpretado como preconceito contra os
   mais idosos, de que os mais velhos por serem experientes nao conseguem atingir os
   mesmos objetivos e desafios que os mais jovens.&amp;nbsp; Na minha cabeca brasileira 'e
   mais do que obvio que ele nao estava falando de forma preconceituosa, mas na posicao
   dele, como presidente de uma empresa do tamanho da Microsoft, tudo que se fala tem
   que ser extremamente planejado para que ninguem consiga tirar uma frase fora do contexto
   e acusa-lo de algo.&amp;nbsp; Alem de cuidar para nao parecer preconceituoso, depois da
   ultima acao judicial ele tem muito mais com que se preocupar quando fala sobre inovacoes
   e competidores.
&lt;/p&gt;
&lt;p&gt;
   Bem, como disse nao posso comentar nada sobre o conteudo da reuniao, mas se voce acompanha
   as noticias ultimamente ja deve saber o assunto que discutimos.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.joelpereira.com/aggbug.ashx?id=675e7a8b-b50f-475c-8f2e-868775f0e4f3"&gt;</description>
      <category>Portugues</category>
    </item>
    <item>
      <trackback:ping>http://www.joelpereira.com/Trackback.aspx?guid=e8a0b809-5f15-49f3-aa96-86514dd0953d</trackback:ping>
      <pingback:server>http://www.joelpereira.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.joelpereira.com/PermaLink.aspx?guid=e8a0b809-5f15-49f3-aa96-86514dd0953d</pingback:target>
      <title>OPath, uma linguagem de consulta para objetos</title>
      <guid>http://www.joelpereira.com/PermaLink.aspx?guid=e8a0b809-5f15-49f3-aa96-86514dd0953d</guid>
      <link>http://www.joelpereira.com/PermaLink.aspx?guid=e8a0b809-5f15-49f3-aa96-86514dd0953d</link>
      <pubDate>Tue, 15 Jun 2004 01:11:32 GMT</pubDate>
      <description>&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;O artigo abaixo foi
   publicado na &lt;a href="http://www.neoficio.com.br/msdn/"&gt;MSDN Magazine &lt;/a&gt;brasileira
   em Mar&amp;#231;o de 2004.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font face="Times New Roman" color=#000000 size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Um dos pilares do novo
   sistema operational da Microsoft, codename Longhorn, &amp;#233; o novo sistema de arquivos
   chamado WinFS. Opath &amp;#233; uma linguagem de consulta utilizada por WinFS para recuperar
   e selecionar objetos a partir de uma fonte de dados.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Este
   artigo apresenta as raz&amp;#245;es para a cria&amp;#231;&amp;#227;o de uma nova linguagem de
   consulta e introduz seus conceitos b&amp;#225;sicos.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Ser&amp;#225;
   apresentado tamb&amp;#233;m exemplos simples de filtros Opath que resulta em consultas
   de complexidade m&amp;#233;dia.&lt;span style="mso-no-proof: yes"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Interttulo style="MARGIN: 8.5pt 0in 2.85pt"&gt;
   &lt;strong&gt;&lt;font size=5&gt;&lt;font face=Arial&gt;&lt;font color=#000000&gt;Linguagem de Consulta&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Opath &amp;#233; denominada
   como uma linguagem de consulta (Query Language) e n&amp;#227;o uma linguagem gen&amp;#233;rica
   de programa&amp;#231;&amp;#227;o. O objetivo da linguagem OPath &amp;#233; permitir que o programador
   expresse com exatid&amp;#227;o quais os objetos que deseja recuperar de uma base de dados.
   Opath n&amp;#227;o apresenta, pelo menos atualmente, nenhuma sintaxe para controle de
   fluxo (comandos do tipo IF, WHILE, entre outros), ou para cria&amp;#231;&amp;#227;o de novos
   tipos e classes, aspectos t&amp;#237;picos de uma linguagem de programa&amp;#231;&amp;#227;o. 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font color=#000000&gt;&lt;font face="Times New Roman" size=3&gt;O membro mais famoso das linguagens
   de consulta &amp;#233; a linguagem SQL (Structured Query Language), sendo amplamente adotada
   pela maioria dos bancos de dados relacionais. Um dos benef&amp;#237;cios da linguagem
   SQL &amp;#233; possibilitar que o gerenciador de banco de dados receba um comando semelhante
   ao da &lt;/font&gt;&lt;span class=FiguraChar1&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"&gt;&lt;font face=Arial&gt;Listagem
   1&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;font face="Times New Roman"&gt; e recupere as
   informa&amp;#231;&amp;#245;es desejadas sem que o cliente tenha conhecimento dos detalhes
   de como tal informa&amp;#231;&amp;#227;o foi armazenada em disco ou recuperada, qual o formato
   f&amp;#237;sico dos registros de cada tabela, qual a representa&amp;#231;&amp;#227;o bin&amp;#225;ria
   dos tipos de cada coluna, e outras caracter&amp;#237;sticas que s&amp;#243; importam ao gerenciador
   de banco de dados.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font color=#000000&gt;&lt;font face="Times New Roman" size=3&gt;O propriet&amp;#225;rio da tabela
   Clientes tem a flexibilidade de adicionar ou remover colunas da tabela (exceto as
   colunas ClienteID e ClienteName) que o comando da &lt;/font&gt;&lt;span class=FiguraChar1&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"&gt;&lt;font face=Arial&gt;Listagem
   1&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;font face="Times New Roman"&gt; continuar&amp;#225;
   a ser executado com sucesso.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Cabe ao
   gerenciador de banco de dados a fun&amp;#231;&amp;#227;o de encapsular toda a complexidade
   envolvida em persistir dados num disco r&amp;#237;gido. Da mesma forma, a linguagem OPath
   possibilita que toda a complexidade envolvida em persistir objetos seja encapsulada
   na camada de persist&amp;#234;ncia de objetos, permitindo maior flexibilidade para o programador.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Na
   se&amp;#231;&amp;#227;o abaixo veremos no que consiste esta complexidade.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Figura style="MARGIN: 6pt 0in 0pt"&gt;
   &lt;font face=Arial&gt;&lt;font color=#000000&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;Listagem
   1.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;Exemplo de um comando SQL&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Select
   ClienteID, Nome from Clientes&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Interttulo style="MARGIN: 8.5pt 0in 2.85pt"&gt;
   &lt;strong&gt;&lt;font size=5&gt;&lt;font face=Arial&gt;&lt;font color=#000000&gt;Classes e Tabelas&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;A ado&amp;#231;&amp;#227;o das
   linguagens de programa&amp;#231;&amp;#227;o orientadas a objeto &amp;#233; inquestion&amp;#225;vel.
   Linguagens tradicionalmente n&amp;#227;o orientadas a objeto, por exemplo, Visual Basic
   ou Cobol, hoje j&amp;#225; apresentam vers&amp;#245;es que usufruem desta t&amp;#233;cnica, disseminando
   tal tecnologia para um p&amp;#250;blico antes restrito a pr&amp;#225;ticas consideradas ultrapassadas. &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Uma
   forma comum de um sistema orientado a objetos resolver um problema, &amp;#233; atrav&amp;#233;s
   do projeto de classes ou hierarquias de classes, definindo os relacionamentos corretos
   entre as instancias destas classes e finalmente persistindo as informa&amp;#231;&amp;#245;es
   armazenadas nestas instancias em tabelas num banco de dados relacional. Mover os dados
   do mundo orientado a objeto para o mundo relacional pode parecer uma tarefa trivial,
   mas na realidade &amp;#233; um antigo problema que pode apresentar alta complexidade.
   O .Net Framework tornou este problema al&amp;#233;m de complexo, comum, j&amp;#225; que orienta&amp;#231;&amp;#227;o
   a objetos &amp;#233; o conceito fundamental no c&amp;#243;digo gerenciado. &amp;#201; muito f&amp;#225;cil
   encontrarmos profissionais de inform&amp;#225;tica com d&amp;#250;vidas do g&amp;#234;nero, por
   onde come&amp;#231;o o projeto de um sistema multicamadas, pela modelagem das classes
   ou pela modelagem das tabelas do banco de dados. Independente de onde voc&amp;#234; come&amp;#231;ar,
   com certeza ter&amp;#225; que gastar um bom tempo fazendo o mapeamento de um modelo para
   o outro. E qual o mapeamento adequado entre as classes e tabelas; uma classe para
   cada tabela ou v&amp;#225;rias tabelas para cada classe? Ser&amp;#225; que as regras de normaliza&amp;#231;&amp;#227;o
   de um banco de dados relacional devem ser mantidas? 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;N&amp;#227;o seria interessante
   se existisse uma camada de software que encapsulasse esta complexidade de mapear classes
   e tabelas, e que proporcionasse ao programador fazer mudan&amp;#231;as radicais no mapeamento,
   sem que o c&amp;#243;digo cliente sofresse algum impacto. A Microsoft vem trabalhando
   pesado para disponibilizar esta infra-estrutura para o desenvolvedor e a linguagem
   de consulta para interagir com esta camada ser&amp;#225; OPath.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Interttulo style="MARGIN: 8.5pt 0in 2.85pt"&gt;
   &lt;strong&gt;&lt;font size=5&gt;&lt;font face=Arial&gt;&lt;font color=#000000&gt;OPath&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;OPath &amp;#233; a forma
   pela qual voc&amp;#234; expressa crit&amp;#233;rios de sele&amp;#231;&amp;#227;o para a camada de
   persist&amp;#234;ncia de objetos e como resultado recebe os objetos que satisfazem tal
   crit&amp;#233;rio. Para os que conhecem a linguagem XPath, OPath ser&amp;#225; f&amp;#225;cil
   de ser aprendida, pois foi baseada nos conceitos de navega&amp;#231;&amp;#227;o da linguagem
   XPath, j&amp;#225; que as arvores semi-estruturadas XML s&amp;#227;o semelhantes aos grafos
   de objetos. &lt;span style="COLOR: navy"&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font color=#000000&gt;&lt;font face="Times New Roman" size=3&gt;Veja um exemplo: imagine o
   seguinte conjunto de classes apresentado na &lt;/font&gt;&lt;span class=FiguraChar1&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"&gt;&lt;font face=Arial&gt;Listagem
   2&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;font face="Times New Roman"&gt; em C#. Suponha
   que voc&amp;#234; queira recuperar todos os clientes que possuem ordens de compra. Em
   OPath voc&amp;#234; escreve a seguinte express&amp;#227;o:&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span class=CdigoChar&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Exists(Clientes.Compras)&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Vamos restringir ainda
   mais a sele&amp;#231;&amp;#227;o para os clientes que possuem compras entre 10 e 20 de fevereiro.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span class=CdigoChar&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Exists(Clientes.Compras[DataCompra&amp;gt;=&amp;#8217;10/02/2004&amp;#8217;
   and DataCompra&amp;lt;=&amp;#8217;20/02/2004&amp;#8217;])&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Podemos restringir ainda
   mais os clientes para apenas aqueles clientes que compraram produtos com pre&amp;#231;o
   superior a 100 reais.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span class=CdigoChar&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;Exists(Clientes.Compras[DataCompra&amp;gt;=&amp;#8217;&lt;st1:date w:st="on" Year="2004" Day="10" Month="2" ls="trans"&gt;10/02/2004&lt;/st1:date&gt;
   &amp;#8217; and DataCompra&amp;lt;=&amp;#8217;&lt;st1:date w:st="on" Year="2004" Day="20" Month="2" ls="trans"&gt;20/02/2004&lt;/st1:date&gt;
   &amp;#8217;].Items[Preco&amp;gt;100])&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;As tr&amp;#234;s express&amp;#245;es
   s&amp;#227;o exemplos b&amp;#225;sicos que n&amp;#227;o exigiram nenhuma constru&amp;#231;&amp;#227;o
   mais complexa. Para acessar a propriedade de um objeto o desenvolvedor deve utilizar
   o operador &amp;#8216;.&amp;#8217;, ou seja, para acessar a lista de compras dos clientes
   escreve-se a express&amp;#227;o Clientes.Compras. Uma vez selecionada a lista desejada,
   podemos adicionar crit&amp;#233;rios de sele&amp;#231;&amp;#227;o, conhecidos tamb&amp;#233;m como
   predicados, utilizando os colchetes.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Todas
   as express&amp;#245;es dentro dos colchetes tem como escopo o objeto especificado a esquerda
   do colchetes esquerdo.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Quando escrevemos
   Clientes.Compras[DataCompra =&amp;#8217;&lt;st1:date w:st="on" Year="2004" Day="17" Month="2" ls="trans"&gt;17/02/2004&lt;/st1:date&gt;
   &amp;#8217;] a propriedade DataCompra se refere ao objeto especificado &amp;#224; esquerda
   do colchetes, neste caso a lista de objetos do tipo OrdemCompra.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Portanto
   s&amp;#227;o dois os conceitos essenciais que voc&amp;#234; precisa apreender para escrever
   express&amp;#245;es OPath; o primeiro &amp;#233; como navegar a partir de um objeto para outro,
   utilizando o operador &amp;#8216;.&amp;#8217;; e o segundo &amp;#233; como descrever crit&amp;#233;rios
   de sele&amp;#231;&amp;#227;o para filtrar apenas os objetos desejados, utilizando os predicados
   dentro dos colchetes. 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font color=#000000&gt;&lt;font face="Times New Roman" size=3&gt;Agora vamos traduzir estas
   express&amp;#245;es OPath para a linguagem SQL. Veremos que os comandos SQL equivalentes
   n&amp;#227;o s&amp;#227;o t&amp;#227;o simples assim.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Como
   nosso modelo de classe &amp;#233; simples, adotaremos o mapeamento de um para um, conforme
   mostrado na &lt;/font&gt;&lt;span class=FiguraChar1&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 9pt; mso-bidi-font-size: 12.0pt"&gt;&lt;font face=Arial&gt;Figura
   1&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;font size=3&gt;&lt;font face="Times New Roman"&gt;. Cada classe
   ser&amp;#225; armazenada em uma tabela.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Figura style="MARGIN: 6pt 0in 0pt"&gt;
   &lt;font face=Arial&gt;&lt;font color=#000000&gt;&lt;b&gt;Figura 1. &lt;/b&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;Mapeamento
   da tabela&lt;b&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;&lt;?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /&gt;
   &lt;v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"&gt;
      &lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;
      &lt;v:formulas&gt;
         &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;
         &lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;
         &lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;
         &lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;
         &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;
         &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;
         &lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;
         &lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;
         &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;
         &lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;
         &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;
         &lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;
      &lt;/v:formulas&gt;
      &lt;v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"&gt;&lt;/v:path&gt;
      &lt;o:lock aspectratio="t" v:ext="edit"&gt;&lt;/o:lock&gt;
   &lt;/v:shapetype&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;img style="WIDTH: 449px; HEIGHT: 427px" height=318 src="http://www.joelpereira.com/content/binary/figura%201.JPG" width=449 border=0&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;O primeiro filtro pode
   ser traduzido para SQL como:&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span class=CdigoChar&gt;Select
   Clientes.* &lt;/span&gt;&lt;span class=CdigoChar&gt;&lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;From
   Clientes&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span class=CdigoChar&gt;&lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Where
   exists(&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span class=CdigoChar&gt;&lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;select
   1 from Compras&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span class=CdigoChar&gt;&lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Where
   Clientes.ClienteID=Compras.ClienteID)&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Para o segundo filtro
   temos:&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span class=CdigoChar&gt;Select
   Clientes.* &lt;/span&gt;&lt;span class=CdigoChar&gt;&lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;From
   Clientes&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span class=CdigoChar&gt;&lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Where
   exists(&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span class=CdigoChar&gt;&lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;select
   1 from Compras 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span class=CdigoChar&gt;&lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;where
   Clientes.ClienteID=Compras.ClienteID&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span class=CdigoChar&gt;&lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;and
   Compras.DataCompra between &amp;#8216;&lt;st1:date w:st="on" Year="2004" Day="10" Month="2" ls="trans"&gt;10/02/2004&lt;/st1:date&gt;
   &amp;#8217;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span class=CdigoChar&gt;&lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;and
   &amp;#8216;&lt;st1:date w:st="on" Year="2004" Day="20" Month="2" ls="trans"&gt;20/02/2004&lt;/st1:date&gt;
   &amp;#8217;)&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;E para o terceiro filtro
   temos:&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 71.4pt"&gt;
   &lt;span class=CdigoChar&gt;&lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;
   &lt;o:p&gt;
      &lt;font style="BACKGROUND-COLOR: #f3f3f3" face="Times New Roman" color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Select
   Clientes.* From Clientes&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Where
   exists(&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;select
   1 from Compras 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;join
   Items on Compras.OrdemID = Items.OrdemID&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;where
   Clientes.ClienteID=Compras.ClienteID&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;and
   Compras.DataCompra between &amp;#8216;&lt;st1:date w:st="on" Year="2004" Day="10" Month="2" ls="trans"&gt;10/02/2004&lt;/st1:date&gt;
   &amp;#8217;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span lang=EN-US style="mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;and
   &amp;#8216;&lt;st1:date w:st="on" Year="2004" Day="20" Month="2" ls="trans"&gt;20/02/2004&lt;/st1:date&gt;
   &amp;#8217; and Item.Preco &amp;gt; 100)&lt;/span&gt;&lt;span class=CdigoChar&gt;&lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Estes comandos SQL podem
   ser reescritos de outra forma equivalente ao exposto. Observe o terceiro filtro e
   compare com a express&amp;#227;o OPath equivalente. A express&amp;#227;o OPath &amp;#233; bem
   mais simples, devido ao fato de ter escondido a complexidade de fazer os joins entre
   as tr&amp;#234;s tabelas envolvidas e colocar os crit&amp;#233;rios de sele&amp;#231;&amp;#227;o na
   posi&amp;#231;&amp;#227;o correta.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Ser&amp;#225;
   responsabilidade da camada de persist&amp;#234;ncia de objetos traduzir as express&amp;#245;es
   OPath nos comandos SQL equivalentes, n&amp;#227;o apenas semanticamente equivalentes,
   mas tamb&amp;#233;m da maneira mais otimizada poss&amp;#237;vel, eliminando a necessidade
   de se escrever manualmente tais comandos SQL. Para traduzir uma express&amp;#227;o OPath,
   a camada de persist&amp;#234;ncia necessita do mapeamento entre as classes e seus relacionamentos,
   e as tabelas e seus relacionamentos. O fato deste mapeamento poder ser alterado durante
   o ciclo de desenvolvimento, sem nenhum ou com m&amp;#237;nimo impacto no c&amp;#243;digo cliente,
   proporciona ao desenvolvedor a rapidez e agilidade necess&amp;#225;rias para atender as
   contantes mudan&amp;#231;as nos requisitos de um projeto.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0in"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoCaption style="MARGIN: 0in 0in 6pt"&gt;
   &lt;font face=Arial&gt;&lt;font color=#000000&gt;&lt;b&gt;Listagem 2. &lt;/b&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;Classes
   da tabela&lt;/span&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Public
   class Cliente&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;{&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   string 
   &lt;st1:City w:st="on"&gt;
      &lt;st1:place w:st="on"&gt;Nome&lt;/st1:place&gt;
   &lt;/st1:City&gt;
   ;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   Nullable&amp;lt;Endereco&amp;gt; Endereco;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   Collection&amp;lt;OrdemCompra&amp;gt; Compras;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;o:p&gt;
      &lt;font style="BACKGROUND-COLOR: #f3f3f3" face="Times New Roman" color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Public
   class Endereco&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;{&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   string Rua;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   string Cidade;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   string Estado;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;span lang=EN-US style="mso-ansi-language: EN-US"&gt;&lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   string Cep;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   string Pais;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;o:p&gt;
      &lt;font style="BACKGROUND-COLOR: #f3f3f3" face="Times New Roman" color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Public
   class OrdemCompra&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;{&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   DateTime DataCompra;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   Nullable&amp;lt;Endereco&amp;gt; EnderecoEnvio;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   Collection&amp;lt;ItemCompra&amp;gt; Items;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;o:p&gt;
      &lt;font style="BACKGROUND-COLOR: #f3f3f3" face="Times New Roman" color=#000000&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;Public
   class ItemCompra&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;{&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   string Produto;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   decimal Preco;&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Public
   int Quantidade;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Cdigo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font style="BACKGROUND-COLOR: #f3f3f3"&gt;&lt;font face="Times New Roman"&gt;&lt;font color=#000000&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;o:p&gt;
      &lt;font face="Times New Roman" color=#000000 size=3&gt;&amp;nbsp;&lt;/font&gt;
   &lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=Interttulo style="MARGIN: 8.5pt 0in 2.85pt"&gt;
   &lt;strong&gt;&lt;font size=5&gt;&lt;font face=Arial&gt;&lt;font color=#000000&gt;Conclus&amp;#227;o&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p class=Corpo style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font size=3&gt;&lt;font color=#000000&gt;&lt;font face="Times New Roman"&gt;Este artigo apresentou
   os conceitos fundamentais da nova linguagem de consulta OPath, sua rela&amp;#231;&amp;#227;o
   com outras linguagens tais como SQL e exemplos b&amp;#225;sicos de sua sintaxe. Saber
   escrever consultas em OPath &amp;#233; requisito b&amp;#225;sico para desfrutar dos benef&amp;#237;cios
   do novo sistema de arquivos denominado WinFS, um dos pilares do pr&amp;#243;ximo sistema
   operacional da Microsoft, codename Longhorn.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;O
   cronograma do sistema operacional Longhorn prev&amp;#234; o lan&amp;#231;amento da vers&amp;#227;o
   Beta ainda no ano de 2004 e a vers&amp;#227;o final no final do ano de 2005.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.joelpereira.com/aggbug.ashx?id=e8a0b809-5f15-49f3-aa96-86514dd0953d"&gt;</description>
      <category>Portugues</category>
    </item>
  </channel>
</rss>