[TIL 2024.07.26] OOP, 객체 지향 프로그래밍

찬민·2024년 7월 26일
0

TIL

목록 보기
23/62

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

객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 여러 개의 객체(Object)로 나누어 작성하는 방법이다. 객체는 데이터와 이를 처리하는 코드를 포함하며, 각각의 객체는 특정 기능을 수행하도록 설계된다.

마치 우리가 여러 가지 역할을 맡은 사람들로 팀을 구성하여 프로젝트를 완성하는 것과 비슷하다.

객체란 무엇인가?

객체(Object)속성(Attributes)메서드(Methods)로 구성된 단위이다. 속성은 객체의 상태를 나타내는 변수이고, 메서드는 객체가 수행할 수 있는 동작을 정의하는 함수이다.

예를 들어, 사람은 이름과 나이라는 속성을 가지고, 걷거나 말하는 메서드를 가질 수 있다.

클래스와 객체의 관계

클래스(Class)는 객체를 생성하기 위한 설계도이다. 클래스를 정의하고 이를 기반으로 객체를 생성한다. 객체는 클래스의 인스턴스라고도 불린다.

자동차 클래스를 만들면, 각각의 자동차 객체는 브랜드와 모델, 색상 등의 속성을 가진다.

예시:

클래스와 객체를 현실 세계에 비유해 보자. 예를 들어, '자동차'라는 클래스를 생각해보자. 이 클래스는 자동차의 일반적인 속성과 기능을 정의한다:

class Car:
    def __init__(self, brand, model, color):
        self.brand = brand
        self.model = model
        self.color = color
    
    def start_engine(self):
        print(f"{self.brand} {self.model}의 엔진이 켜졌습니다.")
    
    def drive(self):
        print(f"{self.brand} {self.model}가 달리고 있습니다.")

이제 '자동차' 클래스에서 객체를 생성해보자:

my_car = Car("Kia", "Stinger", "Red")
my_car.start_engine()
my_car.drive()

위 예시에서 Car는 클래스이고, my_carCar 클래스의 객체이다. my_car는 'Kia Stinger'라는 특정한 자동차를 나타낸다.

객체 지향 프로그래밍의 4가지 주요 원칙

  1. 캡슐화(Encapsulation)
    캡슐화는 객체의 데이터와 메서드를 하나의 단위로 묶는 것이다. 이를 통해 객체 내부의 데이터를 외부에서 직접 접근하지 못하게 하여 데이터의 무결성을 보호할 수 있다.

    우리가 스마트폰을 사용할 때, 내부 작동 방식을 알 필요 없이 인터페이스만으로 조작하는 것과 비슷하다.

  2. 상속(Inheritance)
    상속은 하나의 클래스가 다른 클래스의 속성과 메서드를 물려받는 것이다. 이를 통해 코드의 재사용성을 높이고, 계층 구조를 형성할 수 있다.

    부모의 성격이나 외모를 자식이 물려받는 것과 유사하다.

  3. 다형성(Polymorphism)
    다형성은 같은 메서드가 다른 객체에서 다르게 동작할 수 있게 하는 것이다. 이를 통해 동일한 인터페이스를 통해 다양한 객체를 다룰 수 있다.

    다양한 악기가 각각의 소리를 내는 것과 같지만, 모두 연주라는 공통된 동작을 수행한다.

  4. 추상화(Abstraction)
    추상화는 객체의 내부 구현을 감추고, 필요한 기능만 외부에 제공하는 것이다. 이를 통해 복잡한 시스템을 단순화하고, 사용자가 객체의 내부 동작을 이해하지 않아도 기능을 사용할 수 있게 한다.

    자동차의 운전자가 엔진의 작동 방식을 몰라도 운전할 수 있는 것과 같다.

0개의 댓글