Carregando...

Objetos

Escreva uma classe chamada Chip com um método beep que escreve ok. O método não é static nesta página. Em Pine, mantenha Main e construa um chip com Chip c = new Chip();, depois chame c.beep();. Mantenha os dois tipos no mesmo arquivo de ensino para dotnet run continuar simples. Execute com dotnet run. A tela deve mostrar uma linha: ok. A palavra new constrói um objeto a partir da classe. A variável c guarda esse objeto. Você chama beep em c, não no nome da classe sozinho. Esse objeto construído — e a chamada que o usa — é o que esta página ensina. Mantenha a classe pública inicial chamada Pine.

Um objeto a partir da classe

Uma classe continua sendo o tipo nomeado. Um objeto é um valor construído a partir desse tipo. A linha new Chip() pede a C# que construa esse valor. Você o guarda numa variável cujo tipo é Chip, depois usa a variável para alcançar métodos que pertencem a cada objeto.
Abra o arquivo Pine. O nome da classe inicial permanece Pine. Esta página não renomeia o iniciador. Apague qualquer resto Badge.show(); se essa chamada static ainda for tudo o que você tem em Main. Apague qualquer resto de recursão down. Apague qualquer linha ReadLine. O arquivo que você guarda não espera digitação.
Fora das chaves de Pine — ainda no mesmo arquivo — escreva public class Chip. Dentro de Chip, escreva void beep() — sem a palavra static nesse cabeçalho. O corpo é uma linha de escrita: Console.WriteLine("ok");. Mantenha void. O método não devolve um número. Não há Main em Chip nesta página. Salve o arquivo antes de executar.
O primeiro programa em caixa mostra Chip sozinho para você ler o tipo com clareza. Os programas em caixa seguintes são as formas guardadas com Pine construindo um chip, depois dois.

Chip with beep

csharp
using System;

public class Chip
{
    void beep()
    {
        Console.WriteLine("ok");
    }
}

Pine constrói o chip, depois chama beep

Pine mantém public static void Main(). Dentro de Main, escreva duas linhas: primeiro Chip c = new Chip();, depois c.beep();. A primeira linha declara uma variável c do tipo Chip e a preenche com um novo objeto. A segunda linha chama beep nesse objeto. O ponto fica depois do nome da variável, não depois do nome da classe sozinho. Você não escreve Badge.show(); nesta página. Essa era a chamada static da lição de classes.

Pine builds one chip

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Chip c = new Chip();
        c.beep();
    }
}

public class Chip
{
    void beep()
    {
        Console.WriteLine("ok");
    }
}

Leia o arquivo guardado de cima. using System; prepara nomes curtos. public class Pine é o iniciador. public static void Main() é onde o runtime começa. A expressão new Chip() constrói um objeto. Esse objeto fica guardado em c. A chamada c.beep() entra em beep para esse objeto. O método escreve ok e retorna. Depois Pine termina. A palavra na tela veio do método do objeto, depois que new criou o objeto.
Execute com dotnet run. O programa escreve uma linha e para. Não espera você digitar. Se dotnet run esperar, ReadLine ainda está no arquivo. Apague essa linha e mantenha Chip c = new Chip(); mais c.beep(); em Pine, com beep em Chip. A tela mostra ok. Se a tela mostrar ready, uma chamada Badge.show(); restante ainda está rodando. Se a tela mostrar as letras Chip, uma linha de escrita tem aspas: Console.WriteLine("Chip");. Você não reinstala o SDK .NET por uma tela que mostra a linha errada.
Percorra a execução mais uma vez em ordem. C# começa em Pine.Main. A primeira instrução constrói um objeto com new Chip() e o guarda em c. A segunda instrução chama c.beep(). Dentro de beep, WriteLine escreve ok. Depois beep termina, e Main não tem mais nada, então o programa encerra. Você não colocou Console.WriteLine("ok"); dentro de Pine nesta página. Colocou sob Chip e pediu pela variável do objeto.
Pense na classe como o plano no arquivo e no objeto como uma peça construída na memória para esta execução. Cada new Chip() constrói outra peça. A variável nomeia a peça para que as linhas seguintes possam alcançá-la. Sem esse nome, a peça construída não tem alça para beep nesta página.

Por que a chamada usa c, não Chip sozinho

Na página de classes, um método static podia ser chamado como Badge.show() com o nome do tipo. Aqui beep não tem a palavra static. C# espera um objeto primeiro. Escrever Chip.beep(); sem um objeto não combina com esta forma iniciante. Construa com new, guarde o resultado numa variável, depois chame por essa variável.
Se você escrever só new Chip(); e nunca guardar, ainda construiu um objeto, mas não sobra nome para chamar beep. Nesta página mantenha a variável: Chip c = new Chip(); depois c.beep();. A variável é como você alcança o objeto depois que new termina.
Uma demo static restante pode confundir Main. Um arquivo que ainda chama Badge.show(); é a forma da lição anterior. Para esta página mantenha Chip e Pine e a linha new. Você não precisa de Badge aqui.

Dois objetos, dois beep

Você pode construir mais de um objeto a partir da mesma classe. Cada new Chip() faz um objeto separado. Cada objeto pode executar beep por si. O texto da classe é compartilhado; os objetos não são o mesmo valor.

Pine builds two chips

csharp
using System;

public class Pine
{
    public static void Main()
    {
        Chip a = new Chip();
        Chip b = new Chip();
        a.beep();
        b.beep();
    }
}

public class Chip
{
    void beep()
    {
        Console.WriteLine("ok");
    }
}

Execute de novo com dotnet run. A tela deve mostrar duas linhas: ok, depois ok. A primeira linha veio de a. A segunda veio de b. Ambas usaram o mesmo texto do método beep em Chip, mas cada chamada rodou num objeto diferente construído com new.
Se a tela mostrar só um ok, confira se as duas chamadas estão presentes e se as duas variáveis foram construídas com new. Escrever Chip b = a; não constrói um segundo objeto; faz b apontar para o mesmo objeto que a. Essa ideia fica para páginas posteriores. Nesta página use duas expressões new Chip() quando quiser dois objetos.
Você pode renomear a variável de c para unit se quiser: Chip unit = new Chip(); depois unit.beep();. A tela continua ok quando o corpo do método ainda escreve essa palavra. O nome da variável é seu; o nome do tipo Chip e a expressão new Chip() ainda precisam concordar.

O que esta página deixa para campos

Esta página ainda não guarda um número ou uma palavra dentro do chip. Campos — nomes que guardam dados em cada objeto — são a página seguinte. Aqui o objeto existe depois de new, e o método de instância beep só escreve. Isso basta para ver a separação entre a classe como tipo e um objeto como valor construído.
Não aninhe Chip dentro das chaves de Pine. Nesta página as duas classes ficam como irmãs no arquivo. Métodos de Chip ficam dentro de Chip. Main fica dentro de Pine. Você pode mudar a palavra escrita dentro de beep para ping e executar de novo. A tela deve seguir a string que você colocou em Chip. Pine mantém a mesma forma new e chamada.
Se a compilação não achar Chip ao compilar Pine, confira que public class Chip está no mesmo arquivo e que a linha da classe realmente diz Chip. Se a execução não escrever nada, confirme que Main ainda chama c.beep(); depois da linha new, e que beep ainda contém o WriteLine.

Você pode escrever Chip com void beep(), construir um objeto com Chip c = new Chip();, e chamar c.beep(); a partir de Pine.Main. Execute com dotnet run. A tela mostra ok. Um segundo new Chip() constrói outro objeto que pode bipar por si. Pense em Chip como o plano e em cada new Chip() como uma peça construída que você pode nomear. Pine continua a porta que você abre com dotnet run. A página seguinte é campos, onde cada objeto começa a guardar seus próprios dados armazenados.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
5
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo