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