From d29954450bffd15a57fd415a88c1a334d7712f4a Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 26 Feb 2026 23:05:26 +0100 Subject: [PATCH] =?UTF-8?q?start=20p=C3=A5=20oppg=204-8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/temppackage/Exchange.java | 48 +++++++++++++++++++ src/main/java/temppackage/Player.java | 13 +++++ src/main/java/temppackage/Purchase.java | 17 +++++++ .../java/temppackage/PurchaseCalculator.java | 36 ++++++++++++++ src/main/java/temppackage/Sale.java | 14 ++++++ src/main/java/temppackage/SaleCalculator.java | 43 +++++++++++++++++ src/main/java/temppackage/Transaction.java | 42 ++++++++++++++++ .../java/temppackage/TransactionArchive.java | 47 ++++++++++++++++++ .../temppackage/TransactionCalculator.java | 10 ++++ 9 files changed, 270 insertions(+) create mode 100644 src/main/java/temppackage/Exchange.java create mode 100644 src/main/java/temppackage/Player.java create mode 100644 src/main/java/temppackage/Purchase.java create mode 100644 src/main/java/temppackage/PurchaseCalculator.java create mode 100644 src/main/java/temppackage/Sale.java create mode 100644 src/main/java/temppackage/SaleCalculator.java create mode 100644 src/main/java/temppackage/Transaction.java create mode 100644 src/main/java/temppackage/TransactionArchive.java create mode 100644 src/main/java/temppackage/TransactionCalculator.java diff --git a/src/main/java/temppackage/Exchange.java b/src/main/java/temppackage/Exchange.java new file mode 100644 index 0000000..ea8eef2 --- /dev/null +++ b/src/main/java/temppackage/Exchange.java @@ -0,0 +1,48 @@ +package temppackage; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; + +public class Exchange { + private String name; + private Map stocks; + private int weekNumber; + private Random random = new Random(); + + public Exchange(String name, List stockList){ + this.name = name; + this.stocks = new HashMap<>(); + this.weekNumber = 1; + } + + public void buy(Player player, Stock stock, BigDecimal quantity){ + Share shareToBuy = new Share(stock, quantity, stock.getPrice()); + Purchase purchase = new Purchase(shareToBuy, this.weekNumber); + purchase.commit(player); + } + + public void sell(Player player, Share share){ + Sale sale = new Sale(share, weekNumber); + sale.commit(player); + } + + public void advance(){ + this.weekNumber++; + } + + + public Map getStocks(){ + return this.stocks; + } + + public Stock geStock(String symbol){ + // filter med symbol eller company name + } + + + + +} diff --git a/src/main/java/temppackage/Player.java b/src/main/java/temppackage/Player.java new file mode 100644 index 0000000..b1b2757 --- /dev/null +++ b/src/main/java/temppackage/Player.java @@ -0,0 +1,13 @@ +package temppackage; + +import java.math.BigDecimal; + +public class Player { + private String name; + private BigDecimal startingMoney; + private BigDecimal money; + private Portfolio portfolio; + private TransactionArchive transactionArchive; + + +} diff --git a/src/main/java/temppackage/Purchase.java b/src/main/java/temppackage/Purchase.java new file mode 100644 index 0000000..6ff7a17 --- /dev/null +++ b/src/main/java/temppackage/Purchase.java @@ -0,0 +1,17 @@ +package temppackage; + +public class Purchase extends Transaction{ + + + public Purchase(Share share, int week){ + + + } + + @Override + public void commit(Player player) { + // TODO Auto-generated method stub + super.commit(player); + } + +} diff --git a/src/main/java/temppackage/PurchaseCalculator.java b/src/main/java/temppackage/PurchaseCalculator.java new file mode 100644 index 0000000..23df7c5 --- /dev/null +++ b/src/main/java/temppackage/PurchaseCalculator.java @@ -0,0 +1,36 @@ +package temppackage; + +import java.math.BigDecimal; + +public class PurchaseCalculator implements TransactionCalculator { + private BigDecimal purchasePrice; + private BigDecimal quantity; + + public PurchaseCalculator(Share share) { + this.purchasePrice = share.getPurchasePrice(); + this.quantity = share.getQuantity(); + } + + + + @Override + public BigDecimal calculateGross() { + return this.purchasePrice.multiply(this.quantity); + } + + @Override + public BigDecimal calculateComission() { + BigDecimal gross = this.calculateGross(); + return gross.multiply(BigDecimal.valueOf(0.05)); + } + + @Override + public BigDecimal calculateTax() { + return new BigDecimal("0"); + } + + @Override + public BigDecimal calculateTotal() { + return this.calculateGross().add(this.calculateTax().add(this.calculateComission())); + } +} diff --git a/src/main/java/temppackage/Sale.java b/src/main/java/temppackage/Sale.java new file mode 100644 index 0000000..7173e34 --- /dev/null +++ b/src/main/java/temppackage/Sale.java @@ -0,0 +1,14 @@ +package temppackage; + +public class Sale extends Transaction{ + public Sale(Share share, int week){ + + } + + @Override + public void commit(Player player) { + // TODO Auto-generated method stub + super.commit(player); + } + +} diff --git a/src/main/java/temppackage/SaleCalculator.java b/src/main/java/temppackage/SaleCalculator.java new file mode 100644 index 0000000..1860ced --- /dev/null +++ b/src/main/java/temppackage/SaleCalculator.java @@ -0,0 +1,43 @@ +package temppackage; + +import java.math.BigDecimal; + +public class SaleCalculator implements TransactionCalculator { + private BigDecimal purchasePrice; + private BigDecimal salesPrice; + private BigDecimal quantity; + + public SaleCalculator(Share share) { + this.purchasePrice = share.getPurchasePrice(); + this.salesPrice = share.getStock().getPrice(); + this.quantity = share.getQuantity(); + } + + @Override + public BigDecimal calculateGross() { + return this.salesPrice.multiply(this.quantity); + } + + @Override + public BigDecimal calculateComission() { + BigDecimal gross = this.calculateGross(); + return gross.multiply(BigDecimal.valueOf(0.05)); + } + + @Override + public BigDecimal calculateTax() { + BigDecimal gross = this.calculateGross(); + BigDecimal comission = this.calculateComission(); + BigDecimal buyPrice = this.purchasePrice.multiply(this.quantity); + BigDecimal earnings = gross.subtract(comission).subtract(comission).subtract(buyPrice); + return earnings.multiply(BigDecimal.valueOf(0.3)); + } + + @Override + public BigDecimal calculateTotal() { + BigDecimal gross = this.calculateGross(); + BigDecimal comission = this.calculateComission(); + BigDecimal tax = this.calculateTax(); + return gross.subtract(comission).subtract(tax); + } +} diff --git a/src/main/java/temppackage/Transaction.java b/src/main/java/temppackage/Transaction.java new file mode 100644 index 0000000..3c741a8 --- /dev/null +++ b/src/main/java/temppackage/Transaction.java @@ -0,0 +1,42 @@ +package temppackage; + +import temppackage.calculators.TransactionCalculator; + +public abstract class Transaction { + private Share share; + private int week; + private TransactionCalculator transactionCalculator; + private boolean commited; + + protected Transaction(Share share, int week, TransactionCalculator transactionCalculator){ + this.share = share; + this.week = week; + this.transactionCalculator = transactionCalculator; + this.commited = commited; + } + + public Share getShare(){ + return this.share; + } + + public int getWeeek(){ + return this.week; + } + + public TransactionCalculator getCalculator(){ + return this.transactionCalculator; + } + + public boolean isCommitted(){ + return this.commited; + } + + public void commit(Player player){ + //TODO + this.commited = true; + } + + + + +} diff --git a/src/main/java/temppackage/TransactionArchive.java b/src/main/java/temppackage/TransactionArchive.java new file mode 100644 index 0000000..a6d5c6e --- /dev/null +++ b/src/main/java/temppackage/TransactionArchive.java @@ -0,0 +1,47 @@ +package temppackage; + +import java.util.ArrayList; +import java.util.List; + +public class TransactionArchive { + List transactions; + + + public TransactionArchive() { + this.transactions = new ArrayList<>(); + } + + public boolean add(Transaction transaction){ + if (transactions.contains(transaction)){ + return false; + } + this.transactions.add(transaction); + return true; + } + + public boolean isEmpty(){ + return transactions.isEmpty(); + } + + public List getTransactions(int week){ + //TODO + return null; + } + + public List getPurchases(int week){ + //TODO + return null; + } + + public List getSales(int week){ + //TODO + return null; + } + + public int countDistinctWeeks(){ + //TODO + return 0; + } + + +} diff --git a/src/main/java/temppackage/TransactionCalculator.java b/src/main/java/temppackage/TransactionCalculator.java new file mode 100644 index 0000000..2158e5a --- /dev/null +++ b/src/main/java/temppackage/TransactionCalculator.java @@ -0,0 +1,10 @@ +package temppackage; + +import java.math.BigDecimal; + +public interface TransactionCalculator { + public BigDecimal calculateGross(); + public BigDecimal calculateComission(); + public BigDecimal calculateTax(); + public BigDecimal calculateTotal(); +}