1 /**
2
3 @file Calculator.java
4 @brief This file serves as a demonstration file for the Calculator class.
5 @details This file contains the implementation of the Calculator class, which provides various mathematical operations.
6 */
7
8 /**
9
10 @package com.ucoruh.calculator
11 @brief The com.ucoruh.calculator package contains all the classes and files related to the Calculator App.
12 */
13 package com.ucoruh.calculator;
14
15 import org.slf4j.LoggerFactory;
16
17 import ch.qos.logback.classic.Logger;
18 /**
19
20 @class Calculator
21 @brief This class represents a Calculator that performs mathematical operations.
22 @details The Calculator class provides methods to perform mathematical operations such as addition, subtraction, multiplication, and division. It also supports logging functionality using the logger object.
23 @author ugur.coruh
24 */
25 public class Calculator {
26
27 /**
28 * @brief Logger for the Calculator class.
29 */
30 private static final Logger logger = (Logger) LoggerFactory.getLogger(Calculator.class);
31
32 /**
33 * @brief Calculates the sum of two integers.
34 *
35 * @details This function takes two integer values, `a` and `b`, and returns their sum. It also logs a message using the logger object.
36 *
37 * @param a The first integer value.
38 * @param b The second integer value.
39 * @return The sum of `a` and `b`.
40 */
41 public int add(int a, int b) {
42 logger.info("add({}, {})", a, b);
43 return a + b;
44 }
45
46 /**
47 * @brief Calculates the difference between two integers.
48 *
49 * @param a The value to subtract from.
50 * @param b The value to subtract.
51 * @return The result of `a` minus `b`.
52 */
53 public int subtract(int a, int b) {
54 logger.info("subtract({}, {})", a, b);
55 return a - b;
56 }
57
58 /**
59 * @brief Calculates the product of two integers.
60 *
61 * @param a The first integer value.
62 * @param b The second integer value.
63 * @return The product of `a` and `b`.
64 */
65 public int multiply(int a, int b) {
66 logger.info("multiply({}, {})", a, b);
67 return a * b;
68 }
69
70 /**
71 * @brief Divides one integer by another.
72 *
73 * @details Division is performed as floating point division so that, for
74 * example, dividing 1 by 3 does not silently truncate to 0.
75 *
76 * @param a The dividend.
77 * @param b The divisor.
78 * @return The result of `a` divided by `b`.
79 * @throws ArithmeticException if `b` is zero.
80 */
81 public double divide(int a, int b) {
82 logger.info("divide({}, {})", a, b);
83
84 if (b == 0) {
85 logger.error("divide by zero requested for dividend {}", a);
86 throw new ArithmeticException("Division by zero");
87 }
88
89 return (double) a / (double) b;
90 }
91 }