자바 로직, wrap-up

지금까지 배운 것에 대해서 복습하는 시간을 한 번 가져보겠습니다.

순서도

요즘은 학교에서도 프로그램 또는 코딩수업이 있다고 하더군요. 그런데, 아마도 학교 수업에서 가장 처음 만나는 것은 아래와 같은 순서도가 아닐까 싶습니다.

순서도

그러면, 이런 순서도를 실무에서도 많이 쓰나요? 라는 질문이 떠오릅니다.

대답은… 음… 이런 순서도는 쓰지 않습니다. 대신 업무흐름도라는 이름으로 모양이 비슷한 것이 있고, 시퀀스(sequence) 다이어그램이라는 이름만 비슷하고 모양이 전혀 다른 다이어그램을 사용합니다.

업무흐름도

시퀀스(sequence) 다이어그램

즉, 학교에서 사용하는 순서도는 이러한 실무에서 사용하는 순서도를 단순화한 것이며, 처음에 프로그램을 공부하면서, 로직의 흐름을 따라가기에는 좋습니다. 하지만, 실무에서는 이것보다는 훨씬 더 현실세계에 가까운 것을 사용한다고 보면 되겠습니다.

자바로직

로직을 구성하는 요소는 생각보다 단순합니다. 거의 대부분이 조건에 따른 분기이고, 필요에 따라 Loop를 돌면서 연산하는 것이 로직의 거의 대부분입니다. 이것은 자바 뿐마 아니라 거의 모든 프로그램에 적용되는 말입니다. 어찌보면 프로그램이라는 것은 이러한 단순반복 작업을 사람이 아닌 컴퓨터에 맡겨서 속도를 높이는 작업이라고 할 수 있습니다.

다시 말해서, 프로그램을 구성하는 대부분의 요소는 if… else 구문을 사용하고, 그 다음으로 많이 사용하는 요소는 for 입니다.

우리는 앞서서 이미 if, else, for, while 등을 배웠기 때문에, 이러한 요소만으로도 간단한 프로그램은 만들 수 있는 상태입니다. 앞으로 추가해야 할 일은, 이러한 요소를 하나로 묶은 함수(메소드)를 배우고, 패키징하는 일입니다.

앞으로 배울 요소

앞으로 배울 요소는 지금까지 배운 것을 점점 큰 덩어리도 만들어 가는 과정이라고 볼 수 있습니다. 작은 눈덩어리를 굴려서 점점 더 큰 눈덩어리로 만들어가는 과정입니다.

메소드(method)

다른 프로그래밍 언어에는 함수(function)이라고 부르는 것을 굳이 자바에서는 메소드(method)라고 합니다. 그래서, 제가 강의 중에도 종종 메소드로 펑션을 종종 혼용해서 부르기도 합니다. 엄밀한 의미에서는 다르다고 하는데, 저는 잘 … 모르겠습니다.

메소드는 입력값을 대입하면, 출력값이 나오는 말 그대로 수학에서 말하는 x, y 함수도 비슷합니다. x 값을 대입하면, 적절한 y 값을 되돌려(리턴)주는 구조입니다. (입력값이 여러 개 이거나, 필요없는 경우도 있고, 출력값이 없는 경우도 있습니다)

클래스(class)

클래스라는 것이 어찌보면 자바 언어를 다른 언어와 구분하는 가장 큰 차이점이라고 생각할 수 있지만, 너무 이 부분에 초점을 맞추면, 프로그래밍이라기 보다는 철학에 가까워지는 경향이 있습니다.

클래스라는 것은 대부분 1개의 소스코드로 연결되며, 변수와 연산부를 하나로 묶은 것이라고 생각하면 좋습니다.

패키지

클래스가 많아지면, 관리가 복잡해집니다. 따라서, 업무 단위로 패키징하여 관리합니다. 패키징을 하면, 다른 패키지에 있는 소스코드로 접근할 때 제어가 필요합니다. 그 때 필요한 것이 접근 제어자에 대해서 공부하기로 합니다.

주의할 점

수업의 방향을 적다보니, 과거 제가 배웠던 교과서 스타일의 교제와는 다른 순서로 글을 적고 있다는 것을 알았습니다. 교재는 하나만 있는 것이 아닙니다. 제가 쓰는 블로그의 글은 매우 적은 내용을 포함하고 있습니다. 또한 순서도 기존 교재와는 다르게 실무에 필요한 방향으로 쓰고 있습니다. 참고 교재를 하나 이상 구입해서 같이 보신다면, 학습효과를 높이는데 도움이 될 것 같습니다.