Menu
Coddy logo textTech

Classes Estáticas

Parte da seção Programação Orientada a Objetos do Journey de C# da Coddy — lição 13 de 70.

Quando uma classe contém apenas membros estáticos e você nunca precisa criar instâncias dela, você pode declarar a classe inteira como static. Isso informa ao compilador que a classe não pode ser instanciada e pode conter apenas membros estáticos.

public static class MathHelper
{
    public static double Pi = 3.14159;
    
    public static int Square(int number)
    {
        return number * number;
    }
    
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

Você usa classes estáticas da mesma forma que usa membros estáticos, chamando-os diretamente pelo nome da classe:

int result = MathHelper.Square(5);
double pi = MathHelper.Pi;

Classes estáticas têm restrições importantes. Você não pode criar uma instância com new, elas não podem ter construtores de instância e não podem ser herdadas. Elas podem conter apenas campos, propriedades e métodos estáticos.

As classes Console e Math que você tem usado são exemplos perfeitos de classes estáticas. Elas fornecem funcionalidades utilitárias sem a necessidade de estado de objeto. Classes estáticas são ideais para agrupar métodos auxiliares relacionados ou constantes que não exigem nenhum dado específico da instância.

challenge icon

Desafio

Fácil

Vamos construir um utilitário de conversão de temperatura usando uma classe estática para agrupar métodos auxiliares relacionados que não exigem nenhum estado de objeto.

Você criará dois arquivos para organizar seu código:

  • TemperatureConverter.cs: Defina uma classe estática chamada TemperatureConverter no namespace Utilities. Esta classe deve conter:
    • Um campo estático AbsoluteZeroCelsius definido como -273.15
    • Um método estático CelsiusToFahrenheit(double celsius) que converte Celsius para Fahrenheit usando a fórmula: (celsius * 9 / 5) + 32
    • Um método estático FahrenheitToCelsius(double fahrenheit) que converte Fahrenheit para Celsius usando a fórmula: (fahrenheit - 32) * 5 / 9
    • Um método estático IsAboveAbsoluteZero(double celsius) que retorna true se a temperatura estiver acima do zero absoluto
  • Program.cs: No seu arquivo principal, use a classe estática para realizar as conversões. Leia um valor de temperatura em Celsius da entrada e, em seguida, exiba as conversões e a validação.

Você receberá uma entrada: um valor de temperatura em Celsius.

Imprima os resultados neste formato:

{celsius}C = {fahrenheit}F
{fahrenheit}F = {convertedBack}C
Above Absolute Zero: {True/False}
Absolute Zero: {AbsoluteZeroCelsius}C

Por exemplo, se a entrada for 25, a saída deve ser:

25C = 77F
77F = 25C
Above Absolute Zero: True
Absolute Zero: -273.15C

Lembre-se de que classes estáticas não podem ser instanciadas - você chamará todos os métodos diretamente pelo nome da classe, como TemperatureConverter.CelsiusToFahrenheit(25).

Folha de consulta

Uma classe static só pode conter membros estáticos e não pode ser instanciada. Ela é usada para agrupar métodos utilitários e constantes relacionados que não exigem estado de objeto.

public static class MathHelper
{
    public static double Pi = 3.14159;
    
    public static int Square(int number)
    {
        return number * number;
    }
    
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

Membros de classe estática são acessados diretamente pelo nome da classe:

int result = MathHelper.Square(5);
double pi = MathHelper.Pi;

Restrições de classes estáticas:

  • Não podem ser instanciadas com new
  • Não podem ter construtores de instância
  • Não podem ser herdadas
  • Só podem conter campos, propriedades e métodos estáticos

Exemplos comuns incluem as classes Console e Math, que fornecem funcionalidade utilitária sem a necessidade de estado de objeto.

Experimente você mesmo

using System;
using Utilities;

class Program
{
    public static void Main(string[] args)
    {
        // Lê a temperatura em Celsius
        double celsius = Convert.ToDouble(Console.ReadLine());
        
        // TODO: Use os métodos estáticos de TemperatureConverter para:
        // 1. Converter celsius para fahrenheit
        // 2. Converter fahrenheit de volta para celsius
        // 3. Verificar se a temperatura está acima do zero absoluto
        // 4. Obter a constante do zero absoluto
        
        // TODO: Imprima os resultados no formato exigido:
        // {celsius}C = {fahrenheit}F
        // {fahrenheit}F = {convertedBack}C
        // Above Absolute Zero: {True/False}
        // Absolute Zero: {AbsoluteZeroCelsius}C
        
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos