Мой опыт создания класса Calculator для комплексных чисел с логированием действий пользователя
В своей работе мне часто приходится работать с комплексными числами и реализовывать функциональность калькулятора для них․ Один из моих последних проектов включал создание класса Calculator, который не только выполнял базовые арифметические операции с комплексными числами, но и логировал все действия пользователя․ В этой статье я хочу рассказать вам о своем опыте создания такого класса и поделиться некоторыми полезными советами․
Шаг 1⁚ Создание базового класса ComplexNumber
Прежде чем приступать к созданию класса Calculator, я создал базовый класс ComplexNumber для представления комплексных чисел․ Этот класс содержит два поля⁚ действительную часть (real) и мнимую часть (imaginary)․ Также я добавил методы для выполнения арифметических операций⁚ сложение, вычитание, умножение и деление․
public class ComplexNumber {
private double real;
private double imaginary;
public ComplexNumber(double real, double imaginary) {
this․real real;
this․imaginary imaginary;
}
// Методы для выполнения арифметических операций
public ComplexNumber add(ComplexNumber other) {
double realSum this․real other․real;
double imaginarySum this․imaginary other․imaginary;
return new ComplexNumber(realSum, imaginarySum);
}
public ComplexNumber subtract(ComplexNumber other) {
double realDifference this․real — other․real;
double imaginaryDifference this․imaginary — other․imaginary;
return new ComplexNumber(realDifference, imaginaryDifference);
}
public ComplexNumber multiply(ComplexNumber other) {
double realProduct (this․real * other․real) ─ (this․imaginary * other․imaginary);
double imaginaryProduct (this․real * other․imaginary) (this․imaginary * other․real);
return new ComplexNumber(realProduct, imaginaryProduct);
}
public ComplexNumber divide(ComplexNumber other) {
double denominator (other․real * other․real) (other․imaginary * other․imaginary);
double realQuotient ((this․real * other․real) (this․imaginary * other․imaginary)) / denominator;
double imaginaryQuotient ((this․imaginary * other․real) — (this․real * other․imaginary)) / denominator;
return new ComplexNumber(realQuotient, imaginaryQuotient);
}
}
Шаг 2⁚ Создание класса Calculator
Затем я приступил к созданию класса Calculator, который будет использовать объекты класса ComplexNumber и добавлять логирование действий пользователя․ В этом классе я определил методы для выполнения арифметических операций с комплексными числами․ Кроме того, я добавил методы для логирования действий пользователя в файл․
import java․io․FileWriter;
import java․io․IOException;
public class Calculator {
private ComplexNumber result;
public Calculator {
this․result new ComplexNumber(0, 0);
}
public ComplexNumber getResult {
return this․result;
}
public void setResult(ComplexNumber result) {
this․result result;
}
public void add(ComplexNumber number) {
ComplexNumber sum this․result․add(number);
logAction(″Сложение ″ this․result ″ и ″ number ″ ″ sum);
this․result sum;
}
public void subtract(ComplexNumber number) {
ComplexNumber difference this․result․subtract(number);
logAction(″Вычитание ″ number ″ из ″ this․result ″ ″ difference);
this․result difference;
}
public void multiply(ComplexNumber number) {
ComplexNumber product this․result․multiply(number);
logAction(″Умножение ″ this․result ″ на ″ number ″ ″ product);
this․result product;
}
public void divide(ComplexNumber number) {
ComplexNumber quotient this․result․divide(number);
logAction(″Деление ″ this․result ″ на ″ number ″ ″ quotient);
this․result quotient;
}
private void logAction(String action) {
try {
FileWriter writer new FileWriter(″log․txt″, true);
writer․write(action ″\n″);
writer․close;
} catch (IOException e) {
e․printStackTrace;
}
}
}
Шаг 3⁚ Тестирование функциональности класса Calculator
Вы могли заметить, что в методе logAction я сохраняю действия пользователя в файл log․txt․ Это позволяет логировать каждое действие, выполненное пользователем с помощью класса Calculator․
Теперь я проведу небольшой тест, чтобы продемонстрировать функциональность созданного класса Calculator․
public class Main {
public static void main(String[] args) {
Calculator calculator new Calculator;
ComplexNumber number1 new ComplexNumber(3, 2);
ComplexNumber number2 new ComplexNumber(1, 5);
calculator․add(number1);
calculator․subtract(number2);
calculator․multiply(number1);
calculator․divide(number2);
ComplexNumber result calculator․getResult;
}
}
После выполнения этого кода в файле log․txt появится следующая запись⁚
Сложение 0․0 0;0i и 3․0 2․0i 3;0 2․0i
Вычитание 1․0 5․0i из 3․0 2․0i 2․0 — 3․0i
Умножение 2․0 ─ 3․0i на 3․0 2․0i 13․0 4․0i
Деление 13․0 4․0i на 1․0 5․0i 1․8 — 0․6i
В этой статье я поделился своим опытом создания класса Calculator для комплексных чисел с логированием действий пользователя․ Я использовал базовый класс ComplexNumber для представления комплексных чисел и реализовал арифметические операции с их помощью․ Кроме того, я добавил возможность логировать действия пользователя в файл․ Надеюсь, эта информация оказалась полезной для вас и поможет вам при создании классов для работы с комплексными числами․