Skip to content

Latest commit

Β 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Β 
Β 

README.md

Common

ν”„λ ˆμž„μ›Œν¬ vs 라이브러리

  • ν”„λ ˆμž„μ›Œν¬ β†’ 각각의 λͺ©μ μ„ κ°€μ§€κ³  μžˆλŠ” λ ˆκ³ μ„ΈνŠΈ
    • κ°œλ°œμžλŠ” 이미 μ§œμ—¬μ§„ λ£°(ν”„λ ˆμž„μ›Œν¬)에 따라 μž‘μ—…μ„ ν•œλ‹€.
    • xcode둜 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“œλŠ” 것은 μ• ν”Œμ΄ λ§Œλ“€μ–΄λ†“μ€ ν”„λ ˆμž„μ›Œν¬μ— 따라 μ–΄ν”Œμ„ λ§Œλ“ λ‹€κ³  ν•  수 μžˆλ‹€.
  • 라이브러리 β†’ 미리 남듀이 λ§Œλ“€μ–΄ 놓은 ν•„μš”λΆ€λΆ„μ„ μ‚¬μš©ν•˜λŠ” 것
    • μ–΄ν”Œμ„ λ§Œλ“€λ•Œ 남이 λ§Œλ“  이쁜 μ»€μŠ€ν…€ λ²„νŠΌμ„ μ“°λŠ” λŠλ‚Œμ΄λ‹€.

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

객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ μ™œ ν•„μš”ν• κΉŒ?

λ„μ„œ 관리 ν”„λ‘œκ·Έλž¨μ΄λ‚˜ νšŒμ› 관리 ν”„λ‘œκ·Έλž¨ 등을 μƒκ°ν•΄λ³΄μž. 각각의 ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•΄μ•Όν•˜λŠ” 데이터가 μžˆμ„ 것이닀.

Member Data

이름: 성별: λ‚˜μ΄: μ£Όμ†Œ:

Book Data

제λͺ©: 가격: μΆœνŒμ‚¬: μ €μž:

ν΄λž˜μŠ€λ‚˜ ꡬ쑰체λ₯Ό μ‚¬μš©ν•˜μ—¬ μ΄λŸ¬ν•œ λ©€λ²„λ‚˜ μ±…μ˜ λͺ¨λΈλ“€μ„ 잘 μ„€κ³„ν•œλ‹€λ©΄ ν•˜λ‚˜ν•˜λ‚˜ λ”°λ‘œ λ§Œλ“€ν•„μš”μ—†μ΄ 곡μž₯μ—μ„œ 빡찍어내듯이 μ‚¬μš©ν•˜λ©΄λœλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ 데이터λ₯Ό λ§Œλ“€κΈ°μ—λ„ μ’‹μ§€λ§Œ 데이터λ₯Ό μ²˜λ¦¬ν•˜κΈ°μ—λ„ μœ μš©ν•˜λ‹€.


객체지ν–₯의 4λŒ€ νŠΉμ§•

  1. 좔상화(Abstraction)

    λͺ¨λΈλ§μ΄λΌλŠ” 말과 λΉ„μŠ·ν•˜λ‹€. μ‹€μƒν™œμ—μ„œμ˜ μΆ”μƒν™”λž€ κ΄€μ°°μžκ°€ κ΄€μ‹¬μžˆλŠ” λΆ€λΆ„λ§Œ κ°€μ§€κ³  μž¬μ‘°ν•©ν•˜λŠ” 것이닀. 객체지ν–₯적 κ΄€μ μ—μ„œ, μ‹€μ²΄λ“€μ˜ 곡톡적 νŠΉμ„±μ„ λ½‘μ•„λ‚΄μ„œ 클래슀둜 μ •μ˜ν•˜λŠ” 것 μžμ²΄κ°€ μΆ”μƒν™”μ˜ κ°œλ…μ΄λ‹€. (λ„μ„œκ΄€λ¦¬ ν”„λ‘œκ·Έλž¨ β†’ 제λͺ©, μ €μž, μΆœνŒμ‚¬, 가격 λ“±..)

  2. μΊ‘μŠν™”(Encapsulagtion)

    μΊ‘μŠν™”λŠ” 연관이 μžˆλŠ” μƒνƒœ(속성)μ΄λ‚˜ κΈ°λŠ₯(λ©”μ„œλ“œ)λ₯Ό ν•˜λ‚˜μ˜ 클래슀둜 λ¬Άμ–΄μ„œ ν™œμš©ν•œλ‹€λŠ” κ°œλ…μ΄λ‹€. μΊ‘μŠν™”μ—μ„œλŠ” μ€λ‹‰ν™”λΌλŠ” κ°œλ…μ΄ μžˆλŠ”λ° 이λ₯Ό μ‚¬μš©ν•˜λ©΄ μ ‘κ·Όμ œμ–΄μžλ₯Ό μ΄μš©ν•΄ 객체 μ™ΈλΆ€μ—μ„œ λ‚΄λΆ€λ°μ΄ν„°μ˜ μ ‘κ·Ό ν†΅μ œκ°€ κ°€λŠ₯ν•΄μ§„λ‹€.

  3. 상속성(Ingeritance)

    λΆ€λͺ¨ 클래슀의 속성과 λ©”μ„œλ“œλ₯Ό μžμ‹ ν΄λž˜μŠ€μ—μ„œ κ·ΈλŒ€λ‘œ λ¬Όλ €λ°›λŠ” κ°œλ…μ΄λ‹€. 상속을 톡해, μ½”λ“œκ°€ μž¬ν™œμš©λ  수 있기 λ•Œλ¬Έμ— 생산성이 λ†’μ•„μ§„λ‹€.

  4. λ‹€ν˜•μ„±(Polymorphism)

    λ‹€ν˜•μ„±μ€ ν•˜λ‚˜μ˜ 객체가 μ—¬λŸ¬κ°€μ§€ νƒ€μž…μ˜ ν˜•νƒœλ‘œ μ €μž₯ 될 수 있고, λ‹€μ–‘ν•œ λ©”μ„œλ“œμ˜ ν˜„νƒœλ‘œ λ™μž‘μ΄ κ°€λŠ₯함을 μ˜λ―Έν•œλ‹€. λ”°λΌμ„œ ν•˜λ‚˜μ˜κ°μ²΄λŠ” λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ λ™μž‘μ΄ κ°€λŠ₯ν•˜λ‹€.


μ½”λ°νž™μŠ€

  1. μ½”λ“œ(ν”„λ‘œκ·Έλž¨) β†’ ν”„λ‘œκ·Έλž¨μ˜ λͺ¨λ“  μ½”λ“œ
  2. 데이터 β†’ μ „μ—­ λ³€μˆ˜ 및 νƒ€μž… λ³€μˆ˜, κ³΅ν†΅μœΌλ‘œ κ³΅μœ ν•˜κΈ° μœ„ν•œ 데이터
  3. νž™ β†’ 동적할당, 크기가 크고 관리할 ν•„μš”κ°€ μžˆλŠ” 데이터
  4. μŠ€νƒ β†’ ν•¨μˆ˜ 싀행을 μœ„ν•œ μž„μ‹œμ  곡간

λ™μ‹œμ„± ν”„λ‘œκ·Έλž˜λ°μ˜ 문제점

  1. κ²½μŸμƒν™©/경쟁쑰건(Race Condition)

λ©€ν‹° μ“°λ ˆλ“œμ˜ ν™˜κ²½μ—μ„œ, 같은 μ‹œμ μ— μ—¬λŸ¬κ°œμ˜ μ“°λ ˆλ“œμ—μ„œ ν•˜λ‚˜μ˜ λ©”λͺ¨λ¦¬μ— λ™μ‹œμ ‘κ·Όν•˜λŠ” λ¬Έμ œμ΄λ‹€. λ‹€λ₯Έ ν‘œν˜„μœΌλ‘œλŠ” Thread-Safeν•˜μ§€ μ•Šλ‹€κ³ λ„ ν•˜λŠ”λ°, μ΄λŸ¬ν•œ λ¬Έμ œμ μ„ ν•΄κ²°ν•˜λ €λ©΄ λ©”λͺ¨λ¦¬λ₯Ό λ‹€λ₯Έ μ“°λ ˆλ“œκ°€ μ“°κ³ μžˆλŠ” λ™μ•ˆμ—λŠ” λ‹€λ₯Έ μ—¬λŸ¬ μ“°λ ˆλ“œμ—μ„œ μ ‘κ·Όν•˜μ§€ λͺ»ν•˜λ„둝 Thread-Safe 처리λ₯Ό ν•˜λ©΄λœλ‹€.


  1. κ΅μ°©μƒνƒœ(Dead Lock)

λ©€ν‹° μ“°λ ˆλ“œμ˜ ν™˜κ²½μ—μ„œ, 베타적인 λ©”λͺ¨λ¦¬ μ‚¬μš©μœΌλ‘œ 일이 진행이 μ•ˆλ˜λŠ” λ¬Έμ œμ΄λ‹€. κ΅μ°©μƒνƒœκ°€ λ°œμƒν•˜λŠ” 상황은 Thread-Safeλ₯Ό μ²˜λ¦¬ν–ˆμ§€λ§Œ 잘λͺ»λœ μ„€κ³„λ‘œ μ„œλ‘œ μ ‘κ·Όλͺ»ν•˜κ²Œ ν•˜κ±°λ‚˜ μ μœ ν•˜λ €κ³  ν•˜λ©΄μ„œ λ©”μ„œλ“œκ°€ μ’…λ£Œλ₯Ό λͺ»μ‹œν‚€λŠ” 상황이닀.