면접 준비를 위한 생각 정리 메모장 : Object Oriented programing

김병민·2021년 10월 28일
0

기술면접 메모장

목록 보기
1/1

OOP 객체 지향 프로그래밍 (Object Oriented Programing)

쉽게 말해서 내 머리 속에 있는 것을 끄집어 내어 실체화 시키는 것을 말함

여기서 머리 속에 있는 것은 class

실제로 만든 것은 Instance object가 되는 것이다.

내가 좋아하는 요리로 생각을 해보자

나는 오늘 쇠질을 엄청나게 조지고

집에가서 나의 사랑 매콤 투움바 파스타를 만들어먹으려고한다.

쇠질을 조지면서 머리 속으로 베이컨을 볶고 새우 넣고 식감을 위해 버섯도 넣고 아삭함을 위해 양파는 마지막에 넣고 ....

운동 끝 !

집에 도착

베이컨을 볶으면서 새우넣고 마늘 넣고 하는데 세상에나 집에 크림이 없는 것이다 ...

이미 면은 다 삶아 두었는데 ...

나는 급하게 새우와 베이컨이 들어 간 오일파스타를 만들어보았다.

내가 생각했을 때 이 상황에

캡슐화, 상속, 추상화, 다형성 ( 물론 상속은 더 예시가 필요)

가 들어있다고 본다.

내 머리속 파스타라는 클래스 안에는 재료라는 프로터티도 들어있을 것이고 볶기라는 메소드도 들어있을 것이다.

이는 데이터와 기능을 하나의 단위로 묶는 캡슐화이며

구현은 숨키고 동작은 노출시키는 은닉의 기능을 한다.

또한, 재료를 어떻게 썰고 어떠한 세기의 불로 볶고 뭐하고 뭐하고 아주 복잡한 요리 과정이 있지만 노출되는 부분은 단순하게 만드는 추상화

내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든 추상화 개념을 통해 인터페이스가 단순해 질 수 있다.

다음은 상속이다.

파스타 만들기라는 클래스가 있다.

이 클래스로 우린 리조또도 만들 수 있을 것이다.

왜 why ?

파스타와 리조또는 만드는 방법이 비슷

사실상 파스타 안에 리조또가 있다고 보면 편하다

면을 제외하고 밥을 넣으면 되기 때문이다.

그럼 보자 우린 리조또라는 클래스를 만들기 위해 처음부터 다시 다 볶기 자르기 삶이 뭐하기 등등을 할 것인가?

아니다. 파스타 안에 리조또가 있으니 파스타라는 클래스가 가진 볶이 자르기 메소드와 재료 프로퍼티를 가지오 오고 면 대신 쌀로 프로퍼티를 바꿔주면 될 것이다.

마지막으로 다형성이다.

다양한 형태를 가진 수 있다는 뜻이다.

파스타 클래스로 만든 여러 파스타들은 다 뭐다 파스타라는 것이다.

형태는 다르지만 다 같은 파스타다 요게 다형성이다.

그럼 OOP의 장점이 뭐일까

캡슐화는 코드를 복잡하지 않게 만들고 재사용성을 높인다.

추상화도 마찬가지로 코드를 복잡하지 않게 만들고, 단순화된 사용으로 인해 변화에 대한 영향을 최소화한다

상속은 불필요한 코드를 줄여 재사용성을 높이며

다형성은 동일한 메소드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해진다.

그럼 여기서 javascript는 객체 지향 프로그래밍 언어인가 ?

이건 반은 맞고 반은 틀리다.

js는 class와 new this , constructor 등을 통해 객체를 만들어 사용 가능한 언어지 필수는 아니다.
(객체지향으로 작성 가능)

필수는 c++ c# java 등등 하하

profile
I'm beginner

0개의 댓글