파이썬: 도대체 "객체지향언어"가 뭔가요?

Ohback·2024년 12월 27일
"객체지향언어", 누군가 파이썬에 대해 설명하기 시작한다면 가장 먼저 꺼내는 단어가 아닐까 싶다. "파이썬은 객체지향언어라 수정이 쉽다, 코드의 재사용성이 높다, 하지만 객체 지향 언어라서 느리다." 이런 이야기를 익히 들었지만 "객체지향" 이란 단어가 낯선 탓인지 피부로 와닿지가 않는다. 그래서 오늘은 객체지향언어는 무엇이며 어떤 특징을 가지고 있는지, 그리고 이외에 어떤 방식의 언어가 있는지에 대해 간단히 적어보았다.

1. 객체지향언어란?

객체지향언어란 프로그램을 다수의 객체로 만들고, 이들끼리 서로 상호작용하도록 만드는 프로그래밍 언어입니다.

출처 https://blog.naver.com/gitacademy01/222394033958

1-1. 객체지향언어의 장점

1) 추상화: 객체의 속성 중 공통점이나 중요한 성질을 특징으로 잡아 추출하는 것(생물의 분류 단계와 비슷한 과정)으로 추상화를 통해 자동차라는 상위클래스를 만들어 공통 부분을 상위 클래스의 속성으로 넣고 브랜드 별 하위클래스를 만들어 각각의 특징을 하위 클래스에 만들어주면 공통 부분은 상위클래스에서 상속 받아 코드 중복이 줄어들고 코드 재사용이 가능하다.
2) 상속: 앞서 추상화에서 설명한 것처럼 상위클래스 -> 하위클래스로의 변수, 메서드 상속이 가능하여 코드의 중복을 줄일 수 있다.
3) 다형성: 상위클래스의 메서드를 하위클래스에서 재정의하여 사용하는 오버라이딩과 메서드의 이름은 같고 다양한 매개변수 타입과 개수에 따라 다른 기능으로 동작하게 하는 오버로딩이 있다.
4) 캡슐화: 데이터와 메서드를 하나의 단위로 묶어 하나의 단위로 관리하는 것으로 외부로부터 클래스에 정의된 속성과 기능을 보호하는 것이다.

1-2. 객체지향언어의 단점

객체지향언어의 단점으로는 모든 객체의 역할과 기능을 이해해야 하기 때문에 프로그래밍에 많은 시간이 소요되고 처리 속도가 절차지향언어보다 느리다.

1-3. 절차지향언어

객체지향언어와 다른 방식으로는 절차지향언어 라는 것이 있는데 대표적인 예로는 c언어가 있으며 컴퓨터의 처리 구조와 유사하여 실행 속도가 빠르다는 것이 장점이다. 그러나 실행 순서가 정해져 있는 절차지향언어의 특성상 문제를 해결하기 어렵다는 단점이 있다.

1-4. 객체지향언어와 절차지향언어의 비교

정확한 비유는 아니지만 쉽게 설명하기 위해 내가 생각해본 예로 도미노가 있다. 1000개의 블럭을 사용한 도미노를 만든다고 가정 했을 때, 절차지향은 1번 블럭부터 1000번 블럭까지 순서대로 만들어야 하는 것이고 객체지향은 먼저 1~100번, 101~200번 등으로 각 파트(얼마 전 배운 클래스가 이에 속한다고 할 수 있다)를 나눈 후 서로의 영향을 받지 않게끔 만든 다음 마지막에 파트를 연결해주는 것이다. 전자의 경우 시작과 끝의 순서를 지켜서 만들기에 흐름을 파악하기 쉽지만 실수를 하게 되면 전체가 와르르 무너지고 후자처럼 파트를 나누어 진행할 경우 진행 과정을 단번에 파악하기 어렵지만 문제가 생긴다면 실수가 일어난 곳만 무너질테니 다시 만들기 쉽다. 물론 실수가 없다는 가정 하엔 분류 작업이 필요하지 않은 절차지향이 빠르다.

2. 오늘의 일기🍔

코린이라 모르는게 너무 많지만 그래도 이렇게 궁금한 것들을 미루지 않고 찾아보려 부단히 노력 중이다. 개구리 올챙이 적 생각 못한다고, 언젠간 지금 몰랐던 개념들이 너무나도 당연한 일처럼 익숙해지는 때가 올테고, 그때쯤엔 어떤 부분이 잘 이해가 안갔었고 왜 궁금했었는지 까먹게 될테니 코린이 시절의 마음을 잊지 않도록 기록을 많이 남겨둬야지.



참고자료1 https://radait.tistory.com/4
참고자료2 https://blog.naver.com/gitacademy01
참고자료3 https://namu.wiki/w
참고자료4 https://jja2han.tistory.com/

profile
기록은 기억을 지배한다.

0개의 댓글