Commit 29bc1783 by Patryk Czarnik

kalkulator - historia działań

parent e332d2f0
......@@ -23,10 +23,9 @@ public class KalkulatorController {
if(liczba1 != null && liczba2 != null && operacja != null) {
Long wynik = logikaKalkulatora.oblicz(liczba1, liczba2, operacja);
model.addAttribute("wynik", wynik);
model.addAttribute("historia", logikaKalkulatora.getHistoriaDzialan());
}
return "kalkulator.html";
}
}
package com.example.demo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.springframework.stereotype.Component;
/* LogikaKalkulatora jest przykładem "komponentu".
* Podczas startu aplikacji Spring tworzy jeden obiekt tej klasy (tzw. singleton) i zapamiętuje go jako "bean".
* W starszych wersjach Springa tego typu klasy należało zadeklarować w pliku beans.xml.
* Obecnie używa się raczej adnotacji. Takie działanie mają adnotacje: @Component, @Service, @Repository, @Controller.
*
* Inny sposób tworzenia beanów/kompomentów: klasa fabryczna z metodami oznaczonymi @Bean (będą inne przykłady).
*/
@Component
public class LogikaKalkulatora {
private final List<String> historiaDzialan = Collections.synchronizedList(new ArrayList<>());
public long oblicz(long liczba1, long liczba2, String operacja) {
return switch(operacja) {
long wynik = switch(operacja) {
case "+" -> liczba1 + liczba2;
case "-" -> liczba1 - liczba2;
case "*" -> liczba1 * liczba2;
case "/" -> liczba1 / liczba2;
default -> 0L;
};
historiaDzialan.add(String.format("%d %s %d = %d", liczba1, operacja, liczba2, wynik));
return wynik;
}
public List<String> getHistoriaDzialan() {
return Collections.unmodifiableList(historiaDzialan);
}
}
......@@ -25,5 +25,11 @@
[[${wynik}]]
</div>
<h2>Historia działań</h2>
<ul>
<li th:each="element: ${historia}" th:text="${element}">2 + 2 = 4</li>
</ul>
<p><a th:href="@{/}">→ Home</a></p>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment