23-1-3.µ¿ÀÛ °´Ã¼ Àü´Þ

countover¿Í countunder¸¦ ÇÕÄ¥ ¼ö ¾ø´Â ÀÌÀ¯´Â µ¿ÀÛÀ» Àμö·Î Àü´ÞÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù. ´ë½Å °ªÀÇ Å¸ÀÔ¿¡´Â Á¦¾àÀÌ ¾ø´Ù´Â Á¡À» ÀÌ¿ëÇϸé ÇØ°á ¹æ¹ýÀÌ ÀÖ´Ù. Àμö·Î µ¿ÀÛÀ» °¨½Î´Â °´Ã¼¸¦ Àü´ÞÇÏ¸é µÈ´Ù. ´ÙÀ½ ¿¹Á¦ºÎÅÍ´Â º¹Àâµµ°¡ Á¶±Ý Áõ°¡ÇÑ´Ù.

 

opobject

class JavaTest {

     static int[] arAge = { 29, 30, 34, 32, 30, 31, 28, 31, 29, 30 };

     public static void main(String[] args) {

          System.out.println("over = " + count(new AgeOver()));

          System.out.println("under = " + count(new AgeUnder()));

     }

    

     static int count(AgeFilter op) {

          int num = 0;

          for (int i = 0; i < arAge.length; i++) {

              if (op.isAgeOk(arAge[i])) num++;

          }

          return num;

     }

}

 

interface AgeFilter {

     boolean isAgeOk(int age);

}

 

class AgeOver implements AgeFilter {

     public boolean isAgeOk(int age) {

          return (age > 30);

     }

}

 

class AgeUnder implements AgeFilter {

     public boolean isAgeOk(int age) {

          return (age < 30);

     }

}

 

ºñ±³ ¸Þ¼­µå¸¦ °¡Áö´Â Ŭ·¡½º¸¦ Á¤ÀÇÇÏ°í ±× °´Ã¼¸¦ count ¸Þ¼­µå·Î Àü´ÞÇÑ´Ù. °´Ã¼´Â ³»ºÎ¿¡ µ¿ÀÛÀ» Æ÷ÇÔÇÏÁö¸¸ ¾î·°Å³ª °ªÀ̾ Àμö·Î Àü´ÞÇÒ ¼ö ÀÖ´Ù. Àü´Þ¹ÞÀº °´Ã¼·ÎºÎÅÍ ¸Þ¼­µå¸¦ È£ÃâÇÏ¿© µ¿ÀÛÀ» ó¸®ÇÏ´Â ½ÄÀÌ´Ù.

ÇϳªÀÇ Àμö¿¡ °¢°¢ ´Ù¸¥ °´Ã¼¸¦ ¹Ù²ã ´ëÀÔÇÏ·Á¸é °øÅëÀÇ Å¸ÀÔÀÌ ÇÊ¿äÇÏ´Ù. AgeFilter ÀÎÅÍÆäÀ̽º´Â Á¤¼ö°ªÀ» ¹Þ¾Æ ÀÌ °ªÀ» Á¡°ËÇÑ °á°ú¸¦ ÁøÀ§ÇüÀ¸·Î ¸®ÅÏÇÏ´Â isAgeOk Ãß»ó ¸Þ¼­µå¸¦ ¼±¾ðÇÑ´Ù. Ãß»óÀ̹ǷΠ½Ã±×´Ïó¸¸ Á¤ÀÇÇÒ »Ó ±¸Ã¼ÀûÀÎ ºñ±³ ¹æ¹ýÀº ¸í½ÃÇÏÁö ¾Ê´Â´Ù.

AgeOver¿Í AgeUnder Ŭ·¡½º´Â AgeFilter ÀÎÅÍÆäÀ̽º¸¦ »ó¼Ó¹Þ¾Æ isAgeOk ¸Þ¼­µå¸¦ ±¸ÇöÇ쵂 °ªÀ» ºñ±³ÇÏ´Â ¿¬»êÀÚ°¡ ´Ù¸£´Ù. AgeFilter´Â µÎ °ªÀ» ºñ±³ÇÏ¿© °á°ú¸¦ ¸®ÅÏÇÑ´Ù´Â °Í¸¸ Á¤ÀÇÇÏ°í AgeOver´Â 30º¸´Ù ´õ Å« °ªÀÎÁö Á¶»çÇϸç AgeUnder´Â 30º¸´Ù ´õ ÀÛÀº °ªÀÎÁö Á¶»çÇÑ´Ù.

ÀÎÅÍÆäÀ̽º¿Í Ŭ·¡½ºÀÇ °èÃþÀ» ±¸¼ºÇØ ³õ°í count ¸Þ¼­µå´Â AgeFilter ÀÎÅÍÆäÀ̽º ŸÀÔÀÇ °´Ã¼ op¸¦ Àü´Þ¹Þ´Â´Ù. ±×¸®°í opÀÇ isAgeOk ¸Þ¼­µå¸¦ È£ÃâÇÏ¸é ´ÙÇüÀûÀ¸·Î ºñ±³ÇÑ´Ù. µ¿ÀÛÀ» Àü´ÞÇÒ ¶§ ÈçÇÏ°Ô »ç¿ëÇÏ´Â ¹æ¹ýÀ̸ç Áö±Ýµµ Çö¾÷¿¡¼­ À¯¿ëÇÏ°Ô »ç¿ëµÈ´Ù.

count ¸Þ¼­µå Çϳª·Î Äڵ尡 ÅëÇյǾúÀ¸¸ç µ¿ÀÛµµ ÈǸ¢ÇÏ´Ù. ±×·¯³ª Ŭ·¡½º ¼±¾ðÇÏ°í °´Ã¼¸¦ »ý¼ºÇØ¾ß ÇϹǷΠÄÚµå´Â ±æ°í ¹øÀ⽺·¯¿öÁ³´Ù. ÀÚ¹Ù´Â ÀÌ·± °æ¿ì¸¦ À§ÇØ À͸í Ŭ·¡½º ¹®¹ýÀ» Á¦°øÇÑ´Ù. ÇÑ ¹ø¸¸ »ç¿ëÇÒ °´Ã¼¶ó¸é Ŭ·¡½º¸¦ ¼±¾ðÇÒ ÇÊ¿ä ¾øÀÌ ¹Ù·Î °´Ã¼¸¦ ¸¸µé¾î »ç¿ëÇÑ´Ù.

 

opobject2

class JavaTest {

     static int[] arAge = { 29, 30, 34, 32, 30, 31, 28, 31, 29, 30 };

     public static void main(String[] args) {

          System.out.println("over = " + count(new AgeFilter() {

              public boolean isAgeOk(int age) {

                   return (age > 30);

              }

          }));

          System.out.println("under = " + count(new AgeFilter() {

              public boolean isAgeOk(int age) {

                   return (age < 30);

              }

          }));

     }

    

     static int count(AgeFilter op) {

          int num = 0;

          for (int i = 0; i < arAge.length; i++) {

              if (op.isAgeOk(arAge[i])) num++;

          }

          return num;

     }

}

 

interface AgeFilter {

     boolean isAgeOk(int age);

}

 

Ŭ·¡½º ¼±¾ð¹®ÀÌ »ç¶óÁ³À¸¸ç ´ë½Å count È£Ãâ¹®ÀÇ Àμö¿­¿¡¼­ À͸í Ŭ·¡½ºÀÇ Àӽà °´Ã¼¸¦ ¸¸µé¾î Àü´ÞÇÑ´Ù. ÄÚµå´Â ª¾ÆÁ³Áö¸¸ °¡µ¶¼ºÀº ¶³¾îÁö¸ç ¼÷·ÃÀÚ°¡ º¸±â¿¡µµ Çò°¥¸°´Ù. ¾à°£ ª¾ÆÁ³À» »Ó ¾ÆÁ÷µµ ±º´õ´õ±â Äڵ尡 ¸¹ÀÌ ³²¾Æ ÀÖ´Ù.