summaryrefslogtreecommitdiff
path: root/java/07-simple-objects-better-use-jar
diff options
context:
space:
mode:
authorKamal Wickramanayake <kamal@inbox.lk>2026-02-14 17:09:23 +0530
committerKamal Wickramanayake <kamal@inbox.lk>2026-02-14 17:09:23 +0530
commit739d520c9fe985813f85d76b591daf495f702464 (patch)
tree60300b153f929c00a995b77c6dfac3a61b379c56 /java/07-simple-objects-better-use-jar
parentdc803b0ef51898139783a3d0ab49223d8494e936 (diff)
Added a sample project that shows how to create and use jar files.
Diffstat (limited to 'java/07-simple-objects-better-use-jar')
-rw-r--r--java/07-simple-objects-better-use-jar/myaccountslib/.gitignore2
-rw-r--r--java/07-simple-objects-better-use-jar/myaccountslib/README12
-rw-r--r--java/07-simple-objects-better-use-jar/myaccountslib/src/Account.java26
-rw-r--r--java/07-simple-objects-better-use-jar/myaccountslib/src/AccountManager.java39
-rw-r--r--java/07-simple-objects-better-use-jar/myapp/.gitignore1
-rw-r--r--java/07-simple-objects-better-use-jar/myapp/AccountApp.java16
-rw-r--r--java/07-simple-objects-better-use-jar/myapp/README10
7 files changed, 106 insertions, 0 deletions
diff --git a/java/07-simple-objects-better-use-jar/myaccountslib/.gitignore b/java/07-simple-objects-better-use-jar/myaccountslib/.gitignore
new file mode 100644
index 0000000..e493dd6
--- /dev/null
+++ b/java/07-simple-objects-better-use-jar/myaccountslib/.gitignore
@@ -0,0 +1,2 @@
+bin
+dist
diff --git a/java/07-simple-objects-better-use-jar/myaccountslib/README b/java/07-simple-objects-better-use-jar/myaccountslib/README
new file mode 100644
index 0000000..94d053e
--- /dev/null
+++ b/java/07-simple-objects-better-use-jar/myaccountslib/README
@@ -0,0 +1,12 @@
+# NOTE:
+# On Windows,
+# 1. Use \ as the directory seperator.
+
+# Compile:
+mkdir bin
+javac --source-path src/ -d bin/ src/*.java
+
+# Build jar file:
+mkdir dist
+cd bin
+jar cf ../dist/myaccountslib.jar *.class
diff --git a/java/07-simple-objects-better-use-jar/myaccountslib/src/Account.java b/java/07-simple-objects-better-use-jar/myaccountslib/src/Account.java
new file mode 100644
index 0000000..4b26eca
--- /dev/null
+++ b/java/07-simple-objects-better-use-jar/myaccountslib/src/Account.java
@@ -0,0 +1,26 @@
+public class Account {
+
+ /* Declaring fields - represent state */
+
+ int accountNumber;
+ double balance;
+
+ public Account(int accountNumber, double balance) {
+ this.accountNumber = accountNumber;
+ this.balance = balance;
+ }
+
+ public int getAccountNumber() {
+ return accountNumber;
+ }
+ public void setAccountNumber(int accountNumber) {
+ this.accountNumber = accountNumber;
+ }
+ public double getBalance() {
+ return balance;
+ }
+ public void setBalance(double balance) {
+ this.balance = balance;
+ }
+
+}
diff --git a/java/07-simple-objects-better-use-jar/myaccountslib/src/AccountManager.java b/java/07-simple-objects-better-use-jar/myaccountslib/src/AccountManager.java
new file mode 100644
index 0000000..5a3368c
--- /dev/null
+++ b/java/07-simple-objects-better-use-jar/myaccountslib/src/AccountManager.java
@@ -0,0 +1,39 @@
+import java.util.HashMap;
+import java.util.Map;
+
+public class AccountManager {
+
+ private Map<Integer, Account> accounts = new HashMap<>();
+
+ /*
+ This is a called a constructor. It gets executed when an object of this class is
+ created.
+ */
+ public AccountManager() {
+ // For testing, create some account objects.
+ // In a real systems, account data will be in a storage system like a database.
+
+ Account account = new Account(1, 10.0);
+ accounts.put(account.getAccountNumber(), account);
+
+ account = new Account(2, 20.0);
+ accounts.put(account.getAccountNumber(), account);
+
+ account = new Account(3, 10.0);
+ accounts.put(account.getAccountNumber(), account);
+ }
+
+ public void withdraw(int accountId, double amount) {
+ Account account = accounts.get(accountId);
+ account.setBalance(account.getBalance() - amount);
+ }
+
+ public void deposit(int accountId, double amount) {
+ Account account = accounts.get(accountId);
+ account.setBalance(account.getBalance() + amount);
+ }
+
+ public double getBalance(int accountId) {
+ return accounts.get(accountId).getBalance();
+ }
+}
diff --git a/java/07-simple-objects-better-use-jar/myapp/.gitignore b/java/07-simple-objects-better-use-jar/myapp/.gitignore
new file mode 100644
index 0000000..6b468b6
--- /dev/null
+++ b/java/07-simple-objects-better-use-jar/myapp/.gitignore
@@ -0,0 +1 @@
+*.class
diff --git a/java/07-simple-objects-better-use-jar/myapp/AccountApp.java b/java/07-simple-objects-better-use-jar/myapp/AccountApp.java
new file mode 100644
index 0000000..3399770
--- /dev/null
+++ b/java/07-simple-objects-better-use-jar/myapp/AccountApp.java
@@ -0,0 +1,16 @@
+public class AccountApp {
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+ AccountManager accountManager = new AccountManager();
+
+ System.out.println(accountManager.getBalance(2));
+
+ accountManager.deposit(2, 2.0);
+
+ System.out.println(accountManager.getBalance(2));
+ }
+
+}
diff --git a/java/07-simple-objects-better-use-jar/myapp/README b/java/07-simple-objects-better-use-jar/myapp/README
new file mode 100644
index 0000000..80ed401
--- /dev/null
+++ b/java/07-simple-objects-better-use-jar/myapp/README
@@ -0,0 +1,10 @@
+# NOTE:
+# On Windows,
+# 1. Instead of using ':' as the classpath seperator, use ';'.
+# 2. Use \ as the directory seperator.
+
+# Compile
+javac -cp ../myaccountslib/dist/myaccountslib.jar:. AccountApp.java
+
+# Run
+java -cp ../myaccountslib/dist/myaccountslib.jar:. AccountApp