diff --git a/oop/code/README.md b/oop/code/README.md index 4d30871..142c9ec 100644 --- a/oop/code/README.md +++ b/oop/code/README.md @@ -2,8 +2,10 @@ ## Bank transfers in procedural and object-oriented programming * [Procedural programming](../code/procedural_transfer.py) -* [Object-oriented programming](oop/src/main/java/com/scaler/lld/basics/OopBankAccount.java) -* [Unit test](oop/src/test/java/com/scaler/lld/basics/OopBankAccountTest.java) +* [Object-oriented programming](java/src/main/java/com/scaler/lld/basics/OopBankAccount.java) +* [Unit test](java/src/test/java/com/scaler/lld/basics/OopBankAccountTest.java) +* [Python OOP Code](python/main.py) +* [Golang Code](go/basic/main.go) ## Object-oriented programming ### Encapsulation diff --git a/oop/code/go/basic/bank/bank.go b/oop/code/go/basic/bank/bank.go new file mode 100644 index 0000000..a1aed82 --- /dev/null +++ b/oop/code/go/basic/bank/bank.go @@ -0,0 +1,56 @@ +package bank + +import "fmt" + +type BankAccount struct { + AccountNumber int64 + Name string + Balance float64 +} + +type BankAccountOps interface { + GetAccountNumber() (int64, error) + GetName() (string, error) + GetBalance() (float64, error) + Deposit(amount float64) error + Withdraw(amount float64) error + Transfer(destiantion *BankAccount, amount float64) error + PrintBalance() +} + +func NewBankAccount(number int64, name string, balance float64) *BankAccount { + return &BankAccount{AccountNumber: number, Name: name, Balance: balance} +} + +func (b *BankAccount) GetAccountNumber() (int64, error) { + return b.AccountNumber, nil +} + +func (b *BankAccount) GetName() (string, error) { + return b.Name, nil +} + +func (b *BankAccount) GetBalance() (float64, error) { + return b.Balance, nil +} + +func (b *BankAccount) Deposit(amount float64) error { + b.Balance += amount + return nil +} + +func (b *BankAccount) Withdraw(amount float64) error { + b.Balance -= amount + return nil +} + +func (b *BankAccount) Transfer(destiantion *BankAccount, amount float64) error { + b.Withdraw(amount) + destiantion.Deposit(amount) + + return nil +} + +func (b *BankAccount) PrintBalance() { + fmt.Println(b.AccountNumber, b.Name, b.Balance) +} diff --git a/oop/code/go/basic/bird/bird.go b/oop/code/go/basic/bird/bird.go new file mode 100644 index 0000000..80a7179 --- /dev/null +++ b/oop/code/go/basic/bird/bird.go @@ -0,0 +1,53 @@ +package bird + +import "fmt" + +type Bird struct { + weight float64 + colour string + size float64 +} + +func NewBird(weight, size float64, colour string) *Bird { + return &Bird{ + weight: weight, + colour: colour, + size: size, + } +} + +type FlyingBehaviour interface { + Fly() +} + +type SwimmingBehaviour interface { + Swim() +} + +type Eagle struct { + *Bird +} + +func (e *Eagle) Fly() { + fmt.Println("Eagle is flying") +} + +type Penguin struct { + *Bird +} + +func (p *Penguin) Swim() { + fmt.Println("Penguin is swimming") +} + +type Duck struct { + *Bird +} + +func (d *Duck) Fly() { + fmt.Println("Duck is flying") +} + +func (d *Duck) Swim() { + fmt.Println("Duck is swimming") +} diff --git a/oop/code/go/basic/go.mod b/oop/code/go/basic/go.mod new file mode 100644 index 0000000..7afe958 --- /dev/null +++ b/oop/code/go/basic/go.mod @@ -0,0 +1,3 @@ +module basic + +go 1.22.0 diff --git a/oop/code/go/basic/main.go b/oop/code/go/basic/main.go new file mode 100644 index 0000000..aec5337 --- /dev/null +++ b/oop/code/go/basic/main.go @@ -0,0 +1,21 @@ +package main + +import ( + "basic/bird" +) + +func main() { + bird1 := bird.NewBird(6.5, 2.1, "brown") + eagle := &bird.Eagle{Bird: bird1} + + bird2 := bird.NewBird(15.0, 1.2, "black and white") + penguin := &bird.Penguin{Bird: bird2} + + bird3 := bird.NewBird(2.5, 0.8, "white") + duck := &bird.Duck{Bird: bird3} + + eagle.Fly() + penguin.Swim() + duck.Fly() + duck.Swim() +} diff --git a/oop/code/oop/pom.xml b/oop/code/java/pom.xml similarity index 100% rename from oop/code/oop/pom.xml rename to oop/code/java/pom.xml diff --git a/oop/code/oop/src/main/java/com/scaler/lld/App.java b/oop/code/java/src/main/java/com/scaler/lld/App.java similarity index 100% rename from oop/code/oop/src/main/java/com/scaler/lld/App.java rename to oop/code/java/src/main/java/com/scaler/lld/App.java diff --git a/oop/code/oop/src/main/java/com/scaler/lld/basics/OopBankAccount.java b/oop/code/java/src/main/java/com/scaler/lld/basics/OopBankAccount.java similarity index 100% rename from oop/code/oop/src/main/java/com/scaler/lld/basics/OopBankAccount.java rename to oop/code/java/src/main/java/com/scaler/lld/basics/OopBankAccount.java diff --git a/oop/code/oop/src/main/java/com/scaler/lld/bird/Bird.java b/oop/code/java/src/main/java/com/scaler/lld/bird/Bird.java similarity index 100% rename from oop/code/oop/src/main/java/com/scaler/lld/bird/Bird.java rename to oop/code/java/src/main/java/com/scaler/lld/bird/Bird.java diff --git a/oop/code/oop/src/main/java/com/scaler/lld/bird/BirdType.java b/oop/code/java/src/main/java/com/scaler/lld/bird/BirdType.java similarity index 100% rename from oop/code/oop/src/main/java/com/scaler/lld/bird/BirdType.java rename to oop/code/java/src/main/java/com/scaler/lld/bird/BirdType.java diff --git a/oop/code/oop/src/main/java/com/scaler/lld/bird/Eagle.java b/oop/code/java/src/main/java/com/scaler/lld/bird/Eagle.java similarity index 100% rename from oop/code/oop/src/main/java/com/scaler/lld/bird/Eagle.java rename to oop/code/java/src/main/java/com/scaler/lld/bird/Eagle.java diff --git a/oop/code/oop/src/main/java/com/scaler/lld/bird/Parrot.java b/oop/code/java/src/main/java/com/scaler/lld/bird/Parrot.java similarity index 100% rename from oop/code/oop/src/main/java/com/scaler/lld/bird/Parrot.java rename to oop/code/java/src/main/java/com/scaler/lld/bird/Parrot.java diff --git a/oop/code/oop/src/main/java/com/scaler/lld/bird/Runner.java b/oop/code/java/src/main/java/com/scaler/lld/bird/Runner.java similarity index 100% rename from oop/code/oop/src/main/java/com/scaler/lld/bird/Runner.java rename to oop/code/java/src/main/java/com/scaler/lld/bird/Runner.java diff --git a/oop/code/oop/src/main/java/com/scaler/lld/questions/Book.java b/oop/code/java/src/main/java/com/scaler/lld/questions/Book.java similarity index 100% rename from oop/code/oop/src/main/java/com/scaler/lld/questions/Book.java rename to oop/code/java/src/main/java/com/scaler/lld/questions/Book.java diff --git a/oop/code/oop/src/main/java/com/scaler/lld/questions/Invoice.java b/oop/code/java/src/main/java/com/scaler/lld/questions/Invoice.java similarity index 100% rename from oop/code/oop/src/main/java/com/scaler/lld/questions/Invoice.java rename to oop/code/java/src/main/java/com/scaler/lld/questions/Invoice.java diff --git a/oop/code/oop/src/main/java/com/scaler/lld/scaler/Mentor.java b/oop/code/java/src/main/java/com/scaler/lld/scaler/Mentor.java similarity index 100% rename from oop/code/oop/src/main/java/com/scaler/lld/scaler/Mentor.java rename to oop/code/java/src/main/java/com/scaler/lld/scaler/Mentor.java diff --git a/oop/code/oop/src/main/java/com/scaler/lld/scaler/Student.java b/oop/code/java/src/main/java/com/scaler/lld/scaler/Student.java similarity index 100% rename from oop/code/oop/src/main/java/com/scaler/lld/scaler/Student.java rename to oop/code/java/src/main/java/com/scaler/lld/scaler/Student.java diff --git a/oop/code/oop/src/main/java/com/scaler/lld/scaler/StudentStatus.java b/oop/code/java/src/main/java/com/scaler/lld/scaler/StudentStatus.java similarity index 100% rename from oop/code/oop/src/main/java/com/scaler/lld/scaler/StudentStatus.java rename to oop/code/java/src/main/java/com/scaler/lld/scaler/StudentStatus.java diff --git a/oop/code/oop/src/main/java/com/scaler/lld/scaler/User.java b/oop/code/java/src/main/java/com/scaler/lld/scaler/User.java similarity index 100% rename from oop/code/oop/src/main/java/com/scaler/lld/scaler/User.java rename to oop/code/java/src/main/java/com/scaler/lld/scaler/User.java diff --git a/oop/code/oop/src/test/java/com/scaler/lld/AppTest.java b/oop/code/java/src/test/java/com/scaler/lld/AppTest.java similarity index 100% rename from oop/code/oop/src/test/java/com/scaler/lld/AppTest.java rename to oop/code/java/src/test/java/com/scaler/lld/AppTest.java diff --git a/oop/code/oop/src/test/java/com/scaler/lld/scaler/StudentTest.java b/oop/code/java/src/test/java/com/scaler/lld/scaler/StudentTest.java similarity index 100% rename from oop/code/oop/src/test/java/com/scaler/lld/scaler/StudentTest.java rename to oop/code/java/src/test/java/com/scaler/lld/scaler/StudentTest.java diff --git a/oop/code/python_code/main.py b/oop/code/python/main.py similarity index 89% rename from oop/code/python_code/main.py rename to oop/code/python/main.py index 4dcf15a..9e472ff 100644 --- a/oop/code/python_code/main.py +++ b/oop/code/python/main.py @@ -15,7 +15,7 @@ def main(): #oop - inheritance - sam = Student("sam", "abhi@a.cm", 25, "khulri", "Oct", 90, StudentStatus.ACTIVE) + sam = Student("sam", "abhi@a.cm", "batch1", 90) sam.print_details() # oop - inheritance and polymorphism diff --git a/oop/code/python_code/oop/SOLID/bird/Bird.py b/oop/code/python/oop/SOLID/bird/Bird.py similarity index 100% rename from oop/code/python_code/oop/SOLID/bird/Bird.py rename to oop/code/python/oop/SOLID/bird/Bird.py diff --git a/oop/code/python_code/oop/SOLID/bird/BirdType.py b/oop/code/python/oop/SOLID/bird/BirdType.py similarity index 100% rename from oop/code/python_code/oop/SOLID/bird/BirdType.py rename to oop/code/python/oop/SOLID/bird/BirdType.py diff --git a/oop/code/python_code/oop/SOLID/bird/Eagle.py b/oop/code/python/oop/SOLID/bird/Eagle.py similarity index 100% rename from oop/code/python_code/oop/SOLID/bird/Eagle.py rename to oop/code/python/oop/SOLID/bird/Eagle.py diff --git a/oop/code/python_code/oop/SOLID/bird/FlappingBehaviour.py b/oop/code/python/oop/SOLID/bird/FlappingBehaviour.py similarity index 100% rename from oop/code/python_code/oop/SOLID/bird/FlappingBehaviour.py rename to oop/code/python/oop/SOLID/bird/FlappingBehaviour.py diff --git a/oop/code/python_code/oop/SOLID/bird/GlidingBehaviour.py b/oop/code/python/oop/SOLID/bird/GlidingBehaviour.py similarity index 100% rename from oop/code/python_code/oop/SOLID/bird/GlidingBehaviour.py rename to oop/code/python/oop/SOLID/bird/GlidingBehaviour.py diff --git a/oop/code/python_code/oop/SOLID/bird/Parrot.py b/oop/code/python/oop/SOLID/bird/Parrot.py similarity index 100% rename from oop/code/python_code/oop/SOLID/bird/Parrot.py rename to oop/code/python/oop/SOLID/bird/Parrot.py diff --git a/oop/code/python_code/oop/SOLID/bird/Penguin.py b/oop/code/python/oop/SOLID/bird/Penguin.py similarity index 100% rename from oop/code/python_code/oop/SOLID/bird/Penguin.py rename to oop/code/python/oop/SOLID/bird/Penguin.py diff --git a/oop/code/python_code/oop/SOLID/bird/Runner.py b/oop/code/python/oop/SOLID/bird/Runner.py similarity index 100% rename from oop/code/python_code/oop/SOLID/bird/Runner.py rename to oop/code/python/oop/SOLID/bird/Runner.py diff --git a/oop/code/python_code/oop/SOLID/bird/interfaces/FlyableInterface.py b/oop/code/python/oop/SOLID/bird/interfaces/FlyableInterface.py similarity index 100% rename from oop/code/python_code/oop/SOLID/bird/interfaces/FlyableInterface.py rename to oop/code/python/oop/SOLID/bird/interfaces/FlyableInterface.py diff --git a/oop/code/python_code/oop/SOLID/bird/interfaces/FlyingBehaviourInterface.py b/oop/code/python/oop/SOLID/bird/interfaces/FlyingBehaviourInterface.py similarity index 100% rename from oop/code/python_code/oop/SOLID/bird/interfaces/FlyingBehaviourInterface.py rename to oop/code/python/oop/SOLID/bird/interfaces/FlyingBehaviourInterface.py diff --git a/oop/code/python_code/oop/SOLID/bird/interfaces/SwimmableInterface.py b/oop/code/python/oop/SOLID/bird/interfaces/SwimmableInterface.py similarity index 100% rename from oop/code/python_code/oop/SOLID/bird/interfaces/SwimmableInterface.py rename to oop/code/python/oop/SOLID/bird/interfaces/SwimmableInterface.py diff --git a/oop/code/python_code/oop/SOLID/bird/interfaces/__init__.py b/oop/code/python/oop/SOLID/bird/interfaces/__init__.py similarity index 100% rename from oop/code/python_code/oop/SOLID/bird/interfaces/__init__.py rename to oop/code/python/oop/SOLID/bird/interfaces/__init__.py diff --git a/oop/code/python_code/oop/basic/OopBankAccount.py b/oop/code/python/oop/basic/OopBankAccount.py similarity index 100% rename from oop/code/python_code/oop/basic/OopBankAccount.py rename to oop/code/python/oop/basic/OopBankAccount.py diff --git a/oop/code/python_code/oop/basic/__init__.py b/oop/code/python/oop/basic/__init__.py similarity index 100% rename from oop/code/python_code/oop/basic/__init__.py rename to oop/code/python/oop/basic/__init__.py diff --git a/oop/code/python_code/oop/inheritance/Student.py b/oop/code/python/oop/inheritance/Student.py similarity index 100% rename from oop/code/python_code/oop/inheritance/Student.py rename to oop/code/python/oop/inheritance/Student.py diff --git a/oop/code/python_code/oop/inheritance/StudentStatus.py b/oop/code/python/oop/inheritance/StudentStatus.py similarity index 100% rename from oop/code/python_code/oop/inheritance/StudentStatus.py rename to oop/code/python/oop/inheritance/StudentStatus.py diff --git a/oop/code/python_code/oop/inheritance/User.py b/oop/code/python/oop/inheritance/User.py similarity index 68% rename from oop/code/python_code/oop/inheritance/User.py rename to oop/code/python/oop/inheritance/User.py index 4104f10..7ab418a 100644 --- a/oop/code/python_code/oop/inheritance/User.py +++ b/oop/code/python/oop/inheritance/User.py @@ -10,7 +10,4 @@ def get_name(self) -> str: return self.__name def print_details(self) -> None: - print("Print with no args") - - def print_details(self, title: str) -> None: - print("\n In User:", title, self.get_name()) \ No newline at end of file + print("Print with no args") \ No newline at end of file diff --git a/os/code/os/target/classes/com/scaler/App.class b/os/code/os/target/classes/com/scaler/App.class index 259cdd5..d43ba34 100644 Binary files a/os/code/os/target/classes/com/scaler/App.class and b/os/code/os/target/classes/com/scaler/App.class differ