공부한 것 꼭꼭 씹어먹기

JAVA와 객체지향과 독립성 그리고 프로그램의 재사용성 본문

소소한 개발 지식

JAVA와 객체지향과 독립성 그리고 프로그램의 재사용성

젤라솜 2022. 10. 4. 22:35
반응형

 

의존하는 프로그램은 위험합니다. 프로그램은 독립할수록 좋다고합니다. 하지만 왜 프로그램이 독립적이면 좋을까요? 그래서 A, B, C의 3개의 프로그램이 독립되어 있지 않고, 각각 의존하고 있는 상태를 생각해 봅시다. A, B, C 각각이 서로 결합하고 의존하는 상태입니다. 이 경우 A 프로그램에 추가하거나 수정한 경우 B에 영향이 없는지 확인해야 합니다. 또한 A 프로그램을 변경하여 B를 수정해야 할 경우 B를 변경하면 C에 영향을 줄 수 있습니다. 그리고 B를 변경하여 C에 영향을 주는 경우에는 C를 변경하여 A에 영향이 없는지 확인해야 합니다. 그러면 언제까지 지나도 프로그램 변경이 끝나지 않는 무한 루프 에 들어갈 가능성이 있습니다. 게다가 A, B, C의 어느 프로그램을 변경해도, 각각에 주는 영향을 항상 고려하지 않으면 안됩니다.

이것이라면 개발의 효율이 매우 나쁘지요. 그러므로, 각각이 의존하지 않도록 독립시켜, 서로 영향이 없도록 해 봅시다. 이것은 극단적인 예이지만 A, B, C는 각각 완전히 독립적입니다. 이런 식으로 A, B, C 중 어느 것을 변경해도 다른 프로그램에 미치는 영향은 생각할 필요가 없습니다. 이것으로부터 프로그램은 독립하고 있는 것이 좋은 것을 알 수 있을 것입니다.

 

JAVA에서 독립성을 높이는 법

원래 프로그램의 독립성이란 무엇을 가리키고 있는지 바로 이미지가 떠오르지 않을지도 모릅니다. 구체적으로 말하면, 이것은 "캡슐화"라고 불리며 다른 프로그램에서 내용이 보이지 않도록 숨기고 필요 이상으로 간섭되지 않도록 하는 구조입니다. Java에서는 「클래스」라고 하는 구조를 사용하는 것으로, 프로그램을 캡슐화해 독립성을 높이고 있습니다. 사실 Java에서의 클래스는 학교의 클래스와 완전히 사고 방식이 같습니다. 「학교에서는 왜 클래스별로 나누고 있는 것인가?」를 생각해 보면, Java의 클래스의 의미를 알 수 있습니다. 학교에서는, 2년 A조, 2년 B조등의 클래스로 나누어, 각각의 클래스를 독립시키고 있습니다. 그러면 비록 2년 A조의 일부의 불량 학생(나쁜 동작을 하는 프로그램)이, 날뛰어 수업을 방해했다고 해도, 2년 B조에는 영향이 없지요. 또, 수학이 특기인 학생, 영어가 특기인 학생등을 모아 궁리하고 클래스 나누기를 실시하면, 학교나 선생님으로부터 하면 관리가 쉬워 수업의 내용등도 조립하기 쉬워집니다. 

 

프로그램 재사용성

일상 생활에서도 일용품을 재활용하거나 가전을 수리하고 다시 사용하여 재이용하면 쓰레기의 양이 적어 환경 친화적입니다. 게다가 돈을 아낄 수 있어서 경제적이기도 합니다. 프로그램을 재사용하면 장점이 많이 있습니다. 매번 같은 프로그램을 쓰고 있으면 순식간에 코드량이 늘어나 유지보수하기에 너무나 힘들어집니다. 게다가, 이것으로는 A라는 프로그램에 추가나 수정을 할 필요가 나왔을 경우, A가 쓰인 다른 모든 코드를 변경하지 않으면 안됩니다. 사실상 같은 일을 반복하는 셈이지요. 그래서 같은 A라는 프로그램을 독립된 부품으로 하여 외부에서 재사용할 수 있도록 하면 프로그램을 작성하는 시간을 절약할 수 있습니다. Java에서는 「메소드」 「클래스의 상속」등의 구조로 프로그램의 재이용성을 높이고 있습니다. 메소드는 일정한 처리를 실시하는 프로그램을 부품화할 수 있는 구조입니다. 같은 처리를 메소드로 해 부품화해 다른 프로그램으로부터 재이용하는 것으로, 쓰는 코드도 줄이고, 변경할 때도 한 번의  작업으로 끝납니다. 또한 동일한 기능과 관련된 메서드를 하나의 클래스로 결합할 수도 있습니다. 더 쉬운 예를 들자면, 와플 기계를 생각해 볼 수 있습니다. 와플틀이 클래스가 되는 것이고, 그 와플 틀에 반죽을 부어 만들어내는 와플이 클래스의 상속을 받은 인스턴스라고 할 수 있습니다. 클래스인 와플틀은 하나지만, 반죽에 아몬드를 섞으면 아몬드 와플, 블루베리를 섞으면 블루베리 와플이 됩니다. 이렇게 자주 하는 처리를 1개의 클래스로 정리해, 프로그램 전체에서 재이용을 할 수 있으면 굉장히 효율이 좋다고 생각하지 않습니까? Java에서는 클래스 단위로 프로그램을 재사용할 수 있도록 하는 구조 가 있습니다. 그것이 "클래스의 상속"입니다. 

반응형
Comments