Archive for September, 2007

Novidades no C# 3.0: Inicializadores de Objetos (Object Initializers)

Publicado por Marcos Dell Antonio em 26/09/2007 | .NET

Mais um recurso que está disponível no C# 3.0 é o Inicializador de Objetos. Ele serve para situações onde é preciso criar um objeto e logo em seguida definir os valores das suas propriedades.

No C# 2.0 isto é feito da seguinte forma:

Inicialização de um objeto através das propriedades

O trecho de código acima instancia um objeto do tipo Computador e carrega as suas propriedades com alguns valores. Além desta forma de inicializar um objeto, existe outra onde a classe possui um construtor que recebe por parâmetro os valores das propriedades e então faz as atribuições, veja: 

Inicialização de um objeto através do construtor

Essas duas soluções funcionam perfeitamente (ainda bem), mas necessitam de muitas linhas de código. Além disso, se fosse necessário definir o valor de outra propriedade durante a criação do objeto, a segunda forma (utilizando construtores) precisaria de uma alteração no modelo (classe Computador). Um modo muito mais prático de fazer isto é utilizando o recurso de inicialização de objeto, desta forma:

Inicialização de um objeto utilizando Object Initializers

Esta forma é totalmente independente dos construtores da classe. Em outras palavras, se for preciso instanciar um objeto do tipo Computador com somente a propriedade Marca preenchida, basta fazer o seguinte:

Inicialização de somente uma propriedade do objeto utilizando Object Initializers

Análise do código gerado com o IL DASM 

Os testes foram realizados com as três formas de inicialização e seguindo o mesmo estilo do último exemplo: um objeto foi criado e atribuido o valor “HP” à propriedade Marca.  

Foi detectada uma grande semelhança no código gerado para os três testes. Na primeira situação, onde o objeto é criado e as propriedades são definidas logo em seguida, o código gerado é este:

IL DASM - código gerado para a inicialização de um objeto através das propriedades

Neste caso é criada uma instância da classe Computador, alocada a string “HP” na memória e chamado o método set_Marca para atribuir o valor à propriedade.

Quando a inicialização é feita utilizando o construtor, o número de linhas de código reduz visivelmente (veja na próxima figura). No entanto, qualquer propriedade que for preciso adicionar à inicialização exigirá uma alteração ou sobrecarga dele.

IL DASM - código gerado para a inicialização de um objeto através do construtor

Por fim, o código fonte gerado utilizando Object Initializers é muito parecido (pra não dizer igual) ao do primeiro teste. Ou seja, primeiro cria uma instância do objeto, aloca a string “HP” e depois chama o método set_Marca que define o valor da propriedade. Veja:

IL DASM - código gerado para a inicialização de um objeto utilizando Object Initializers

Concluindo o assunto, é extremante importante que fique claro qual é a finalidade do recurso Object Initializers. Ele não foi criado para substituir os construtores das classes. Apesar de fazer muito bem este papel em determinadas situações, sua principal utilidade é evitar a inicialização manual de propriedades após a criação do objeto e, consequentemente, reduzir o número de linhas de código.

7 comentários - clique aqui para fazer o seu

Novidades no C# 3.0: Propriedades Automáticas (Automatic Properties)

Publicado por Marcos Dell Antonio em 25/09/2007 | .NET

Quem trabalha com o .NET 1.1 ou 2.0 e consequentemente com o C# 2.0, sabe o quanto é chato ter que declarar para todas as propriedades um “método” get, outro set e além disso um field para armazenar a respectiva informação, tal como demonstra a figura abaixo:

Classe Pessoa

Tendo em vista esta dificuldade, a Microsoft adicionou à versão 3.0 da linguagem C# um recurso chamado Automatic Properties. Ele permite ao desenvolvedor omitir a declaração do field e as operações realizadas dentro do get e/ou set. A classe acima foi reescrita utilizando este recurso e está representada na figura abaixo:

Classe Pessoa

Ao analisar com o IL DASM o código gerado para as duas implementações acima, percebe-se que no primeiro caso (utilizando a declaração normal de propriedades) há uma declaração do field exatamente com o mesmo nome do código C# (_nome) e os métodos get_Nome e set_Nome, veja:

IL DASM da classe Pessoa

Com o recurso de propriedades automáticas o código gerado segue o mesmo estilo, mas com uma pequena diferença na declaração do field, pois ele foi gerado automaticamente pelo compilador. Veja:

IL DASM da classe Pessoa 

Sem dúvida alguma este será um dos recursos mais utilizados pelos desenvolvedores. Além de proporcionar mais praticidade na hora da codificação, também deixará as classes mais enxutas com relação ao número de linhas do código fonte. E aqui vale aquela máxima: quanto menos linhas de código, menor a chance existirem erros.

Seja o primeiro a comentar este post

Live x Google

Publicado por Marcos Dell Antonio em 25/09/2007 | Cotidiano

Ao procurar por gtalk no Live obtive o seguinte resultado: 

Resultado da busca por gtalk no Live

Um tanto quanto diferente do obtido no Google: 

Resultado da busca por gtalk no Google

Teoria da conspiração? Alguém sugere alguma?

1 comentário - clique aqui para fazer o seu

O poder dos delegates sobre as listas do .NET

Publicado por Marcos Dell Antonio em 23/09/2007 | .NET

A coleção List<T> do .NET Framework possui uma série de métodos que recebem como parâmetro delegates genéricos. Um destes é o Sort, que espera um parâmetro do tipo Comparison<T>. Outro é o RemoveAll, que recebe um Predicate<T>. Mais um deles é o ForEach, que trabalha com um Action<T>.

Tá, mas pra que serve isso tudo?

Partindo do princípio de que no dia-a-dia de grande parte dos desenvolvedores é comum executar ordenação, remoção ou iteração sobre listas, estes métodos servem para dar mais agilidade ao desenvolvimento.

Mas de que forma?

Tomarei como base para os exemplos a seguinte lista:

Lista de nomes

Uma operação de ordenação, por exemplo, requer uma iteração sobre a lista, comparação dos elementos e remanejamento de suas posições. Com o método Sort tudo isso é resolvido com uma linha de código:

Sort

Resultado do método Sort

E para remover todos os elementos que iniciem com a letra R? Mais uma vez seria preciso uma iteração sobre a lista e uma comparação para cada elemento. A solução com o método RemoveAll é muito mais prática:

RemoveAll

Resultado do método RemoveAll

Se isto ainda não convenceu, faço a seguinte pergunta: como você acha que estou mostrando os elementos da lista após a execução dos métodos? Usando for ou foreach? Não! Veja:

ForEach

Saiba mais sobre isto estudando delegates.

T+

1 comentário - clique aqui para fazer o seu

Particionando o HD no Windows Vista

Publicado por Marcos Dell Antonio em 23/09/2007 | Windows

Como bom curioso que sou, dias após chegar meu notebook novo resolvi fazer umas experiências com o Windows Vista. Uma delas foi manter o mesmo esquema do HD anterior: uma unidade para programas instalados (sistema operacional, Office, MSN, Visual Studio, etc) e outra para dados (fotos, instaladores, projetos, etc).

Já que só tenho um HD a solução mais viável foi particioná-lo. Com uma rápida pesquisa na internet encontrei a solução: o próprio Windows Vista possui uma funcionalidade chamada Shrink que reduz o tamanho de uma partição e, consequentemente, gera outra que pode ser formatada e utilizada normalmente.

Conheça mais sobre o Windows Vista com os Livros, DVDs e CDs da Submarino

Todo processo é muito simples e está descrito logo abaixo. As opções que acessei estão com o nome em inglês, mas é fácil achar as equivalentes em português.

- Passo 1: reduzir (shrink) o espaço da partição atual

Dentro do Control Panel na opção System and Maintenance -> Administrative Tools, dê um duplo clique sobre Computer Management. A tela da figura abaixo abrirá e então a opção Storage -> Disk Management deve ser escolhida.

Windows Vista - Computer Management

Feito isto, na coluna do meio (Volume) deve aparecer uma lista com as partições atuais do HD e também as unidades de CD e DVD. No meu caso existem quatro volumes: C, D, E e F, sendo que o C é a partição principal e o F é a de dados, portanto meu HD já está particionado.

Para reduzir uma das partições, basta clicar sobre ela com o botão direito e selecionar a opção Shrink Volume, tal como é apresentado na figura abaixo:

Windows Vista - Shrink Volume

Na janela que abriu deve ser informado o novo tamanho da partição. O Windows Vista já sugere alguns valores (veja na próxima figura) que no meu caso serviram perfeitamente, portanto não precisei alterá-los. Caso você precise ou queira saber o que são, segue abaixo uma breve descrição de cada um deles:

  • Total size before shrink in MB: tamanho atual da partição (não é possível alterar);
  • Size of avaliable shrink space in MB: tamanho disponível para redução (não é possível alterar);
  • Enter the amount of space to shrink in MB: tamanho que será reduzido, ou seja, é o tamanho da nova partição (deve ser informado);
  • Total size after shrink in MB: tamanho da partição após a redução (não é possível alterar);

Windows Vista - Shrink

Passo 2: criar a nova partição

Quando a execução do shrink terminar, aparecerá um novo item marcado como unallocated na lista de partições do HD. Este item representa um espaço físico do disco rígido que foi separado, mas ainda não está pronto para armazenar dados. Portanto, para que ele possa ser transformado definitivamente em uma nova partição, deve-se clicar com o botão direito do mouse sobre ele e escolher a opção new simple volume, veja:

Windows Vista - New Simple Volume

A partir de agora entra em cena o protocolo NNF (Next, Next and Finish). A primeira tela é um welcome tradicional informando o que será feito. Na segunda deve ser definido o tamanho do volume a ser criado. Eu aceitei o sugerido pelo Windows Vista, que normalmente é o tamanho total disponível, veja:

Windows Vista - Specify Volume Size

Na próxima tela deve ser informada a letra que representará a partição. Mais uma vez eu segui o sugerido, ou seja, a letra F, conforme demonstra a figura abaixo:

Windows Vista - Assign Drive Letter or Path

Logo em seguida os parâmetros sobre a formatação da partição devem ser fornecidos. O único que modifiquei foi o volume label. Utilizei o valor Dados. Para os demais, pode permanecer o sugerido, tal como apresentado na figura abaixo:

Windows Vista - Format

Depois disto, uma tela resumindo as opções selecionadas aparecerá. Basta clicar em Finish e aguardar a criação do volume e o particionamento do mesmo. Dentro de segundos (talvez minutos) a nova partição estará criada e pronta para ser usada.

Outras novidades e curiosidades sobre o Windows Vista você pode encontrar no livro Windows Vista: Passo-a-Passo, publicado pela editora Artmed:


Confira o preço deste livro na Submarino

115 comentários - clique aqui para fazer o seu

Image Resizer no Windows Vista

Publicado por Marcos Dell Antonio em 16/09/2007 | Cotidiano

Se você procura por uma forma de redimensionar diversas imagens de uma vez só tal como era feito no Windows XP com o Image Resizer Power Toy, deixo aqui a minha sugestão recém testada: VSO Image Resizer.

VSO Image Resizer

Através de um simples menu, acessível com o clique do botão direito do mouse sobre uma ou mais imagens, você conseguirá alterar o tamanho e a qualidade dos novos arquivos gerados.

É extremamente prático e substitui com algumas vantagens o Image Resizer Power Toy do Windows XP. Apesar disso, ainda acho que estas funções deveriam fazer parte do Windows Photo Gallery.

2 comentários - clique aqui para fazer o seu

É melhor “saber onde” do que “saber como”

Publicado por Marcos Dell Antonio em 15/09/2007 | Cotidiano

Perambulando pelas esquinas da web encontrei dois novos conceitos derivados do know-how: know-where e know-who. Segundo Rochester Oliveira, autor do blog Web Bem Feita, “saber como” fazer alguma coisa é considerado o essencial por muitos. Entretanto, “saber quem” ou “saber onde”, nos dias de hoje, traz mais retorno.

Eu concordo com ele pelos seguintes motivos:

  • O conceito de know-how pressupõe um conhecimento amplo e até mesmo total sobre um determinado assunto. Dada a quantidade de informações que temos hoje em dia, isto é inviável;
  • Os buscadores com as mais novas tecnologias de indexação e a web mais semântica estão à disposição para responder qualquer pergunta que você não “saiba como” encontrar uma solução;
  • É mais interessante, rentável e produtivo ter uma noção básica ou intermediária sobre diversos assuntos (cultura brasileira) do que ser um guru em um específico (cultura norte-americana);

Até +.

1 comentário - clique aqui para fazer o seu

Na Trilha da Humanidade

Publicado por Marcos Dell Antonio em 05/09/2007 | Livros

Desde que assisti no programa do Jô uma entrevista com o escritor e jornalista Airton Ortiz passei a ser seu fã. Primeiro encontrei diversas críticas sobre ele no Google. Mais além conheci seu site pessoal. Por fim, comprei alguns livros dele.

Ele tem um perfil de aventureiro. Já viajou por mais de 80 países e escreveu oito livros sobre diversas rotas que já fez mundo afora.

O livro Na Trilha da Humanidade narra uma empolgante viagem de 7 milhões de anos. A origem é o Chade (perto da Líbia e do Sudão), onde foi encontrado o primeiro vestígio humano do planeta, e o destino é o Brasil, terra do aventureiro Airton Ortiz.

Consulte o preço do livro Na Trilha da Humanidade na Submarino
Consulte o preço deste livro na Submarino

Na rota desta viagem estão alguns países do continente Africano, o Oriente Médio e a Ásia. Além de todo o espaço territorial percorrido, diversos obstáculos foram encontrados: zonas de guerra, travessia entre países, diferenças culturais, etc.

Para dar um gostinho de “eu quero ler”, vou citar dois fatos que o livro relata:

  • Algumas tribros de países africanos acreditam que a AIDS pode ser curada quando o portador do vírus HIV mantém relação sexual com um parceiro jovem;
  • Uma massai pode ter tantas esposas quantas vacas ele tiver, pois cada animal pode ser trocado por uma mulher.

Esta obra é, acima de tudo, uma viagem cultural através da evolução do homem na terra.

Seja o primeiro a comentar este post

Gerenciamento de Projetos

Publicado por Marcos Dell Antonio em 04/09/2007 | Cotidiano

Se tem mais algum leitor pretendendo conhecer novas áreas, fica aqui uma dica: Macro Solutions. Não deixe de ouvir os excelentes podcasts sobre gerenciamento de projetos.

T+

Seja o primeiro a comentar este post

Anúncios

Anúncio provido pelo BuscaPé