Monthly Archive for Abril, 2008

“Overloading” de Operadores

Na continuação dos artigos que venho a publicar sobre algumas características que mais me atraem no .NET Framework, apresento hoje o “Overload” de Operadores!

Suponhamos que para um dado projecto, temos que registar para uma equipa o total de golos marcados e golos sofridos no decurso de um conjunto de jogos. Para tal, podemos usar uma classe como a seguinte para representar os dados:

Data Class

Assim, basta então criar uma instância da nossa classe para guardar os resultados e outras tantas para os jogos, e depois somar tudo!

Para efeitos de demonstração, suponhamos que pretendemos registar o resultado de 3 jogos e depois apresentar o resultado final:

Main Program without Operator Overloading

Neste caso, vamos precisamos de somar os valores das propriedades separadamente à nossa instância “total”, como podemos ver dentro do ciclo For; mas podemos evitar este passo, simplesmente indicando ao compilador como é que ele pode somar instâncias da nossa classe!

Introduzimos assim na classe de dados um “overload” ao operador de soma:

Data Class with Operator Overloading

De notar que este “overload” é um método estático (Static) e tem a indicação do tipo de dados e do operador a implementar (operator +).

Finalmente, temos apenas de actualizar o nosso código para passar a usar o operador agora criado:

Main Program using Operator Overloading

O resultado final é exactamente o mesmo, mas em termos práticos mostra-se uma solução muito mais agradável de implementar do que simplesmente somar as propriedades isoladas!

Existem algumas regras que devem saber antes de se lançaram a criar operadores para tudo o que é classe que usam, pelo que a sua leitura é aconselhada! ;)

Technorati Tags , ,

Live Mesh

Live Mesh

A Microsoft apresentou mais um produto a ser integrado na rede de serviços Live, desta vez para a partilha e sincronização de ficheiros entre vários dispositivos: o Live Mesh

Ainda em fase Beta e sem acesso geral ao público (apenas por convite!), as características apresentadas parecem ser bastante boas:

  • Sincronização de informação entre todos dispositivos, desde computadores pessoais, e brevemente, mac’s e telemóveis
  • Disponibilidade de acesso em qualquer parte, a qualquer altura, pela página web do Live Mesh
  • Facilidades de partilha com amigos, família, colegas, etc., incluindo capacidades de discussão em grupo
  • Registo de todas as alterações no Mesh, incluindo quem actualizou o quê e quando
  • Acesso seguro garantido por ligação SSL (HTTPS) e autenticação via Windows Live ID

Vejam o vídeo disponível aqui para mais informações (É necessário o Microsoft Silverlight para poder ver o vídeo)!

Technorati Tags , ,

Uma boa surpresa!

Recebi à pouco a notícia de que o Nuno Luz, o fundador do PocketPT.net e meu amigo pessoal, foi merecidamente reconhecido pela Microsoft com o título Microsoft Most Valued Professional (MVP).

Para ele ficam os meus parabéns e votos de continuação do excelente trabalho com que nos tem habituado ao longo de todos estes anos na área da Mobilidade e do Windows Mobile! :)

Technorati Tags , ,

Bugs no blog…

Pois é, como já podem ter notado há algumas coisas no blog que ultimamente simplesmente não estão a funcionar, tal como a pesquisa ou a navegação por mês…

Acontece que tive a “brilhante” (muitas aspas nisso) ideia de instalar o novo Wordpress 2.5, bem como a última versão do K2 (mais uma nightly-build) e pelos vistos tem alguns bugs (politicamente conhecidos por “características aleatórias não documentadas”) ainda por corrigir… mas nada que não tenha a esperança de ser resolvido nos próximos dias! ;)

Edit: O problema era no Nightly Build do K2, pelo que retornei à versão anterior e para já, está tudo a funcionar a 100%! :D

Technorati Tags , , ,

Extensões em .NET

Nos últimos tempos tenho vindo a dar bastante uso ao Microsoft Visual Studio 2008 bem como à framework .NET 3.5! Assim, nos próximos posts pretendo falar de algumas das novidades que apareceram e como elas podem facilitar a vida dos programadores!

Começo hoje esta rúbrica falando de Extension Methods, ou “métodos de extensão”.

Estes métodos de extensão permitem aos programadores adicionar métodos aos tipos e classes da framework, sem ter que fazer uma nova classe por herança (sub-classing ou inheritance), ou mesmo recompilar a classe original. Estes métodos ficam como que “colados” ao tipo de dados referenciado, ficando disponível para toda e qualquer instância do objecto.

suponhamos que no meu código eu tinha um método que me permite verificar se uma dada cadeia de caracteres contém apenas dígitos, poderia ser algo do género:

Static Method

Assim, bastava fazer OnlyDigits(myString) para saber se a string é ou não composta apenas de números! Um método de extensão equivalente seria o seguinte:

Extension Method

A diferença é que agora, podemos fazer algo do tipo myString.OnlyDigits() para obter exactamente o mesmo resultado! Na verdade, até algo tipo “a minha string”.OnlyDigits() funcionará na perfeição.

Estendemos assim o tipo de dados string com o nosso método OnlyDigits, que fica disponível em toda e qualquer instância deste tipo de dados!

Os métodos de extensão funcionam desde a framework 3.0, mas penso que apenas o Visual Studio 2008 os suporta.

Para mais informações podem consultar o MSDN.

Technorati Tags , ,