자바의 빼놓을 수 없는 특징은 '객체 지향적인 언어'라는 점이다.
객체 지향이 왜 장점이고, 우리는 왜 객체 지향적으로 개발을 해야 할까? 왜 절차 지향 프로그래밍에서 객체 지향 프로그래밍으로 넘어오게 된 것일까?
먼저 객체 지향 프로그래밍(OOP)은 소프트 웨어 개발 패러다임 중 하나의 방법으로, 모델링을 사용하여 코드를 구조화하는 방법이다. 객체 지향 프로그래밍에서 사용하는 개념 5가지를 생각하면 이해하기 쉽다.
1. 클래스
클래스는 객체의 설계도다. 클래스는 객체를 생성하기 위한 필드(속성), 메소드(동작)를 정의한다. 변수와 함수를 밀접하게 하나의 클래스 소속으로 만들면 관리하기가 쉽다.
2. 객체
객체는 클래스를 기반으로 만들어진 실체이다. 객체의 설계도를 바탕으로 실제 데이터를 포함하고 특정 동작을 수행할 수 있다.
3. 상속
상속은 새로운 클래스가 기존 클래스에서 속성과 동작을 상속받는 것을 말한다. 새로운 클래스에서는 기존 클래스에는 없는 새로운 필드, 메소드를 만들 수 있다.
4. 다형성
다형성은 같은 이름의 필드와 메서드를 여러 클래스에서 다르게 구현할 수 있는 특성을 말한다.
5. 캡슐화
캡슐화는 객체의 데이터와 동작을 하나의 단위로 묶는 것이다. 객체는 외부에서 직접적으로 내부 데이터에 접근할 수 없고, 메서드를 통해서만 상호작용을 해야한다. 이것은 데이터 보호와 유지보수를 쉽게하는 데 도움을 준다.
이렇게 객체 지향 프로그래밍의 큰 특징을 보면 어 이 성질로 이렇게 할 수 있겠는데? 라는 생각이 들 것이다. 객체 지향 프로그래밍을 사용하면 클래스를 보고 객체를 파악할 수 있어 코드를 더 이해하기 쉽다. 그리고 상속, 다형성, 캡슐화의 성질을 이용하면 코드의 변경이 필요한 부분만 수정하면 되니 변경 및 유지보수가 쉬워지고, 코드의 유연성과 확장성을 넓힐 수 있다. 이렇게 수십년간 실무 노하우가 응집되며 이런식으로 개발하는 것이 편리하다! 라고 일종의 가이드 라인이 잡힌 것이 객체 지향 프로그래밍이다.
객체 지향 프로그래밍을 처음 접할 때는 어색하겠지만, 이 방식에 맞춰 코드를 구현하려고 노력하기 보다는, 좋은 코드가 무엇일지 고민하며 전진하다보면 흐름이 잡힐 것이다. 이미 현업에서도 많이 사용하고 있는 방식이기에 알아두면 의사소통에도 도움이 될 것이라고 생각한다.
마지막으로, 절차 지향 프로그래밍에선는 프로그램적으로 다뤄야 하는 상태와 상태와 관련된 함수를 따로 관리하기 때문에 연관성도 확보하기 어렵다. 이것은 협업이 중요한 IT 산업계에서 치명적인 단점이라고 생각하며, 이러한 이유로 나는 객체 지향 프로그래밍으로 개발 방법이 변하지 않았나 하는 생각이 든다.
'어쩌면 모두 궁금할지도?' 카테고리의 다른 글
파사드 패턴 적용기 (1) | 2023.12.06 |
---|---|
implements vs. extends (0) | 2023.10.12 |
@NonNull vs. @NotNull vs. @Column(nullabe = false) (0) | 2023.10.12 |
Arrays.sort() vs. Collections.sort() (0) | 2023.07.18 |
intValue() vs. Integer.parseInt() (0) | 2023.07.12 |