ํฌ์คํธ ์ ๋ชฉ ๊ทธ๋๋ก Spring ๊ธฐ์ด๋ฅผ ๋ค์น๊ธฐ ์ํด ์์ฑํ๋ TIL ์ฑ๊ฒฉ์ ์คํ๋ง ๊ธฐ์ด ์์ฝ ์๋ฆฌ์ฆ์
๋๋ค.
Java๋ ์๋๋ฐ Spring์ ๋ญ์ง ๋ชจ๋ฅด๊ฒ ๋ ์ด๋ณด์๋ค์๊ฒ ์ ์ฉํ๋๋ก ์์ ๋ง ์ ๋ฆฌํ์์ต๋๋ค.
Spring 101 ์๋ฆฌ์ฆ
Spring 101 - #1 ์๋ฐ์ ์ ์ฐจ์ /๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ
Spring 101 - #2 ์๋ฐ ํค์๋์ OOP ํน์ฑ 4๊ฐ์ง
Spring 101 - #3 ๊ฐ์ฒด์งํฅ์ค๊ณ 5์์น SOLID
Spring 101 - #4 ์คํ๋ง ๋์์ธ ํจํด Spring Design Pattern
#๊ฐ์ฒด์งํฅ = ํ์ค์ธ๊ณ๋ฅผ ์ธ์งํ๋ ๋ฐฉ์์ผ๋ก ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๊ฒ
์ฝ๋๋ฅผ ์ธ์ด๋ก ๋ฒ์ญํ์๋ ์ฝํ์ง ์๋๋ค๋ฉด ์ถฉ๋ถํ OOP๋ฅผ ํ์ฉํ๊ณ ์์ง ๋ชปํ ๊ฒ
#Terms
- Class : ๋ถ๋ฅ์ ๋ํ ๊ฐ๋
- Object : ์ค์ฒด -> heap์ ์ ์ฅ (๋์ฉ๋ ์๋ฃ๋ฅผ ์ ์ฅํ ์ ์๋๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์)
- Context = Application boundary
- ์ฐธ์กฐ๋ณ์, ์ธ์คํด์ค
๊ฐ์ฒด ์ฐธ์กฐ ๋ณ์ mickey ๋ Mouse ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ๋ค - ํด๋์ค๋ฉค๋ฒ = static ๋ฉค๋ฒ
- ๊ฐ์ฒด๋ฉค๋ฒ = ์ธ์คํด์ค ๋ฉค๋ฒ
#OOP 4๋ ํน์ฑ
์บก์ํ / ์์(extend) / ์ถ์ํ / ๋คํ์ฑ
Encapsulation , Information hiding / Extend ์ฌ์ฌ์ฉ / Abstraction ๋ชจ๋ธ๋ง / Polymorphism ์ฌ์ฉํธ์
#Class vs. Object
- ๊ตฌ๋ถ: ๋์ด? ์ ์กฐ์ผ์?
- ๊ฐ์ฒด: ์ ์ผ๋ฌด์ดํ ์ฌ๋ฌผ
- ํด๋์ค: ์งํฉ์ ๊ฐ๋ . ์ฌ๋ฌ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ด์นญ
#์บก์ํ information hiding, encapsulation
- ํ๊ธฐ๋ฒ
-private : ๋ณธ์ธ๋ง ์ ๊ทผ ๊ฐ๋ฅ ~default: ๊ฐ์ ํจํค์ง๋ด์ ํด๋์ค์์ ์ ๊ทผ ๊ฐ๋ฅ #protected: ๊ฐ์ ํจํค์ง/์์ ๋ด์ ํด๋์ค์์ ์ ๊ทผ ๊ฐ๋ฅ +public: ๋ชจ๋ ์ ๊ทผ ๊ฐ๋ฅ |
- static ๋ฉค๋ฒ ์ ๊ทผํ ๋๋ ํด๋์ค ๋ช ์ ์ฌ์ฉํ๋ค
#Extend ์์ = ์ฌ์ฌ์ฉ, ํ์ฅ
is-a , is a kind of ๊ด๊ณ (e.g. ๊ณ ๋๋ ๋๋ฌผ์ ํ ๋ถ๋ฅ๋ค)
- ์์ -> ์กฐ์ง๋X ๊ณ์ธต๋X
์์ = ๋ถ๋ฅ๋ - ํด๋์ค ๋ช ์ ๋ถ๋ฅ์ค๋ฝ๊ฒ, ๊ฐ์ฒด ์ฐธ์กฐ ๋ณ์๋ช ์ ์ ์ผ๋ฌด์ดํ ์ฌ๋ฌผ์ฒ๋ผ ์๋ช ํด์ผ ํ๋ค
- ์๋ฐ๋ ๋ค์ค์์์ ์ง์ํ์ง ์๋๋ค
- T ๋ฉ๋ชจ๋ฆฌ์ ํ์ํด๋์ค ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๋ ์์ํด๋์ค ์ธ์คํด์ค๋ ํจ๊ป ์์ฑ๋๋ค
##์ธํฐํ์ด์ค : is able to (๋ ์ ์๋, ํค์์น ์ ์๋_
- Serializable ์ง๋ ฌํ ํ ์ ์๋
- Cloneable ๋ณต์ ํ ์ ์๋
- Comparable ๋น๊ตํ ์ ์๋
- Runnable ์คํํ ์ ์๋
-> ์์ํด๋์ค๋ ๋ฌผ๋ ค์ค ํน์ฑ์ด ํ์ฑํ ์๋ก / ์ธํฐํ์ด์ค๋ ๊ตฌํ์ ๊ฐ์ ํ method ๊ฐฏ์๊ฐ ์ ์ ์๋ก ์ข๋ค
= LSP ๋ฆฌ์ค์ฝํ์นํ ๋ฒ์น / ISP ์ธํฐํ์ด์ค ๋ถํ ์์น
#Abstraction ์ถ์ํ
- ๊ตฌ์ฒด์ ์ธ ๊ฒ์ ๋ถํดํด์ Application Boundary์ ์๋ ํน์ฑ๋ง ์ฌ์กฐํฉํ ๊ฒ
- = ๋ชจ๋ธ๋ง
- ์ถ์ํ์ ๊ฒฐ๊ณผ๋ฌผ = ๋ชจ๋ธ
- ๋ชจ๋ธ์ ์๋ฐ์์์ ํํ = ํด๋์ค
- ํด๋์ค์ ๋ ผ๋ฆฌ์ ์ค๊ณ(UML), ๋ฌผ๋ฆฌ์ ์ค๊ณ
#UML ํ๊ธฐ
๋ฐ์ค : ํด๋์ค๋ฉค๋ฒ (static)
#๋ณ์ ์ ํ ์
์ด๋ฆ | ์ฌ๋ ๊ณณ(T ๋ฉ๋ชจ๋ฆฌ) |
Static ๋ณ์ | Static ์์ญ (ํด๋์ค๊ฐ static์ ๋ฐฐ์น๋ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ๋ณด) |
์ธ์คํด์ค ๋ณ์ | Heap ์์ญ (๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ ๋น) |
local ๋ณ์ | Stack (Stack frame ๋ด๋ถ) - ์ด๊ธฐํ ํ์ง ์์ผ๋ฉด ์ฐ๋ ๊ธฐ ๊ฐ์ ๊ฐ์ง๊ฒ ๋จ |
#UML ์ถ์ฒ์ฑ
- UML for Java Programmers, by Robert C. Martin
- UML Distilled 2nd edition, Martin ํ์ธ๋ฌ
#Override
: ์์ ํด๋์ค ํ์
์ ๊ฐ์ฒด ๋ณ์๋ฅผ ์ฐธ์กฐํ๋๋ผ๋, ํ์ ํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ฉ(์ฌ์ ์)ํ method๊ฐ ํธ์ถ๋๋ค!
#Call by Value, Call by Reference = Call By Address
- ๊ธฐ๋ณธ์๋ฃํ - Call by value
- ๊ฐ์ฒด์ฐธ์กฐ๋ณ์ - Call by Reference, by Address (๊ฐ์ ๋ณต์ฌํ๋ ๊ฒ์ ๋๊ฐ์ง๋ง ์ฃผ์๋ก ์ฝํ)
'๐ป Software Engineering > Java Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Springย Bootย Batchย -ย ๋ณ๋ ฌย ์ฒ๋ฆฌ (0) | 2021.11.28 |
---|---|
Spring 101 - #4 ์คํ๋ง ๋์์ธ ํจํด Spring Design Pattern (0) | 2020.07.24 |
Spring 101 - #3 ๊ฐ์ฒด์งํฅ์ค๊ณ 5์์น SOLID (0) | 2020.07.23 |
Spring 101 - #1 ์๋ฐ์ ์ ์ฐจ์ /๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ (0) | 2020.07.13 |