오늘은 팀 프로젝트 전 개인과제로 주어진 객체지향 개인과제위주로 공부하고 개인과제 제출!
Today I Learned
객체지향 공부..
1) 캡슐화(Encapsulation)
데이터와 메서드를 하나의 논리 단위로 묶는 것
- 캡슐화의 주요 목적
: 정보 은닉(Information Hiding). 객체의 내부 데이터에 직접적인 접근을 막아서 외부에서 객체의 상태를 변경하는 것을 방지한다.
- 캡슐화의 구현 방법
1) 객체 내부의 데이터를 private로 선언하여 객체 내부 상태를 외부로 부터 숨긴다.
2) getter와 setter 메서드
: 객체 내부 데이터를 private로 선언한 상태에서 외부에서 해당 데이터에 접근할 수 있는 getter/setter 메서드를 제공하고, 이 메서드를 통해서만 객체의 데이터에 접근하도록 한다.
함수명의 관례 Getter -> "get_"으로 시작, Setter -> "set_"으로 시작하는 것이 관례이다.
(규칙이 아니라 관례에 가깝다)
class Cookie:
def __init__(self):
self.__price = 100
@property
def price(self): #getter
return self.__price
@price.setter
def price(self, p): #setter
self.__price = p
Python에서의 캡슐화 구현 예시
Cookie클래스 내부 데이터를 private로 선언 해주기 위해 "__"를 앞에 붙여주어 외부의 직접적인 접근을 막고 있다.
대신 데이터에 대해 getter/setter메서드를 제공하고 있다.
클래스 변수 값을 반환하는 '@property'와 클래스 변수의 값을 설정하는 '@get_price.setter'는 파이썬에서 Getter와 Setter를 구현하는 데 사용되는 데코레이터
2) 다형성(Polymorphism)
객체 지향 프로그래밍에서 한 객체가 여러가지 타입을 가질 수 있는 것을 의미
=> 같은 이름을 가진 메서드나 연산자가 다른 방식으로 동작하는 것
- 오버로딩(Overloading) : 같은 이름의 메서드를 정의하되, 매개변수의 '개수'나 '타입'을 다르게 받는다
- 오버라이딩(Overriding) : 상위 클래스에서 정의된 메서드를 하위 클래스에서 재정의
- 추상화(Abstraction)
'내일배움캠프 > 내일배움캠프 TIL' 카테고리의 다른 글
내일배움캠프 TIL 42일차 (0) | 2023.05.10 |
---|---|
내일배움캠프 TIL 41일차 (4) | 2023.05.08 |
내일배움캠프 TIL 39일차 (0) | 2023.05.06 |
내일배움캠프 TIL 38일차 (7) | 2023.05.04 |
내일배움캠프 TIL 37일차 (WSL에서 폴더열기) (2) | 2023.05.02 |