객체지향 설계의 핵심 원리-클래스,메시지,캡슐화

반응형
SMALL

객체지향 설계의 핵심 원리

클래스

  • 클래스는 공통된 속성과 연산을 갖는 객체의 집합이다.
  • 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀이다.
  • 클래스에 속한 각각의 객체를 인스턴스라고 한다
class Car:
    def __init__(self, brand, model):
        self.brand = brand  # 속성 정의
        self.model = model

    def start_engine(self):  # 연산 정의
        print(f"{self.brand} {self.model}의 엔진을 시작합니다.")

# 인스턴스 생성
my_car = Car("Hyundai", "Sonata")
my_car.start_engine()

설명: 여기서 Car라는 클래스는 자동차의 브랜드와 모델을 속성으로 가지며, 엔진을 시작하는 연산(start_engine)을 정의하고 있습니다. my_car는 Car 클래스의 인스턴스입니다.

메시지

  • 메시지는 객체들 간의 상호작용에 사용되는 수단으로, 객체의 동작이나 연산을 일으키는 외부의 요구 사항이다.
  • 메시지를 받은 객체는 대응하는 연산을 수행하여 예상된 결과를 반환한다.
class Dog:
    def bark(self):
        print("멍멍!")

# 인스턴스 생성
dog = Dog()

# 메시지 전송
dog.bark()  # Dog 객체에게 "bark" 메시지를 보내는 것과 같음

설명: dog.bark()는 Dog 객체에게 "bark"라는 메시지를 보내는 것과 동일한 의미입니다. 메시지를 받은 Dog 객체는 대응하는 bark() 메서드를 실행하여 "멍멍!"이라는 결과를 반환합니다.

캡슐화

  • 캡슐화는 외부에서의 접근을 제한하기 위해 인터페이스를 제외한 세부 내용을 은닉하는 것이다.
  • 캡슐화된 객체는 외부 모듈의 변경으로 인한 파급 효과가 적다.
  • 객체들 간에 메시지를 주고받을 때 상대 객체의 세부 내용은 알 필요가 없으므로 인터페이스가 단순해지고, 객체 간의 결합도가 낮아진다.
class Account:
    def __init__(self, owner, balance):
        self.owner = owner
        self.__balance = balance  # 비공개 속성 (캡슐화)

    def deposit(self, amount):
        self.__balance += amount

    def withdraw(self, amount):
        if amount <= self.__balance:
            self.__balance -= amount
        else:
            print("잔액이 부족합니다.")

    def get_balance(self):
        return self.__balance

# 인스턴스 생성
account = Account("John", 1000)

# 외부에서는 balance에 직접 접근할 수 없음
# account.__balance = 500  # 오류 발생

# 대신 공개된 메서드를 통해서만 접근 가능
account.deposit(500)
print(account.get_balance())  # 1500 출력

설명: __balance는 캡슐화되어 외부에서 직접 접근할 수 없으며, deposit(), withdraw(), get_balance()와 같은 공개된 메서드만 통해 접근할 수 있습니다. 이는 외부에서 객체의 내부 상태를 함부로 변경할 수 없도록 보호하는 역할을 합니다.

반응형
LIST

'정보처리기사 > 서버 프로그램 구현' 카테고리의 다른 글

N-S차트  (0) 2024.10.18
모듈의 결합도와 응집도  (0) 2024.10.18
객체 지향 분석의 방법론  (1) 2024.10.17
소프트웨어 설계 패턴  (12) 2024.10.17
소프트웨어 아키텍처  (2) 2024.10.15