객체지향 프로그래밍(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대 원칙을 이해하고 활용하면 보다 효율적이고 확장 가능한 프로그램을 개발할 수 있습니다.