Riepilogo - Contatore e utility
Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 19 di 87.
Sfida
FacileCostruiamo un sistema completo che combina una classe Counter per tenere traccia delle istanze con una classe di utilità MathUtils, mettendo insieme tutto ciò che hai imparato sulle variabili statiche, i metodi statici, i blocchi statici e le costanti.
Creerai tre file per organizzare il codice:
Counter.java: crea una classe che tiene traccia del numero di istanze create:- Una variabile statica privata per contare il numero totale di istanze
- Una variabile di istanza privata
idche memorizza l'identificatore univoco di ogni contatore - Un costruttore che incrementa il conteggio totale e assegna il conteggio corrente come id di questa istanza
- Un metodo
getId()che restituisce l'id univoco di questo contatore - Un metodo statico
getTotalCount()che restituisce il numero di oggetti Counter creati
MathUtils.java: crea una classe di utilità con solo membri statici (non viene mai istanziata):- Una costante pubblica
PIcon valore3.14159 - Una costante pubblica
HALFcon valore0.5 - Un metodo statico
square(int n)che restituisce n al quadrato - Un metodo statico
cube(int n)che restituisce n al cubo - Un metodo statico
circleArea(double radius)che restituisce PI * radius * radius
- Una costante pubblica
Main.java: mostra come funzionano insieme entrambe le classi. Riceverai due input: un numero per le operazioni matematiche e un conteggio del numero di oggetti Counter da creare. Stampa quanto segue:Square: [value]Cube: [value]Circle area (radius=[number]): [value](area formattata con 2 cifre decimali)- Per ogni Counter creato, stampa:
Counter [id] created - Infine:
Total counters: [count]
Riceverai due input: un numero (int) per i calcoli matematici e un conteggio (int) del numero di oggetti Counter da creare.
Ricorda di accedere ai membri statici tramite il nome della classe (come MathUtils.PI e Counter.getTotalCount()) e di usare String.format("%.2f", value) per formattare i valori decimali.
Provalo tu
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
int count = scanner.nextInt();
// TODO: Usa i metodi statici di MathUtils per calcolare e stampare:
// - Quadrato: [value]
// - Cubo: [value]
// - Circle area (radius=[number]): [value] (formattato con 2 cifre decimali)
// TODO: Crea un numero di oggetti Counter pari a 'count'
// Per ogni Counter creato, stampa: Counter [id] creato
// TODO: Stampa il numero totale di contatori creati
// Total counters: [count]
}
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione a oggetti
File esterniIntroduzione alla programmazione a oggettiClassi e oggettiLa parola chiave thisMetodiCampi (attributi)Metodo costruttoreSovraccarico dei costruttoriRipasso - Calcolatrice semplice4Ereditarietà
Ereditarietà di base (extends)La parola chiave superSovrascrittura dei metodi (@Override)Concatenamento dei costruttoriLa classe ObjectEreditarietà singola e multilivelloPerché non esiste l'ereditarietà multipla delle classiRiepilogo: gerarchia dei dipendenti7Metodi speciali e classe Object
Metodo toString()equals() e hashCode()Metodo clone()compareTo() e ComparableInterfaccia ComparatorRiepilogo - Ordinamento personalizzato2Modificatori di accesso e incapsulamento
Panoramica dei livelli di accessoMetodi getter e setterNascondimento delle informazioniLa parola chiave finalRiepilogo - Gestore di conti bancari5Polimorfismo
Nozioni di base sull'overloading dei metodiOverride dei metodi (a runtime)Upcasting e downcastingL'operatore instanceofClassi e metodi astrattiRiepilogo - Calcolatore di forme8Concetti avanzati di OOP
Composizione vs ereditarietàAggregazione vs composizioneClassi interne, annidate e anonimeEnum e metodi degli EnumRecord (Java 16+)Classi sealed (Java 17+)11Modelli di progettazione Parte 1
Introduzione ai modelli di progettazionePattern SingletonPattern FactoryPattern BuilderPattern ObserverPattern Strategy3Proprietà di classe e membri statici
Variabili di istanza e staticheMetodi staticiBlocchi staticiCostanti (static final)Riepilogo - Contatore e utility6Interfacce e classi astratte
Introduzione alle interfacceImplementazione delle interfacceImplementazione di più interfacceMetodi default e static nelle interfacceClassi astratte e interfacce a confrontoInterfacce funzionaliRiepilogo: sistema di pagamento9Tipi generici
Introduzione ai tipi genericiClassi genericheMetodi genericiParametri di tipo con limitiCaratteri jolly (?, extends, super)Riepilogo - Contenitore generico12Modelli di progettazione – Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositePattern IteratorEsercitati da solo: Compilatore Java online