Java
프로그램과 그 구조

안녕하세요. 이제 Java 초보자 다메입니다.

이번 챕터는 프로그램과 그 구조에 대한 내용입니다.

Java라는 프로그래밍 언어에 특정되지 않는 개념이며

추후 진행하는 과정에서 필요하다 판단되어 작성합니다.

이미 해당 지식을 보유하고 있다면 다음 챕터로 넘어가셔도 좋습니다.

시작합니다.



1. 프로그램이란?

프로그램은 "컴퓨터에 처리시키는 작업의 순서를 명령어로 작성하는 것" 이라고 해요.

(출처 : NAVER 컴퓨터인터넷IT용어대사전)

컴퓨터가 동작을 하려면 명령어가 필요합니다. 

예를 한번 들어 볼까요?

숫자 하나를 입력했을 때 해당하는 수가 짝수인지 홀수인지

확인하는 프로그램을 의사코드(*)로 표현해 보자면


Line 1 숫자를 입력한다.

Line 2 입력받은 숫자를 2로 나눈다.

Line 3 이 때 나머지가 0이면 숫자는 짝수이다.

Line 4 그 외의 경우(2로 나눴을 때 나머지가 있는 경우)는 홀수이다.


정도가 됩니다. 우리는 한국인이기 때문에 한글로 표현해 보았어요.

사람을 예시로 한번 들어볼까요?

사람도 어떤 수가 짝수인지 홀수인지 판단하려면 다음 절차와 같이 수행하겠죠?


Line 1 수를 정한다.

Line 2 수를 2로 나눠본다.

Line 3 나눴을 때 나머지가 0이면 짝수라고 판단한다.

Line 4 나눴을 때 나머지가 0이 아니면 판단한다.


저 한 줄이 명령어이고, 보통 명령어 하나에 한 동작을 수행합니다.

추후에 명령어를 묶어 모듈(*)(=클래스, 함수 또는 메소드)라는 것을 만들 수 있는데

그 또한 거시적으로 본다면 모듈 하나에 정해진 한 동작을 수행하게 됩니다.

챕터 1에서 설명 드렸던 절차 지향 언어에서는 "모듈 = 함수"를 의미하여

모듈과 함수가 일대일로 대응하지만, 객체 지향 언어에서는 구성에 따라

일대일로 대응하지 않을 수 있습니다. 앞으로 자세히 알게 되실거에요.


※ 이해를 돕기위한 예시

ex1) x = 3

(x/2)의 나머지 = 1

따라서 x는 홀수이다.


ex2) x = 4

(x/2)의 나머지 = 0

따라서 x는 짝수이다.


* 의사코드 : 사람이 이해할 수 있는 언어로 프로그래밍 언어에 상관없이 알고리즘(*)을 표현해 놓은 것.

* 알고리즘 : 어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합.

* 모듈 : 특성 또는 용도를 가지는 기능의 단위



2.  프로그램의 구조


그림판으로 그려서 다소 조잡하다고 느끼실 수 있겠지만...

대부분의 프로그램은 위와 같은 구조로 이루어져 있습니다.

어떠한 프로그램에서 메인 함수(또는 메소드)는 반드시 단 하나만 존재하며

ModuleN(N = 1,2,3...)은 고유한 모듈을 의미합니다.

즉, 메인 함수(메소드)에서 알고리즘에 따라 필요한 모듈을 호출하는 것이지요.

이해가 좀 되셨으려나 모르겠습니다. 처음 접한다면 조금 어려울 수도 있을 것 같아요.

이 항목에서 가장 중요한 점은 위에 강조한 부분입니다. 꼭 기억해두세요!!



3. 우수한 구조의 프로그램

프로그램의 기능과는 상관없이 구조적으로 우수한 프로그램의 특징은 다음과 같습니다.


1) 모듈화

어떤 큰 문제를 해결할 때 필요한 기능들을 가능한 잘게 쪼개어서 나누는 것을 모듈화라고 합니다.

무턱대고 큰 프로그램을 만들려고 하기 보다는 가장 단순한 혹은 필수적인 기능부터 구현한다면 어렵지 않습니다.

논리적으로 얘기하자면 가장 작은 범위에서 부터 필요조건을 만족시켜 나가면 됩니다.


2) 가독성

제 3자가 읽었을 때도 어느정도 프로그램의 흐름을 알 수 있다면 이는 가독성이 좋은 프로그램이라고 얘기할 수 있습니다.

가독성을 향상시키는 방법 중 가장 간단한 것은 모듈의 이름을 잘 짓는 것입니다.

예를들어 입력을 하는 모듈의 이름은 Input, 출력을 하는 모듈의 이름은 Output 이라고 짓게 된다면,

처음 보는 사람도 Input과 Output을 보곤 "아! 각각 입력과 출력 기능을 담당하나 보다!" 라고 생각할 겁니다.

이렇게 가독성이 좋은 프로그램은 유지, 보수, 확장이 쉬워집니다!

해당하는 모듈을 찾아서 수정하기가 쉬워지기 때문이죠.

따라서 모듈화를 할 때 가독성을 고려한다면 좋겠죠?


3) 짧은 메인 함수(또는 메소드)

위의 1)을 만족시킨 프로그램은 2)를 만족하기 쉬워집니다.

일반적으로 1), 2)를 동시에 만족시킨다면 구조적으로 좋은 프로그램이라고 말 할 수 있습니다.

메인문에 남아있는 것은 가독성을 고려한 모듈들이기 때문입니다.



이번 챕터는 이것으로 마칩니다.

다음 챕터부터는 본격적으로 실습을 통해 자바에 대해 살펴보도록 하겠습니다.

아무래도 아주 기본적인 구조(기본 자료형..?)부터 시작하게 될 것 같아요.

긴 글 읽어주셔서 감사합니다!

댓글 0