Podsumowanie — prosty kalkulator
Część sekcji Programowanie obiektowe ścieżki Java w Coddy. Lekcja 9 z 87.
Wyzwanie
TrudnyZbuduj kompletną klasę Calculator, która wykorzystuje wszystkie poznane koncepcje:
- Pola: Prywatne pola dla
name(String),memory(double),operationCount(int) - Konstruktory: Konstruktor sparametryzowany i konstruktor domyślny wykorzystujący łańcuchowe wywołanie
this() - Słowo kluczowe this: Użyj
this, aby przypisywać wartości polom i uzyskiwać do nich dostęp w metodach - Gettery:
getName(),getMemory(),getOperationCount() - Metody:
add,subtract,multiply,divide,power
Metoda add zapisuje swój wynik w memory. Wszystkie metody zwiększają wartość operationCount. Metoda divide zwraca 0 w przypadku dzielenia przez zero. Metoda power korzysta z Math.pow().
Spróbuj swoich sił
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());
}
}Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrzneWprowadzenie do programowania obiektowegoKlasy a obiektySłowo kluczowe thisMetodyPola (atrybuty)Metoda konstruktoraPrzeciążanie konstruktoraPodsumowanie — prosty kalkulator4Dziedziczenie
Podstawy dziedziczenia (extends)Słowo kluczowe superPrzesłanianie metod (@Override)Łańcuch wywołań konstruktorówKlasa ObjectDziedziczenie jedno- i wielopoziomoweDlaczego Java nie obsługuje wielodziedziczenia klasPodsumowanie – hierarchia pracowników7Metody specjalne i klasa Object
Metoda toString()equals() i hashCode()Metoda clone()compareTo() i ComparableInterfejs ComparatorPodsumowanie — własne sortowanie10Obsługa wyjątków w programowaniu obiektowym
Hierarchia klas wyjątkówWłasne wyjątkiBłędy sprawdzane a niesprawdzaneWzorzec try-with-resourcesPodsumowanie – zweryfikowany użytkownik2Modyfikatory dostępu i enkapsulacja
Przegląd poziomów dostępuMetody pobierające i ustawiająceUkrywanie informacjiSłowo kluczowe finalPodsumowanie — menedżer kont bankowych5Polimorfizm
Podstawy przeciążania metodPrzesłanianie metod (w czasie wykonywania)Rzutowanie w górę i w dółOperator instanceofKlasy i metody abstrakcyjnePowtórka — kalkulator figur8Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieAgregacja a kompozycjaKlasy wewnętrzne, zagnieżdżone i anonimoweEnumy i metody enumówRekordy (Java 16+)Klasy zapieczętowane (Java 17+)11Wzorce projektowe — część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec BuilderWzorzec ObserverWzorzec Strategy3Właściwości klas i składowe statyczne
Zmienne instancji a zmienne statyczneMetody statyczneBloki statyczneStałe (static final)Powtórka – Counter i Utility6Interfejsy i klasy abstrakcyjne
Wprowadzenie do interfejsówImplementowanie interfejsówImplementacja wielu interfejsówMetody domyślne i statyczne w interfejsieKlasy abstrakcyjne a interfejsyInterfejsy funkcyjnePodsumowanie — system płatnościPoćwicz samodzielnie: Kompilator Java online