ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [객체지ν–₯의 사싀과 μ˜€ν•΄] μΈν„°νŽ˜μ΄μŠ€μ™€ κ³΅μš©μΈν„°νŽ˜μ΄μŠ€
    πŸ“• λ„μ„œ/객체지ν–₯의 사싀과 μ˜€ν•΄ 2021. 9. 5. 17:35

    http://www.yes24.com/Product/Goods/18249021?OzSrank=1

     

    객체지ν–₯의 사싀과 μ˜€ν•΄ - YES24

    γ€Žκ°μ²΄μ§€ν–₯의 사싀과 μ˜€ν•΄γ€λŠ” 객체지ν–₯μ΄λž€ λ¬΄μ—‡μΈκ°€λΌλŠ” μ›λ‘ μ λ©΄μ„œλ„ λ‹€μ†Œ μœ„ν—˜ν•œ μ§ˆλ¬Έμ— λ‹΅ν•˜κΈ° μœ„ν•΄ 쓰여진 책이닀. μ•ˆνƒ€κΉκ²Œλ„ λ§Žμ€ μ‚¬λžŒλ“€μ΄ 객체지ν–₯의 λ³Έμ§ˆμ„ μ˜€ν•΄ν•˜κ³  μžˆλ‹€. κ°€μž₯

    www.yes24.com

     

    λ„μ„œμ˜ λ‚΄μš© μˆœμ„œμ™€λŠ” 상관없이 읽은 λ‚΄μš©μ„ μš”μ•½ μž¬κ΅¬μ„±ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

     

    객체 μΈν„°νŽ˜μ΄μŠ€ (pg.162~)

     

     

    ν„°μΉ˜ μΈν„°νŽ˜μ΄μŠ€

     

    μΈν„°νŽ˜μ΄μŠ€

    νŠΉμ • 언어에 μ’…μ†λ˜μ§€ μ•Šμ€ μ˜λ―Έλ‘œμ„œ μΈν„°νŽ˜μ΄μŠ€λž€

    두 μ‚¬λ¬Όμ˜ κ²½κ³„μ§€μ μ—μ„œ μ„œλ‘œ μƒν˜Έμž‘μš©ν•  수 μž‡κ²Œ μ΄μ–΄μ£ΌλŠ” λ°©λ²•μ΄λ‚˜ μž₯μΉ˜μ΄λ‹€.

     

    μ„œλ‘œ λ‹€λ₯Έ 두 μ‚¬λ¬Όμ˜ 경계지점에 μœ„μΉ˜ν•˜κ³  μžˆλ‹€λŠ” κ°œλ…μ„ 잘 μ΄ν•΄ν•˜μž!

     

    예λ₯Ό λ“€λ©΄:

    μ‚¬λžŒκ³Ό μ‚¬λžŒ μ‚¬μ΄μ˜ μΈν„°νŽ˜μ΄μŠ€λŠ” μ–Έμ–΄λ‚˜ λͺΈμ§“이 될 수 μžˆλ‹€.

     

    λ‹€λ₯Έ μ‚¬λžŒμ΄ μž‘μ„±ν•œ μ½”λ“œμ™€ λ‚΄ μ½”λ“œκ°€ μƒν˜Έμž‘μš©ν•˜λŠ” 방법은 뭘까? λ°”λ‘œ API λ‹€ (Application Programming Interface) πŸ˜ƒ

     

    슀마트폰과 μ‚¬λžŒμ€ μ–΄λ–»κ²Œ μƒν˜Έμž‘μš© ν•˜λŠ”κ°€? 손가락과 ν™”λ©΄ (각 μ‚¬λ¬Όμ˜ 경계지점) 을 톡해 ν„°μΉ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•œλ‹€! 

     

     

    κ·Έλž˜ν”½μ„ μ΄μš©ν•΄ μ‚¬μš©μžκ°€ μƒν˜Έμž‘μš©ν•˜λŠ” 방법 GUI

     


     

    μΈν„°νŽ˜μ΄μŠ€μ˜ μ„Έ 가지 νŠΉμ§•

     

    1. λ‚΄λΆ€ κ΅¬μ‘°λ‚˜ λ™μž‘μ„ λͺ°λΌλ„ μΈν„°νŽ˜μ΄μŠ€λ§Œ μ•Œλ©΄ μ‰½κ²Œ λŒ€μƒμ„ μ‘°μž‘ν•˜κ±°λ‚˜ μ˜μ‚¬λ₯Ό 전달할 수 μžˆλ‹€.

     

    2. μΈν„°νŽ˜μ΄μŠ€λŠ” λ³€κ²½λ˜μ§€ μ•Šμ€μ±„λ‘œ λ‚΄λΆ€ κ΅¬μ„±μ΄λ‚˜ μž‘λ™λ°©μ‹μ„ 변경해도 κΈ°μ‘΄ μ‚¬μš©μžμ—κ²ŒλŠ” μ–΄λ–€ 영ν–₯도 λ―ΈμΉ˜μ§€ μ•ŠλŠ”λ‹€.

     

    3. λ™μΌν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” λ‹€λ₯Έ λŒ€μƒκ³Όλ„ 같은 λ°©μ‹μœΌλ‘œ μƒν˜Έμž‘μš©ν•  μˆ˜μžˆλ‹€.

     

    μžλ™μ°¨ μš΄μ „μž

     

    μ˜ˆμ‹œ ) μžλ™μ°¨λ₯Ό μ‚¬μš©ν•˜λŠ” μš΄μ „μžλ„ μžλ™μ°¨μ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•œλ‹€:

     

    1. μžλ™μ°¨κ°€ κ΅΄λŸ¬κ°€λŠ” 원리( λ‚΄λΆ€ κ΅¬ν˜„) λ₯Ό λͺ°λΌλ„ μ•‘μ…€ 브레이크 ν•Έλ“€ (μΈν„°νŽ˜μ΄μŠ€) 만 μ•Œλ©΄ μš΄μ „ν•  수 μžˆλ‹€.

     

    2. 엔진을 ꡐ체해도 μΈν„°νŽ˜μ΄μŠ€λŠ” κ·ΈλŒ€λ‘œμ΄κΈ° λ•Œλ¬Έμ— μš΄μ „μžλŠ” μ—¬μ „νžˆ μš΄μ „ν•  수 μžˆλ‹€.

     

    3. λ‹€λ₯Έ 차도 λ˜‘κ°™μ€ μΈν„°νŽ˜μ΄μŠ€μ΄κΈ° λ•Œλ¬Έμ— κ·ΈλŒ€λ‘œ μš΄μ „ν•  수 μžˆλ‹€.


     

    μž‘κ°€λ‹˜μ΄ ν•˜κ³  싢은 말은 뭘까?

     

    ν˜‘λ ₯에 μ°Έμ—¬ν•˜λŠ” κ°μ²΄λŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 λ‹€λ₯Έ 객체와 μƒν˜Έμž‘μš©ν•œλ‹€λŠ” 것이닀.

     

    그런데 객체지ν–₯μ—μ„œ κ°μ²΄λŠ” λ©”μ‹œμ§€λ₯Ό ν†΅ν•΄μ„œλ§Œ λ‹€λ₯Έ κ°μ²΄λž‘ μƒν˜Έμž‘μš©ν•œλ‹€.

     

    κ·Έλ ‡λ‹€λ©΄ 결둠은?? λ°”λ‘œ μ•„λž˜μ—...β˜‘οΈ


     

    계속 λ°˜λ³΅λ˜λŠ” 이 λ¬Έμž₯

    " 객체가 λ‹€λ₯Έ 객체와 μƒν˜Έμž‘μš©ν•  수 μžˆλŠ” μœ μΌν•œ 방법은 'λ©”μ‹œμ§€ 전솑'이닀. "

     

    " 객체의 μΈν„°νŽ˜μ΄μŠ€λŠ” 객체가 μˆ˜μ‹ ν•  수 μžˆλŠ” λ©”μ‹œμ§€μ˜ λͺ©λ‘μœΌλ‘œ κ΅¬μ„±λœλ‹€. "


     

     

     

    곡용 μΈν„°νŽ˜μ΄μŠ€

    μΈν„°νŽ˜μ΄μŠ€λŠ” μ™ΈλΆ€μ—μ„œ μ ‘κ·Όκ°€λŠ₯ν•œ μΈν„°νŽ˜μ΄μŠ€μ™€, λ‚΄λΆ€μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯ν•œ μΈν„°νŽ˜μ΄μŠ€λ‘œ κ΅¬λΆ„λœλ‹€.

     

    곡용 μΈν„°νŽ˜μ΄μŠ€: μ™ΈλΆ€μ—μ„œ μ ‘κ·Ό κ°€λŠ₯ν•œ μΈν„°νŽ˜μ΄μŠ€

     

    πŸ€” λͺ¨λ“  μΈν„°νŽ˜μ΄μŠ€λŠ” λ©”μ‹œμ§€ 전솑을 ν†΅ν•΄μ„œλ§Œ μ ‘κ·Όν•  수 μžˆλ‹€?????

     

    그런데 μ²˜μŒμ—λŠ” λ©”μ‹œμ§€ 전솑이 μ •ν™•ν•˜κ²Œ 무엇을 μ˜λ―Έν•˜λŠ”μ§€ 이해가지 μ•Šμ•˜μ—ˆλ‹€.

    → λ©”μ„œλ“œ ν˜ΈμΆœμ΄λž‘ 같은 κ°œλ…μ΄ μ•„λ‹Œκ°€???? μ•„λž˜μ—...

     

    μΈν„°λ„·μ—μ„œ 찾은 κ·Έλ¦Ό. λ©”μ‹œμ§€μ™€ λ©”μ„œλ“œκ°€ κ΅¬λΆ„λ˜μ–΄ μžˆλ‹€.

     

    λ©”μ‹œμ§€μ™€ λ©”μ„œλ“œμ˜ ꡬ뢄

     

    → 객체λ₯Ό 외뢀와 λ‚΄λΆ€λΌλŠ” 두 개의 λͺ…ν™•ν•œ μ˜μ—­μœΌλ‘œ ꡬ뢄할 수 μžˆλ‹€.

    → λ‹€ν˜•μ„±μ„ 톡해 λ‹€μ–‘ν•œ νƒ€μž…μ˜ 객체λ₯Ό μˆ˜μš©ν•  수 μžˆλŠ” μœ μ—°μ„±μ„ μ œκ³΅ν•œλ‹€.

     

    → 즉, 같은 λ©”μ‹œμ§€λΌλ„ νƒ€μž…에 따라 λ‹€λ₯Έ λ©”μ„œλ“œλ₯Ό μˆ˜ν–‰ν•  수 있게 λœλ‹€. (λ‹€ν˜•μ„±, λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”©)

     

    → 즉, λ©”μ„œλ“œλŠ” λ©”μ‹œμ§€μ˜ κ΅¬ν˜„μ²΄ (λ©”μ‹œμ§€λŠ” κ°œλ…μ΄κ³ , λ©”μ„œλ“œλŠ” κ·Έ κ°œλ…μ„ κ΅¬ν˜„ν•΄ 놓은 것이닀.)


     

    λ‹€ν˜•μ„±(polymorphism)μ΄λž€?

     

    https://cdn.guru99.com/images/2/062920_1112_CPolymorphi1.png

     

     

    λ‹€ν˜•μ„±(polymorphism)μ΄λž€ ν•˜λ‚˜μ˜ 객체가 μ—¬λŸ¬ 가지 νƒ€μž…μ„ κ°€μ§ˆ 수 μžˆλŠ” 것을 μ˜λ―Έν•œλ‹€.

     

    μžλ°”μ—μ„œλŠ” μ΄λŸ¬ν•œ λ‹€ν˜•μ„±μ„ λΆ€λͺ¨ 클래슀 νƒ€μž…μ˜ μ°Έμ‘° λ³€μˆ˜λ‘œ μžμ‹ 클래슀 νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό μ°Έμ‘°ν•  수 μžˆλ„λ‘ ν•˜μ—¬ κ΅¬ν˜„ν•˜κ³  μžˆλŠ”λ°,

     

    μŠ€μœ„ν”„νŠΈμ—μ„œλ„ λΆ€λͺ¨ νƒ€μž…μ˜ μ°Έμ‘° λ³€μˆ˜μ— μžμ‹ νƒ€μž…μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό 넣을 수 μžˆλ‹€.

     

    λ‹€ν˜•μ„±μ€ 상속, 좔상화와 λ”λΆˆμ–΄ 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ κ΅¬μ„±ν•˜λŠ” μ€‘μš”ν•œ νŠΉμ§• 쀑 ν•˜λ‚˜μ΄λ‹€.

     

    μ°Έμ‘°: http://tcpschool.com/java/java_polymorphism_concept

     

     

     

    πŸ’‘ λ‚΄κ°€ μ•Œκ²Œ 된 것 πŸ’‘

     

    객체가 λ©”μ‹œμ§€κ°€ μ•„λ‹ˆλΌ 직접 κ΅¬ν˜„μ— μ ‘κ·Όν•˜μ—¬ μƒν˜Έμž‘μš© ν•˜κ²Œ 되면 결합도가 μ¦κ°€ν•˜κ²Œ 되고,

    결과적으둜 μ½”λ“œ μˆ˜μ •μ— μ˜ν•œ νŒŒκΈ‰νš¨κ³Όκ°€ μ»€μ§€λ―€λ‘œ μœ μ§€ λ³΄μˆ˜κ°€ νž˜λ“  μ½”λ“œκ°€ λœλ‹€.

     

    λ˜ν•œ 객체의 μžμœ¨μ„±μ΄ λ–¨μ–΄μ§€λ―€λ‘œ μœ μ—°μ„±μ΄ κ°μ†Œν•˜κ³ , μ½”λ“œ μ˜λ„μ˜ λͺ…ν™•μ„± λ˜ν•œ λ–¨μ–΄μ§€κ²Œ λœλ‹€.

     

    객체가 λ‹€λ₯Έ 객체의 속성을 직접 μ‚¬μš©ν•˜λŠ” μ½”λ“œλ₯Ό μ—†μ• κ³ , 곡용 μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“€μ–΄μ„œ μ ‘κ·Όν•˜κ²Œ λ°”κΏ€ 수 μžˆλ‹€.

     

    λ˜ν•œ μ–΄λ €μš΄ λΆ€λΆ„μ΄μ§€λ§Œ λ©”μ„œλ“œλ₯Ό 'μ λ‹Ήν•˜κ²Œ 좔상화' ν•˜μ—¬ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

    → μ§€λ‚˜μΉœ μΆ”μƒν™”λŠ” μ½”λ“œκ°€ 단일 μ±…μž„ 원칙을 지킀지 μ•Šμ„ κ°€λŠ₯성이 높아지고, μ§€λ‚˜μΉœ κ΅¬μ²΄ν™”λŠ” κ·Έ μ˜λ„κ°€ λΆˆλΆ„λͺ…해지고 객체의 μžμœ¨μ„±μ„ μΉ¨ν•΄ν•˜κΈ° λ•Œλ¬Έμ΄λΌκ³  μƒκ°ν•œλ‹€.

     

    μš°μ„  getter λŠ” 계산 μ†μ„±μ΄λ‚˜ private(set) 을 μ‚¬μš©ν•˜κ³ , setter λŠ” 계산 μ†μ„±μ΄λ‚˜ public method λ₯Ό λ§Œλ“€μ–΄ μ‚¬μš©ν•΄λ³΄λ©΄ κΈ°μ΄ˆμ μΈ 객체지ν–₯을 μ‹€μ²œν•΄λ³΄μž!

     

     

     

    λ‚˜λŠ” μ˜€λŠ˜λ„ λ°œμ „ν–ˆλ‹€!


    πŸ€–πŸŸ’[우짱의 iOS λΈ”λ‘œκ·Έ]πŸ”΅πŸ’»

    iOSλ₯Ό κ³΅λΆ€ν•˜λ©΄μ„œ 배운 λ‚΄μš©μ„ κΈ°λ‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

    λŒ“κΈ€

μ–΄μ œλ³΄λ‹€ λ°œμ „ν•œ λ‚˜