객체지향 프로그래밍이 뭔가요?
☕️자바나 🐍파이썬을 비롯한 주류 언어들, 심지어 이제는 자바스크립트도
객체지향에 대한 이해 없이는 제대로 활용하기 어렵죠.
객체지향 프로그래밍이란 무엇이며 어떻게 우리의 코딩을 편리하고 강력하게 만들어주는지
한 학교의 교실 청소를 비유로 쉽게 설명해보았습니다.
이 영상으로 객체, 상속, 인터페이스, 추상 요소들에 대한 개념을 어느정도 파악하신 다음
객체지향 디자인 패턴
들을 함께 태그된 두 영상들로 알아가보세요. 🤓
🎬 영상 주요 포인트
🐟 객체지향의 개념
...
이렇게, 데이터와 기능이 클래스로 '캡슐화' 된
컴퓨터 자원의 묶음을 '객체'라고 해요.
대학 교수님들의 비유대로라면
밀가루 반죽과 팥이 클래스란 붕어빵 틀에 찍혀서
이 객체라는 붕어빵이 나오는거에요.
전에는 마치 흙을 빚어서 집을 짓는것처럼
아무런 데이터도 없는 컴퓨터 자원들을 삽으로 떠다가
하나하나 명령어를 줘 가면서 코드를 짜야 했어요.
하지만 객체지향 프로그래밍을 배운 뒤로는
클래스라는 모양틀을 만들고
이 흙을 그 틀에 넣어 구우면
모양과 용도가 뚜렷한 벽돌들이 만들어지는거죠.
📦 은닉성
...
이게 객체지향의 특성 중 하나인 '은닉성'이에요.
우리가 TV 속을 뜯어보지 않아도
리모콘으로 필요한 조작을 다 할 수 있는 것처럼
내부 구조는 private으로 감춰놓고
외부에서 조작할 수 있는 명령어만
public으로 공개해놓는거죠.
이로써 바깥의 간섭으로 발생하는 오류를 방지할 수 있고
남이 만든 클래스의 객체들도 일일이 뜯어볼 필요 없이
제공되는 기능들을 그대로 사용할 수 있는거죠.
👩👦 상속
...
여기서 객체지향의 '상속'을 사용할 수 있어요.
'교실청소팀'을 상위, 부모 클래스로 해서
여기에 더 필요한 것들을 추가한
'과학실청소팀'이란 자식 클래스를 만드는거죠.
이렇게 '교실청소팀'을 상속받는다고 정의하면
교실청소팀에서 protected나 public으로 지정한
변수들과 메소드들은 그대로 물려받아요.
여기에 '실험기구닦이'란 변수, 그리고
메소드마다 얘한테 시킬것만 추가하면 되는거죠.
👻 추상 클래스
...
다만 이 클래스는 '추상적'을 뜻하는 abstract를 붙어요.
이 추상클래스로는 객체를 만들 수가 없어요.
누구한테 '너는 교실 청소당번이야'라고만 할 수 없단 얘기에요.
개라 불리는 동물, 고양이라 불리는 동물은 있지만
어떤 생물을 '이건 포유류라는 동물이야' 하지는 않죠.
직업이 뭐냐고 물을 때 '전문직'이라고 답하지는 않잖아요.
특정 개체를 이걸로 부르기엔 너무 추상적란거에요.
마찬가지로 이 '교실 청소당번'은 그 자체로서가 아니라
이를 상속한 자식 클래스로만 객체가 생성돼요.
자식 클래스들의 공통분모 역할만을 위한 클래스인거죠.
🍲 다형성
...
이렇게 부모 클래스에서 정의된 메소드의 작업이
자식 클래스에서 다른걸로 override, 대체될 수 있는 걸
객체지향의 '다형성'이라고 해요.
중국집에서 '탕수육 주세요' 하면 일반 탕수육이 나오지만
이를 상속한 사천식 중국집에서는
'탕수육 주세요'가 override 돼서
시뻘건 탕수육이 나오는거죠.
🕹 인터페이스
...
어, 그러면 인터페이스는 쓸모없는거 아니냐구요?
상속은 트리구조의 상하관계가 뚜렷하기 때문에
한 자식이 두 부모로부터 상속받는게
언어마다 불가능하거나, 부작용들이 있어요.
반면 인터페이스는 이로부터 자유로워요.
박쥐와 날다람쥐는 포유류란 부모에게서,
날치는 어류란 부모에게서 상속받지만
'난다'는 기능을 인터페이스로 장착해서
대다수 조류와 곤충처럼 '날짐승'이란 카테고리에 들어갈 수 있는거죠.
우리 프로그래머들은 'IT전문직'이란 부모 클래스에서 상속받지만
대형차 면허, 한식 자격증, 공인중개사 자격증도
인터페이스로 딸 수 있는거고요.
상속은 물려받는 것, 인터페이스는 장착하는 거라고
생각하시면 적당할거에요.
⭐️ 영상에서 코드 예제와 함께 살펴보세요!
🍿 더 자세한 내용은 영상에서 보실 수 있습니다.
유튜브에서 영상 보기