Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# Compiled class file
*.class

# Log file
*.log
Expand Down
17 changes: 17 additions & 0 deletions Calculator/Choice.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
8 changes: 8 additions & 0 deletions Calculator/GoProgram/Choice.py
Original file line number Diff line number Diff line change
@@ -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
19 changes: 19 additions & 0 deletions Calculator/GoProgram/Program.py
Original file line number Diff line number Diff line change
@@ -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()






6 changes: 6 additions & 0 deletions Calculator/IResult.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package Calculator;

/**В интерфейсе находится метод, принимающий в себя два аргумента, с котор будут производиться арифметические действия; метод возвращает результат. */
public interface IResult {
double result(double x, double y);
}
20 changes: 20 additions & 0 deletions Calculator/Logger/Log.java
Original file line number Diff line number Diff line change
@@ -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());
}
}
}
1 change: 1 addition & 0 deletions Calculator/Logger/log.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
54.0 + 6.0 = 60.0
25 changes: 25 additions & 0 deletions Calculator/MVP/Model.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
17 changes: 17 additions & 0 deletions Calculator/MVP/Model.py
Original file line number Diff line number Diff line change
@@ -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()
15 changes: 15 additions & 0 deletions Calculator/MVP/Presenter.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
14 changes: 14 additions & 0 deletions Calculator/MVP/Presenter.py
Original file line number Diff line number Diff line change
@@ -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()
19 changes: 19 additions & 0 deletions Calculator/MVP/View.java
Original file line number Diff line number Diff line change
@@ -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); }

}
9 changes: 9 additions & 0 deletions Calculator/MVP/View.py
Original file line number Diff line number Diff line change
@@ -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}")
10 changes: 10 additions & 0 deletions Calculator/OperationsInitialization/Div.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
11 changes: 11 additions & 0 deletions Calculator/OperationsInitialization/Mult.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
12 changes: 12 additions & 0 deletions Calculator/OperationsInitialization/Sum.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
6 changes: 6 additions & 0 deletions Calculator/OperationsInitializations/Div.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from Calculator.OperationsRun.ResultOperation import ResultOperation


class Div(ResultOperation):
def result(self, x, y):
return x / y
6 changes: 6 additions & 0 deletions Calculator/OperationsInitializations/Mult.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from Calculator.OperationsRun.ResultOperation import ResultOperation


class Mult(ResultOperation):
def result(self, x, y):
return x * y
6 changes: 6 additions & 0 deletions Calculator/OperationsInitializations/Sum.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from Calculator.OperationsRun.ResultOperation import ResultOperation


class Sum(ResultOperation):
def result(self, x, y):
return x + y
7 changes: 7 additions & 0 deletions Calculator/OperationsRun/IRun.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package Calculator.OperationsRun;

/**В интерфейсе находится метод, запускающий определенную операцию, в зависимости от выбранной цифры. */
public interface IRun {
public void runOperation();

}
4 changes: 4 additions & 0 deletions Calculator/OperationsRun/ResultOperation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
class ResultOperation:

def result(self, x, y):
pass
4 changes: 4 additions & 0 deletions Calculator/OperationsRun/Run.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
class Run:

def run_operation(self):
pass
42 changes: 42 additions & 0 deletions Calculator/OperationsRun/RunDiv.java
Original file line number Diff line number Diff line change
@@ -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());
}
}
}

14 changes: 14 additions & 0 deletions Calculator/OperationsRun/RunDiv.py
Original file line number Diff line number Diff line change
@@ -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 : ")
45 changes: 45 additions & 0 deletions Calculator/OperationsRun/RunMult.java
Original file line number Diff line number Diff line change
@@ -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());
}
}
}
}


14 changes: 14 additions & 0 deletions Calculator/OperationsRun/RunMult.py
Original file line number Diff line number Diff line change
@@ -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 : ")
Loading