Dominando Classes em C#: Blueprint para Programação Orientada a Objetos Poderosa
Definir uma classe cria um blueprint (modelo) para um tipo de dado. Não define dados reais, mas o que o nome da classe significa: o que um objeto consiste e quais operações pode realizar. Objetos são instâncias da classe. Métodos e variáveis que constituem a classe são membros.
Definindo uma Classe
<especificador_acesso> class nome_classe
{
// variáveis membro
<especificador_acesso> <tipo_dado> variavel1;
...
// métodos membro
<especificador_acesso> <tipo_retorno> metodo1(lista_parametros)
{
// corpo do método
}
...
}
Notas:
- Especificadores de acesso definem regras de acesso. Padrão para classe:
internal; para membros:private. - Tipo de dado especifica tipo da variável; tipo de retorno especifica tipo do dado retornado.
- Acesse membros com operador ponto (
.).
Exemplo Básico: Classe Box
using System;
namespace BoxApplication
{
class Box
{
public double length;
public double breadth;
public double height;
}
class Boxtester
{
static void Main(string[] args)
{
Box Box1 = new Box();
Box Box2 = new Box();
double volume = 0.0;
Box1.height = 5.0; Box1.length = 6.0; Box1.breadth = 7.0;
Box2.height = 10.0; Box2.length = 12.0; Box2.breadth = 13.0;
volume = Box1.height * Box1.length * Box1.breadth;
Console.WriteLine("Volume of Box1: {0}", volume);
volume = Box2.height * Box2.length * Box2.breadth;
Console.WriteLine("Volume of Box2: {0}", volume);
Console.ReadKey();
}
}
}
Saída: Volume of Box1: 210 / Volume of Box2: 1560
Funções Membro e Encapsulamento
Função membro tem definição/protótipo dentro da classe. Opera em qualquer objeto da classe e acessa todos os membros para aquele objeto.
Variáveis membro (atributos) mantêm-se private para encapsulamento. Acessadas via funções membro public (getters/setters).
Exemplo com Encapsulamento
class Box
{
private double length, breadth, height;
public void SetLength(double len) { length = len; }
public void SetBreadth(double bre) { breadth = bre; }
public void SetHeight(double hei) { height = hei; }
public double GetVolume() { return length * breadth * height; }
}
Construtores em C#
Função membro especial executada ao criar novos objetos. Mesmo nome da classe, sem tipo de retorno.
Construtor Padrão
public Line()
{
Console.WriteLine("Objeto sendo criado");
}
Construtor Parametrizado
public Line(double len)
{
Console.WriteLine("Objeto sendo criado, length = {0}", len);
length = len;
}
Destrutores em C#
Função membro especial executada quando objeto sai de escopo. Mesmo nome da classe prefixado com ~. Não retorna valor nem aceita parâmetros. Útil para liberar recursos.
~Line()
{
Console.WriteLine("Objeto sendo deletado");
}
Membros Estáticos (Static)
Palavra-chave static indica que só existe uma cópia do membro, independentemente de quantos objetos são criados.
Variáveis Estáticas
public static int num;
public void Count() { num++; }
public int GetNum() { return num; }
Exemplo: duas instâncias incrementam num — ambas veem valor 6.
Métodos Estáticos
Podem acessar apenas variáveis estáticas. Existem antes do objeto ser criado.
public static int GetNum() { return num; }
// Uso sem instância:
Console.WriteLine("Variable num: {0}", StaticVar.GetNum());
Linguagem C
- Classes e Objetos em C#: Fundamentos para POO Robusta
- Entendendo Modificadores de Acesso em C#: Public, Private, Protected, Internal e Mais
- Palavra-chave Static em C#: Dominando Variáveis, Métodos e Classes Estáticas
- Dominando Classes e Métodos Abstratos em C#: Guia Prático
- Entendendo Classes Aninhadas em C#: Definição, Uso e Herança
- Classes e Objetos em C++: Guia Prático de Programação Orientada a Objetos
- Entendendo Classes de Armazenamento em C: Escopo, Tempo de Vida e Uso
- Entendendo Classes de Armazenamento em C++: Escopo, Tempo de Vida e Uso
- Interfaces em C++: Dominando Classes Abstratas e Funções Virtuais Puras
- Entendendo a Estrutura de Programas C#: Componentes Essenciais e Exemplo