Definindo Classes e Criando Objetos
Classe é a definição para um tipo definido pelo usuário (UDT). Objeto é simplesmente um termo descrevendo uma determinada instância de uma classe na memória. No C#, a keyword new é o caminho para criar um objeto.
Para ilustrar o procedimento próprio para criação de objeto, observe abaixo:
using System;
class HelloClass
{
public static int Main(string[] args)
{
// Você pode declarar e criar um novo objeto em uma simples linha...
HelloClass c1 = new HelloClass();
// ... ou quebrar a declaração e criação em duas linhas.
HelloClass c2;
c2 = new HelloClass();
...
}
}
A keyword new, toma conta de calcular o número correto de bytes para o objeto especificado e adquirindo memória suficiente do managed heap. Aqui você alocou dois objetos da classe HeloClass. Variáveis de objeto em C#, realmente são uma referência ao objeto na memória, não o próprio objeto em si. Assim, c1 e c2 referenciam um único HelloClass objeto alocado na memória heap.
O papel dos Construtores
Toda classe em C#, possui um construtor padrão que você pode redefinir se necessário.
// HelloClass, com construtores
using System;
class HelloClass
{
public string strMensagem;
// Construtor padrão
public HelloClass()
{
Console.WriteLine("Construtor padrão chamado!");
}
// Construtor customizado
public HelloClass (string msg)
{
Console.WriteLine("Construtor customizado chamado!");
strMensagem = msg;
}
// Ponto de entrada do programa
public static int Main(string[] args)
{
// Chamando o construtor padrão
HelloClass c1 = new HelloClass();
Console.WriteLine("Mensagem do usuário: {0}\n", c1.strMensagem);
// Chamando o construtor customizado
HelloClass c2;
c2 = new HelloClass("Testando, 1, 2, 3");
Console.WriteLine("Mensagem do usuário: {0}", c2.strMensagem);
Console.ReadLine();
return 0;
}
}
Definindo uma Aplicação Objeto
Vamos fazer uma reengenharia do programa para OO.
using
System;namespace
HelloExemplo{
#region
Classe HelloClass class HelloClass{
// Ponto de estado dos dados public string strMensagem ; // Construtor padrão public HelloClass(){
Console.WriteLine("Construtor padrão chamado!");}
// Construtor customizado public HelloClass(string msg){
Console.WriteLine("Construtor customizado chamado!");strMensagem = msg;
}
public void ListarMensagem(){
Console.WriteLine("Mensagem: {0}", strMensagem );}
}
#endregion
class HelloApp{
// Ponto de entrada do programa. public static int Main(string[] args){
#region
Processa Command Line Args... // Processa command line arguments... Console.WriteLine("***** Command line args *****"); for (int x = 0; x < args.Length; x++){
Console.WriteLine("Argumentos: {0}", args[x]);}
// Usando foreach! Console.WriteLine("\n***** Você perdeu isso *****"); foreach (string s in args) Console.WriteLine("Argumentos: {0}", s); // Usando System.Environment Console.WriteLine("\n***** Usando System.Environment *****"); string[] theArgs = Environment.GetCommandLineArgs(); Console.WriteLine(" O path para essa aplicação é: {0}", theArgs[0]); for (int i = 1; i < theArgs.Length; i++) Console.WriteLine("Argumentos: {0}", theArgs[i]); Console.WriteLine();#endregion
#region
Usando System.Environment // OS? Console.WriteLine("Sistema Operacional: {0} ", Environment.OSVersion); // Diretório? Console.WriteLine("Diretório: {0} ", Environment.CurrentDirectory); // Drives. string[] drives = Environment.GetLogicalDrives(); for (int i = 0; i < drives.Length; i++) Console.WriteLine("Drives {0} : {1} ", i, drives[i]); // Versão .NET? Console.WriteLine("Versão .NET: {0} ", Environment.Version); Console.WriteLine();#endregion
// Chamando construtor padrão HelloClass c1 = new HelloClass();c1.ListarMensagem();
// Chamando construtor customizado HelloClass c2;c2 =
new HelloClass("Testando, 1, 2, 3");c2.ListarMensagem();
Console.ReadLine(); return 0;}
}
}