본문 바로가기
OOP(객체 지향 프로그래밍)

[OOP] 객체 지향 언어의 특징 4가지(캡슐화, 상속, 추상화, 다형성)

by 적용1 2024. 11. 11.
728x90

객체 지향 언어의 특징

파이썬은 대표적인 객체 지향 언어이다.

파이썬의 객체 참조라는 특징을 공부하다보니 자연스럽게 객체 지향 언어의 특징을 공부하게 되었다.

 

객체 지향 언어의 특징은 4가지가 있다.

1. 캡슐화

데이터와 알고리즘을 하나로 묶어 하나의 캡슐처럼 만드는 것, 이 때문에 외부에서 데이터와 코드의 형태를 알 수 없다.

ex) 파이썬에서 라이브러리를 임포트하여 함수를 쓸 수 있어도, 라이브러리 안의 데이터나 코드가 어떻게 되어있는지, 함수의 소스코드가 어떤지 확인할 수 없는 것이 캡슐화라고 이해하면 될 것 같다.

이 특징 때문에 캡슐화되지 않은 데이터와 코드는 사용하기 힘들다.

2. 상속

상위 클래스의 모든 것을 하위 클래스가 이어받는 특징

ex) 이전 0주차에 배운 SSR에서 Jinja2 템플릿을 사용할 때, html 파일 내에서 헤드에 스타일을 사용하게 되는데 그 스타일이 겹치는 페이지에서는 extend를 통해 따로 스타일 코드를 적지 않아도 같은 스타일을 사용할 수 있게 되었다.

extend의 역할이 상속과 비슷하다고 이해하면 될 것 같다.

3. 추상화

실존하는 객체의 여러 특성 중, 프로그램을 만드는 데 필요한(공통적인) 부분만 파악해서 추출하고 필요하지 않은 것은 제거하는 것

ex) 만약 상위 클래스에서 선언하지 않은 함수가 하위 클래스에서 모두 필요하다면, 굳이 하위 클래스에서 일일이 함수를 선언하지 않고, 상위 클래스에서 함수를 선언하여 하위 클래스에서 필요에 맞게 기능을 다르게 구현하는 것

4. 다형성(얘가 개인적으로 제일 어려웠음)

상속과 연관된 개념으로, 하나의 객체가 다른 여러 객체로 재구성되는 것

ex) 함수를 상속받았을 때, 부모 클래스에서의 함수는 그대로 놔두고 자식 클래스에서 입맛대로 바꿔서 사용한 특성이라고 이해했다.

└> 나중에 부모가 자식 클래스에서 커스템된 함수를 보고 끌어오는 기능도 있다고 한다.

728x90