diff --git a/.gitignore b/.gitignore index a1c2a23..3004d02 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ # Compiled class file -*.class # Log file *.log diff --git a/Calculator/Choice.java b/Calculator/Choice.java new file mode 100644 index 0000000..0b8b3c5 --- /dev/null +++ b/Calculator/Choice.java @@ -0,0 +1,17 @@ +package Calculator; + +import java.util.Scanner; + +/**В классе происходит считывание варианта операции от пользователя.*/ +public class Choice { + + Scanner sc = new Scanner(System.in); + + public int getChoice() { + System.out.println("Choice operation:"); + System.out.println("\t1. Sum "); + System.out.println("\t2. Mult "); + System.out.println("\t3. Div "); + return sc.nextInt(); + } +} diff --git a/Calculator/GoProgram/Choice.py b/Calculator/GoProgram/Choice.py new file mode 100644 index 0000000..18a62fb --- /dev/null +++ b/Calculator/GoProgram/Choice.py @@ -0,0 +1,8 @@ +class Choice: + + def get_choice(self): + print("1 Sum ") + print("2 Mult ") + print("3 Div ") + user_choice = input("Choice operation: ") + return user_choice diff --git a/Calculator/GoProgram/Program.py b/Calculator/GoProgram/Program.py new file mode 100644 index 0000000..8367948 --- /dev/null +++ b/Calculator/GoProgram/Program.py @@ -0,0 +1,19 @@ +from Calculator.MVP.Model import Model +from Calculator.MVP.Presenter import Presenter +from Calculator.MVP.View import View + + +def main(): + presenter = Presenter(Model(), View()) + presenter.button_click() + + +class Program: + + main() + + + + + + diff --git a/Calculator/IResult.java b/Calculator/IResult.java new file mode 100644 index 0000000..19febdd --- /dev/null +++ b/Calculator/IResult.java @@ -0,0 +1,6 @@ +package Calculator; + +/**В интерфейсе находится метод, принимающий в себя два аргумента, с котор будут производиться арифметические действия; метод возвращает результат. */ +public interface IResult { + double result(double x, double y); +} diff --git a/Calculator/Logger/Log.java b/Calculator/Logger/Log.java new file mode 100644 index 0000000..5765ad8 --- /dev/null +++ b/Calculator/Logger/Log.java @@ -0,0 +1,20 @@ +package Calculator.Logger; + +import java.io.FileWriter; +import java.io.IOException; + +public class Log { + public void logInfo(double x, double y, double result) { + try ( + FileWriter writer = new FileWriter("C:\\Users\\Operator\\IdeaProjects\\java_project\\src\\Calculator\\Logger\\log.txt", true)) + + + { + String text = String.format("", x, y, result); + writer.write(text); + writer.flush(); + } catch (IOException ex) { + System.out.println(ex.getMessage()); + } + } +} diff --git a/Calculator/Logger/log.txt b/Calculator/Logger/log.txt new file mode 100644 index 0000000..105acae --- /dev/null +++ b/Calculator/Logger/log.txt @@ -0,0 +1 @@ +54.0 + 6.0 = 60.0 diff --git a/Calculator/MVP/Model.java b/Calculator/MVP/Model.java new file mode 100644 index 0000000..09b581e --- /dev/null +++ b/Calculator/MVP/Model.java @@ -0,0 +1,25 @@ +package Calculator.MVP; + +import Calculator.Choice; +import Calculator.OperationsInitialization.Div; +import Calculator.OperationsInitialization.Mult; +import Calculator.OperationsInitialization.Sum; +import Calculator.OperationsRun.RunDiv; +import Calculator.OperationsRun.RunMult; +import Calculator.OperationsRun.RunSum; + +/**В классе производится основное действие калькулятора, выбирается пункт меню и далее от выбранной цифры воспроизводится нужная операция.*/ +public class Model { + Choice choice = new Choice(); + public void run() { + int getChoice = choice.getChoice(); + RunSum runSum = new RunSum(new View(), new Sum()); + RunMult runMult = new RunMult(new View(), new Mult()); + RunDiv runDiv = new RunDiv(new View(), new Div()); + switch (getChoice) { + case 1 -> runSum.runOperation(); + case 2 -> runMult.runOperation(); + case 3 -> runDiv.runOperation(); + } + } +} diff --git a/Calculator/MVP/Model.py b/Calculator/MVP/Model.py new file mode 100644 index 0000000..0d54ad3 --- /dev/null +++ b/Calculator/MVP/Model.py @@ -0,0 +1,17 @@ +from Calculator.GoProgram.Choice import Choice +from Calculator.OperationsRun.RunDiv import RunDiv +from Calculator.OperationsRun.RunMult import RunMult +from Calculator.OperationsRun.RunSum import RunSum + + +class Model: + + def run(self, choice_user=Choice()): + user_choice = choice_user.get_choice() + run_sum = RunSum() + run_mult = RunMult() + run_div = RunDiv() + match user_choice: + case "1": run_sum.run_operation() + case "2": run_mult.run_operation() + case "3": run_div.run_operation() diff --git a/Calculator/MVP/Presenter.java b/Calculator/MVP/Presenter.java new file mode 100644 index 0000000..3604a8e --- /dev/null +++ b/Calculator/MVP/Presenter.java @@ -0,0 +1,15 @@ +package Calculator.MVP; + +/**Класс связывает Model и View */ +public class Presenter { + View view; + Model model; + + public Presenter(Model model, View view) { + this.model = model; + this.view = view; + } + public void buttonClick() { + model.run(); + } +} diff --git a/Calculator/MVP/Presenter.py b/Calculator/MVP/Presenter.py new file mode 100644 index 0000000..fd5d363 --- /dev/null +++ b/Calculator/MVP/Presenter.py @@ -0,0 +1,14 @@ +from Calculator.MVP.Model import Model +from Calculator.MVP.View import View + + +class Presenter: + view = View() + model = Model() + + def __init__(self, model, view): + self.model = model + self.view = view + + def button_click(self): + self.model.run() diff --git a/Calculator/MVP/View.java b/Calculator/MVP/View.java new file mode 100644 index 0000000..15c9548 --- /dev/null +++ b/Calculator/MVP/View.java @@ -0,0 +1,19 @@ +package Calculator.MVP; + +import java.util.Scanner; + +/**В классе происходит работа с интерфейсом, считываются и выводятся данные.*/ +public class View { + + Scanner sc = new Scanner(System.in); + + /**Метод позволяет считать данные, получить числа, с которыми можно работать в дальнейшем, складывать и т.д..*/ + public double getValue(String data) { + System.out.println(data); + return sc.nextDouble(); + } + + /**Метод выводит данные*/ + public void show(double value, String data) { System.out.printf("%s %s", data, value); } + +} diff --git a/Calculator/MVP/View.py b/Calculator/MVP/View.py new file mode 100644 index 0000000..eca4d47 --- /dev/null +++ b/Calculator/MVP/View.py @@ -0,0 +1,9 @@ +class View: + + def get_value(self, data): + print(data) + user_inp = int(input()) + return user_inp + + def show(self, value, data): + print(f"{data}{value}") diff --git a/Calculator/OperationsInitialization/Div.java b/Calculator/OperationsInitialization/Div.java new file mode 100644 index 0000000..c2639a6 --- /dev/null +++ b/Calculator/OperationsInitialization/Div.java @@ -0,0 +1,10 @@ +package Calculator.OperationsInitialization; + +import Calculator.IResult; + +public class Div implements IResult { + @Override + public double result(double x, double y) { + return x / y; + } +} diff --git a/Calculator/OperationsInitialization/Mult.java b/Calculator/OperationsInitialization/Mult.java new file mode 100644 index 0000000..e22df9d --- /dev/null +++ b/Calculator/OperationsInitialization/Mult.java @@ -0,0 +1,11 @@ +package Calculator.OperationsInitialization; + +import Calculator.IResult; + +public class Mult implements IResult { + + @Override + public double result(double x, double y) { + return x * y; + } +} diff --git a/Calculator/OperationsInitialization/Sum.java b/Calculator/OperationsInitialization/Sum.java new file mode 100644 index 0000000..7305dff --- /dev/null +++ b/Calculator/OperationsInitialization/Sum.java @@ -0,0 +1,12 @@ +package Calculator.OperationsInitialization; + +import Calculator.IResult; + +/**В классе находится метод, в котором происходит сложение двух чисел.*/ +public class Sum implements IResult { + + @Override + public double result(double x, double y) { + return x + y; + } +} diff --git a/Calculator/OperationsInitializations/Div.py b/Calculator/OperationsInitializations/Div.py new file mode 100644 index 0000000..209d6ee --- /dev/null +++ b/Calculator/OperationsInitializations/Div.py @@ -0,0 +1,6 @@ +from Calculator.OperationsRun.ResultOperation import ResultOperation + + +class Div(ResultOperation): + def result(self, x, y): + return x / y diff --git a/Calculator/OperationsInitializations/Mult.py b/Calculator/OperationsInitializations/Mult.py new file mode 100644 index 0000000..0c71b52 --- /dev/null +++ b/Calculator/OperationsInitializations/Mult.py @@ -0,0 +1,6 @@ +from Calculator.OperationsRun.ResultOperation import ResultOperation + + +class Mult(ResultOperation): + def result(self, x, y): + return x * y diff --git a/Calculator/OperationsInitializations/Sum.py b/Calculator/OperationsInitializations/Sum.py new file mode 100644 index 0000000..b38fa7f --- /dev/null +++ b/Calculator/OperationsInitializations/Sum.py @@ -0,0 +1,6 @@ +from Calculator.OperationsRun.ResultOperation import ResultOperation + + +class Sum(ResultOperation): + def result(self, x, y): + return x + y diff --git a/Calculator/OperationsRun/IRun.java b/Calculator/OperationsRun/IRun.java new file mode 100644 index 0000000..13fefa3 --- /dev/null +++ b/Calculator/OperationsRun/IRun.java @@ -0,0 +1,7 @@ +package Calculator.OperationsRun; + +/**В интерфейсе находится метод, запускающий определенную операцию, в зависимости от выбранной цифры. */ +public interface IRun { + public void runOperation(); + +} diff --git a/Calculator/OperationsRun/ResultOperation.py b/Calculator/OperationsRun/ResultOperation.py new file mode 100644 index 0000000..3d96d5b --- /dev/null +++ b/Calculator/OperationsRun/ResultOperation.py @@ -0,0 +1,4 @@ +class ResultOperation: + + def result(self, x, y): + pass diff --git a/Calculator/OperationsRun/Run.py b/Calculator/OperationsRun/Run.py new file mode 100644 index 0000000..e7c05eb --- /dev/null +++ b/Calculator/OperationsRun/Run.py @@ -0,0 +1,4 @@ +class Run: + + def run_operation(self): + pass diff --git a/Calculator/OperationsRun/RunDiv.java b/Calculator/OperationsRun/RunDiv.java new file mode 100644 index 0000000..d590348 --- /dev/null +++ b/Calculator/OperationsRun/RunDiv.java @@ -0,0 +1,42 @@ +package Calculator.OperationsRun; + +import Calculator.Logger.ILog; +import Calculator.Logger.Log; +import Calculator.OperationsInitialization.Div; +import Calculator.MVP.View; + +import java.io.FileWriter; +import java.io.IOException; + +/**В классе находится метод, запускающий операцию деления.*/ +public class RunDiv extends Log implements IRun { + View view; + Div div; + + public RunDiv(View view, Div div) { + this.view = view; + this.div = div; + } + @Override + public void runOperation() { + double x = view.getValue("Введите x: "); + double y = view.getValue("Введите y: "); + double res = div.result(x, y); + logInfo(x, y, res); + view.show(res, "Div = "); + } + + @Override + public void logInfo(double x, double y, double result) { + try(FileWriter writer = new FileWriter("C:\\Users\\Operator\\IdeaProjects\\java_project\\src\\Calculator\\Logger\\log.txt", true)) + { + String text = String.format("%s / %s = %s\n", x, y, result); + writer.write(text); + writer.flush(); + } + catch(IOException ex) { + System.out.println(ex.getMessage()); + } + } +} + diff --git a/Calculator/OperationsRun/RunDiv.py b/Calculator/OperationsRun/RunDiv.py new file mode 100644 index 0000000..eeccf14 --- /dev/null +++ b/Calculator/OperationsRun/RunDiv.py @@ -0,0 +1,14 @@ +from Calculator.OperationsInitializations.Div import Div +from Calculator.OperationsRun.Run import Run +from Calculator.MVP.View import View + + +class RunDiv(Run): + + def run_operation(self): + view = View() + div = Div() + x = view.get_value("Введите x: ") + y = view.get_value("Введите y: ") + res = div.result(x, y) + view.show(res, "Div : ") diff --git a/Calculator/OperationsRun/RunMult.java b/Calculator/OperationsRun/RunMult.java new file mode 100644 index 0000000..13a704a --- /dev/null +++ b/Calculator/OperationsRun/RunMult.java @@ -0,0 +1,45 @@ +package Calculator.OperationsRun; + +import Calculator.Logger.Log; +import Calculator.OperationsInitialization.Mult; +import Calculator.MVP.View; + +import java.io.FileWriter; +import java.io.IOException; + +/** + * В классе находится метод, запускающий операцию умножения. + */ +public class RunMult extends Log implements IRun { + View view; + Mult mult; + + public RunMult(View view, Mult mult) { + this.view = view; + this.mult = mult; + } + + @Override + public void runOperation() { + double x = view.getValue("Введите x: "); + double y = view.getValue("Введите y: "); + double res = mult.result(x, y); + logInfo(x, y, res); + view.show(res, "Mult = "); + } + + @Override + public void logInfo(double x, double y, double result) { + { + try (FileWriter writer = new FileWriter("C:\\Users\\Operator\\IdeaProjects\\java_project\\src\\Calculator\\Logger\\log.txt", true)) { + String text = String.format("%s * %s = %s\n", x, y, result); + writer.write(text); + writer.flush(); + } catch (IOException ex) { + System.out.println(ex.getMessage()); + } + } + } +} + + diff --git a/Calculator/OperationsRun/RunMult.py b/Calculator/OperationsRun/RunMult.py new file mode 100644 index 0000000..f141793 --- /dev/null +++ b/Calculator/OperationsRun/RunMult.py @@ -0,0 +1,14 @@ +from Calculator.OperationsInitializations.Mult import Mult +from Calculator.OperationsRun.Run import Run +from Calculator.MVP.View import View + + +class RunMult(Run): + + def run_operation(self): + view = View() + mult = Mult() + x = view.get_value("Введите x: ") + y = view.get_value("Введите y: ") + res = mult.result(x, y) + view.show(res, "Mult : ") diff --git a/Calculator/OperationsRun/RunSum.java b/Calculator/OperationsRun/RunSum.java new file mode 100644 index 0000000..7247428 --- /dev/null +++ b/Calculator/OperationsRun/RunSum.java @@ -0,0 +1,44 @@ +package Calculator.OperationsRun; + +import Calculator.Logger.Log; +import Calculator.OperationsInitialization.Sum; +import Calculator.MVP.View; + +import java.io.FileWriter; +import java.io.IOException; + +/** + * В классе реализован запуск выполнения сложения двух чисел. + */ +public class RunSum extends Log implements IRun { + View view; + Sum sum; + + public RunSum(View view, Sum sum) { + this.view = view; + this.sum = sum; + } + + @Override + public void runOperation() { + double x = view.getValue("Введите x: "); + double y = view.getValue("Введите y: "); + double res = sum.result(x, y); + logInfo(x, y, res); + view.show(res, "Sum = "); + } + + @Override + public void logInfo(double x, double y, double result) { + { + try (FileWriter writer = new FileWriter("C:\\Users\\Operator\\IdeaProjects\\java_project\\src\\Calculator\\Logger\\log.txt", true)) { + String text = String.format("%s + %s = %s\n", x, y, result); + writer.write(text); + writer.flush(); + } catch (IOException ex) { + System.out.println(ex.getMessage()); + } + } + } +} + diff --git a/Calculator/OperationsRun/RunSum.py b/Calculator/OperationsRun/RunSum.py new file mode 100644 index 0000000..2339ecc --- /dev/null +++ b/Calculator/OperationsRun/RunSum.py @@ -0,0 +1,15 @@ +from Calculator.OperationsRun.Run import Run +from Calculator.OperationsInitializations.Sum import Sum +from Calculator.MVP.View import View + + +class RunSum(Run): + + def run_operation(self): + view = View() + sum = Sum() + x = view.get_value("Введите x: ") + y = view.get_value("Введите y: ") + res = sum.result(x, y) + view.show(res, "Sum : ") + diff --git a/Calculator/Program.java b/Calculator/Program.java new file mode 100644 index 0000000..7ad94c6 --- /dev/null +++ b/Calculator/Program.java @@ -0,0 +1,14 @@ +package Calculator; + +import Calculator.MVP.Model; +import Calculator.MVP.Presenter; +import Calculator.MVP.View; + +public class Program { + + public static void main(String[] args) { + + Presenter p = new Presenter(new Model(), new View()); + p.buttonClick(); + } +} diff --git a/MyCulc/Console/View.java b/MyCulc/Console/View.java new file mode 100644 index 0000000..3a73a73 --- /dev/null +++ b/MyCulc/Console/View.java @@ -0,0 +1,23 @@ +package MyCulc.Console; + +import java.util.Scanner; + +public class View { + Scanner sc = new Scanner(System.in); + + public double getValue(String data) { + System.out.println(data); + return sc.nextDouble(); + } + public void show(double value, String data) { System.out.printf("%s %s", data, value); } + + + public int getChoice() { + System.out.println("Choice operation:"); + System.out.println("\t1. Sum "); + System.out.println("\t2. Mult "); + System.out.println("\t3. Div "); + return sc.nextInt(); + } + +} diff --git a/MyCulc/Main/Program.java b/MyCulc/Main/Program.java new file mode 100644 index 0000000..0882e36 --- /dev/null +++ b/MyCulc/Main/Program.java @@ -0,0 +1,20 @@ +package MyCulc.Main; + + +import MyCulc.Console.View; +import MyCulc.Model.Div; +import MyCulc.Model.Mult; +import MyCulc.Model.SumCalc; +import MyCulc.Presenterrr.PresentOf; + +public class Program { + + public static void main(String[] args) { + + PresentOf ps = new PresentOf<>(new SumCalc(),new View()); + ps.buttonClick(); + + } +} + + diff --git a/MyCulc/Menu/Menu.java b/MyCulc/Menu/Menu.java new file mode 100644 index 0000000..389bcef --- /dev/null +++ b/MyCulc/Menu/Menu.java @@ -0,0 +1,24 @@ +package MyCulc.Menu; + +import MyCulc.Console.View; +import MyCulc.Model.CalcModel; +import MyCulc.Presenterrr.Presenter; + +import java.util.Scanner; + +public class Menu { + Presenter presenter; + View view; + CalcModel calcModel; + + public Menu() { + presenter = new Presenter(calcModel, view); + } + + Scanner sc = new Scanner(System.in); + + public int val = sc.nextInt(); + + } + + diff --git a/MyCulc/Model/CalcModel.java b/MyCulc/Model/CalcModel.java new file mode 100644 index 0000000..e9cda79 --- /dev/null +++ b/MyCulc/Model/CalcModel.java @@ -0,0 +1,11 @@ +package MyCulc.Model; + +public abstract class CalcModel implements ICalcModel { + + public double x; + public double y; + + + +} + diff --git a/MyCulc/Model/Div.java b/MyCulc/Model/Div.java new file mode 100644 index 0000000..55237a3 --- /dev/null +++ b/MyCulc/Model/Div.java @@ -0,0 +1,8 @@ +package MyCulc.Model; + +public class Div extends SumCalc{ + @Override + public double result() { + return x / y; + } +} diff --git a/MyCulc/Model/ICalcModel.java b/MyCulc/Model/ICalcModel.java new file mode 100644 index 0000000..d79dc5a --- /dev/null +++ b/MyCulc/Model/ICalcModel.java @@ -0,0 +1,7 @@ +package MyCulc.Model; + +public interface ICalcModel { + double result(); + void setX(double value); + void setY(double value); +} diff --git a/MyCulc/Model/Mult.java b/MyCulc/Model/Mult.java new file mode 100644 index 0000000..32310a4 --- /dev/null +++ b/MyCulc/Model/Mult.java @@ -0,0 +1,8 @@ +package MyCulc.Model; + +public class Mult extends SumCalc { + @Override + public double result() { + return x * y; + } +} diff --git a/MyCulc/Model/SumCalc.java b/MyCulc/Model/SumCalc.java new file mode 100644 index 0000000..283da3e --- /dev/null +++ b/MyCulc/Model/SumCalc.java @@ -0,0 +1,14 @@ +package MyCulc.Model; + +public class SumCalc extends CalcModel { + + public double result() { + return x + y; + } + public void setX(double value) { + super.x = value; + } + public void setY(double value) { + super.y = value; + } +} diff --git a/MyCulc/Presenterrr/PresentOf.java b/MyCulc/Presenterrr/PresentOf.java new file mode 100644 index 0000000..4ae14f1 --- /dev/null +++ b/MyCulc/Presenterrr/PresentOf.java @@ -0,0 +1,65 @@ +package MyCulc.Presenterrr; + +import MyCulc.Console.View; +import MyCulc.Model.*; + +public class PresentOf { + View view; + CalcModel model; + SumCalc sumCalc; + Mult mult; + Div div;; + + public PresentOf(T m , View view) { + this.model = m; + this.view = view; + } + + + public void runOperation1() { + double a = view.getValue("a: "); + double b = view.getValue("b: "); + model.setX(a); + model.setY(b); + double res = sumCalc.result(); + view.show(res, "Sum: "); + } + + public void runOperation2() { + double a = view.getValue("a: "); + double b = view.getValue("b: "); + model.setX(a); + model.setY(b); + double res = mult.result(); + view.show(res, "Mult: "); + } + + public void runOperation3() { + double a = view.getValue("a: "); + double b = view.getValue("b: "); + model.setX(a); + model.setY(b); + double res = div.result(); + view.show(res, "Div: "); + } + + public void buttonClick() { + int choice = view.getChoice(); + switch (choice) { + case 1 -> runOperation1(); + case 2 -> runOperation2(); + case 3 -> runOperation3(); + } + } + +} + +//class Class{ +// +// PresentOf ps = new PresentOf<>(new SumCalc(), new View()); +// PresentOf pm = new PresentOf<>(new Mult(), new View()); +// PresentOf
pd = new PresentOf<>(new Div(), new View()); +// +//} +// + diff --git a/MyCulc/Presenterrr/Presenter.java b/MyCulc/Presenterrr/Presenter.java new file mode 100644 index 0000000..489c44a --- /dev/null +++ b/MyCulc/Presenterrr/Presenter.java @@ -0,0 +1,26 @@ +package MyCulc.Presenterrr; + +import MyCulc.Console.View; +import MyCulc.Model.CalcModel; +import MyCulc.Model.Div; +import MyCulc.Model.Mult; + +public class Presenter { + View view; + CalcModel model; + Mult mult; + Div dv; + + public Presenter(CalcModel m, View v) { + this.model = m; + this.view = v; + } + public void buttonClick() { + double x = view.getValue("Введите x: "); + double y = view.getValue("Введите y: "); + model.setX(x); + model.setY(y); + double res = model.result(); + view.show(res, "Sum = "); + } +}