객체지향 프로그래밍(Object-Oriented Programming)?
개발일기
이번에 정보처리기사 필기 공부를 하면서 지긋지긋하도록 많이 접한 용어이다.
자매품으로 CBD(Component Based Development)
라는 친구가 있다.
솔직히 무슨 차이인지 모르겠다. 똑같은 말 같아서… 🤣
이해하기를 OOP란 컴퓨터라는 객체가 있다면
컴퓨터의 부품들인 키보드, 마우스, 모니터, 본체 등을 더 작은 단위의 객체로 쪼개고
더 쪼개자면 본체는 CPU, GPU, RAM 등의 부품단위로도 쪼갤 수 있을 것이다.
아무튼 그렇게 쪼개고 쪼개서 작은 단위의 객체를 Class로 구현하여 조립한다는 취지인 것 같다.
CBD는 소프트웨어를 컴포넌트 단위로 구성하여 재사용성, 유지보수성의 증가를 꾀한다는 논지의 개념이었는데,
이건 OOP에 속하면서 보다 더 큰 단위의 개념처럼 느껴진다.
아무튼 아직은 이거다 싶게 와 닿는 개념은 아니다. 아리송하다.
자바를 책으로 공부한 지 한 달이 다 되어가는 시점에 만든 두더지 잡기 게임인데,
지금에 와서 뜯어보니 소스코드가 절차 지향적
이라는 생각이 든다.
이렇게 프로그램을 만들 경우 프로그램이 단순하다는 가정하에 원하는 그림을 그리기 쉬울 것 같긴 하다.
다만 이렇게 프로그래밍을 해서 유지보수조차 힘들어질 정도의 대형 프로젝트라는 걸 도통해본 적도 없고,
하는 방법도 알지 못하니 그것이 문제다.
OOP라는 것이 결국 목표를 구상하고 어떻게 구현할지 설계한 후
객체를 Class 단위로 쪼개어 만든 후 조립하는 상향식 기법 같은데
이렇게 하려면 우선 펜대를 잡고 설계라는 걸 좀 해봐야 하지 않을까 싶다.
오픈소스를 꾸준히 리뷰해봐야겠다. 꾸준히 하면 언젠가는 잘하겠지.