04. 프로그램 구성요소

김리원·2021년 8월 27일
0

키포인트

  • 단일 기능의 작은 부품을 "함수"라고 하고, 여러가지 기능의 큰 부분은 "클래스"라고 합니다.
  • 함수의 이미지는 "기계"로, 클래스의 이미지는 "물건이나 생물"로 표현합니다.
  • 주어진 주제에서 "함수"와 "클래스"를 만드는 연습을 합시다.

프로그램 부품의 형태과 선택 방법

개발자의 머리속에서 "부품화"의 관점에서 살펴 봅시다. 전체 프로그램은 여러 가지의 부분으로 나누어 만들 수 있습니다. 어떤 형태로 부품을 만들 수 있을까요?에 대해서는 프로그래밍 언어에 달려 있습니다. Python에서는 함수 또는 클래스라는 형식으로 부품을 만들 수 있습니다. 이는 모두 일반적인 프로그램 부품이며, 다른 다양한 프로그래밍 언어에서도 같은 부품을 만들 수 있습니다.

프로그램 전체를 여러 부분으로 나누고자 할 때, 함수 또는 클래스는 선택의 여지가 있습니다. 함수와 클래스의 특징은 나중에 설명하겠지만 시작 프로그램 구성요소의 형태를 선택할 때, 개발자의 머릿속으로 구상을 해보시기 바랍니다. 중요한 것은 2가지가 있습니다.

첫번째, "단독 기능을 가진 작은 부품을 만들고 싶다면, 함수를 선택하고 여러가지 기능을 가진 큰 부품을 만들고 싶다면 클래스를 선택한다"
두번째, "기계와 같은 부품을 만들고 싶다면 함수를 선택하고 물건이나 생물과 같은 부품을 만들고 싶다면 클래스를 선택한다"

함수에 대해

함수의 특징을 알아봅시다. 함수는 하나의 기능만을 가진 작은 부품입니다. 함수는 외부에서 전달된 데이터를 사용하여 내부에서 구성된 처리를 실시하여 그 결과 데이터를 외부로 돌려줍니다. 함수 외부에서 전달되는 데이터를 인수 또는 매개변수라고 하며 함수가 결과로 리턴되는 데이터들을 리턴값이라고 합니다. 그리고 함수를 사용하여 처리하는 것을 함수 호출이라고 합니다.

아래 이미지는 함수형태를 보여줍니다. 인수를 재료, 리턴값을 제품에 비유하여 함수는 재료를 가공하여 제품을 만들어내는 기계와 같은 것으로 표현하였습니다. 함수는 영어로 function이고 한국어로 번역하면 "기능"이라고 말합니다. 하나의 기능을 가진 기계가 함수라는 느낌입니다.

클래스에 대해

클래스의 특징을 알아봅시다. 함수가 하나의 기능만을 가진 작은 부품인 반면에, 클래스는 여러 데이터러 및 다중 처리가 큰 부품입니다. 클래스가 가진 처리 함수라고 부르지 않고 이를 메소드(Method)라고 말합니다. 함수와 메소드의 가장 큰 차이점은 함수가 외부에서 전달된 데이터(인수)를 사용하여 처리하는 반면, 메소드는 클래그 내부에 보유하고 있는 데이터를 사용하여 작업을 할 수 있습니다.

아래 이미지는 클래스 형태를 보여줍니다. 메소드를 호출하여 클래스 내부에 보유하고 있는 데이터를 처리하는 것은 물건이나 생물에 대해 "당신이 가지고 있는 데이터를 처리하십시오"라는 요청을 하고 있는 것과 같습니다. 이때문에 클래스는 실제 물건이나 생물을 프로그램으로 표현하는 것이라고 할 수 있습니다. 클래스는 영어로 Class라고 하며, 물건이나 생물의 부류 및 종류라는 뜻도 있습니다.

함수와 클래스 만들 때 고려사항

프로그램 부품 형태로 함수나 클래스 중 하나를 선택한다면 그것을 어떻게 만들 것인가를 생각해야 합니다. 함수를 선택하면 자신의 생각에서 "함수명", "인수", "리턴값"을 결정합니다. 클래스를 선택하면 자신의 생각으로 "클래스명", "데이터명"(클래스가 내부에 보유하고 있는 데이터명), "메소드명"을 결정합니다. 심플한 예제로 함수와 클래스를 만드는 연습을 해봅시다.

예제
"삼각형 면적을 구하라라는 기능을 가진 프로그램 부품을 만드세요."

같은 기능의 프로그램 부분을 함수로 만들고 클래스도 만들 수 있습니다. "면적을 요구하는 단독 기능을 가진 작은 부품이기 때문에 함수"라고 생각할수도 있고, "삼각형이라는 것을 나타내는 부품을 만들고 싶기 떄문에 클래스이다"라고 생각할수도 있기 때문입니다.

함수를 만들때, 개발자의 머릿속은 처리관점에서 입력, 연산, 출력을 발견하면 개발자 머리속과의 기능과 비슷합니다. 그 이유는 함수의 인수는 함수에 대한 입력이며, 함수 리턴값은 함수의 출력이기 때문입니다. 연산은 함수 내부에서 수행되는 작업입니다.

profile
개발자, IT강사, sage.riwon.kim@gmail.com

0개의 댓글