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

 

+ Recent posts