From 16ed296007fd551a0a4b5bf70f867672ac9282c2 Mon Sep 17 00:00:00 2001 From: Abhishek Singh Thakur Date: Fri, 21 Jun 2024 14:36:31 +0530 Subject: [PATCH 1/3] go code for Bank Account example added --- oop/code/README.md | 6 +- oop/code/go/basic/bank/back.go | 56 ++++++++++++++++++ oop/code/go/basic/go.mod | 3 + oop/code/go/basic/main.go | 21 +++++++ oop/code/{oop => java}/pom.xml | 0 .../src/main/java/com/scaler/lld/App.java | 0 .../com/scaler/lld/basics/OopBankAccount.java | 0 .../main/java/com/scaler/lld/bird/Bird.java | 0 .../java/com/scaler/lld/bird/BirdType.java | 0 .../main/java/com/scaler/lld/bird/Eagle.java | 0 .../main/java/com/scaler/lld/bird/Parrot.java | 0 .../main/java/com/scaler/lld/bird/Runner.java | 0 .../java/com/scaler/lld/questions/Book.java | 0 .../com/scaler/lld/questions/Invoice.java | 0 .../java/com/scaler/lld/scaler/Mentor.java | 0 .../java/com/scaler/lld/scaler/Student.java | 0 .../com/scaler/lld/scaler/StudentStatus.java | 0 .../main/java/com/scaler/lld/scaler/User.java | 0 .../src/test/java/com/scaler/lld/AppTest.java | 0 .../com/scaler/lld/scaler/StudentTest.java | 0 oop/code/{python_code => python}/main.py | 0 .../oop/SOLID/bird/Bird.py | 0 .../oop/SOLID/bird/BirdType.py | 0 .../oop/SOLID/bird/Eagle.py | 0 .../oop/SOLID/bird/FlappingBehaviour.py | 0 .../oop/SOLID/bird/GlidingBehaviour.py | 0 .../oop/SOLID/bird/Parrot.py | 0 .../oop/SOLID/bird/Penguin.py | 0 .../oop/SOLID/bird/Runner.py | 0 .../SOLID/bird/interfaces/FlyableInterface.py | 0 .../interfaces/FlyingBehaviourInterface.py | 0 .../bird/interfaces/SwimmableInterface.py | 0 .../oop/SOLID/bird/interfaces/__init__.py | 0 .../oop/basic/OopBankAccount.py | 0 .../oop/basic/__init__.py | 0 .../oop/inheritance/Student.py | 0 .../oop/inheritance/StudentStatus.py | 0 .../oop/inheritance/User.py | 0 .../os/target/classes/com/scaler/App.class | Bin 1162 -> 1471 bytes 39 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 oop/code/go/basic/bank/back.go create mode 100644 oop/code/go/basic/go.mod create mode 100644 oop/code/go/basic/main.go rename oop/code/{oop => java}/pom.xml (100%) rename oop/code/{oop => java}/src/main/java/com/scaler/lld/App.java (100%) rename oop/code/{oop => java}/src/main/java/com/scaler/lld/basics/OopBankAccount.java (100%) rename oop/code/{oop => java}/src/main/java/com/scaler/lld/bird/Bird.java (100%) rename oop/code/{oop => java}/src/main/java/com/scaler/lld/bird/BirdType.java (100%) rename oop/code/{oop => java}/src/main/java/com/scaler/lld/bird/Eagle.java (100%) rename oop/code/{oop => java}/src/main/java/com/scaler/lld/bird/Parrot.java (100%) rename oop/code/{oop => java}/src/main/java/com/scaler/lld/bird/Runner.java (100%) rename oop/code/{oop => java}/src/main/java/com/scaler/lld/questions/Book.java (100%) rename oop/code/{oop => java}/src/main/java/com/scaler/lld/questions/Invoice.java (100%) rename oop/code/{oop => java}/src/main/java/com/scaler/lld/scaler/Mentor.java (100%) rename oop/code/{oop => java}/src/main/java/com/scaler/lld/scaler/Student.java (100%) rename oop/code/{oop => java}/src/main/java/com/scaler/lld/scaler/StudentStatus.java (100%) rename oop/code/{oop => java}/src/main/java/com/scaler/lld/scaler/User.java (100%) rename oop/code/{oop => java}/src/test/java/com/scaler/lld/AppTest.java (100%) rename oop/code/{oop => java}/src/test/java/com/scaler/lld/scaler/StudentTest.java (100%) rename oop/code/{python_code => python}/main.py (100%) rename oop/code/{python_code => python}/oop/SOLID/bird/Bird.py (100%) rename oop/code/{python_code => python}/oop/SOLID/bird/BirdType.py (100%) rename oop/code/{python_code => python}/oop/SOLID/bird/Eagle.py (100%) rename oop/code/{python_code => python}/oop/SOLID/bird/FlappingBehaviour.py (100%) rename oop/code/{python_code => python}/oop/SOLID/bird/GlidingBehaviour.py (100%) rename oop/code/{python_code => python}/oop/SOLID/bird/Parrot.py (100%) rename oop/code/{python_code => python}/oop/SOLID/bird/Penguin.py (100%) rename oop/code/{python_code => python}/oop/SOLID/bird/Runner.py (100%) rename oop/code/{python_code => python}/oop/SOLID/bird/interfaces/FlyableInterface.py (100%) rename oop/code/{python_code => python}/oop/SOLID/bird/interfaces/FlyingBehaviourInterface.py (100%) rename oop/code/{python_code => python}/oop/SOLID/bird/interfaces/SwimmableInterface.py (100%) rename oop/code/{python_code => python}/oop/SOLID/bird/interfaces/__init__.py (100%) rename oop/code/{python_code => python}/oop/basic/OopBankAccount.py (100%) rename oop/code/{python_code => python}/oop/basic/__init__.py (100%) rename oop/code/{python_code => python}/oop/inheritance/Student.py (100%) rename oop/code/{python_code => python}/oop/inheritance/StudentStatus.py (100%) rename oop/code/{python_code => python}/oop/inheritance/User.py (100%) 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/back.go b/oop/code/go/basic/bank/back.go new file mode 100644 index 0000000..a1aed82 --- /dev/null +++ b/oop/code/go/basic/bank/back.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/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..24e003a --- /dev/null +++ b/oop/code/go/basic/main.go @@ -0,0 +1,21 @@ +package main + +import ( + "basic/bank" + "fmt" +) + +func main() { + acc1 := bank.NewBankAccount(1, "abhi", 10000.00) + acc2 := bank.NewBankAccount(2, "ankit", 0.00) + + fmt.Println("Before Balance") + acc1.PrintBalance() + acc2.PrintBalance() + + acc1.Transfer(acc2, 5000.00) + + fmt.Println("After Balance") + acc1.PrintBalance() + acc2.PrintBalance() +} 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 100% rename from oop/code/python_code/main.py rename to oop/code/python/main.py 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 100% rename from oop/code/python_code/oop/inheritance/User.py rename to oop/code/python/oop/inheritance/User.py diff --git a/os/code/os/target/classes/com/scaler/App.class b/os/code/os/target/classes/com/scaler/App.class index 259cdd57003afc68b22757822e438a01d61d006d..d43ba34f93405334870f08ddd98971b0dc25dc37 100644 GIT binary patch literal 1471 zcmaJ>*-{fh6g^Es2F78LRTd#2U;;wiP$0NK6p4mKLSa!pHAxEtlbO^^2a9( zGc@n=eV(wmy`5Ou+7&s;5ScY?Q$A)0#o`+b;gpjXIzp&7P>TpdQ^vH#a;dN-+;zTX z35J%8LtZzyYpQ!i7?wMxM*%X`QIq7cz)hQ>Blb3P9z82v)80>QVGOu0iRPjXul4I{BY zkh5GbigXO)riKxQ)-pBK*%^o-PJoIkVT&kizs&1~hB1cj0PV7zzvmMrTpi;`Xqc$t z$j4;hHttY_eQuS+$~zSy9i*p%T*oNxsdk7fz9-e`0c9UVvsSWg)eTfpr88wZph>Qk{6-QI%3s#j}#<_Lg|D(wTbJ zDY-eZV5;7&qe+-hM#RRv<48}sytpLfj+6Ivyg*vRBE!(RThrcm_C&&G!msrL&q>EU zP)+cX;bV}7ini}?k=uDoctaV-*((*30jw2X1ClDk^@F0gL_J8JKfTFdu_`W7+_JK! z6v?It7V5A>y|E}P%Za{sTq{2jEsu}LN4E~5GmODV+qQ617WX{iX;@_#zL5N7>1bGE z==;AaRm#sD1E4vk$pLEUMDGf%8r>4KGumrMk5Kou{9C70{RZlBg;v8?puM3iYeW-C zl<{YB8K!;u8=8;Nafsd%M1eyLg=W8?{}iK}J;%6pgu6?p=-i~k{pImPJp8~|PqY5% z&rcOF1QoEa?9iaMr~w^lq{=p749$eE0aIux0~z&$VFpREXrJ delta 497 zcmYL`K~ED=6otPxt(`hdrP4^jDbqm^0b8mfB2X16BB(Vc8j~)^%mizOwrQ%yl^a)X z40$^jMpkas#gy1Y_x=gv(!XGg@}`=Ym)zvMbKbe<-TP(Wcn$Y9!JhFL+vZMFP{Cn!$u z?q%d#akTm`#Y!YAm=u{3Bs;x zZD^#+@qNZZCPGeyoDP|bmEV!?F<-OxS?ID-?P1pnUCOtMAy-}qVWo||Ki@wnn;3?w zHoB@N7AYK#P+(APB+Zh-YYZ`<*x7#Daz$NK6dY4yTjv@=iBoKF9Zfxnv&oh+y`dC3 P+AkboDalO*HEtaM2 Date: Mon, 24 Jun 2024 21:33:42 +0530 Subject: [PATCH 2/3] method overriding in python added --- oop/code/python/main.py | 2 +- oop/code/python/oop/inheritance/User.py | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/oop/code/python/main.py b/oop/code/python/main.py index 4dcf15a..9e472ff 100644 --- a/oop/code/python/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/oop/inheritance/User.py b/oop/code/python/oop/inheritance/User.py index 4104f10..7ab418a 100644 --- a/oop/code/python/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 From 53a353392737535122cef183e03516a0d3480b9b Mon Sep 17 00:00:00 2001 From: Abhishek Singh Thakur Date: Tue, 2 Jul 2024 18:16:47 +0530 Subject: [PATCH 3/3] bird code in go added --- oop/code/go/basic/bank/{back.go => bank.go} | 0 oop/code/go/basic/bird/bird.go | 53 +++++++++++++++++++++ oop/code/go/basic/main.go | 22 ++++----- 3 files changed, 64 insertions(+), 11 deletions(-) rename oop/code/go/basic/bank/{back.go => bank.go} (100%) create mode 100644 oop/code/go/basic/bird/bird.go diff --git a/oop/code/go/basic/bank/back.go b/oop/code/go/basic/bank/bank.go similarity index 100% rename from oop/code/go/basic/bank/back.go rename to oop/code/go/basic/bank/bank.go 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/main.go b/oop/code/go/basic/main.go index 24e003a..aec5337 100644 --- a/oop/code/go/basic/main.go +++ b/oop/code/go/basic/main.go @@ -1,21 +1,21 @@ package main import ( - "basic/bank" - "fmt" + "basic/bird" ) func main() { - acc1 := bank.NewBankAccount(1, "abhi", 10000.00) - acc2 := bank.NewBankAccount(2, "ankit", 0.00) + bird1 := bird.NewBird(6.5, 2.1, "brown") + eagle := &bird.Eagle{Bird: bird1} - fmt.Println("Before Balance") - acc1.PrintBalance() - acc2.PrintBalance() + bird2 := bird.NewBird(15.0, 1.2, "black and white") + penguin := &bird.Penguin{Bird: bird2} - acc1.Transfer(acc2, 5000.00) + bird3 := bird.NewBird(2.5, 0.8, "white") + duck := &bird.Duck{Bird: bird3} - fmt.Println("After Balance") - acc1.PrintBalance() - acc2.PrintBalance() + eagle.Fly() + penguin.Swim() + duck.Fly() + duck.Swim() }