본문 바로가기
programming language/Java

[자바] 객체지향? OOP? = Scientific modeling

by Peter Choi 2023. 4. 8.
반응형

자바를 공부하면서 어느 정도 보다보면 SOLID 법칙이라는 내용이 있다. 면접이든 어떤 상황에서 항상 물어보는 내용이기도 하고, 간단한 것 같은데 꼭 추상적인 내용으로 외우기만 해서 그런지 까먹는 경우가 많다. 이전에 객체지향이 전통적인 과학적 모델링 과정을 이식한 것이라는 언급을 한 적이 있는데 실제 물리학에서 사용하는 과정에 비교해서 각 법칙들을 설명해봤다.

 

객체지향의 SOLID 원칙은 소프트웨어 디자인을 개선하고 유지보수성을 향상시키기 위한 5가지 원칙이다. 각각의 원칙은 과학적 모델링 방법론과 실제 공학에서의 예시와 연관성이 있다.

1. 단일 책임 원칙 (Single Responsibility Principle, SRP) - 한 클래스는 하나의 책임만 가져야 한다.

과학적 모델링 방법론에서도 한 모델이 하나의 책임만을 갖도록 설계됩니다. 예를 들어, 태양계 모델링을 할 때, 각 행성 모델은 자신의 고유한 책임만을 갖도록 설계된다. 따라서, 각 클래스는 자신이 수행하는 한 가지 작업만을 처리하도록 분리된다.

2. 개방-폐쇄 원칙 (Open-Closed Principle, OCP) - 확장에는 열려 있고 변경에는 닫혀 있어야 한다.

과학적 모델링 방법론에서도 모델을 확장할 수 있지만, 모델의 원래 구조를 변경하지 않도록 설계된다. 예를 들어, 뉴턴의 운동법칙 모델에서, 새로운 힘 요소를 추가하여 모델을 확장할 수 있지만, 기존의 운동법칙을 변경하지 않다.

3. LSP(Liskov Substitution Principle) - 리스코프 치환 원칙

물리학적 모델링 방법론: 뉴턴의 운동 법칙은 LSP를 잘 따르는 모델링 예시이다. 뉴턴의 운동 법칙은 힘의 크기와 방향에 따라 물체의 운동 상태를 예측하는 모델이다. 이 때, LSP를 만족시키기 위해서는 힘의 크기와 방향을 올바르게 설정해야 합니다. 만약 이를 잘못 설정할 경우, 모델이 예측한 결과가 실제 운동 상태와 일치하지 않게 된다.

4. DIP(Dependency Inversion Principle) - 의존 역전 원칙

물리학적 모델링 방법론: 열역학 제 2 법칙 모델링에서, 엔트로피는 마이크로 상태에 대한 의존성을 제거하고, 시스템 전체에 대한 의존성을 갖는다. 엔트로피는 시스템의 불확실성을 나타내는 척도이며, 마이크로 상태에 대한 의존성이 없어짐으로써 시스템의 예측 능력이 향상된다.

5. 인터페이스 분리 원칙 (Interface Segregation Principle, ISP)

 

소프트웨어 디자인 원칙 중 하나로, 클라이언트가 자신이 사용하지 않는 인터페이스에 의존하지 않도록 인터페이스를 분리하는 것을 목표로 한다. 이것은 의존성 감소와 모듈화를 촉진하여 유연하고 확장 가능한 코드를 작성하는 데 도움이 된다.

물리학적 모델링에서 ISP는 물리학 연구에서 중요한 역할을 한다. 예를 들어, 하나의 물리학 모델에서 모든 변수와 모든 입력 값이 모두 서로 연결되는 경우, 모델을 유지 보수하거나 수정하기가 어려울 수 있다. 이는 시스템이 매우 복잡해지고 종속성이 증가하기 때문이다. 대신 모델을 작은 단위로 분할하고 인터페이스를 사용하여 이러한 단위 간에 통신하도록 구성하면 모델을 더 쉽게 이해하고 변경할 수 있다.

반응형

댓글