๊ตญ๋น์ง์ D+16
- ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ, ๊ฐ์ฒด์งํฅ์ ํ๋ก๊ทธ๋๋ฐ -
๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ
ํ๋ก๊ทธ๋จ์ ์๋ฃ์ ๋ช ๋ น์ด๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ ํ๋ก๊ทธ๋จ์ ์ ๋ง๋ค๊ธฐ ์ํด์๋ ๊ตฌ์ฑ์์์ธ ์๋ฃ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ง๋ค์ด์ผ ํ๋ค.
๊ทธ๋์ ์๊ฐํด ๋ธ ๋ฐฉ๋ฒ์ด ์๋ฃ์ ๋ช ๋ น์ด๋ฅผ ๊ตฌ์กฐํ์ํจ๊ฒ์ธ๋ฐ ์ด๋ฅผ ์ฐ๋ฆฌ๋ ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๊ณ ํ๋ค.
• ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ ์ค๊ณ ๊ตฌ์กฐ
1) ์์ฐจ๊ตฌ์กฐ - ํ๋ก๊ทธ๋จ ์ฝ๋๊ฐ ์์์ ์๋๋ก ์ผ์ง์ ์ผ๋ก ์คํ๋๋ ๊ตฌ์กฐ๋ก ์คํ์ ์ํ์ฌ ์์ ๋จ์๋ก ๋๋ ํ ์์๋๋ก ์งํ๋๋ ๊ตฌ์กฐ์ด๋ค.
2) ์ ํ๊ตฌ์กฐ - ์ฃผ์ด์ง ์กฐ๊ฑด ๋ง์กฑ ์ฌ๋ถ์ ๋ฐ๋ผ ์ฒ๋ฆฌ ๋์๊ณผ ์์๋ฅผ ์ ๋ฌํ๋ ๊ตฌ์กฐ๋ก ์กฐ๊ฑด๋ฌธ์ธ if์ if-else๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
3) ๋ฐ๋ณต๊ตฌ์กฐ - ์กฐ๊ฑด์ด ๋ง์กฑํ ๋๊น์ง ๋์์ ๋ฐ๋ณตํ๋ ๊ตฌ์กฐ๋ก ๋ฐ๋ณต๋ฌธ while, for๋ฅผ ์ฌ์ฉํ๋ค.
• ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ ๊ตฌ์ฑ์์
1) ๋ฐ์ดํฐ ํ๋ฆ๋ DFD(Data Flow Diagram)
- ๋ฐ์ดํฐ๊ฐ ์ค์ํ๋ค๋ ๊ฒ์ ์ธ์งํด ๋ฐ์ดํฐ์ ๊ฐ ๊ธฐ๋ฅ์ ๋ถํ ํ์ฌ ํํํ ๊ตฌ์กฐ๋
- DFD๋ฅผ ํตํด ๊ฐ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ๊ตฌํํ ์ง์ ๋ํด ํ์ธํ ์ ์๋ค.
- mini spec : ๋ฐ์ดํฐ์ ๋ํ ์ธ๋ถ์ ์ผ๋ก ์์ธํ ์ ๋ณด๊ฐ ์์ฑ๋์ด ์๋ ๊ฒ
2) ์๋ฃ์ฌ์ DD(Data Dictionary)
- DFD์ ํํ๋ ์๋ฃ ์ ์ฅ์๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ๋ช ์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋๊ตฌ
- ๋ฐ์ดํฐ์ ๋ํด '์ด๊ฒ์ ์ด๊ฒ์ด๋ค'์ ๋ํด ์ ์๋ด๋ ค์ ธ ์๋ค.
3) ์ํ ์ ์ด๋ STD(State Transition Diagram)
- ์ด๋ค ์ํ์์ ๋ค๋ฅธ ์ํ๋ก ๋ณ๊ฒฝ๋๋ ๊ณผ์ ๋ฐ ํด๋น ๊ณผ์ ์ ํ๋ก์ธ์ค ๋ช ์ธ๋ฅผ ์์ฑํ๋ ๋ค์ด์ด๊ทธ๋จ
• ์ข์ ๊ตฌ์กฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ์ด๋...
1) ์์ง๋
- ๋ชจ๋ ๋ด๋ถ ์์๋ค์ด ์๋ก ์ฐ๊ด๋์ด ์๋ ์ ๋๋ฅผ ๋ํ๋ด๋ ์ ๋
- ์์ง๋๊ฐ ๊ฐํ ์๋ก ํ์ง์ด ์ข๋ค.
2) ๊ฒฐํฉ๋
- ๋ชจ๋ ๊ฐ์ ์ํธ ์์กดํ๋ ์ ๋
- ๊ฒฐํฉ๋๊ฐ ์ฝํ ์๋ก ํ์ง์ด ์ข๋ค.
๊ฐ์ฒด์งํฅ์ ํ๋ก๊ทธ๋๋ฐ
(๊ฐ์ฒด์งํฅ์ ์ด๋ผ๋ ์๋ฏธ๋ ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ์ ๋๋น๋์ด ๊ฐ์ฒด์งํฅ์ ์ด๋ผ๋ ์๋ฏธ๋ฅผ ๋ํ๋ด๋ ์ฐธ๊ณ )
• ๊ฐ์ฒด์งํฅ ์์ฑ
1) ์บก์ํ
- ์ถ์ํ๋ฅผ ํตํด ์ป์ด๋ธ ์์ฑ๋ค์ ๋ฌถ๋๊ฒ
- ์ผ๋ถ๋ฅผ ์ธ๋ถ์ ๊ฐ์ถ์ด ์๋ํ๋ ๊ธฐ๋ฒ
2) ์ถ์ํ
- ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ, ์ค๊ณ์ฌํญ์ ์๊ตฌ์ฌํญ์ ์ํด ๋ฌด์์ด ์ค์ํ ๊ฒ์ธ์ง ์ธ์งํ๊ณ ๋ฝ์๋ด๋ ๊ฒ
3) ๋คํ์ฑ
- ๊ฐ์ ๋ชจ์์ ํจ์๊ฐ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋์ํ๋ ๊ฒ
4) ์ ๋ณด์๋
- ์บก์ํ ์ ๋ณด๋ค์ ๋ฐ์์ ์ ๊ทผ ๋ถ๊ฐ๋ฅํ๋๋ก ํ๋ ๊ฒ์ ์๋ํ๋ผ๊ณ ํ๋ค.
5) ์์์ฑ
- ๋ถ๋ชจ ํด๋์ค์์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํด ์์ ํด๋์ค๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๊ธฐ๋ฒ
- ์์ ํด๋์ค์์ ๋ฐ๋ก ์ ์ํ์ง ์์๋ ๋ถ๋ชจ ํด๋์ค์์ ์ ์๋ ๊ฒ๋ค์ ์๋์ผ๋ก ์์๋ฐ์ ๊ตฌํํ ์ ์๋ค.
• ๊ฐ์ฒด์งํฅ ๋ฐฐ๊ฒฝ
ํ๋ก๊ทธ๋จ์ Data์ Function์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋๋ฐ ์์ด ๋ง์์ง๋ฉด์ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํด ๊ด๋ฆฌํ๋๋ฐ์ ์ด๋ ค์์ด ๋ฐ์๋์๋ค.
๊ทธ ๊ณ๊ธฐ๋ก ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ์ด ์๊ฒจ๋๊ฒ ๋์์ผ๋ฉฐ, ๊ฐ์ฒด์งํฅ์ ์ถ์ํ, ์บก์ํ, ๋คํ์ฑ, ์ ๋ณด์๋, ์์์ฑ์ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค.
์ด๋, ๋ ์ข์ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ธฐ ์ํด์๋ ํ๋ก๊ทธ๋๋ฐ์ ํน์ง์ธ ๊ธฐ๋ฅ์ฑ, ์ ๋ขฐ์ฑ, ์ฌ์ฉ์ฑ, ํจ์จ์ฑ, ์ ์ง๋ณด์์ฑ, ์ด์์ฑ์ ๊ทน๋ํํด์ผํ๋๋ฐ ์ด๋ ์ฌ์ฉํด์ผ ํ๋๊ฒ ์์น์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ฐ์ฒด์งํฅ์ ์์น์๋ ์ด๋ค๊ฒ ์์๊น?
• ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น (SOLID)
1) ๋จ์ผ ์ฑ ์ ์์น SRP (Single Responsiblity Principle)
- ๋ชจ๋ ํด๋์ค๋ ๊ฐ๊ฐ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค.
- ํด๋์ค๋ ๊ทธ ์ฑ ์์ ์์ ํ ์บก์ํํด์ผ ํ๋ค.
- ์ฃผ์) ํ๋์ ์ฑ ์์ ์ง๋ ๊ฒ์ด์ง ๊ธฐ๋ฅ์ด ํ๋๋ผ๋ ์๋ฆฌ๋ ์๋๋ค.
2) ๊ฐ๋ฐฉ-ํ์ ์์น OCP (Open Closed Principle)
- ํ์ฅ์๋ ์ด๋ ค ์๊ณ ์์ ์๋ ๋ซํ์๋ค.
- ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋๋ก ์ค๊ณ๊ฐ ๋์ด์ผ ํ๋ค.
3) ๋ฆฌ์ค์ฝํ ์นํ ์์น LSP (Liskov Substitution Principle)
- ์์ ํด๋์ค๋ ์์ ์ ๋ถ๋ชจ ํด๋์ค๋ฅผ ๋์ฒดํ ์ ์๋ค.
- ๋ถ๋ชจ ํด๋์ค๊ฐ ๋ค์ด๊ฐ ์๋ฆฌ์ ์์ ํด๋์ค๋ฅผ ๋ฃ์ด๋ ์ ์๋ํด์ผ ํ๋ค.
- ์์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค์ ์ฑ ์์ ๋ฌด์ํ๊ฑฐ๋ ์ฌ์ ์ํ์ง ์๊ณ ํ์ฅ๋ง ์ํํ๋๋ก ํด์ผ ๋ง์กฑํ๋ค.
4) ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น ISP (Interface Segregation Principle)
- ํ ํด๋์ค๋ ์์ ์ด ์ฌ์ฉํ์ง ์๋ ์ธํฐํ์ด์ค๋ ๊ตฌํํ์ง ๋ง์์ผ ํ๋ค.
- ํ๋์ ํ๋ฒํ ์ธํฐํ์ด์ค๋ณด๋ค ์ฌ๋ฌ ๊ฐ์ ๊ตฌ์ฒด์ ์ธ ์ธํฐํ์ด์ค๊ฐ ์ข๋ค.
5) ์์กด ์ญ์ ์์น DIP (Dependency Inversion Principle)
- ๋ณํ๊ฐ ์๋ ๊ฒ์ ์์กดํด์ผ ํ๋ค.
- ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ณด๋ค ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค์ ๊ด๊ณ๋ฅผ ๋งบ์ด์ผ ํ๋ค.
• UML (ํตํฉ ๋ชจ๋ธ ์ธ์ด)
1) ์ ์ฆ์ผ์ด์ค ๋ค์ด์ด๊ทธ๋จ
2) ํด๋์ค ๋ค์ด์ด๊ทธ๋จ
3) ์ํ์ค ๋ค์ด์ด๊ทธ๋จ
'์๋ > ๊ตญ๋น์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+17] Queue (0) | 2022.10.17 |
---|---|
[D+17] ์ฝ๋ฉ๋ฐ์ด (0) | 2022.10.14 |
[D+15] ๋ฉ๋ชจ๋ฆฌ๋งต ๋ณต์ต, ํด๋์ค(์์ฑ์, static) (0) | 2022.10.12 |
[D+14] ํด๋์ค, ์ถ์ํ, ์ฐธ์กฐํ์ ์์๋ณ์ (0) | 2022.10.11 |
[D+13] Sort, Bubble Sort (0) | 2022.10.10 |
๋๊ธ