본문 바로가기
카테고리 없음

객체지향 프로그래밍(OOP) 개념과 4대 원칙

by 준생님 2025. 4. 4.

 

 

객체지향 프로그래밍(Object-Oriented Programming, OOP)은 **객체(Object)** 를 중심으로 프로그램을 설계하는 패러다임입니다. OOP는 유지보수성과 확장성이 뛰어나기 때문에 현대 소프트웨어 개발에서 널리 사용됩니다.

1. 객체지향 프로그래밍이란?

OOP는 데이터를 **객체** 단위로 묶고, 객체 간 상호작용을 통해 프로그램을 구성하는 방식입니다.

🔹 OOP의 주요 개념

  • 데이터(속성)와 메서드(기능)를 하나의 객체로 묶음
  • 객체 간의 관계를 정의하여 코드의 재사용성을 높임
  • 대규모 소프트웨어 개발에서 유지보수성을 향상

2. 객체지향 프로그래밍의 4대 원칙

OOP는 **캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism), 추상화(Abstraction)** 의 4가지 원칙을 따릅니다.

📌 1. 캡슐화 (Encapsulation)

캡슐화는 **데이터(속성)와 메서드(함수)를 객체 내부에 숨기고, 외부에서 직접 접근하지 못하도록 하는 개념**입니다.

예제 (Python):

class Car:
    def __init__(self, model, speed):
        self.model = model
        self.__speed = speed  # 비공개 속성

    def accelerate(self):
        self.__speed += 10

    def get_speed(self):
        return self.__speed

my_car = Car("Tesla", 100)
print(my_car.get_speed())  # ✅ 접근 가능
print(my_car.__speed)  # ❌ 접근 불가 (AttributeError 발생)
    

📌 2. 상속 (Inheritance)

상속은 **기존 클래스(부모)의 속성과 메서드를 새로운 클래스(자식)에서 재사용하는 개념**입니다.

예제 (Python):

class Animal:
    def sound(self):
        return "동물 소리"

class Dog(Animal):
    def sound(self):
        return "멍멍"

dog = Dog()
print(dog.sound())  # 출력: 멍멍
    

📌 3. 다형성 (Polymorphism)

다형성은 **같은 이름의 메서드가 다양한 객체에서 다른 동작을 수행할 수 있도록 하는 개념**입니다.

예제 (Python):

class Bird:
    def fly(self):
        return "새가 난다"

class Airplane:
    def fly(self):
        return "비행기가 난다"

def move(obj):
    print(obj.fly())

move(Bird())  # 출력: 새가 난다
move(Airplane())  # 출력: 비행기가 난다
    

📌 4. 추상화 (Abstraction)

추상화는 **불필요한 세부사항을 숨기고, 핵심 기능만을 노출하는 개념**입니다.

예제 (Python):

from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def make_sound(self):
        pass

class Cat(Animal):
    def make_sound(self):
        return "야옹"

cat = Cat()
print(cat.make_sound())  # 출력: 야옹
    

3. 객체지향 프로그래밍의 장점

  • 재사용성: 기존 클래스를 활용하여 새로운 기능 추가 가능
  • 유지보수성: 코드 수정이 용이
  • 확장성: 새로운 기능을 쉽게 추가 가능

📌 마무리

객체지향 프로그래밍은 현대 소프트웨어 개발의 필수 개념입니다. OOP의 4대 원칙을 이해하고 활용하면 보다 효율적이고 확장 가능한 프로그램을 개발할 수 있습니다.