๋ชจ๋ ๊ฒ์ OO๋ก ํด๊ฒฐํ ์ ์์๊น? ๊ทธ๊ฒ์ ๋ํญํ๋ static
์ ๋ํด ์์๋ณด์.
Static Method
OO์์๋ ๋ชจ๋ ๊ฒ์ด ๊ฐ์ฒด์์ ์์ด์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ถํธํจ์ด ๋ฐ์ํ๋ค.
- ๋จ์ํ ๊ณ์ฐ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ์ฒ๋ฆฌํด์ผ ํ๋?: ์ ๋๊ฐ ๊ตฌํ๊ธฐ
- ํด๋์ค ๋จ์์์ ๋ฌด์ธ๊ฐํ๊ณ ์ถ๋ค๋ฉด?: ํด๋์ค์์ ์ด ๋ช๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์๋?
์ด์ ์ C์์๋ ์ ์ญ ๋ณ์๊ฐ ์์๋ค. ๊ทธ๋ฆฌ๊ณ OO ์ธ์ด์๋ static์ด ์๋ค.
- static method์ ์์ ์ฃผ๋ instance๊ฐ ์๋๊ณ class ์ด๋ค.
- Class diagram์์๋ ๋ฐ์ค์ ํตํด ๋ํ๋ผ ์ ์๋ค.
- ์ธ์คํด์ค์ ๊ด๋ จ ์์ด ๋งค๊ฐ๋ณ์๋ก๋ง ๋ค์ด์จ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด ๊ณ ๋ คํด๋ณด์.
isNullOrWhiteSpace(MyString)
๊ณผ ๊ฐ์ ํจ์๋ ์ฌ์ค instance method๋ก ๋ง๋ค์ด๋๋๋ค.- ํ์ง๋ง static์ผ๋ก ๋ง๋ค์ด๋ ๋๋ค. ์ธ๋ถ ๋ณ์์์ ์ํธ์์ฉ์ด ์๊ธฐ ๋๋ฌธ์.
Initialization
- Java์ Mathํด๋์ค๋ฅผ ์๊ฐํด๋ณด์.
- ์ด ๋ ์์ ๋ด๋ถ์ static ํจ์๋ฅผ ๋ง๋ค์ด ๋์ด, ์ด๊ณณ ์ ๊ณณ์์ ์ ์ญ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ก๋ค.
- ๊ทธ๋ฐ๋ฐ ์ค์ ์ฌ์ฉ์ ์์ด์๋
math.abs(-3)
๊ณผ ๊ฐ์ ํํ๋ก ์ฌ์ฉํ ์ ์๋ค.- ์ฌ๊ธฐ์
math
๋ Math ์ธ์คํด์ค๋ฅผ ๋งํจ
- ์ฌ๊ธฐ์
- ์ด๊ฑด ์๋ํ ๊ฒ๊ณผ ๋ค๋ฅด๊ฒ ๋์ํ๋ ๊ฒ์ด๋ค.
- ๋ด๋ถ์ ์ผ๋ก ์ธ์คํด์ค์์ ํธ์ถํ๋๋ผ๋ ๋ด๋ถ method๊ฐ ์๊ณ , ์ด์ฐจํผ Class์ ์๋ static ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ์ด ์๋ช ํ๋ ์ด๋ ๊ฒ ๋์ํ๋ ๊ฒ์ด๋ค. (class: instance = 1:* ๊ด๊ณ)
- ์ฆ, ์ค์ฝํ ๋ฒ์๋ฅผ ์ธ๋ถ์ ์ธ ๊ฒ์์๋ถํฐ ํฌ๊ด์ ์ธ ๊ฒ์ผ๋ก ์ฐพ์ผ๋ฉด์ ์์ ๊ฒฝ์ฐ ๋ฐํํ๋ ๋ฐฉ์์ด๋ค.
- static์ class ์๊ณ์ ์๋ scope์ ์์ ๊ฑฐ๋ ์ฐพ์ ์ ์๋ค.
- ํ์ง๋ง ์ด๋ฐ ์คํ์ผ์ ์๋ํ ๋ฐ๊ฐ ์๋๊ธฐ ๋๋ฌธ์, ์์ ๊ฐ์ด static ํจ์์ ๋ฌถ์์ ๋ชจ์๋๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ค๋ฅธ ์กฐ์น๊ฐ ํ์ํ๋ค.
- ๋ฐ๋ก ์์ฑ์๋ฅผ
private
ํ๊ฒ ๋ง๋๋ ๊ฒ์ด๋ค.
C#๊ณผ Swift
- ์์ ๊ฐ์ด ์ฒ๋ฆฌํ๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋๊ฒ ๋์ด, ์ํ๋ ๋ชฉ์ ์ ๋ฌ์ฑํ ์ ์๊ฒ ๋๋ค.
- ํ์ง๋ง, ์ด ๋ฐฉ์์ ๋ญ๊ฐ ๊ผผ์๋๋์ด ๊ฐํ๋ค.
- Java์ ๋ฌ๋ฆฌ C#์์๋
static class
๋ฅผ ์ ๊ณตํ๋ค.
- class ์์
static
signiture๋ฅผ ๋ฌ๊ฒ๋๋ฉด, ์๋์ ์ผ๋ก ์ธ์คํด์ค๋ฅผ ๋ง๋ค ์ ์๊ฒ ๋๋ค. - ์ด ๋ถ๋ถ์ swift์์ Constant Manangement๋ฅผ ์ ๋ฆฌํ๋ ๊ฒ๊ณผ ์ ์ฌํ๋ค.
- Swift๋ ์ด๋ฌํ static class๊ฐ ์๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ง์ฝ ์์ ๊ฐ์ ๋ฐฉ์์ ์ฌ์ฉํ๋ ค๋ฉด Java์ ๋ฐฉ์๊ณผ ๊ฐ์ด private Initializer๋ก ์ฒ๋ฆฌํด์ผ ํ๋ค.
- ํ์ง๋ง ์ฐ๋ฆฌ์๊ฒ๋ Enum์ด ์๋คโฆ!
Static์ ๋ํ ๋นํ
- static์ ์์ํ OO๊ฐ ์๋๋ค.
- OOP๊ฐ ์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ์ ๋์ฒดํ๋ค ํด๋๊ณ static ์ฐ๋ ๊ฒ์ ๋ชจ์์ด๋ค.
- ๊ฒฐ๋ก ์ ์ผ๋ก
static
์ ์ฐ๋๊ฒ OO์ ๊ฐ๋ ๊ณผ ๋จผ๊ฒ์ ์ฌ์ค์ด๋ค. - ์ฆ,
static
์ ์ด์ฐ๋ณด๋ฉด ๊ฐ์ฒด ์งํฅ์ผ๋ก ๋ชจ๋ ๊ฒ์ ํ ์ ์๋ค๋ ๊ฒ์ด ์ฆ๋ช ๋ ์ฐ๋ฌผ์ด๋ค. - ์๋ชป๋ ๊ฒ์ ์๋๊ณ , ์ ํ์ ๊ฐ๋ ์ผ๋ก ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒ. ๊ทธ ์ด์ ๊ทธ ์ดํ๋ ์๋๋ค.
Singleton์ ๋ฑ์ฅ
- ์์ ๊ฐ์ ๋นํ์ ๋งฅ๋ฝ์์
static
์ ์ฌ์ฉํ์ง ์๊ณ ๊ทธ์ ๋น์ทํ ํจ๊ณผ๋ฅผ ๋ด๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ์ฐพ๊ฒ ๋๋ค. - ๊ฐ์ฒด์ด๊ธด ํ๋ฐ,
static
๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ ๋ ์, ๊ทธ๊ฒ์ singleton ํจํด์ด๋ผ ํ๋ค. - ํ์ง๋ง ์ฌ์ ํ ์์ ๋จน์๋ค.