CodeGym /Cursos /C# SELF /Conceito de classe e objeto

Conceito de classe e objeto

C# SELF
Nível 16 , Lição 0
Disponível

1. Introdução

Como você já deve ter ouvido, classe é tipo um molde, e objeto é uma instância desse molde.
Mas chegou a hora de entender classes e objetos mais a fundo!

Imagina que você é engenheiro numa fábrica de carros. Ao invés de montar cada carro na mão, você faz um projeto — uma instrução universal, seguindo a qual dá pra montar vários carros do mesmo tipo. Nesse projeto tá dizendo que o carro tem que ter motor, rodas, carroceria, cor e quais funções ele faz.

Esse projeto, no mundo da programação, é chamado de classe.

Agora imagina que, seguindo esse projeto, a fábrica lançou uma leva de carros. Cada um deles é real, anda na rua, tem sua própria placa, cor e até uns ajustes individuais. Mas todos foram montados pelo mesmo projeto.

Esses carros reais, no mundo da programação, são chamados de objetos (ou instâncias da classe).

Então, bora gravar:

  • Classe — é tipo um projeto, molde, esquema. Ela descreve quais dados alguma coisa pode ter (tipo marca, cor, número de portas) e o que essa coisa pode fazer (tipo andar, frear, buzinar). Classe é só a descrição, ela mesma não ocupa muito espaço na memória e não é algo "vivo".
  • Objeto — é um "carro" de verdade, montado pelo projeto da classe. É uma entidade real, "viva" no seu programa, que ocupa espaço na memória, tem valores únicos pros dados (sua placa, cor) e pode fazer as ações descritas na classe.

Ficou meio abstrato? Relaxa, já já a gente destrincha tudo.

2. O que é uma classe?

Classe — é um tipo de dado criado por você, que descreve como devem ser os objetos desse tipo: quais características (estado/propriedades/campos) eles têm e quais ações podem fazer (comportamento/métodos/funções).

A classe define:

  • Campos (variáveis) — dados que ficam guardados no objeto.
  • Métodos (funções) — ações que o objeto pode executar.
  • Propriedades — métodos especiais pra acessar os dados.
  • Eventos — mecanismos pra avisar sobre algo (a gente fala disso depois).
  • Construtores — métodos especiais pra criar objetos.

public class Person
{
    // Campos (dados)
    public string Name;
    public int Age;

    // Método (ação)
    public void SayHello()
    {
        Console.WriteLine($"Oi! Meu nome é {Name}, tenho {Age} anos.");
    }
}

Nesse exemplo, a gente declarou a classe Person. Ela tem dois campos (Name e Age) e um método SayHello(). Isso é tudo que precisa pra uma classe básica.

3. O que é um objeto?

Objeto — é uma instância da classe, ou seja, uma entidade concreta criada na memória a partir do "projeto" (classe).

Quando você cria uma variável do tipo Person, você ganha um objeto — com valores únicos pra cada campo. Não é só uma pessoa qualquer, mas, por exemplo, uma pessoa chamada Johnny, com 12 anos. E quando ele cumprimenta a gente (ou seja, chama o método SayHello()), ele "conta" pra gente quem ele é.


// Criando um objeto da classe Person
Person person1 = new Person();
person1.Name = "Alice";
person1.Age = 28;
person1.SayHello(); // => Oi! Meu nome é Alice, tenho 28 anos.

// Criando mais uma "pessoa"
Person person2 = new Person();
person2.Name = "Bob";
person2.Age = 32;
person2.SayHello(); // => Oi! Meu nome é Bob, tenho 32 anos.

Cada objeto não é só uma cópia: é uma entidade independente com seus próprios dados (no nosso exemplo — nomes e idades).

4. Principal diferença entre classe e objeto

Principal diferença:

  • Classe — "projeto", instrução, tipo de dado.
  • Objeto — representante concreto desse tipo; "casa" real construída pelo projeto; "carro" fabricado pelo molde.

Dá pra criar quantos objetos quiser de uma mesma classe. Por exemplo, se você tem a classe Person, pode criar um milhão de "pessoas" no programa.

Por que isso é prático e importante?

Imagina um programa sem classes. Se você tivesse uma lista de estudantes, teria que guardar nome, idade, notas e outros dados em arrays separados pra cada coisa:

string[] studentNames = { "Sergey", "Grisha", "Masha" };
int[] studentAges = { 20, 19, 21 };

// Se precisar adicionar mais uma propriedade, vai ter mais um array.
// Tentar trocar dois estudantes de lugar vira um pesadelo!

Usando classes, os dados não ficam espalhados em vários arrays, mas agrupados de forma lógica:

public class Student
{
    public string Name;
    public int Age;
}

Student[] students = new Student[3];
students[0] = new Student { Name = "Sergey", Age = 20 };
students[1] = new Student { Name = "Grisha", Age = 19 };
students[2] = new Student { Name = "Masha", Age = 21 };

Muito mais fácil de entender e mexer! E ainda dá pra colocar métodos em cada estudante (tipo "cumprimentar" ou "calcular média das notas").

Imagem: relação entre classe e objeto

+------------------+          +----------------+
|   class Person   |=========>|  person1:      | 
| (projeto/tipo)   |          |  Name = "Alice"|
|                  |         /|  Age = 28      |
+------------------+        / +----------------+
                          /
+------------------------/----------------------+
                        /
                  +----------------+
                  |  person2:      |
                  |  Name = "Bob"  |
                  |  Age = 32      |
                  +----------------+

5. Onde classes e objetos aparecem na vida real?

Classes e objetos são a base de qualquer app em C#. Tudo que você vê no .NET: janelas, botões, formulários, arrays, coleções, conexões com banco de dados, logs — são objetos criados a partir de classes específicas.

Exemplos:

  • Classe Button — é a instrução de como deve ser um botão na tela. Toda vez que você cria um botão novo — é um objeto dessa classe.
  • Classe Stream (do sistema de entrada/saída): você pega um objeto que trabalha com arquivos.
  • Sua futura classe User pra guardar info dos usuários — de novo, é um molde.

Rapidinho sobre nomes, modificadores e convenções

  • Pra classes, a galera costuma usar nomes com letra maiúscula, tipo Person, Order, Product.
  • Pra variáveis — começa com minúscula, tipo person, user1, orderList.
  • Na maioria das vezes, a classe é public — pra ficar acessível em todo o projeto.
2
Tarefa
C# SELF, nível 16, lição 0
Bloqueado
Criação de uma classe simples e de um objeto
Criação de uma classe simples e de um objeto
2
Tarefa
C# SELF, nível 16, lição 0
Bloqueado
Vários objetos de uma mesma classe
Vários objetos de uma mesma classe
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION