1.์ ์ฐจ์งํฅ(Procedual Programming)
- ์ด๋ค ๊ธฐ๋ฅ์ ์ด๋ค ์์๋ก ์ฒ๋ฆฌํ๋๊ฐ์ ์ด์ ์ ๋ง์ถค, ์ปดํจํฐ์ ์ฒ๋ฆฌ๊ตฌ์กฐ์ ์ ์ฌ.
- ์ฅ์ - ์ฒ๋ฆฌ์๋๊ฐ ๋น ๋ฆ
- ๋จ์ - ์ ์ง๋ณด์ ์ด๋ ค์
- ์๊ฒฉํ ์คํ์์๋ก ์ธํ ๋นํจ์จ - ์ ์ฐจ์งํฅ ์ธ์ด์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๊ฐ์ฒด์งํฅ ๊ฐ๋ ์ด ๋ฑ์ฅ
2.๊ฐ์ฒด์งํฅ(Object Oriented Programming)
2-1. ๊ฐ์ฒด์งํฅ ์ ์
- ๊ฐ์ฒด๋ค์ ์งํฉ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ํธ ์์ฉ์ ํํํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ์ทจ๊ธํ์ฌ
๊ฐ์ฒด ๋ด๋ถ์ ์ ์ธ๋ ๋ฉ์๋๋ฅผ ํ์ฉํ๋ ๋ฐฉ์ - ๊ฐ์ฒด : ํ๋ก๊ทธ๋จ์์์ ๊ตฌํํ ๋์
- ํด๋์ค : ๊ฐ์ฒด์ '์์ฑ'๊ณผ '๊ธฐ๋ฅ'์ ์ ์ํ ์ค๊ณ๋์ ๊ฐ์ ๊ฒ
- ์ธ์คํด์ค : ํด๋์ค์ ๋ด์ฉ๋๋ก ๋ฉ๋ชจ๋ฆฌ์์ ๊ตฌํ๋ ์ค์ฌ(์ผ๋ฐ์ ์ธ ์๋ฏธ์ ๊ฐ์ฒด)
2-2. ๊ฐ์ฒด์งํฅ ํน์ฑ
- ์บก์ํ
- ์์
- ์ถ์ํ
- ๋คํ์ฑ
→ ์ด ํน์ง๋ค์ ๋ชจ๋ ์ ๊ธฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๊ฐ๋
2-2-1. ์บก์ํ
- ๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌ์กฐ ๋ฐ ์ ๋ณด๋ฅผ ์บก์์ฒ๋ผ ํ๋๋ก ๊ฐ์ธ ์ธ๋ถ์์ ๋ณผ ์ ์๊ฒ ์๋ํ์ฌ ๋ณดํธํ๋ ๊ฒ
- ์์ฑ๋ : ๋์ ์์ง๋(ํ๋์ ์ฑ ์์ ์ํ ๋ฉ์๋๋ค์ด ๋๋ฌด ๋ถ์ฐ๋์ง ์๊ณ ํ ๊ฐ์ฒด์ ๋ชจ์ฌ์๋ ์ ๋)
- ์ ๋ณด์๋ : ๊ฐ์ฒด ์์์ ๋ฐ์ผ๋ก ๋๋ ๋ฐ์์ ์์ผ๋ก ์ ๋ณด์ ์ ๊ทผ ํ ์ ์์
→ ๊ฐ์ฒด๋ ์ค์ค๋ก ๋์ ํ ์ ์๋ ํ๊ฒฝ์ ๊ฐ์ง๊ณ (๋์ ์์ง๋),
์ธ๋ถ ์์กด์ ์ต์ํ(๋ฎ์ ๊ฒฐํฉ๋)ํ๊ณ ์ธ๋ถ ์นจ๋ต์ ์ ํ ํด์ผํจ
2-2-2. ์์
- ์์ํด๋์ค(์๋ธํด๋์)๊ฐ ๋ถ๋ชจํด๋์ค(์ํผํด๋์ค)์ ์์ฑ์ ๋ฌผ๋ ค๋ฐ๋ ๊ฒ
- ์์์ ๋ชฉ์ : ์ถ์๊ณผ ๊ตฌ์ฒดํ์ ๊ด๊ณ๋ฅผ ์ํ ๊ฒ(๊ณต์ x)
2-2-3. ์ถ์ํ
- ์ถ์์ฒด : ์ถ์ํ๋ ๊ฐ์ฒด(์์ ๊ฐ์ฒด)
- ๊ตฌ์์ฒด : ๊ตฌ์ฒดํ๋ ๊ฐ์ฒด(ํ์ ๊ฐ์ฒด)
- ์ถ์ํ๋ ์๋์ ์ธ ๊ฒ → ์์๊ฐ์ฒด๋ ๋ฐ๋์ ํ์๊ฐ์ฒด๋ณด๋ค ์ถ์์ ์ด์ฌ์ผํจ
2-2-4. ๋คํ์ฑ
- ํ๋์ ๊ฐ์ฒด๋ ๋ฉ์๋๊ฐ ์ฌ๋ฌ๊ฐ์ง ๋ค๋ฅธ ํํ๋ฅผ ๊ฐ์ง ์ ์๋ ๊ฒ
- Overriding(์ค๋ฒ๋ผ์ด๋ฉ) : ๋ถ๋ชจํด๋์ค๋ก๋ถํฐ ์์๋ฐ์ ๋ฉ์๋๋ฅผ ์์ํด๋์ค์์ ์ฌ์ ์ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ
- Overloading(์ค๋ฒ๋ก๋ฉ) : ๋ฉ์๋์ ์ด๋ฆ์ ๋์ผ, ๋งค๊ฐ๋ณ์์ ํ์
์ด๋, ๊ฐฏ์๋ฅผ ๋ฌ๋ฆฌํ์ฌ ์ค๋ณต ์ ์ํจ
→ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ํน์ ๋ฉ์๋๊ฐ ํธ์ถ ๋๋ ๊ฒ
2-3. ๊ฐ์ฒด์งํฅ์ 5๊ฐ์ง ์ค๊ณ์์น( SOLID์์น)
- Simple Responsibility Principle(SRP, ๋จ์ผ์ฑ
์์์น)
ํ๋์ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผํ๋ค - Open/ Closed Principle(OCP, ๊ฐ๋ฐฉํ์์์น)
: ํด๋์ค๋ ํ์ฅ์ ๋ํด ์ด๋ ค ์์ด์ผ ํ๊ณ ๋ณ๊ฒฝ์ ๋ํด์๋ ๋ซํ ์์ด์ผ ํ๋ค - Liskov Substitution Principle(LSP, ๋ฆฌ์ค์ฝํ์นํ์์น)
: ํ์ ํด๋์ค์ ๋ฉ์๋๋ ๊ธฐ๋ฐ ํด๋์ค์ ๋ฉ์๋๋ฅผ ๋์ฒดํ์ฌ ์ฌ์ฉ ๋ ์ ์์ด์ผ ํ๋ค - Interface Segregation Principle(ISP, ์ธํฐํ์ด์ค๋ถ๋ฆฌ์์น)
: ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ์ง ์๋ ๋ฉ์๋์ ์์กดํ์ง ์์์ผ ํ๋ค - Dependency Inversion Principle(DIP, ์์กด์ญ์ ์์น)
: ์ถ์ํ๋๊ฒ์ ๊ตฌ์ฒด์ ์ธ ๊ฒ์ ์์กดํ๋ฉด ์๋๋ค
(์์ฃผ ๋ณ๊ฒฝ๋๋ ๊ตฌ์ฒด์ ์ธ ๊ฒ์ ์์กดํ์ง ๋ง๊ณ ์ถ์ํ๋๊ฒ์ ์ฐธ์กฐ)
3. ์ ์ฐจ์งํฅ ํ๋ก๊ทธ๋๋ฐ VS ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ์ ์ฐจ์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ๋ฌผ์ด ์์์ ์๋๋ก ํ๋ฅด๋ ๊ฒ์ฒ๋ผ ์์ฐจ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ์ค์์ํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ด๋ค.
- ์ปดํจํฐ์ ์ฒ๋ฆฌ๊ตฌ์กฐ์ ์ ์ฌํด ์คํ์๋๊ฐ ๋น ๋ฅด๋ค.
- ์ฝ๋์ ์์๊ฐ ๋ฐ๋๋ฉด ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ด๋ ต๋ค.
- C, FORTRAN, COBOL,PASCAL, BASIC
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ์ค์ ์ธ๊ณ์ ์ฌ๋ฌผ๋ค์ ๊ฐ์ฒด๋ก ๋ชจ๋ธ๋งํ์ฌ ๊ฐ๋ฐ์ ์งํํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ
- ๊ฐ์ฅ ๋ํ์ ์ธ ์ธ์ด๋ก Java๊ฐ ์๋ค.
- ์บก์ํ, ์์, ๋คํ์ฑ ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ฒ์ ์ด์ฉํ ์ ์๋ค.
- ์ ์น์งํฅ ์ธ์ด๋ณด๋ค ์คํ์๋๊ฐ ๋๋ฆฌ๋ค.
- JAVA, Object-C, Swift,C++,Python
์ฐธ๊ณ ) https://mangkyu.tistory.com/88
[๊ธฐ์ ๋ฉด์ ] CS ๊ธฐ์ ๋ฉด์ ์ง๋ฌธ - ํ๋ก๊ทธ๋๋ฐ ๊ณตํต (1/8)
1. ํ๋ก๊ทธ๋๋ฐ ๊ณตํต [ OOP๋ ] OOP๋ ํ์ค ์ธ๊ณ๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์ฎ๊ฒจ์ ํ์ค ์ธ๊ณ์ ์ฌ๋ฌผ๋ค์ ๊ฐ์ฒด๋ก ๋ณด๊ณ , ๊ทธ ๊ฐ์ฒด๋ก๋ถํฐ ๊ฐ๋ฐํ๊ณ ์ ํ๋ ํน์ง๊ณผ ๊ธฐ๋ฅ์ ๋ฝ์์ ํ๋ก๊ทธ๋๋ฐํ๋ ๊ธฐ๋ฒ์ ๋๋ค. OOP
mangkyu.tistory.com
์ฐธ๊ณ ) https://zwzwzw123-daily-daily.tistory.com/95
[CS์ง์ - ๊ฐ๋ฐ ์์] ์ ์ฐจ์งํฅ(PP) vs ๊ฐ์ฒด์งํฅ(OOP)
1. ์ ์ฐจ์งํฅ(PP) ๊ธฐ๋ฅ์ค์ฌ์ผ๋ก ๋ฐ๋ผ๋ณด๋ ๋ฐฉ์ ์ด๋ค๊ธฐ๋ฅ์ ์ด๋ค ์์๋ก ์ฒ๋ฆฌํ๋๊ฐ์ ์ด์ ์ ๋ง์ถค ๋จ์ - ์ ์ง๋ณด์์ ์ด๋ ค์ - ์๊ฒฉํ ์คํ์์๋ก ์ธํ ๋นํจ์จ์ → ์ ์ฐจ์งํฅ์ธ์ด์ ๋จ์ ์ ๋ณด์ํ
zwzwzw123-daily-daily.tistory.com
'CS > ๊ฐ๋ฐ์์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ฐ๋ฐ์์] #7. ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ (0) | 2023.01.12 |
---|---|
[๊ฐ๋ฐ์์] #6. ํด๋ฆฐ์ฝ๋ (0) | 2023.01.12 |
[๊ฐ๋ฐ์์] #4. MVC ํจํด (0) | 2023.01.11 |
[๊ฐ๋ฐ์์] #3. Git๊ณผ Github์ ์ฐจ์ด (0) | 2023.01.10 |
[๊ฐ๋ฐ์์] TDD์ ์๋ฏธ์ ์ฅ์ (0) | 2023.01.10 |