πŸ“— CS

[OOP] 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λž€?

jcowwk 2025. 1. 15. 21:13

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


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

2. 객체지ν–₯ ν”„λ‘œκ·Έλ° νŠΉμ§•


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

객체λ₯Ό μ€‘μ‹¬μœΌλ‘œ ν”„λ‘œκ·Έλž¨μ„ μ„€κ³„ν•˜κ³  κ°œλ°œν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μž…λ‹ˆλ‹€.

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ˜ μ’…λ₯˜μ—λŠ” Java, C++, C#, Javascript, Python 등이 μžˆμŠ΅λ‹ˆλ‹€.

 

class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public void introduce() {
        System.out.println("μ•ˆλ…•ν•˜μ„Έμš”, μ €λŠ” " + this.name + "μž…λ‹ˆλ‹€.");
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Person("μ†Œμ—°");
        person.introduce();
    }
}

 

μœ„μ˜ Java μ½”λ“œλ₯Ό μ˜ˆμ‹œλ‘œ μ‚¬μš©ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

- 클래슀(Class)

객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ ν‹€(섀계도)μž…λ‹ˆλ‹€.

μ—¬λŸ¬ 개의 속성과 λ©”μ„œλ“œλ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

"μ‚¬λžŒ"을 ν•˜λ‚˜μ˜ 클래슀둜 μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

- 객체(Object)

ν΄λž˜μŠ€λ‘œλΆ€ν„° μƒμ„±λœ μ‹€μ œ μΈμŠ€ν„΄μŠ€μž…λ‹ˆλ‹€.

 

"μ‚¬λžŒ"은 이름, λ‚˜μ΄, 성별과 같은 속성을 κ°€μ§€λŠ” μ‚¬λžŒ1, μ‚¬λžŒ2, μ‚¬λžŒ3이 μ‘΄μž¬ν•©λ‹ˆλ‹€.

μ‚¬λžŒ1, μ‚¬λžŒ2, μ‚¬λžŒ3은 각각 ν•˜λ‚˜μ˜ 객체(사물)μž…λ‹ˆλ‹€.

 

- 속성(Property)

클래슀 λ‚΄λΆ€μ—μ„œ μ„ μ–Έλœ λ³€μˆ˜μž…λ‹ˆλ‹€.

객체의 데이터λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.

 

"μ‚¬λžŒ"은 이름, λ‚˜μ΄, 성별과 같은 속성을 κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

- λ©”μ„œλ“œ(Method)

클래슀 내뢀에 μ •μ˜λœ ν•¨μˆ˜μž…λ‹ˆλ‹€.

객체의 행동을 μ •μ˜ν•©λ‹ˆλ‹€.

 

"μ‚¬λžŒ"은 λ°₯을 λ¨Ήκ±°λ‚˜, 인사λ₯Ό ν•˜κ±°λ‚˜, μž μ„ μžκ±°λ‚˜ 각각의 행동을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ·Έ 행동에 λŒ€ν•΄ μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

2. 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° νŠΉμ§•

- 좔상화(Abstraction)

λΆˆν•„μš”ν•œ 정보λ₯Ό 숨기고 핡심적인 κΈ°λŠ₯만 μ œκ³΅ν•©λ‹ˆλ‹€.

 

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

같은 λ©”μ„œλ“œλ₯Ό μ—¬λŸ¬ κ°μ²΄μ—μ„œ λ‹€λ₯΄κ²Œ λ™μž‘ν•˜λ„λ‘ κ΅¬ν˜„ κ°€λŠ₯ν•©λ‹ˆλ‹€.

 

- μΊ‘μŠν™”(Encapsulation)

객체의 데이터λ₯Ό μ™ΈλΆ€μ—μ„œ 직접 μ ‘κ·Όν•˜μ§€ λͺ»ν•˜κ²Œ λ³΄ν˜Έν•©λ‹ˆλ‹€.

클래슀 λ‚΄λΆ€μ˜ 속성과 λ©”μ„œλ“œμ— λŒ€ν•œ μ ‘κ·Ό λ²”μœ„λ₯Ό μ œν•œν•˜λŠ” ν‚€μ›Œλ“œμΈ private, public, protected와 같은 μ ‘κ·Ό μ œμ–΄μžλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

 

μ ‘κ·Ό μ œμ–΄μž 클래슀 λ‚΄λΆ€ 상속받은 μžμ‹ 클래슀 μ™ΈλΆ€μ—μ„œ μ ‘κ·Ό κ°€λŠ₯
public O O O
private O O X
protected O X X

 

μ•ˆμ „ν•œ μ½”λ“œλ₯Ό λ§Œλ“€κΈ° μœ„ν•΄μ„œ λΆˆν•„μš”ν•œ 속성은 private, protected둜 κ°μ‹ΈλŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

 

- 상속(Inheritance)

λΆ€λͺ¨ 클래슀의 속성과 λ©”μ„œλ“œλ₯Ό μžμ‹ ν΄λž˜μŠ€κ°€ λ¬Όλ €λ°›μŠ΅λ‹ˆλ‹€.


μ°Έκ³  μ‚¬μ΄νŠΈ

 

객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)의 κ°œλ…κ³Ό 4κ°€μ§€ νŠΉμ§•

μš°μ„  객체지ν–₯을 μ„€λͺ…ν•˜κΈ° 전에 객체지ν–₯의 λ°˜λŒ€λ§μΈ 절차적 ν”„λ‘œκ·Έλž˜λ°μ— λŒ€ν•΄μ„œ μ„€λͺ…ν•˜κ² μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λŠ” 편이 μ™œ 객체지ν–₯을 μ‚¬μš©ν•˜λŠ”μ§€ μ΄ν•΄ν•˜κΈ° νŽΈν• κ²ƒμž…λ‹ˆλ‹€. πŸ“•μ ˆμ°¨μ  ν”„λ‘œκ·Έλž˜λ° πŸ“—

jja2han.tistory.com

 

λ¬Έμ œκ°€ 있으면 λŒ“κΈ€ λ‚¨κ²¨μ£Όμ„Έμš” !

ν”Όλ“œλ°±μ€ μ–Έμ œλ‚˜ ν™˜μ˜μž…λ‹ˆλ‹€ <3