Ripasso - Calcolatrice semplice
Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 9 di 87.
Sfida
DifficileCrea una classe Calculator completa che utilizzi tutti i concetti appresi:
- Campi: Campi privati per
name(String),memory(double),operationCount(int) - Costruttori: Un costruttore con parametri e un costruttore predefinito che usa il concatenamento di
this() - Parola chiave this: Usa
thisper assegnare i campi e accedervi nei metodi - Getter:
getName(),getMemory(),getOperationCount() - Metodi:
add,subtract,multiply,divide,power
Il metodo add memorizza il risultato in memory. Tutti i metodi incrementano operationCount. Il metodo divide restituisce 0 se si divide per zero. Il metodo power usa Math.pow().
Provalo tu
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
double num1 = Double.parseDouble(scanner.nextLine());
double num2 = Double.parseDouble(scanner.nextLine());
Calculator calc = new Calculator(name);
System.out.println("Calculator: " + calc.getName());
System.out.println("Memory: " + calc.getMemory());
System.out.println("Add: " + calc.add(num1, num2));
System.out.println("Subtract: " + calc.subtract(num1, num2));
System.out.println("Multiply: " + calc.multiply(num1, num2));
System.out.println("Divide: " + calc.divide(num1, num2));
System.out.println("Divide by zero: " + calc.divide(num1, 0));
System.out.println("Memory: " + calc.getMemory());
System.out.println("Power: " + calc.power(num1, num2));
System.out.println("Operations: " + calc.getOperationCount());
}
}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