πŸ’» CS 정리/ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘ 

3. 프로그ᄅᅒ망 α„‹α…₯ᆫᄋα…₯ α„‘α…’α„…α…₯ᄃᅑ암

Seungjae Lee 2022. 9. 9. 16:32

ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„

  • ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λŠ” μ „ν˜•μ μΈ 방식
  • νŠΉμ • 언어에 쒅속적인 것이 μ•„λ‹Œ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μΆ”κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨ μž‘μ„± 방식

ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ˜ λ³€ν™”

  • μ£Όμ–΄μ§„ 데이터에 μ–΄λ–€ 연산을 μ–΄λ–€ μˆœμ„œλ‘œ ν• μ§€ κ²°μ •ν•˜λŠ” 것이 μ€‘μš” => λͺ…λ Ήν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„ λ“±μž₯
  • λ³΅μž‘ν•œ 데이터 처리λ₯Ό μœ„ν•΄ 데이터 처리 방식 자체λ₯Ό 잘 μ •λ¦¬ν•˜λŠ” 것이 μ€‘μš” => μ ˆμ°¨ν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„ λ“±μž₯
  • 데이터가 μ €μž₯된 λ©”λͺ¨λ¦¬λ₯Ό κ΄€λ¦¬ν•˜λŠ” 것이 μ–΄λ €μš΄ 문제둜 λŒ€λ‘ => ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„ λ“±μž₯
  • 계산 절차λ₯Ό 문제의 쑰건을 λͺ…μ‹œν•˜λŠ” κ·œμΉ™μœΌλ‘œ 생각 => 논리 ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„ λ“±μž₯, 선언적 ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ˜ ν•œ μ’…λ₯˜
  • 같은 데이터에 λŒ€ν•΄ λ‹€λ₯Έ 처리 절차λ₯Ό μ—¬λŸ¬ 개 λͺ…μ‹œν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ ν”νžˆ λ°œμƒ => 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„ λ“±μž₯

ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„ λ³€ν™”μ˜ λ°°κ²½

  • μ‘μš© λ„λ©”μΈμ˜ λ³€ν™”
    • μš”κ΅¬μ‚¬ν•­μ˜ λ³€ν™”
    • 계산 λΆ„μ•Ό => λ‹€μ–‘ν•œ μ‘μš© λΆ„μ•Ό
  • ν”„λ‘œκ·Έλž¨ ꡬ성 λ°©μ‹μ˜ λ³€ν™”
    • λͺ…λ Ήμ–΄ λ‚˜μ—΄ => μ‘΄μž¬ν•˜λŠ” λͺ¨λ“ˆ μ‘°ν•©
  • 계산 λͺ¨λΈμ˜ λ³€ν™”
    • νŠœλ§κΈ°κ³„ λͺ¨λΈ => μƒˆλ‘œμš΄ λ°©μ‹μ˜ 계산 λͺ¨λΈ

ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ νŒ¨λŸ¬λ‹€μž„

  • ν•΄λ‹Ή ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ μ§€μ›ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„
  • 일반적으둜 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λŠ” μ—¬λŸ¬ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ„ 지원

λͺ…λ Ήν˜• ν”„λ‘œκ·Έλž˜λ°

  • ν”„λ‘œκ·Έλž¨
    • 일련의 λͺ…λ Ήμ–΄ λ‚˜μ—΄
  • μž₯점
    • ν”„λ‘œκ·Έλž¨μ„ μ‰½κ²Œ 이해할 수 있음
  • 단점
    • ν”„λ‘œκ·Έλž¨μ΄ λ³΅μž‘ν•œ 경우 효과적으둜 닀루지 λͺ»ν•¨

μ ˆμ°¨ν˜• ν”„λ‘œκ·Έλž˜λ°

  • ν”„λ‘œκ·Έλž¨
    • μ„œλΈŒλ£¨ν‹΄μ΄λΌλŠ” 절차의 μ§‘ν•©
  • μž₯점
    • μž¬κ·€ν˜ΈμΆœμ„ μ‚¬μš©ν•˜μ—¬ ν”„λ‘œμ‹œμ €λ₯Ό κ°„λ‹¨ν•˜κ²Œ μ •μ˜

ꡬ쑰화 ν”„λ‘œκ·Έλž˜λ°

  • goto 없이 ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λŠ” 방법
  • 블둝과 μ„œλΈŒλ£¨ν‹΄μ„ 이용
  • κ΅¬μ‘°ν™”λœ μ œμ–΄λ¬Έμ„ 이용

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°

  • ν”„λ‘œκ·Έλž¨
    • μ„œλ‘œ 톡신할 수 μžˆλŠ” 객체(object)의 μ§‘ν•©
  • GUI κ°œλ°œμ— 큰 획(Smalltalk)
  • ν”„λ‘œκ·Έλž¨ μž¬μ‚¬μš© 편의둜 S/W 생산성에 크게 κΈ°μ—¬
  • 객체의 κ°œλ…
    • μƒνƒœλ₯Ό μœ μ§€ν•˜λ©° μ™ΈλΆ€μ˜ μš”μ²­μ— λ°˜μ‘ν•˜λŠ” 데이터
    • μƒνƒœ - ν•„λ“œ(멀버 λ³€μˆ˜), λ°˜μ‘ - λ©”μ†Œλ“œ(멀버 ν•¨μˆ˜)
    • μƒνƒœλŠ” 외뢀에 숨기고 λ©”μ†Œλ“œλŠ” 외뢀에 곡개

ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°

  • λ°μ΄ν„°λŠ” κ°’μœΌλ‘œ, λͺ…λ Ήμ–΄λŠ” ν•¨μˆ˜λ‘œ μ·¨κΈ‰
    • λͺ…λ Ήμ–΄κ°€ 데이터λ₯Ό λ°”κΏ€ 수 μ—†μŒ
  • λŒ€μž…λ¬Έκ³Ό 반볡문 μ—†μŒ
  • ν•¨μˆ˜ μžμ²΄λ„ κ°’μœΌλ‘œ μ·¨κΈ‰ κ°€λŠ₯

선언적 ν”„λ‘œκ·Έλž˜λ°κ³Ό 논리 μ–Έμ–΄

  • ν”„λ‘œκ·Έλž¨
    • 논리식 μ§‘ν•©
  • 논리식은 λͺ…μ œλ‚˜ μˆ μ–΄λ‘œ λ‚˜νƒ€λƒ„
    • μˆ μ–΄λŠ” 인수λ₯Ό 받을 수 있음

객체지ν–₯ νŒ¨λŸ¬λ‹€μž„

  • 객체 μ‚¬μ΄μ˜ 톡신을 톡해 계산을 ν‘œν˜„

ν•¨μˆ˜ν˜• νŒ¨λŸ¬λ‹€μž„

  • ν•¨μˆ˜μ˜ μ μš©μ„ 톡해 계산을 ν‘œν˜„

논리 νŒ¨λŸ¬λ‹€μž„

  • λ…Όλ¦¬μ‹μ˜ μ§„μœ„λ₯Ό 증λͺ…ν•˜λŠ” 과정을 톡해 계산을 ν‘œν˜„

μ •λ¦¬ν•˜κΈ°

  1. ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λŠ” μ „ν˜•μ μΈ 방식을 ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ΄λΌκ³  λΆ€λ₯Έλ‹€.
  2. λͺ…λ Ήν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ—μ„œ ν”„λ‘œκ·Έλž¨μ€ νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λͺ…λ Ήμ–΄κ°€ λ‚˜μ—΄λœ 것이닀. 컴퓨터 ν•˜λ“œμ›¨μ–΄μ˜ 속성을 κ·ΈλŒ€λ‘œ λ°˜μ˜ν•œ ν˜•νƒœμ˜ νŒ¨λŸ¬λ‹€μž„μ΄λ‹€.
  3. μ ˆμ°¨ν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ€ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 절차λ₯Ό μ„œλΈŒλ£¨ν‹΄ λ‹¨μœ„μ˜ 절차둜 κ΅¬ν˜„ν•˜λŠ” λ°©μ‹μ˜ νŒ¨λŸ¬λ‹€μž„μœΌλ‘œ, ν”„λ‘œκ·Έλž¨μ„ 절차의 μ§‘ν•©μœΌλ‘œ κ°„μ£Όν•œλ‹€.
  4. ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ—μ„œλŠ” 데이터λ₯Ό κ°’μœΌλ‘œ κ°„μ£Όν•˜κ³ , μ£Όμ–΄μ§„ λ°μ΄ν„°λ‘œλΆ€ν„° μƒˆλ‘œμš΄ 값을 μƒμ„±ν•˜λŠ” ν•¨μˆ˜μ— μ΄ˆμ μ„ λ§žμΆ”μ–΄ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•œλ‹€.
  5. 논리 ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ—μ„œλŠ” 문제의 쑰건을 λ…Όλ¦¬μ‹μœΌλ‘œ ν‘œν˜„ν•˜κ³  이 식을 λ°”νƒ•μœΌλ‘œ μ–΄λ–€ 사싀을 μž…μ¦ν•΄ λ‚˜κ°€λŠ” λ°©μ‹μœΌλ‘œ ν”„λ‘œκ·Έλž¨μ„ μˆ˜ν–‰ν•œλ‹€. 논리 ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ€ 선언적 ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ˜ 일쒅이닀.
  6. 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ€ 데이터와 κ΄€λ ¨ 연산을 합쳐 객체둜 λͺ¨ν˜•ν™”ν•˜κ³ , 객체 μ‚¬μ΄μ˜ μƒν˜Έμž‘μš©μ„ 톡해 ν”„λ‘œκ·Έλž¨μ„ μˆ˜ν–‰ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ΄λ‹€.
  7. ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ˜ λ³€ν™” λ°°κ²½μœΌλ‘œλŠ” μ‘μš© λ„λ©”μΈμ˜ λ³€ν™”, ν”„λ‘œκ·Έλž¨ ꡬ성 λ°©μ‹μ˜ λ³€ν™”, 계산 λͺ¨λΈμ˜ λ³€ν™” 등을 λ“€ 수 μžˆλ‹€.
  8. ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ ν•œ νŒ¨λŸ¬λ‹€μž„λ§Œ μ§€μ›ν•˜λŠ” 것은 μ•„λ‹ˆλ‹€.
  9. ꡬ쑰화 ν”„λ‘œκ·Έλž˜λ°μ€ goto λ…Όλž€μœΌλ‘œλΆ€ν„° μ΄‰λ°œλ˜μ—ˆλŠ”λ° goto 없이 ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λŠ” νŒ¨λŸ¬λ‹€μž„μ΄λ‹€.
  10. λ‹€μ–‘ν•œ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ€ μ„œλ‘œ 배타적이라기보닀 μƒν˜Έ 보완적인 κ²ƒμœΌλ‘œ λ³΄λŠ” 것이 λ°”λžŒμ§ν•˜λ‹€.