Desenvolvimento - C#

Trabalhando OOP em C#

Como não poderia deixar de ser, a nova linguagem da Microsoft, o C# , foi totalmente construída para trabalhar orientada a objetos (OOP) e, por esse motivo, suporta todos os recursos normalmente associados a este modelo de programação. Além disso, o desenvolvimento de softwares baseados em componentes sofreu uma injeção de ânimo, pois o C# traz alguns recursos adicionais que facilitam bastante esse formato de desenvolvimento.

por Impacta Tecnologia



Como não poderia deixar de ser, a nova linguagem da Microsoft, o C# , foi totalmente construída para trabalhar orientada a objetos (OOP) e, por esse motivo, suporta todos os recursos normalmente associados a este modelo de programação. Além disso, o desenvolvimento de softwares baseados em componentes sofreu uma injeção de ânimo, pois o C# traz alguns recursos adicionais que facilitam bastante esse formato de desenvolvimento.

Uma vez que estamos falando em um modelo totalmente OOP, não podemos deixar de mencionar a class, que é, podemos dizer, o elemento mais importante na orientação a objetos do C#. Isto se deve ao fato de que quase todos os códigos e dados serão declarados dentro de uma class. Não estamos descartando a utilização dos structs, que também podem ser utilizados para declarar variáveis e códigos, embora isso não seja uma regra. Um hábito bastante saudável no C# é utilizar a nomenclatura das variáveis recebendo o nome de "campo" e os dados de "métodos", já que são sempre declarados dentro de uma class ou struct. Uma instância da classe recebe o nome de "objeto", ficando o modelo como no exemplo a seguir:

Listagem 1: Exemplo de declaração de classe

// Declarando uma nova classe 
class Temporizador { 
// Declarando os "Campos"
// Os elementos são private
int HH, MM, SS; 
// Método visível fora da classe 
public void Atribui(intyH, intyM, intyS) { 
  HH = yH; MM = yM; SS = yS; 
Normaliza(); 
}
// Método visível apenas na classe
voidNormaliza() { 
MM += SS / 60; SS %= 60; HH += MM / 60; MM %= 60; 
}
// Com este método, é possível reescrever um método já existente na classe
object
override public string ToString() { 
returnstring.Format("{0}:{1}:{2}", HH, MM, SS); 
}
}

Um detalhe importante a perceber é que a visibilidade dos elementos da classe, no início, é private, o que significa que, para enxergar o elemento em outros lugares, devemos colocar o especificador public.

Outro ponto muito importante quando falamos sobre C# é o fato desta linguagem possuir herança, ou seja, em C# , é possível declarar uma classe derivada de outra. Obviamente, se isto for feito, podemos concluir que a classe derivada "herda" quase tudo da classe base. A grande vantagem nesse processo é que podemos acrescentar funcionalidades à classe derivada sem precisar encostar um dedo no código-fonte da classe base. Não podemos nos esquecer de que toda classe é implicitamente derivada de uma classe base chamada object. Object contém a funcionalidade que toda classe .NET deve implementar, e caso a sua dúvida seja sobre o suporte a reflections, a resposta está na classe base object. No C# , uma classe pode derivar de apenas uma única classe. Chamamos isso de herança simples, mas também pode dar origem a ou implementar várias interfaces.

Uma dúvida bastante comum para quem está iniciando no mundo OOP e mesmo para quem já tem alguma experiência é o tal do polimorfismo. Em uma classe base, um método pode ser declarado "virtual", o que possibilita que ele seja redefinido em classes derivadas, e a decisão de qual método será chamado é feita em tempo de execução. Este é um mecanismo básico de "polimorfismo".

Uma característica única do C# é que uma classe derivada que declara um método com o mesmo "protótipo" (nome e parâmetros) da classe base deve especificar override ou new:

  • Override significa que a classe derivada está redefinindo o método na classe base, utilizando o mecanismo de polimorfismo.
  • New significa que a classe derivada está "desligando" o mecanismo de polimorfismo.

O protocolo "override/new" evita que um método seja redefinido "sem querer", um problema sério quando são utilizadas bibliotecas de classes grandes e razoavelmente desconhecidas.

Trabalhar com a filosofia OOP, a princípio, parece ser um "bicho de sete cabeças", mas, na realidade, o que acontece é a falta de costume ao se utilizar este modelo de programação. Uma "dica" importante é, a partir de agora, tentar utilizar e explorar ao máximo esta possibilidade. Não se esqueça de que, no Visual Studio.NET, o Visual Basic.NET também está totalmente orientado a objetos. Isto significa que OOP é, com certeza, um caminho sem volta.

Impacta Tecnologia

Impacta Tecnologia - http://www.impacta.com.br
Tel.: (11) 3285 5566