[C# 시작 전 필수] 객체지향(OOP)이란?

2025. 3. 15. 01:58programming/C#

💡 객체지향(Object-Oriented Programming, OOP)이란?

"객체(Objects)"를 중심으로 프로그램을 구성하는 방식으로, 실제 세계를 모델링하여 코드로 표현하는 방법입니다.

💡 객체지향의 장점?

 코드 재사용성 (상속) → 같은 코드 반복하지 않고 재사용 가능
 유지보수 용이 (캡슐화) → 필요한 부분만 수정 가능
 확장성 (다형성) → 기능을 쉽게 추가 가능
 현실 세계 모델링 쉬움 → 코드가 직관적이고 이해하기 쉬움


💡 그렇다면, 객체(Object)란?

객체는 데이터(속성, 변수)와 동작(메서드)을 하나로 묶은 것  예를들어 자동차를 생각해보자.

🚗 자동차 객체는 다음과 같은 데이터와 동작을 갖는다.

  • 속성(데이터): 색상, 속도, 브랜드, 연료량
  • 동작(메서드): 가속하기, 감속하기, 정지하기

이 자동차라는 객체를 코드로 표현하면 다음과 같다. (참고로 C#에서 객체를 만들기 위한 틀(?) 설계도를 class라 한다.)

//자동차 class 즉, 자동차 객체는 색상과 속도라는 속성 즉 데이터를 가지고 있고
// 가속과 감속이라는 기능 즉 메소드를 갖는다.

class 자동차 {
    public string 색상;
    public int 속도;

    public void 가속() {
        속도 += 10;
        Console.WriteLine($"현재 속도: {속도}km/h");
    }

    public void 감속() {
        속도 -= 10;
        Console.WriteLine($"현재 속도: {속도}km/h");
    }
}

위에서 정의한 자동차 객체는 앞으로 자동차를 찍어내는 틀 역할을 한다. 위 자동차 객체로 내 차를 만들어보자.

자동차 내차 = new 자동차(); // 자동차 객체 틀을 사용해 내차라는 자동차를 찍어낸다.
내차.색상 = "빨강";
내차.가속();  // 현재 속도: 10km/h

 

자동차를 객체화해서(class) 객체 중심의 프로그래밍(가속 감속이라는 기능을 정의하고, 색상을 입히는 등-)을 해보았다.

이게 데이터(속성)와 기능(메서드)을 하나의 객체로 묶어서 정의하고 사용하는 것이 객체지향 프로그래밍이다.


 

🔹 객체지향의 4대 특징

더보기

객체지향 프로그래밍에는 4가지 핵심 개념이 있어요.

1️⃣ 캡슐화(Encapsulation)

  • 데이터를 숨기고(private), 필요한 기능만 공개(public)하는 것
  • 예시: 은행 계좌에서 잔액을 직접 수정할 수 없고, 입금(), 출금() 메서드를 통해서만 변경 가능

2️⃣ 상속(Inheritance)

  • 기존 클래스(부모)를 확장하여 새로운 클래스(자식)를 만드는 것
  • 예시: 동물 클래스를 만들고, 개와 고양이가 이를 상속받아 사용

3️⃣ 다형성(Polymorphism)

  • 같은 메서드라도 상황에 따라 다르게 동작하는 것 (override, interface 활용)
  • 예시: 울다() 메서드가 개에서는 "멍멍", 고양이에서는 "야옹" 출력

4️⃣ 추상화(Abstraction)

  • 복잡한 내부 동작은 숨기고, 중요한 부분만 노출하는 것
  • 예시: 자동차 운전자는 엔진 내부 동작을 몰라도, 시동켜기() 버튼만 누르면 됨

이에대한 자세한 글은 이 포스팅을 참조👉🏼  https://voltnuna.tistory.com/290

 

[C# 시작 전 필수] 객체지향(OOP)의 4대 특징 (feat.캡슐화, 상속, 다형성,추상화)

1. 캡슐화(Encapsulation): 주 목적은 '데이터 은닉'이다. 민감한 데이터를 private로 감춰서 public의 setter, getter 메소드로만 private로 감춘 데이터에 접근&변경할 수 있다. 즉, read-only, write-only한 선택적

voltnuna.tistory.com



 

🚀 정리

✅ 객체지향은 "객체"를 중심으로 프로그램을 구성하는 방식
객체(Object) = 데이터(속성) + 기능(메서드)
✅ 4가지 핵심 개념: 캡슐화, 상속, 다형성, 추상화
✅ 코드 재사용성과 유지보수성이 뛰어남