객체지향 프로그래밍이 뭔가요?

☕️자바나 🐍파이썬을 비롯한 주류 언어들, 심지어 이제는 자바스크립트도
객체지향에 대한 이해 없이는 제대로 활용하기 어렵죠.

객체지향 프로그래밍이란 무엇이며 어떻게 우리의 코딩을 편리하고 강력하게 만들어주는지
한 학교의 교실 청소를 비유로 쉽게 설명해보았습니다.

이 영상으로 객체, 상속, 인터페이스, 추상 요소들에 대한 개념을 어느정도 파악하신 다음

객체지향 디자인 패턴들을 함께 태그된 두 영상들로 알아가보세요. 🤓




🎬 영상 주요 포인트

🐟 객체지향의 개념

... 이렇게, 데이터와 기능이 클래스로 '캡슐화' 된 컴퓨터 자원의 묶음을 '객체'라고 해요. 대학 교수님들의 비유대로라면 밀가루 반죽과 팥이 클래스란 붕어빵 틀에 찍혀서 이 객체라는 붕어빵이 나오는거에요. 전에는 마치 흙을 빚어서 집을 짓는것처럼 아무런 데이터도 없는 컴퓨터 자원들을 삽으로 떠다가 하나하나 명령어를 줘 가면서 코드를 짜야 했어요. 하지만 객체지향 프로그래밍을 배운 뒤로는 클래스라는 모양틀을 만들고 이 흙을 그 틀에 넣어 구우면 모양과 용도가 뚜렷한 벽돌들이 만들어지는거죠.

📦 은닉성

... 이게 객체지향의 특성 중 하나인 '은닉성'이에요. 우리가 TV 속을 뜯어보지 않아도 리모콘으로 필요한 조작을 다 할 수 있는 것처럼 내부 구조는 private으로 감춰놓고 외부에서 조작할 수 있는 명령어만 public으로 공개해놓는거죠. 이로써 바깥의 간섭으로 발생하는 오류를 방지할 수 있고 남이 만든 클래스의 객체들도 일일이 뜯어볼 필요 없이 제공되는 기능들을 그대로 사용할 수 있는거죠.

👩‍👦 상속

... 여기서 객체지향의 '상속'을 사용할 수 있어요. '교실청소팀'을 상위, 부모 클래스로 해서 여기에 더 필요한 것들을 추가한 '과학실청소팀'이란 자식 클래스를 만드는거죠. 이렇게 '교실청소팀'을 상속받는다고 정의하면 교실청소팀에서 protected나 public으로 지정한 변수들과 메소드들은 그대로 물려받아요. 여기에 '실험기구닦이'란 변수, 그리고 메소드마다 얘한테 시킬것만 추가하면 되는거죠.

👻 추상 클래스

... 다만 이 클래스는 '추상적'을 뜻하는 abstract를 붙어요. 이 추상클래스로는 객체를 만들 수가 없어요. 누구한테 '너는 교실 청소당번이야'라고만 할 수 없단 얘기에요. 개라 불리는 동물, 고양이라 불리는 동물은 있지만 어떤 생물을 '이건 포유류라는 동물이야' 하지는 않죠. 직업이 뭐냐고 물을 때 '전문직'이라고 답하지는 않잖아요. 특정 개체를 이걸로 부르기엔 너무 추상적란거에요. 마찬가지로 이 '교실 청소당번'은 그 자체로서가 아니라 이를 상속한 자식 클래스로만 객체가 생성돼요. 자식 클래스들의 공통분모 역할만을 위한 클래스인거죠.

🍲 다형성

... 이렇게 부모 클래스에서 정의된 메소드의 작업이 자식 클래스에서 다른걸로 override, 대체될 수 있는 걸 객체지향의 '다형성'이라고 해요. 중국집에서 '탕수육 주세요' 하면 일반 탕수육이 나오지만 이를 상속한 사천식 중국집에서는 '탕수육 주세요'가 override 돼서 시뻘건 탕수육이 나오는거죠.

🕹 인터페이스

... 어, 그러면 인터페이스는 쓸모없는거 아니냐구요? 상속은 트리구조의 상하관계가 뚜렷하기 때문에 한 자식이 두 부모로부터 상속받는게 언어마다 불가능하거나, 부작용들이 있어요. 반면 인터페이스는 이로부터 자유로워요. 박쥐와 날다람쥐는 포유류란 부모에게서, 날치는 어류란 부모에게서 상속받지만 '난다'는 기능을 인터페이스로 장착해서 대다수 조류와 곤충처럼 '날짐승'이란 카테고리에 들어갈 수 있는거죠. 우리 프로그래머들은 'IT전문직'이란 부모 클래스에서 상속받지만 대형차 면허, 한식 자격증, 공인중개사 자격증도 인터페이스로 딸 수 있는거고요. 상속은 물려받는 것, 인터페이스는 장착하는 거라고 생각하시면 적당할거에요.

⭐️ 영상에서 코드 예제와 함께 살펴보세요!


🍿 더 자세한 내용은 영상에서 보실 수 있습니다.





관련 태그의 다른 영상들

객체지향 디자인 패턴 2
Facade, Template-method, Decorator, Factory, Abstract-factory Mediator, Composite 패턴들을 알아봅니다.
# 객체지향
# 디자인패턴
# 상속
# interface
# 객체
# super
객체지향 디자인 패턴 1
Singleton, Strategy, State, Command, Adapter, Proxy 패턴들을 알아봅니다.
# 객체지향
# 디자인패턴
# 싱글턴
# 상속
# 인터페이스
# 객체
객체지향 프로그래밍이 뭔가요?
붕어빵으로만 배워온 객체지향. 속 시원하게 알려드립니다.
# 객체지향
# 상속
# interface
# 객체
...
🌏 Why not change the world?