sábado, 7 de julho de 2007

Diferenças entre Java e C# - Propriedades

Em termos de propriedades, em java e c# funcionam quase da mesma forma. No entanto a sua sintaxe foi alterada, mas o conceito permanece intacto. Atentemos então aos exemplos seguintes:

JAVA:

private String nome;

public String getNome()
{
return this.nome;
}

public void setNome( String nome )
{
this.nome = nome;
}

C#:

private string nome;

public string Nome
{
get { return this.nome; }
set { this.nome = value; }
}

CASO DE USO:

Imaginemos o seguinte caso:

C#

Empregado empregado = new Empregado();
empregado.Nome = "David";
Console.WriteLine("Nome:" + empregado.Nome);

JAVA

Empregado empregado = new Empregado();
empregado.setNome("David");
System.out.println( "Nome" + empregado.getNome());

NAMESPACES E PACKAGES

Em java é boa prática utilizarem-se packages para agrupar classes de um determinado processo de negócio e/ou swing. Existe quem também utilize packages para separar classes puramente funcionais de classes correspondentes ao GUI da aplicação. Em C#, quando criamos um novo projecto, seja ele windows application ou não, todas as classes desse projecto ficam agrupadas em namespaces que são considerados como packages mas em C#.

Assim, vejamos este exemplo:


using System;
using System.Collections.Generic;
using System.Text;
using Casas; //temos de importar o conteudo do namespace ou package "Casas" para podermos usar a classe "Casa". É semelhante ao Imports do Java.

namespace Empregados //namespace actual do projecto principal
{
class Program
{
static void Main(string[] args)
{
Empregado empregado = new Empregado();
Console.WriteLine(empregado.Nome);
//para usar a classe casa tivemos de importar o package ou namespace "Casa" fazendo - using Casas;
Casa casa = new Casa();
casa.Dono = empregado.Nome;

}
}
}

Assim, em jeito de conclusão, podemos afirmar que é boa prática agrupar um projecto em pequenos sub-projectos de forma a organizarmos o seu conteúdo. Desta forma, a nossa solução (projecto global) terá vários sub-projectos da forma:

using Projecto.Logic;
using Projecto.GUI;

(...)

No próximo artigo irei abordar o tema das conversões de tipos, que julgo será o último tópico realmente importante para que qualquer programador consiga passar de Java para C# sem quaisquer problemas, até porque a sintaxe das duas linguagens não difere assim tanto.

Abraço,

David R.

Sem comentários: