Classes e Objetos em C#: Fundamentos para POO Robusta
Classes e Objetos em C#: Fundamentos para POO Robusta
Neste tutorial, você aprenderá sobre o conceito de classes e objetos em C# com a ajuda de exemplos.
C# é uma linguagem orientada a objetos que estrutura aplicações em torno de objetos. Em POO, resolvemos problemas complexos dividindo-os em objetos reutilizáveis e autocontidos.
Para trabalhar com objetos, precisamos realizar as seguintes atividades:
- Criar uma classe
- Instanciar objetos a partir dessa classe
Classe em C#
Uma classe é o modelo para um objeto. Pense nela como a planta de uma casa: define cômodos, portas, janelas e regras estruturais. Uma casa real construída a partir dessa planta é um objeto.
Múltiplas casas podem compartilhar a mesma planta, assim como muitos objetos podem ser criados a partir da mesma classe.
Criar uma classe em C#
class NomeDaClasse { }
Aqui definimos uma classe chamada NomeDaClasse. Uma classe pode conter
- Campos – variáveis que armazenam dados
- Métodos – funções que realizam ações
Exemplo:
class Cachorro { // Campo string raca; // Método public void Latir() { // Implementação } }
No exemplo acima:
- Cachorro – nome da classe
- raca – campo
- Latir() – método
Nota: Em C#, membros de uma classe incluem tanto campos quanto métodos.
Objetos em C#
Um objeto é uma instância de uma classe. Por exemplo, a classe Cachorro pode produzir objetos como um Bulldog, Pastor Alemão ou Pug.
Criando um Objeto de uma classe
NomeDaClasse obj = new NomeDaClasse();
Aqui new cria um objeto; obj é seu nome. Por exemplo:
Cachorro bulldog = new Cachorro();
O objeto bulldog agora pode acessar os campos e métodos definidos em Cachorro.
Acessando Membros da Classe Usando um Objeto
Acesse membros com o operador ponto (.):
using System; namespace ClassObject { class Cachorro { string raca; public void Latir() { Console.WriteLine("Au Au !!"); } static void Main(string[] args) { // cria objeto Cachorro Cachorro bulldog = new Cachorro(); // define raca bulldog.raca = "Bulldog"; Console.WriteLine(bulldog.raca); // invoca método bulldog.Latir(); Console.ReadLine(); } } }
Saída
Bulldog Au Au !!
Observe o uso de bulldog e o operador ponto para acessar raca e Latir().
Criando Múltiplos Objetos de uma Classe
Instancie vários objetos da mesma classe, cada um com seus próprios dados:
using System; namespace ClassObject { class Funcionario { string departamento; static void Main(string[] args) { // primeiro funcionario Funcionario sheeran = new Funcionario(); sheeran.departamento = "Desenvolvimento"; Console.WriteLine("Sheeran: " + sheeran.departamento); // segundo funcionario Funcionario taylor = new Funcionario(); taylor.departamento = "Redação de Conteúdo"; Console.WriteLine("Taylor: " + taylor.departamento); Console.ReadLine(); } } }
Saída
Sheeran: Desenvolvimento Taylor: Redação de Conteúdo
Cada objeto mantém seu próprio valor de departamento.
Criando Objetos em uma Classe Diferente
Objetos podem ser criados em outras classes. Por exemplo:
using System; namespace ClassObject { class Funcionario { public string nome; public void Trabalhar(string trabalho) { Console.WriteLine("Trabalho: " + trabalho); } } class FuncionarioDrive { static void Main(string[] args) { // cria objeto Funcionario Funcionario e1 = new Funcionario(); Console.WriteLine("Funcionário 1"); // define nome e1.nome = "Gloria"; Console.WriteLine("Nome: " + e1.nome); // chama método e1.Trabalhar("Programação"); Console.ReadLine(); } } }
Saída
Funcionário 1 Nome: Gloria Trabalho: Programação
Aqui FuncionarioDrive cria um objeto Funcionario. Membros públicos permitem acesso entre classes. Saiba mais sobre modificadores de acesso na documentação oficial.
Por que Objetos e Classes?
Classes e objetos permitem design modular. Para um jogo com muitos inimigos, uma única classe Inimigo pode definir vida, municao, Atirar() e Correr(). Cada instância de inimigo então mantém seu próprio estado enquanto compartilha comportamento.
Ao modelar código em torno de objetos, reduzimos complexidade, melhoramos manutenibilidade e promovemos reutilização.
Linguagem C
- Dominando Classes e Métodos Abstratos em C#: Guia Prático
- Entendendo Classes e Métodos Parciais em C#
- Dominando Classes e Métodos Sealed em C#: Quando Usar, Exemplos Claros e Segurança de Código
- Classes e Objetos em C++: Guia Prático de Programação Orientada a Objetos
- Funções Amigas e Classes Amigas em C++: Dominando o Controle de Acesso
- Dominando Programação Orientada a Objetos em Python: Classes, Herança, Encapsulamento e Polimorfismo
- Classes e Objetos em Java: Guia Prático
- Classes e Métodos Abstratos em Java: Guia Completo
- Dominando Classes Aninhadas e Internas em Java: Tipos, Exemplos e Boas Práticas
- Padrão Singleton em Java Explicado: Como Implementar e Usar com Segurança