terça-feira, 13 de março de 2012

Diferenças sintáticas e semânticas entre Java e C# - Parte 2

Continuando com o exemplo de uma classe básica, Cliente, a qual será exibida em Java e em C#, e então comentários e comparações serão apresentados. Veja na Figura 1, a implementação em Java e na Figura 2, a implementação da mesma classe em C#.

Figura 1
























Figura 2























Declaração de Atributos e Propriedades

Java: 
private long id;  à assessores
private String nome;
private Calendar nascimento;
private double renda; à atributos

public long getId() {
            Return id;  }
public void setId(long id){
            This id = id; } à assessores

C#: 
privat long _id; à atributo

public long Id {
            get {return_ id; }
            set {_id = value; } à assessores

Um atributo é uma característica de um determinado objeto, porém, não existe regra ou obrigatoriedade para que este atributo seja visível/acessível externamente. Para que um atributo tenha esta característica (ser visível a outros objetos/classes), é preciso transformá-lo em propriedade. Uma propriedade é uma característica de um objeto, a qual pode ser acessada externamente, normalmente por outra classe/objeto.

Em Java, um atributo é declarado propriedade quando o mesmo possui métodos acessores públicos definidos para ele, ou seja, os métodos get e set. Desta forma, um atributo de um objeto em Java só pode ser acessado através de chamadas a métodos, que retornem valores (get) e que recebem valores (set), atualizando o estado do objeto.

Em C# a transformação de um atributo para propriedade é diferente, segue o padrão Delphi, ou seja, os valores são obtidos e atribuídos através de um operador de igualdade (=). O exemplo acima, apresenta as declarações privadas para os atributos e publicas para as propriedades, semelhante ao Java. Porém, veja que uma propriedade em C#, possui (não obrigatoriamente) os métodos get e set, onde existe então a implementação para atribuição e retorno do valor do atributo.

Declaração de Construtores

Java: 
public Cliente (Long id, String nome, Calendar nascimento, Double renda) {
            This.id =id;
this.nome = nome;
this.nascimento = nascimento;
this.renda = renda; } àconstrutor

C#: 
public Cliente (long id, string nome, DateTime nascimento, Double renda) }
            this._id = id;
            this._nome = nome;
this._nascimento = nascimento;
this._renda = renda; } àconstrutor

Não existem diferenças na implementação de construtores. C# traz também o já famoso e útil this, que apenas para relembrar, é uma referência ao objeto atual da classe onde o mesmo é utilizado, quer seja para atributos, métodos ou até mesmo referenciando o uso em sobrecargas de construtores.

Nenhum comentário:

Postar um comentário

 
;