반응형
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 |