기술면접 대비도 할 겸 OOP에 대해 한번 짚고 넘어가려고 합니다.

OOP란 말은 프로그래밍을 공부한다면 한번은 들어봤을만한 단어입니다.
단어의 뜻은 객체 지향 프로그래밍 이라고 합니다.
OOP는 현실 세계의 사물및 개념들을 객체로 보고, 그 객체들을 조립하여 프로그래밍 하는 기법입니다.
여러 부품들이 모여서 하나의 물건이 되듯, 프로그램을 객체들의 조합으로 만드는 기법입니다.
절차지향적 프로그래밍에서 있었던 코드의 재사용성과 중복제거가 가장 큰 목적으로 만들어진 기법이라고 하는데,
이전 포스팅인 모놀리틱(https://velog.io/@wkdehf217/TIL-2kie63ad)에서도 나왔듯 OOP 또한 대규모 소프트웨어 개발 프로젝트에서 특히 유용하며, 코드의 유지보수성과 확장성을 향상시켜 생산성을 높이는데 기여합니다.
정리하자면,
응집력이 높습니다.
프로그램이 하는 일이 여러 객체가 모여서 이루어지기 때문에, 자잘한 알갱이가 모여있다고 생각하면 됩니다.
결합력이 낮습니다.
객체들끼리 서로 각자 할일을 해도 프로그램이 잘 돌아가면, 결합력이 낮다고 표현합니다.
의존적이지 않다는 말과 같습니다.
실행 속도가 느립니다. ( 성능 저하 )
객체지향은 객체와 클래스를 사용하므로 각각 독립성이 높습니다.
여러 클래스들을 상속해서 사용하기 때문에 중복코드는 적지만,
객체의 생성과 관리 등에 의해 리소스를 많이 사용하고
몸집도 커지기 때문에 속도는 느려진다는 단점이 있습니다.
설계에 어려움이 있습니다.
절차지향적과는 다르게 여러 객체들과 관계를 맺기 때문에
설계 단계에서 많은 시간을 소모해 구조를 만들어야 합니다.
OOP의 장단점을 알아봤고, 대표적인 특징 4가지에 대해 정리하겠습니다.
추상화 : 공통적인 부분을 모아서 추출해냄
ex1) 공책, 스케치북 -> '종이'라는 공통점이 있음
ex2) 추상클래스, 인터페이스
캡슐화 : 중요한 정보들을 캡슐로 싸서 숨기는것
상속 : 상속이라는 뜻 그대로 '부모'가 '자식'에게 물려주는 것
ex) 부모는 차 , 자식은 오토바이/자동차 등등
다형성 : 같은 형태를 가지고 있지만 다른 기능을 하는 것
ex1) 누군가에겐 아들, 누군가에겐 친척, 누군가에겐 회사원
ex2) 오버라이딩, 오버로딩