
프로그래밍 언어를 공부하다보면 객체지향, 절차지향 이라는 말을 많이 들어보셨을거에요.
c언어나 FORTRAN, COBOL 같은 절차적 언어들이 주류를 이루던 과거와 달리 프로그램의 규모가 커지고 사용자들의 요구가 빠르게 변화해가는 상황에서는 객체지향언어가 필수적입니다.
객체지향(OOP)란?
객체지향은 기존의 프로그래밍 언어와 전혀 다른 새로운 것이 아닙니다.
기존의 언어에 몇 가지 새로운 규칙을 추가해서 발전한 형태라고 생각하시면 됩니다.
새롭게 추가된 규칙들은 코드들 사이에 관계를 맺어줌으로써 전보다 더 유기적으로 프로그램을 구성하는 것이 가능해졌습니다.
그렇다면 객체지향언어의 주요한 특징은 무엇이 있을까요?
1. 코드의 재사용성이 높다.
새로운 코드를 작성해야할 때, 특히 기존의 있던 기능을 그대로 가져오면서 새로운 기능을 추가하거나 비슷한 기능을하는데 조금 다르게 작동하는 기능을 만들고 싶을 때, 기존의 코드를 이용해서 쉽게 작성할 수 있습니다. 이때 추후에 다룰 '상속'이라는 개념을 이용합니다.
프로그래밍의 기초 개념 중에 '관심사의 분리'라는 것이 있는데, 이를 객체지향에 적용하면, 관심이 같은 것끼리 하나의 객체 혹은 친한 객체로 모이게하고, 관심이 다른 것은 가능한 따로 떨어져서 서로에게 영향을 주지않도록 분리하는 것이라 생각할 수 있습니다.
2. 코드의 관리가 용이하다.
작성한 코드들 간에 관계가 설정되어있어서 이 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있습니다. 위에서 설명한 관심사의 분리에 따라서 객체들을 분리할 수 있기때문에, 관련된 부분만 수정해서 손쉽게 발생한 이슈를 처리할 수 있습니다.
3. 신뢰성이 높은 프로그래밍을 가능하게 합니다.
접근 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록하고, 코드의 중복을 제거해서 코드의 불일치로 인한 에러를 방지할 수 있습니다. 즉, 특정 기능을 메서드로 만들어서 필요한 부분에서 호출해서 사용하도록하면, 해당 메서드에서만 수정하면 이를 사용하는 모든 메서드에서 수정된 기능을 사용할 수 있습니다. 그렇지않은 경우에는 특정 기능을 수정하려면 해당 기능을 사용하는 모든 부분에대해서 동일한 수정작업을 진행해야합니다. 이는 유지보수에도 용이하지않습니다.
객체지향을 공부하거나 개발을 진행할 때, 위의 3가지 특징을 고려해서 코드간의 관계를 살펴보면 보다 쉽게 이해할 수 있을 것입니다.
그렇다고 처음부터 잘 짜여진 코드를 만들겠다는 강박에 얽매여서 고민하기보다는 기능적으로 완성한 후 리팩토링 과정을 거쳐서 보다 더 객체지향적인 코드로 개선해나가는 것을 추천합니다.
'개발자 면접 질문' 카테고리의 다른 글
WAS와 WS의 차이점과 역할: 백엔드 개발의 필수 개념 (0) | 2025.01.31 |
---|---|
[Spring] DI와bean (0) | 2025.01.30 |
[SPRING] 환경 설정 및 웹 개발 기초 (0) | 2025.01.29 |
개발자 면접 질문 - JAVA 클래스와 객체 (0) | 2025.01.28 |
개발자 면접 질문- 운영체제 기초 (0) | 2025.01.27 |
댓글