관리 메뉴

새로운 시작, GuyV's lIfe sTyle.

닷넷 게시판 만들기 Part 7 - aspx 구조와 메소드사용하기 본문

ⓟrogramming/asp.net 게시판

닷넷 게시판 만들기 Part 7 - aspx 구조와 메소드사용하기

가이브 2011. 1. 4. 15:35

2010/11/16 - [ⓟrogramming/.net] - 닷넷 게시판 만들기 Part 1
2010/11/18 - [ⓟrogramming/.net] - 닷넷 게시판 만들기 Part 2
2010/12/08 - [ⓟrogramming/.net] - 닷넷 게시판 만들기 Part 3
2010/12/16 - [ⓟrogramming/.net] - 닷넷 게시판 만들기 Part 4
2010/12/16 - [ⓟrogramming/.net] - 닷넷 게시판 만들기 Part 5
2010/12/22 - [ⓟrogramming/.net] - 닷넷 게시판 만들기 Part 6

1. 닷넷 개발환경 준비, 테스트
2. 닷넷 알아보기 [5/..]
3. 게시판 글쓰기
4. 게시판 글목록
5. 게시판 글읽기
6. 다듬기

새해 복 많이 받으세요!


이전 시간에 이어, 메서드를 좀 더 알아보겠다.

앞전에 만들었던 구구단을 다시 보자.

<%@ Page Language="C#" runat="server" %>
<script language="C#" runat="server">

void Page_Load()
{
   for (int i=1; i<=9; i++)
   {
       // "2 x i = ?"
       string output = "2 x " + i + " = " + 2*i;  
       Response.Write( output + "<br>" );
   }
}

</script>


반복문 for(;;)를 이용해서 2단을 출력했다.
구구단에서 사용할 수 있는 메서드를 설계해보자.

메서드를 만들기 전에 생각할 것은,

1. 메서드의 목적상, 인수(입력)를 받을 필요성이 있는가?
2. 메서드의 결과를 리턴(return)할 것이 있는가?

이 정도가 기본이라고 볼 수 있겠다.
메서드의 (1)입력과 (2)결과리턴은 어떤 자료형이든 받을 수 있거나, 어떠한 자료형이라도 리턴할 수 있는 두 가지 타입이 있다. 

먼저, 메서드가 해야할 일을 생각해보자. 2단이든 3단이든 1~9를 곱하는 것은 마찬가지이다. n단을 구한다고 치면,

n X 1 = ..
n X 2 = ..
..
n X 9 = ..

이런 기능을 해야 하므로, 입력은 2~9까지(또는 다른 수)가 가능한 int 형을 받도록 하자. 한 개면 충분할 것 같다.

결과 리턴은, 만드는 사람의 마음이다. 여기서는 바로 화면에 출력하기로 하자. 단, 구구단은 2~9단까지 있는 것이 일반적이므로, 2이상, 9이하의 값이 아니라면 잘못된 값이 들어왔다는 거짓(false), 값이 잘 들어왔다면 참(true)를 리턴할 수 있게 bool 형을 리턴하도록 정하자.
그리고 메서드명은 "GuguDan" 이라고 짓기로 한다.

앞시간의 형식에 대해 기억하는가?

[접근권한] (static) [자료형] 메서드명(받을인수1, 받을인수2 ... )
{
          .. 메서드내용
}

우리가 만들 메서드는 가장 간단하게, 다음과 같이 만들어질 수 있겠다.

bool GuguDan(int dan)
{
     // 수행할 명령어
    ..
    ..

   // 최종 결과값 리턴 
    return true;
}

2단 구구단 소스를 다시 열어보자.

<%@ Page Language="C#" runat="server" %>
<script language="C#" runat="server">

void Page_Load()
{

   for (int i=1; i<=9; i++)
   {
       // "2 x i = ?"
       string output = "2 x " + i + " = " + 2*i; 
       Response.Write( output + "<br>" );
   }

}

</script>


그렇다면 메서드를 어디에 추가하고, 어떻게 사용해야 할까?

언젠가 말했듯이, aspx 파일은 하나의 클래스라고 보면 된다라고 했다. 좀 더 자세하게,

<script language="C#" runat="server">
..
</script>

이 구문을 하나의 클래스라고 보면 된다고 했고,

void Page_Load()
{
}


이 구문은 자동으로 실행되는 메서드라고 보면 된다고 했다.


<script language="C#" runat="server">

     void Page_Load()
     {
              ..
     }


</script>


이렇게 우리가 알고 있듯이, "네임스페이스->클래스->메서드,프로퍼티" 구조가 되는 것을 확인할 수 있다.

즉, Page_Load() 역시 메서드이기 때문에, 클래스선에서 정의를 하게 된다.
우리가 만들 Gugudan() 메서드는 Page_Load() 와 동일선상에 놓으면 되는 것이다.


<script language="C#" runat="server">

     void Page_Load()
     {
              ..
     }

    
bool GuguDan(int dan)
   {
     // 수행할 명령어
    ..
    ..

   // 최종 결과값 리턴 
    return true;
   }


</script>


이제 GuguDan() 메서드를 완성해보자.

 bool GuguDan(int dan)
 {   
     bool checkDan = true;

     if (dan < 2 || dan > 9)
     {
         checkDan = false;
     }
     else
     {
        Response.Write ("===== 구구단 " + dan + " 단 시작 =====<br>");

        for (int i=1; i<=9; i++)
        {
            // "dan X i = ?"
            Response.Write(dan + " X " + i + " = " + dan*i + "<br>");
        }
     }    

     return checkDan

 }


빨간색 입력인자 "dan"과 for(;;) 에서 루프 기준값인 보라색 "i"를 눈여겨 본다. 또한 밑줄친 리턴에 이용하는 bool형 변수도 보도록 하자.

이 GuguDan() 메서드는 메서드 인수로 받은 정수를 for(;;)로 1~9를 곱한 값을 출력하는 기능을 한다.

이제 이 메서드를 사용해보자.

메서드를 사용함에 있어서 중요한 점은,

1. 사용할 메서드의 인수 갯수와 자료형을 알맞게 넣어야 한다.
2. 사용할 메서드가 리턴을 한다면 리턴값을 해당 자료형에 맞게 받아야 한다. 단, 받지 않아도 무방하다.

그렇다면, GuguDan() 메서드를 사용하는 방법은,

bool success = GuguDan(5);
bool success = GuguDan(2);
bool success = GuguDan(6);
bool success = GuguDan(15);
GuguDan(20);

이렇게 될 수 있다. 결과가 어떻든 사용하는 방법에 대해 꼭 생각하자. 메서드를 사용할 때에는 메서드가 요구하는 자료를 정확하게 넘겨주어야 하며, 리턴은 받아도 되고, 안받아도 그만이다.

다음은, 구구단 메서드를 작성하고, 사용한 2~9단의 구구단을 출력하는 전체소스이다.


gugudan.aspx

<%@ Page Language="C#" runat="server" %>

<script language="C#" runat="server">

void Page_Load()
{

   for (int i=2; i<=9; i++)
   {
       GuguDan(i);
   }

}


 bool GuguDan(int dan)
 {  
     bool checkDan = true;

     if (dan < 2 || dan > 9)
     {
         checkDan = false;
     }
     else
     {
        Response.Write ("===== 구구단 " + dan + " 단 시작 =====<br>");
        for (int i=1; i<=9; i++)
        {
            // "dan X i = ?"
            Response.Write(dan + " X " + i + " = " + dan*i + "<br>");
        }
     }  
 
  return checkDan;
 }


</script>


실행한 결과는 다음과 같다.




예제에서는, 리턴값을 버리고 출력만 했다. 이 리턴값을 이용해서 "잘못된 입력값입니다" 라고 출력을 하는 등의 방법도 있을 수 있음을 생각하자.

gugudan.aspx


또한, 생각나는대로 메서드를 이용한 프로그램을 직접 만들어보도록 하자.
두 수를 더해주는 기능을 하는 메서드, 문자열로 이름을 받아서 인삿말을 보여주는 메서드 등..

다시 말한다. 메서드의 주된 목적은 자주 사용하는 기능을 단독으로 때어내어 만든 후, 사용하기 위함이다.


다음편에서는 앞에서 다루었던 방문객 카운터를 마무리하도록 하겠다.
반응형
Comments