객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°(Object Oriented Programming, OOP) μ–Έμ–΄
2025. 1. 16. 00:42
객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP) μ΄λž€ ?

 

객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° (Object-Oriented Programming, OOP)은 ν”„λ‘œκ·Έλž˜λ°μ—μ„œ ν•„μš”ν•œ 데이터λ₯Ό 좔상화 μ‹œμΌœ μƒνƒœμ™€ ν–‰μœ„λ₯Ό κ°€μ§„ 객체둜 λ§Œλ“€κ³ , κ°μ²΄λ“€κ°„μ˜ 유기적인 μƒν˜Έμž‘μš©μ„ 톡해 λ‘œμ§μ„ κ΅¬μ„±ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° 방법.

(참고둜, 절차 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λž€ 순차적인 μ²˜λ¦¬κ°€ μ€‘μš”μ‹œλ˜λ©° ν”„λ‘œκ·Έλž¨ 전체가 유기적으둜 μ—°κ²°λ˜λ„λ‘ λ§Œλ“  ν”„λ‘œκ·Έλž˜λ°, λ°˜λ³΅λ˜λŠ” λ™μž‘μ„ ν•¨μˆ˜ 및 ν”„λ‘œμ‹œμ € ν˜•νƒœλ‘œ λͺ¨λ“ˆν™”ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 방식)

κ±°κΈ°μ„œ 또, 객체(λ˜λŠ” 클래슀)λž€? 

 

클래슀 : μ–΄λ–€ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 데이터λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ 좔상화λ₯Ό 거쳐 집단에 μ†ν•˜λŠ” 속성(attribute)κ³Ό ν–‰μœ„λ₯Ό λ³€μˆ˜μ™€ λ©”μ„œλ“œλ‘œ μ •μ˜ν•œ 것

객체(μΈμŠ€ν„΄μŠ€) : ν΄λž˜μŠ€μ—μ„œ μ •μ˜ν•œ 것을 ν† λŒ€λ‘œ μ‹€μ œ λ©”λͺ¨λ¦¬μ— ν• λ‹Ήλœ κ²ƒμœΌλ‘œ μ‹€μ œ ν”„λ‘œκ·Έλž¨μ— μ‚¬μš©λ˜λŠ” 데이터 

 

객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ νŠΉμ§• (4κ°€μ§€)

 

1. 좔상화 (Abstraction)

   : 객체듀끼리 곡톡적인 νŠΉμ§•(κΈ°λŠ₯, 속성)을 μΆ”μΆœν•˜μ—¬ μ •μ˜. 즉, 클래슀λ₯Ό μ •μ˜ν•˜λŠ” 것.

     ex) 객체1(삼성폰), 객체2(아이폰), 객체3(LG폰)... => 클래슀(νœ΄λŒ€ν°)

     μΆ”ν›„ λ‹€λ₯Έ λΈŒλžœλ“œκ°€ 좔가될 수 μžˆλ‹€. 이 λ•Œ, μΆ”μƒν™”λ‘œ 'νœ΄λŒ€ν°'을 κ΅¬ν˜„ν•΄λ†“μœΌλ©΄ λ‹€λ₯Έ 곳의 μ½”λ“œλŠ” μˆ˜μ •ν•  ν•„μš” 없이 μΆ”κ°€λ‘œ λ§Œλ“€ λΆ€λΆ„λ§Œ μƒˆλ‘œ 생성해주면 λœλ‹€.

2. 상속 (Ingeritance)

   : 이미 μ •μ˜λœ μƒμœ„ 클래슀(λΆ€λͺ¨ν΄λž˜μŠ€)의 λͺ¨λ“  속성과 연산을 ν•˜μœ„ 클래슀(μžμ‹ν΄λž˜μŠ€)κ°€ λ¬Όλ €λ°›μŒ.

     κΈ°μ‘΄ μ½”λ“œ μž¬ν™œμš©, μ½”λ“œ 쀑볡 제거. 생산성 λ†’μž„.

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

   : ν•˜λ‚˜μ˜ λ³€μˆ˜ λ˜λŠ” ν•¨μˆ˜κ°€ 상황에 따라 μ„œλ‘œ λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ λ™μž‘. 각자 μ—°κ²°λœ 객체에 의쑴.

     ex) λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”©, λ©”μ„œλ“œ μ˜€λ²„λ‘œλ”©

4. μΊ‘μŠν™” (Encapsultation)

   : κ΄€λ ¨μžˆλŠ” 데이터와 λ©”μ†Œλ“œλ₯Ό ν•˜λ‚˜μ˜ λ‹¨μœ„λ‘œ λ¬Άμ–΄, μ™ΈλΆ€μ—μ„œ μ‰½κ²Œ μ ‘κ·Όν•˜μ§€ λͺ»ν•˜λ„둝 함. 데이터 은닉/보호.

     ex) μ ‘κ·Ό μ œν•œμž private

  

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

 

JAVA, Python, C++, C# ..

 

μž₯점과 단점

 

μž₯점 : λŒ€ν˜• ν”„λ‘œμ νŠΈμ— 적합. μœ μ§€λ³΄μˆ˜μ— 용이. μ½”λ“œ μž¬μ‚¬μš©μ— 용이. 

단점 : 속도가 μƒλŒ€μ μœΌλ‘œ 느림. 객체 μˆ˜κ°€ λ§Žμ•„μ§μ— 따라 μš©λŸ‰μ΄ 컀짐. μ½”λ“œλ₯Ό μ„€κ³„ν•˜κ³  μž‘μ„±ν•˜λŠ”λ°μ— λ§Žμ€ μ‹œκ°„ μ†Œμš”.

 

 

getter, setterλ₯Ό μ‚¬μš©ν•˜λŠ” 이유?

 

getter, setterλ₯Ό μ‚¬μš©ν•˜λ©΄ λ©”μ„œλ“œλ₯Ό ν†΅ν•΄μ„œ μ ‘κ·Όν•˜κΈ° λ•Œλ¬Έμ—, λ©”μ„œλ“œ μ•ˆμ—μ„œ λ§€κ°œλ³€μˆ˜ 같이 μ–΄λ–€ μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ μž…λ ₯에 λŒ€ν•΄ 사전에 μ²˜λ¦¬ν•  수 있게 μ œν•œν•˜κ±°λ‚˜ μ‘°μ ˆν•  수 μžˆλ‹€.


유튜브 보닀가 μ΄ν•΄ν•˜κΈ° μ‰¬μš΄ 객체지ν–₯ κ°œλ… μ°Έκ³ !!

좜처:  유튜브 μ½”λ”©ν•˜λŠ”κ±°λ‹ˆ

 

 

https://rabo93.tistory.com/37

 

쒋은 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λž€? (λ‹€ν˜•μ„±.. SOLID 원칙..)

객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ ν”„λ‘œκ·Έλž¨μ„ μœ μ—°ν•˜κ³  λ³€κ²½ μš©μ΄ν•˜κ²Œ λ§Œλ“ λ‹€! * μžλ°” μ–Έμ–΄μ˜ λ‹€ν˜•μ„±(Polymorphism)- μ—­ν• κ³Ό κ΅¬ν˜„μœΌλ‘œ κ΅¬λΆ„ν•΄λ³΄μžex) μš΄μ „μž - μžλ™μ°¨μš΄μ „μžλŠ” μžλ™μ°¨μ˜ μ’…λ₯˜κ°€ 바껴도 μš΄μ „μ„

rabo93.tistory.com