Classi statiche
Fa parte della sezione Programmazione orientata agli oggetti del percorso C# di Coddy. Lezione 13 di 70.
Quando una classe contiene solo membri statici e non hai mai bisogno di crearne istanze, puoi dichiarare l’intera classe come static. Questo indica al compilatore che la classe non può essere istanziata e può contenere solo membri statici.
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;
}
}Usi le classi statiche nello stesso modo in cui usi i membri statici, chiamandole direttamente tramite il nome della classe:
int result = MathHelper.Square(5);
double pi = MathHelper.Pi;Le classi statiche hanno restrizioni importanti. Non puoi creare un'istanza con new, non possono avere costruttori di istanza e non possono essere ereditate. Possono contenere solo campi, proprietà e metodi statici.
Le classi Console e Math che hai utilizzato sono esempi perfetti di classi statiche. Forniscono funzionalità di utilità senza bisogno dello stato di un oggetto. Le classi statiche sono ideali per raggruppare metodi di supporto correlati o costanti che non richiedono dati specifici di un'istanza.
Sfida
FacileCreiamo un'utilità di conversione della temperatura usando una classe statica per raggruppare metodi helper correlati che non richiedono lo stato di alcun oggetto.
Creerai due file per organizzare il codice:
TemperatureConverter.cs: definisci una classe statica chiamataTemperatureConverternello spazio dei nomiUtilities. Questa classe deve contenere:- Un campo statico
AbsoluteZeroCelsiusimpostato su-273.15 - Un metodo statico
CelsiusToFahrenheit(double celsius)che converte i gradi Celsius in Fahrenheit usando la formula:(celsius * 9 / 5) + 32 - Un metodo statico
FahrenheitToCelsius(double fahrenheit)che converte i gradi Fahrenheit in Celsius usando la formula:(fahrenheit - 32) * 5 / 9 - Un metodo statico
IsAboveAbsoluteZero(double celsius)che restituiscetruese la temperatura è superiore allo zero assoluto
- Un campo statico
Program.cs: nel file principale, usa la classe statica per eseguire le conversioni. Leggi dall'input un valore di temperatura in gradi Celsius, quindi visualizza le conversioni e il controllo di validità.
Riceverai un input: un valore di temperatura in gradi Celsius.
Stampa i risultati in questo formato:
{celsius}C = {fahrenheit}F
{fahrenheit}F = {convertedBack}C
Above Absolute Zero: {True/False}
Absolute Zero: {AbsoluteZeroCelsius}CPer esempio, se l'input è 25, l'output dovrebbe essere:
25C = 77F
77F = 25C
Above Absolute Zero: True
Absolute Zero: -273.15CRicorda che non è possibile istanziare le classi statiche: chiamerai tutti i metodi direttamente sul nome della classe, ad esempio TemperatureConverter.CelsiusToFahrenheit(25).
Provalo tu
using System;
using Utilities;
class Program
{
public static void Main(string[] args)
{
// Leggi la temperatura in gradi Celsius
double celsius = Convert.ToDouble(Console.ReadLine());
// TODO: Usa i metodi statici di TemperatureConverter per:
// 1. Convertire celsius in fahrenheit
// 2. Riconvertire fahrenheit in celsius
// 3. Verificare se la temperatura è superiore allo zero assoluto
// 4. Ottenere la costante dello zero assoluto
// TODO: Stampa i risultati nel formato richiesto:
// {celsius}C = {fahrenheit}F
// {fahrenheit}F = {convertedBack}C
// Above Absolute Zero: {True/False}
// Absolute Zero: {AbsoluteZeroCelsius}C
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione orientata agli oggetti
File esterniNamespace e direttiveIntroduzione a classi e oggettiLa parola chiave "this"Metodi e parametriCampi e proprietàCostruttoriInizializzatori di oggettiRiepilogo - Calcolatrice semplice4Ereditarietà
Sintassi di base dell'ereditarietà (:)La parola chiave 'base'Parole chiave virtual e overrideClassi sealedLa classe base 'object'Riepilogo - Gerarchia dei dipendenti7Funzionalità avanzate
Sovraccarico degli operatoriIndicizzatori (this[])Override di ToString()Metodi di estensioneRiepilogo - Lista personalizzata10Pattern di progettazione Parte 1
Introduzione ai pattern di progettazioneSingleton thread-safePattern FactoryPattern Observer (eventi)Pattern Strategy2Proprietà e membri statici
Proprietà implementate automaticamenteProprietà di sola lettura e di sola scritturaCampi e metodi staticiClassi staticheMembri con corpo di espressione5Polimorfismo e interfacce
Polimorfismo a compile time e runtimeInterfaccia o classe astrattaInterfacce multipleInterfacce espliciteUpcasting e downcastingRipasso: calcolatore di forme8Concetti avanzati di programmazione a oggetti
Composizione invece dell'ereditarietàTipi generici (classi e metodi)Delegati ed eventiAttributi e reflectionIDisposable e istruzione usingNozioni di base sull'iniezione delle dipendenze11Pattern di progettazione, parte 2
Pattern del ComandoPattern dell’AdattatorePattern del DecoratorePattern Template MethodPattern dello StatoPattern Composito3Architettura delle classi
Dati di istanza vs staticiParole chiave 'readonly' e 'const'Campi di supportoRiepilogo - Gestore di conti bancari6Incapsulamento
Modificatori di accessoProprietà per l'incapsulamentoImplementazione dell'occultamento dei datiModelli di immutabilitàRiepilogo - Registri degli studentiEsercitati da solo: Compilatore C# online