Carlos Mattos

Carlos vive com sua familia em Sorocaba/SP e dedica-se ao desenvolvimento de soluções para plataforma .NET.
PDF da Palestra WPF para Desenvolvedores WindowsForms (TechEdBrasil 2009)

Pessoal, conforme prometido, aqui está o link para baixar o PDF da minha palestra WPF para Desenvolvedores WindowsForms apresentada durante o TechEdBrasil 2009. http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/cmattos/8422.DEV202_5F00_CarlosMattos.pdf. Estou concluindo um artigo aborando todas as demos  apresentadas nesta palestra. Este artigo será disponibilizado aqui no meu Blog, no portal Linha de Código e no MSDN Brasil Online. Por favor, comentem, participem, enviem suas dúvidas por e-mail.

Posted: Thu, Aug 27 2009 11:54 by Carlos Mattos | with no comments
Filed under: , ,
Xbox 360, ingressos para o Tech-Ed, oportunidades de estágios e uma viagem para Seattle. Só depende de você!

Teste seus conhecimentos sobre o Windows 7 participando do desafio WIN THE 7. Os vencedores concorrem a Xbox 360 e a entradas para o Tech-Ed Brasil 2009. Além disto os estudantes ganharão estágios em empresas de tecnologia e o vencedor da categoria profissionais irá até a sede da Microsoft em Seattle conhecer os engenheiros que trabalharam no desenvolvimento do Windows 7. Não perca esta oportunidade! Visite agora mesmo o site www.WinThe7.com.br e faça sua inscrição!

Evento sobre Programa de Certificação Microsoft em Sorocaba

No próximo dia 03/07/2009 será realizado no auditório principal do FIT (Flextronics Institute of Technology) o evento sobre o Programa de Certificação Microsoft. Os seguintes pontos serão abordados durante este evento: O Programa de Certificação, as 10 Certificações Mais Procuradas, O Valor da Certificação no Mercado, A Nova Geração de Certificações, A Importância dos Simulados e Como escolher sua Primeira Certificação.

Além do conteúdo sobre o Programa de Certificação, também abordarei o Programa Microsoft Most Valuable Professional (MVP) para esclarecer dúvidas de muitos colaboradores que me procuram para saber como tornar-se um MVP. Não perca esta oportunidade! O evento é totalmente gratuito, para inscrver-se basta enviar um e-mail para Raphaelli.Foz@br.flextronics.com.

Microsoft anuncia o novo Bing!

Bing é o novo buscador da Microsoft. E, com um site demonstrativo na rede, já tem data de lançamento prevista para funcionar: quarta-feira, 3 de junho.

A confirmação do nome foi dada por Steve Ballmer, no dia 28/05/2009, em conferência do "All Things Digital", promovido pelo Wall Street Journal. O CEO, na apresentação, até brincou que a alcunha não deveria ser Kumo, como antes era previsto, nem Bing, e sim, "Boom!", em alusão ao grande barulho que o lançamento causará.

O DiscoveryBing, que aparece relacionado a URL do site original (www.bing.com), tem a função de preparar os usuários para a ferramenta que está por vir. Não que ela seja de uso complexo, ou bem diferente dos outros sites de pesquisa, mas há uma série de vídeos explicativos e depoimentos da equipe que participou da criação desta nova ferramenta.

Visite http://www.DiscoverBing.com/ para obter maiores informações!

Visual Studio 2010 Disponível para Download!!

Visual Studio 2010

A nova geração das ferramentas de desenvolvimento da Microsoft, formada pelo Visual Studio 2010 e pelo .NET Framework 4.0, já está disponível para download público.  Todos os desenvolvedores podem baixar o Visual Studio 2010 (Beta 1) através do endereço http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx. Não deixe de fazer o download dos novos exemplos elaborados para esta versão do Visual Studio, visite o endereço http://msdn.microsoft.com/en-us/dd238515.aspx.  

Descubra o MSN NEXT

O MSN Next é um projeto-piloto para testar uma nova experiência de navegação para o usuário. Nesta nova versão do portal você poderá acompanhar as notícias do Brasil e do mundo através de artigos, fotos e vídeos, saber o que acontece no mundo dos famosos, com flagras, festas, moda, entrevistas e muito mais. Além de viajar pelo Brasil e mundo conferir dicas, fotos e vídeos, pesquisar preços, reservar hotel e passagens. Clique nos artigos, fotos e vídeos relacionados. Quanto mais você navegar pelas páginas do MSN Next, mais elas se ajustarão às suas preferências. Além do mais, ao arrastar e soltar o conteúdo você poderá compartilhá-lo na hora com seus amigos do Windows Live Messenger. Visite agora mesmo: Next MSN.

Microsoft vai mostrar novo sistema de buscas

 Microsoft Kumo

A Microsoft deve apresentar na próxima semana a nova versão de seu sistema de buscas, em mais uma tentativa de concorrer com o Google e o Yahoo!, que lideram o mercado. De acordo com o jornal "Wall Street Journal", o sistema está em testes internos há alguns meses. Veja a matéria completa no site da Folha.

Palestra de WPF/Silverlight na 1ª SECOT UFSCar Sorocaba

A UFSCar Sorocaba realizará na próxima segunda-feira, dia 11/05/2009, a 1ª Semana de Computação e Tecnologia (SECOT). Participarei do evento apresentando uma palestra sobre WPF/Silverlight. Confira abaixo a agenda completa:

·         09h00 - 09h30: Abertura da 1ª SECOT

·         09h30 - 12h00: Bate Papo: Programas de Formação Microsoft (Palestrante: Ricardo Slavov) Workshop: Infra-Estrutura de TI e Tendências da Virtualização Parte 1 (Palestrante: Ricardo Slavov) (Faremos a pausa para o café) Demonstração Infra-Estrutura de TI e Tendências da Virtualização Parte 2 (Palestrante: Paulo Dutra)

·         12h00 - 15h00: Programas de Formação Microsoft: Seja Um Profissional 5 Estrelas ou Um Desenvolvedor Cinco Estrelas (Instrutor: Laerte)

·         15h00 - 19h00: Mini curso: Conhecendo o Visual Web Developer 2008 (Instrutor: Alexsandro Deliberali)

·         19h30 - 21h00: Palestra: Desenvolvendo Aplicações Ricas com WPF e Silverlight  (Palestrante: Carlos Mattos)

 

Broadcast sobre Agile Development com Steve McConnell (Imperdível!)

Right Sizing Agile Development
Broadcast date: Thursday, April 16, 2009
Time: 12 pm PT / 3 pm ET (16h00min no Brasil)
Duration: One hour


Overview
Agile development has now been in use for almost a decade. Why use Agile methods? What are the strengths of Agile? What are some common failure modes? What other lessons has the software industry learned about Agile development?

 

In this talk, Steve McConnell-author of Code Complete, Rapid Development, and other software industry classics and CEO of Construx Software-draws on Construx's extensive consulting work to dissect Agile development. McConnell names the Agile practices that have worked well for Construx's clients, describes the failure modes of Agile practices that have failed to live up to the hype, and explains how to right size Agile development for your organization.

 

Who Should Attend
Managers, project managers, technical leads, QA leads, software engineers, software developers, and anyone else who wants to learn about Agile software development.

 

Register Now!

Steve McConnell (Construx Software)

Steve McConnell is CEO and Chief Software Engineer at Construx Software where he writes books and articles, teaches classes, and oversees Construx's software development practices. Steve is the author of: Software Estimation: Demystifying the Black Art (2006), Code Complete (1993, 2004), Rapid Development (1996), Software Project Survival Guide (1998), and Professional Software Development (2004). His first two books won Software Development magazine's Jolt Excellence award for best programming books of their years.

Steve has worked in the desktop software industry since 1984 and has expertise in rapid development methodologies, project estimation, software construction practices, and third-party contract management. In 1998, readers of Software Development magazine named Steve one of the three most influential people in the software industry along with Bill Gates and Linus Torvalds. Steve was Editor in Chief of IEEE Software magazine from 1998-2002.

 Steve is on the Panel of Experts that advises the Software Engineering Body of Knowledge (SWEBOK) project and was Chair of the IEEE Computer Society's Professional Practices Committee. Steve earned a Bachelor's degree from Whitman College and a Master's degree in software engineering from Seattle University.

 

Register Now!

Edward Bear e o Desenvolvimento de Softwares (Steve McConnell)

Edward Bear

”Here is Edward Bear, coming downstairs now, bump, bump, bump on the back of his head, behind Christopher Robin. It is, as far as he knows, the only way of coming downstairs, but sometimes he feels that there really is another way, if only he could stop bumping for a moment and think of it. And then he feels that perhaps there isn’t. “

Por mais de uma geração, projetos de desenvolvimento de software têm falhado sem uma boa razão. Esses projetos não alcançaram o estado da arte no desenvolvimento de software. Eles não ultrapassaram os limites de pesquisas em áreas específicas. Eles falharam simplesmente porque não podiam suportar o próprio peso.

 

Assim como o urso Edward, desenvolvedores de software, gerentes de projeto e seus clientes, batem a cabeça na escada sempre da mesma forma, projeto após projeto. O percurso que eles seguem é sempre familiar, porém ineficiente, fadado ao erro, e também doloroso.

A sobrevivência de um projeto não acontece acidentalmente. O trabalho exigido para o sucesso de um projeto não é especialmente difícil, e também não é apenas um fator que consome tempo, mas precisa ser executado de forma disciplinar desde o primeiro até o último dia do projeto.

A prática do desenvolvimento de software avançou até um ponto onde poucos projetos de médio porte estão destinados ao fracasso.

 

Quando os desenvolvedores, gerentes e clientes pararem de bater suas cabeças contra os mesmos e velhos problemas e começarem a preocupar-se em adquirir as habilidades necessárias, seus projetos terão sucesso.

Steve McConnell

Software Project Survival Guide

Microsoft Press

 

Comunicação e Colaboração

Verdadeiros programadores aprendem como trabalhar em equipe. Escrever código de forma legível é parte de ser um programador que trabalha em equipe.

O computador provavelmente lê seu programa tão frequentemente quanto outros membros da sua equipe o fazem, mas ele é muito melhor na tarefa de ler um código pobre do que as pessoas que trabalham com você.

Quando estiver codificando, como sugestão, tenha sempre em mente que outros colegas da equipe provavelmente terão que ler seu código.
Programar é, em primeiro lugar, comunicar-se com outro programador, em segundo lugar comunicar-se com o computador.

Existem vários níveis atribuídos aos programadores:

Nível 1: Principiante
Um programador Beginner é capaz de utilizar os recursos básicos de uma linguagem. Neste nível, o programador pode escrever rotinas, loops, estruturas condicionais entre outros recursos da linguagem.

Nível 2: Intermediário
Um programador de nível intermediário é capaz de utilizar os recursos básicos de várias linguagens e tem domínio para trabalhar confortavelmente com pelo menos uma linguagem.

Nível 3: Especialista
Um programador especialista domina todos os recursos de uma linguagem ou de um ambiente de desenvolvimento, ou os dois. Programadores neste nível são valiosos para suas empresas, e alguns programadores nunca vão além deste nível.

Nível 4: Guru
Um Guru, possui as características de um especialista (Nível 3) e reconhece que apenas 15% da tarefa de programar refere-se à comunicar-se com o computador e 85% refere-se a comunicar-se com pessoas. Estudos mostram que, em média, apenas 30% dos programadores desenvolvem trabalhos sozinhos. Um Guru escreve código para pessoas ao invés de escrevê-lo para máquinas. Os verdadeiros Gurus escrevem código verdadeiramente cristalinos e adequadamente documentado também. Gurus não tem interesse em desperdiçar suas células cinzas reconstruindo a lógica de uma seção de código que não foi devidamente escrito/documentado de forma correta.

Um grande programador que não se preocupa com a legibilidade do seu código, por maior que seja seu conhecimento, provavelmente nunca passará do Nível 3. Apesar que esta afirmação dificilmente é apresentada num cenário real. A principal causa de programadores escreverem código de má qualidade é que o código deles é ruim mesmo. Eles não costumam dizer “Vou escrever meu código de uma maneira difícil de entender”. Eles simplesmente não possuem conhecimento suficiente para escrever um código realmente legível, o que os coloca no Nível 1 ou Nível 2.

Exemplos de piores códigos que já tive oportunidade de examinar, incluiam variáveis com nomes como: X, XX, XXX XX1, XX2, T, Y, entre outros. Nomes de objetos como: TextBox38, DropDown22, e por aí afora.

Conclusão
Não é pecado ser um programador iniciante ou intermediário. Não é pecado ser um programador especialista ao invés de um guru. O pecado está em quanto tempo você se manterá entre os níveis de iniciante e especialista depois de saber o que tem que ser feito para melhorar seu código.

Code Complete, 2nd Edition
Steve McConnell
Microsoft Press

Criptografando dados com C# e MD5

O exemplo abaixo demonstra como criptografar dados utilizando C# e o algorítmo MD5. O Namespace System.Security.Cryptography oferece os recursos necessários para esta implementação.

 

using System.Security.Cryptography;

...

public static string GetMD5Hash(string input)

{

MD5 md5Hasher = MD5.Create();

byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));

StringBuilder sBuilder = new StringBuilder();

 

for (int i = 0; i < data.Length; i++)

{

   sBuilder.Append(data.ToString("x2"));

}

return sBuilder.ToString();

}

 

Posted: Thu, Apr 2 2009 14:13 by Carlos Mattos | with no comments
Filed under:
Abrindo Formulários Dinamicamente C# (Windows Forms)

Introdução

Uma tarefa comum no desenvolvimento de soluções Windows Forms é a necessidade de instanciar formulários com base no nome da classe, ou seja, como o desenvolvedor pode abrir um formulário dinamicamente (programaticamente) passando o nome deste formulário (classe) como string. Isto é muito comum quando há necessidade de criarmos menus populados dinamicamente a partir de uma base de dados.

 

Problema

Apesar de representar uma necessidade comum em aplicações Windows Forms, ainda há muitas dúvidas entre os desenvolvedores de como implementar corretamente um procedimento para instanciar um formulário dinamicamente. Faltam exemplos sobre esse tipo prática e os que estão disponíveis na Web não são facilmente encontrados e na maioria das vezes são apresentados em outro idioma.

 

Solução

Uma construção simples com o método CreateInstance do objeto Activator permite implementar esta funcionalidade. Veja o código abaixo:

 

public static void OpenForm(string Namespace_FormName, bool System_Modal)

{

Type t = Type.GetType(Namespace_FormName);

if (t != null)

{

   System.Windows.Forms.Form f =

   (System.Windows.Forms.Form)Activator.CreateInstance(t);

   if (System_Modal)

      f.ShowDialog();

   else

   f.Show();

}

}

Instanciando um formulário implementado em outro assembly

Com uma construção semelhante, é possível iniciar um formulário implementado eu outro assembly. Basta modificar o código acima para incluir informações sobre o assembly externo. O exemplo abaixo mostra como iniciar um formulário (MDIChild) contido em outro assembly e centralizá-lo no MDI:

 

privatevoid OpenChildFormFromExternalAssembly(

string Full_Namespace_Class,

string Root_Namespace,

string Assembly_Version,

string Assembly_Culture,

string Assembly_PublicKeyToken,

bool System_Modal)

{

Type t = Type.GetType(Full_Namespace_Class + "," + Root_Namespace

+ ", Version=" + Assembly_Version

+ ", Culture=" + Assembly_Culture

+ ", PublicKeyToken=" + Assembly_PublicKeyToken);

if (t != null)

{

   System.Windows.Forms.Form f =

   (System.Windows.Forms.Form)Activator.CreateInstance(t);

   f.MdiParent = this;

   int TopMargin = 0;

         int LeftMargin = 0;

   LeftMargin = ((this.Width - f.Width) / 2) + this.Left;

         TopMargin = ((this.Height - f.Height) / 2) + this.Top - 50;

   f.StartPosition = FormStartPosition.Manual;

         f.Top = TopMargin;

   f.Left = LeftMargin;

   if (System_Modal)

      f.ShowDialog();

   else

      f.Show();

}

}

 

As linhas abaixo demonstram como invocar o procedimento acima passando os parâmetros necessários:

 

OpenChildFormFromExternalAssembly(

"EIS.Presentation.frmTipoEis", // Namespace completo

"EIS", // Root Namespace

"1.0.0.0", // Assembly Version (AssemblyInfo.cs)

"neutral", // Cultura (Default=neutral)

"null", // PublicKeyToken (Default=null)

false

);

 

Microsoft Brasil 20 Anos!

Microsoft Brasil 20 AnosVocê sabia que este ano a Microsoft faz 20 Anos no Brasil?

E você faz parte da festa!

Para iniciar as comemorações, a Microsoft está promovendo um Concurso Cultural que selecionará o novo Selo Comemorativo de 20 Anos da Microsoft Brasil. Participe!

Entre aqui e confira os prêmios!

Posted: Thu, Mar 19 2009 8:05 by Carlos Mattos | with no comments
Filed under:
Microsoft Health Common User Interface (CUI)

Microsoft Health CUI Demonstrator

O Microsoft Health CUI Patient Journey Demonstrator é um veículo usado pela Microsoft para demonstrar o poder do Silverlight e WPF para criar interfaces ricas e proporcionar uma excelente experiência visual para o usuário, especialmente na área da saúde.

 

O Microsoft Health CUI Patient Journey Demonstrator oferece diversos exemplos de implementação de Rich Interface Applications utilizando a plataforma Microsoft.

 

É o showcase da Microsoft para novas idéias, experiências e artefatos com o propósito de aprender e refletir sobre o futuro do desenvolvimento do Microsoft Health CUI.

 

Este exemplo pode ser muito útil como referência para desenvolvimento de aplicações ricas. Vale a pena visitar. Acesse o link http://www.mscui.net/PatientJourneyDemonstrator/.

Windows Azure será lançado no fim do ano, afirma Steve Ballmer

A Microsoft planeja lançar o Windows Azure, versão do sistema operacional para cloud computing, antes do final do ano, anunciou o Chief Executive Officer (CEO) da empresa, Steve Ballmer, na terça-feira (24/02).

 

Em comentários feitos para analistas de Wall Street sobre o status financeiro da Microsoft, Ballmer disse que a empresa terá "a habilidade de chegar ao mercado" com o Azure no final deste ano durante a Professional Developers Conference (PDC), em novembro.

 

O Azure vai concorrer com o Elastic Compute Cloud (EC2), da Amazon, como um ambiente de hospedagem ‘escalável’ no qual os desenvolvedores podem criar e hospedar suas aplicações.

 

Os desenvolvedores podem usar as ferramentas já conhecidas da linguagem .NET para criar aplicações no Windows Azure, que usa a tecnologia de virtualização da Microsoft para separar as aplicações rodando em diferentes sistemas operacionais.

 

O Azure foi apresentado pela Microsoft em outubro do ano passado, durante a PDC 2008, mas a companhia ainda não havia anunciado uma data para lançar o serviço.

 

Na semana passada, Doug Hauger, gerente geral de marketing e estratégias de negócios da Microsoft para serviços de cloud computing, disse a um grupo de investidores que a empresa divulgaria em breve os valores cobrados pelo Azure.

 

Hauger disse que os clientes também poderão escolher o modelo "pay-as-you-go", no Azure - que, segundo ele, será mais barato do que a média cobrada pelo mercado -, mas terão descontos se optarem pelo modelo pré-pago.

 

 

Elizabeth Montalbano, editora do IDG News Service, de Nova York

 

 

Na semana passada, Doug Hauger, gerente geral de marketing e estratégias de negócios da Microsoft para serviços de cloud computing, disse a um grupo de investidores que a empresa divulgaria em breve os valores cobrados pelo Azure.

 

Hauger disse que os clientes também poderão escolher o modelo "pay-as-you-go", no Azure - que, segundo ele, será mais barato do que a média cobrada pelo mercado -, mas terão descontos se optarem pelo modelo pré-pago.

 

 

Elizabeth Montalbano, editora do IDG News Service, de Nova York

Nova IDE do Visual Studio 2010 criada com WPF

Durante o PDC2008 realizado em Novembro/2008 na cidade de Los Angeles, a Microsoft apresentou novos recursos do editor e designer de formulários criados com WPF e .NET Framework 4.0. Nesta semana, foram divulgadas as primeiras imagens da nova IDE do Visual Studio 2010 também construída com WPF. A Figura 1 mostra a nova Start Page.

 

VSTS2010 Start Page

Figura 1: Nova Start Page em WPF

 

 

A Microsoft concentrou seus esforços na redução da poluição visual com a remoção de linhas e gradientes excessivos da UX e na modernização da interface com a substituição dos traços 3D considerados ultrapassados. Outro ponto importante considerado foi o melhor aproveitamento dos espaços entre as diversas janelas da IDE, e a utilização de cores para facilitar a identificação visual de áreas distintas da IDE. Veja a Figura 2.

VSTS 2010 Nova IDE WPF

Figura 2: A nova IDE do VSTS2010

 

A próxima imagem (Figura 3) mostra o novo recurso de floating documents que permite que o desenvolvedor possa explorar o uso de dois monitores para criar seus formulários e codificar sua aplicação simultaneamente.

 

VSTS2010 IDE Floating Documents

Figura 3: Novo Recurso Floating Documents

 

 

O Editor de Código também tem novos recursos que facilitam a leitura e organização do código-fonte. Triângulos vazios posicionados na margem esquerda identificam seções de código que foram colapsadas, estas seções também mostram um sinal de reticências ao final da linha. As cores apresentadas na margem esquerda representam um indicador visual das alterações realizadas no código. Veja a Figura 4.

 

VSTS2010 Editor de Código

Figura 4: O Editor de Código

 

 

A nova janela New Project também foi atualizada para incluir o acesso e visualização de Templates Online e facilitar a navegação entre os Templates instalados no computador local. O recurso de Multi-targeting continua disponível nesta janela, incluindo o .NET Framework 4.0 (Figura 5).

 

VSTS2010 Janela New Project

Figura 5: Janela New Project

 

O Visual Studio possui um grande eco-sistema de extensões fornecidas por parceiros. No Visual Studio 2010 o desenvolvedor terá o acesso facilitado para localizar e instalar essas extensões com o novo Extension Manager (Figura 6).

 

VSTS2010 New Extension Manager

Figura 6: O Novo Extension Manager

 

Ainda não há definição quanto à data de lançamento ou mesmo do primeiro Beta público, mas já conseguimos ter uma idéia do que vem por aí na nova versão da melhor suíte de desenvolvimento disponível no mercado.

Microsoft revela nova versão do Visual Studio e da ferramenta .Net Framework

Companhia anuncia novidades para simplificar o gerenciamento do ciclo de desenvolvimento de software, revela detalhes das novas versões do Visual Studio 2010 e do .Net Framework 4.0

A Microsoft apresenta algumas das novidades que farão parte da próxima geração do Visual Studio 2010 e .Net Framework 4.0. Dessa forma, a companhia segue com o compromisso de oferecer a melhor experiência para os desenvolvedores acompanharem as tendências de mercado, como “computação na nuvem” (cloud computing), e disponibilizar uma solução segura e confiável para o desenvolvimento de aplicativos para as plataformas mais atuais.

Além do foco no desenvolvedor, a Microsoft consolida seu comprometimento em entregar para as empresas uma plataforma completa para todo o ciclo de vida de desenvolvimento de aplicativos por meio do ALM (Application Lifecycle Management). O Visual Studio 2010, cujo codinome é Rosario, oferecerá uma solução única que atende todas as pessoas envolvidas no processo de desenvolvimento de uma aplicação, retirando muitas das barreiras que evitam a integração entre equipes e diferentes tecnologias. “O objetivo é entregar para nossos clientes uma solução capaz de apoiar todos os envolvidos no processo de desenvolvimento de uma aplicação desde a análise de requisitos e arquitetura até a homologação, instalação e manutenção. Isso considerando que essa plataforma é interoperável com outras tecnologias usadas para desenvolvimento de software do mercado.”, destacou Carlos Zimmermann, gerente de produtos para desenvolvimento da Microsoft Brasil.

Democratizando o Gerenciamento de Ciclo de Vida de Aplicativos

Atualmente, grande parte do desenvolvimento de aplicativos está disperso ou dependente de diversas áreas nas empresas. Isso gera diversos desafios que podem impactar em perda de produtividade, controle e previsibilidade nos ciclos de desenvolvimento de um software. Com o Visual Studio 2010, a Microsoft dará um passo à frente na oferta de uma solução avançada que apoiará a equipe envolvida no processo de desenvolvimento para colaborar de forma efetiva e com alta qualidade.

Essa oferta inclui novos recursos que possibilitam que todos os colaboradores da equipe de software participem do ciclo de vida do produto. Arquitetos, analistas de sistemas, desenvolvedores, testadores e administradores de database (DBAs) entre outros, terão ferramentas específicas para trabalharem de forma integrada e produtiva. Entre os destaques da nova versão estão:

- Ferramentas de modelagem - O Visual Studio Team System Architecture Edition fornecerá um novo conjunto de ferramentas UML (Unified Modeling Language) na nova versão. Estas ferramentas, que permitem aos desenvolvedores visualizarem os produtos de seu trabalho em diagramas padronizados, ajudarão a preencher a lacuna entre modelos de alto nível e o código da aplicação, enfatizando os benefícios do uso de UML e soluções DSL (Digital Subscriber Line), voltadas à transmissão digital de dados. Adicionalmente, a edição “architecture” fornecerá ricas ferramentas que permitirão aos clientes entender melhor seus sistemas atuais, fornecendo capacidade de visualizar e integrar a infra-estrutura atual facilmente com novos sistemas na camada de modelagem.

- Maior eficiência por todo o ciclo de testes - A Microsoft investiu significativamente nos recursos de testes do Visual Studio 2010 e simplificou as ferramentas necessárias para a integração de testes por todo seu ciclo de vida de desenvolvimento. Ferramentas de testes generalistas poderosas e fáceis de usar que suportam planejamento de testes e gerenciamento de casos de teste, assim como ferramentas avançadas para testes manuais farão parte do Visual Studio Team System 2010.

- Melhorias significativas nos recursos de colaboração - A Microsoft também investiu nos recursos e na escalabilidade do Team Foundation Server (TFS), incluindo aprimoramentos que permitem às equipes configurarem e adotarem qualquer forma de processo de desenvolvimento. As equipes poderão rastrear o trabalho com mais facilidade. No sistema de gerenciamento de código fonte, o TFS oferece ferramentas de visualização para o rastreamento de alterações em desvios e no conjunto de produção. O Visual Studio 2010 também passará a incluir conjuntos baseados no fluxo de trabalho que detectam erros antes desses afetarem o restante da equipe ou, pior ainda, ingressar na produção. Por fim, os administradores contarão com uma implantação e gerenciamento de TFS significativamente mais simples.

Para maiores informações, acesse: http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx.

C# 3.0 - Auto Implemented Properties

Introdução

Frequentemente os métodos de acesso às propriedades de uma classe (get/set) têm uma implementação trivial, seguindo um modelo simples, onde o acessor get é responsável por retornar o valor armazenado num campo privado da classe e o acessor set tem o propósito de atribuir um novo valor ao campo.

 

O novo recurso Auto Implemented Properties, disponível no C# 3.0, oferece uma sintaxe mais concisa para implementar esse modelo, onde o compilador C# gera automaticamente os campos privados. O exemplo a seguir o ajudará a entender esse novo recurso e seu impacto no dia-a-dia do programador.

 

Utilizando a versão beta do Visual Studio 2008 (se você ainda não baixou, acesse o link http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx) crie um novo projeto utilizando o template Console Application, atribua o nome desejado para a Solução, eu utilizarei o nome CSNewFeatures.

 

Na janela Solution Explorer, abra o arquivo Program.cs, e adicione uma nova classe chamada Movie, como demonstra o código abaixo:

 

namespace CSNewFeatures

{

    public class Movie

    {

    }

   

    class Program

    {

        static void Main(string[] args)

        {

        }

    }

}

 

Na nova classe Movie, adicione duas propriedades (Título e Gênero). E modifique o método ToString() da seguinte forma:

 

public class Movie

{

    public string Titulo { get; set; }

    public string Genero { get; set; }

 

    public override string ToString()

    {

        return Titulo + "\t" + Genero;

    }

}

 

Modifique o método Main da classe Program para criarmos uma nova instância da classe Movie, veja o código:

 

static void Main(string[] args)

{

  Movie m = new Movie();

  m.Titulo = "Em busca da felicidade";

  m.Genero = "Drama";

  

  Console.WriteLine(m);

  Console.ReadLine();

}

 

Execute a aplicação (CTRL+F5) para visualizar o resultado. Pressione qualquer tecla para finalizar a aplicação console e retornar para o ambiente de desenvolvimento do Visual Studio 2008.

 

Este modelo de construção requer que a propriedade tenha os dois métodos de acesso (get/set). Contudo, podemos atribuir modificadores de acesso para uma construção mais elaborada. Por exemplo, considere que você queira acrescentar uma propriedade (Codigo) que seja somente leitura (ReadOnly), para isto bastaria acrescentar o modificador private junto ao acessor set. Veja o código abaixo:

 

public class Movie

{

    public int Codigo { get; private set; }

    public string Titulo { get; set; }

    public string Genero { get; set; }

 

    public override string ToString()

    {

        return Codigo + "\t" + Titulo + "\t" + Genero;

    }

}

 

Neste caso, a propriedade código seria implementada somente para leitura. Desta forma, temos que realizar duas modificações, a primeira será acrescentarmos um construtor na classe Movie. Este construtor terá um argumento do tipo inteiro que será atribuído à nova propriedade Código quando uma nova instância da classe for criada. Confira o código a seguir:

 

public class Movie

{

    public string Codigo { get; private set; }

    public string Titulo { get; set; }

    public string Genero { get; set; }

 

    public Movie(int iCodigo)

    {

        Codigo = iCodigo;

    }

 

    public override string ToString()

    {

        return Codigo + "\t" + Titulo + "\t" + Genero;

    }

}

 

A segunda modificação será feita no método Main da classe Program para instanciarmos corretamente a classe Movie:

 

static void Main(string[] args)

{

    Movie m = new Movie(1);

    m.Titulo = "Em busca da felicidade";

    m.Genero = "Drama";

  

    Console.WriteLine(m);

    Console.ReadLine();

}

 

Execute novamente a aplicação para observar o resultado.

 

Conclusão

O novo recurso Auto Implemented Properties do C# 3.0 reduz a quantidade de código necessária para implementarmos as propriedades das nossas classes e torna o código mais claro. Com esta melhoria, os desenvolvedores ganharão produtividade significante para executar uma tarefa que é tão comum em todas aplicações.

 

Posted: Tue, Feb 17 2009 8:19 by Carlos Mattos | with no comments
Filed under:
Criando Eventos Customizados no C#

Introdução

Necessidade comum no desenvolvimento de soluções Windows Forms é a criação de eventos personalizados. O desenvolvedor pode utilizar este recurso para gerenciar de forma mais eficiente o fluxo de execução do seu programa. Com eventos, podemos manter o usuário informado sobre o processamento executado pela aplicação e manter seu usuário informado é sem dúvida nenhuma uma boa prática. Os formulários e controles possuem eventos built-in que atendem as necessidades mais comuns das aplicações, contudo, a possibilidade de criarmos nossos próprios eventos nos permite melhorar a qualidade do software produzido.

 

Estrutura do Exemplo

O exemplo apresentado neste artigo foi elaborado sobre a seguinte estrutura:

  • Classe Base (frmBase.cs)
  • Formulário de Produtos (frmProdutos.cs)
  • Formulário MDI (mdiCadastro.cs)

A Classe Base implementa uma estrutura básica para operações CRUD. O aplicativo que consome esta classe utiliza o modelo tradicional de Multiple Document Interface (MDI). Assim, o formulário MDI implementado pela classe mdiCadastro.cs oferece as funcionalidades necessárias para manipular os métodos e eventos dos formulários filhos. No exemplo, temos um formulário de Produtos cujo método Salvar é invocado através da barra de ferramentas do formulário MDI. Implementamos um Evento Customizado (AoSalvar) para exibir uma mensagem logo após o botão Salvar da barra de ferramentas ser clicado pelo usuário.

 

 

Declarando Eventos e Atributos

A declaração de eventos é relativamente simples. Precisamos de um delegate (AoSalvarEventHandler), a própria declaração do evento (AoSalvar) e um método de apoio (RaiseAoSalvar) para disparar o evento quando desejado. O Quadro 1 apresenta o código necessário para esta implementação. Observe que a Linha 03 implementa os atributos Categoria e Descrição do evento customizado. Estas informações são apresentadas na Janela de Propriedades quando exibimos os eventos do formulário (Figura 1).

 

01: public delegate void AoSalvarEventHandler(object sender, EventArgs e);

02:

03: [Category("Bartender - CustomEvents"), Description("Ocorre sempre ...")]

04: public event AoSalvarEventHandler AoSalvar;

05:

06: public virtual void RaiseAoSalvar()

07: {

08:    AoSalvar(this, new EventArgs());

09: }

Quadro 1: Declarando Eventos e Atributos Customizados

  

Eventos Customizados

Figura 1 : Atribudos dos Eventos Customizados

 

Consumindo Eventos

O aplicativo utilizado no exemplo, consome o evento AoSalvar sempre que o usuário clica no botão Salvar da barra de ferramentas. O código deste botão é apresentado no Quadro 2, a linha em negrito destaca o método RaiseAposSalvar que dispara o evento imediatamente após o método SalvarRegistro ser executado. Neste fragmento de código, o objeto frmActiveChild corresponde ao formulário de Produtos instanciado pelo MDI.

 

......

case "Salvar":

   if (this.ActiveMdiChild != null)

   {

      try

      {

         if (frmActiveChild.ValidarFormulario())

         {

            frmActiveChild.Validate();

            frmActiveChild.RaiseAoSalvar();

            frmActiveChild.SalvarRegistro();

            frmActiveChild.RaiseAposSalvar();

            frmActiveChild.Status = frmBase.FormStatus.Ocioso;

            AtualizarBarraFerramentas();

            frmActiveChild.DesativarControles();

            frmActiveChild.Refresh();

         }

}

.....

Quadro 2: Fragmento de código disparando o evento AoSalvar

 

 

Já no formulário de Produtos. O tratamento do evento disparado é simples e funciona da mesma forma como qualquer outro evento built-in. Você pode gerar o código para o EventHandler simplesmente clicando sobre a linha deste evento na Janela de Propriedades. Veja o Quadro 3 com o evento tratado.

 

private void frmProdutos_AoSalvar(object sender, EventArgs e)

{

MessageBox.Show("Disparado o evento AoSalvar!");

}

Quadro 3: Consumindo o Evento AoSalvar

 

Conclusão

Com este exemplo, você pode criar seus eventos personalizados e oferecer um feedback mais elegante e eficiente para os usuários das suas aplicações Windows Forms. Existe ainda a possibilidade de implementar eventos mais complexos incluindo informações peculiares ao evento customizado, consulte o MSDN para maiores informações.

 

Posted: Mon, Feb 16 2009 13:20 by Carlos Mattos | with no comments |
Filed under:
More Posts Next page »