Jose M. Fernández ÇÊÀÚ¿¡°Ô ¿¬¶ôÇϱâ
|
¿ä¾à: ÀÌ ¿¬Àç ±â°í´Â ±¸Á¶Àû ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ
ÀüÅëÀûÀΠåÀ» º»º¸±â·Î ÇÑ´Ù. ù ¹ø° ±â°í¿¡¼ ÀÚ¹Ù ¾ð¾îÀÇ Æ¯¼º¿¡ ´ëÇØ °£´ÜÇÑ ¼Ò°³¸¦ Çß°í,
À̹ø¿¡´Â ÀÚ·áÇü, º¯¼ö, Á¦¾î¹® µîÀ» °è¼ÓÇؼ °øºÎÇÏ·Á°í ÇÑ´Ù. ¿©±â¿¡´Â Ŭ·¡½º(class)¶ó´Â
´ë´ÜÈ÷ Áß¿äÇÑ ÁÖÁ¦°¡ ÀÖ´Ù. Ŭ·¡½ºÀÇ °³³äÀº ÀÚ¹Ù ÇÁ·Î±×·¥ ¾ð¾îÀÇ ÇÙ½ÉÀÌ µÈ´Ù.
To center the classes topic, the
first part will be as ESQUEMATICA¿? as possible, due to the similarity to the
rest of the programming languages.
ÀÚ¹Ù ÁÖ¼®Àº ´ÙÀ½ÀÇ ¼¼ °¡Áö ¾ç½Ä ÁßÀÇ ÇϳªÀÏ ¼ö ÀÖ´Ù:
½Äº°ÀÚ´Â ÄÄÆÄÀÏ·¯°¡ ±×°ÍµéÀ» ½Äº°Çϵµ·Ï º¯¼ö, Ŭ·¡½º, ¸Þ¼Òµå(method)¿¡ ÁÖ¾îÁø À̸§ÀÌ´Ù. ¾ËÆĺª ¹®ÀÚ, ¼ýÀÚ, ¹ØÁÙ, ´Þ·¯ ±âÈ£ÀÇ ¾î¶² ¹®ÀÚ¿À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¼ýÀÚ·Î ½ÃÀÛÇؼ´Â ¾È µÈ´Ù.
ÀÚ¹Ù´Â ±¸ºÐÀڷμ ¸î °³ÀÇ Æ¯¼öÇÑ ¹®ÀÚ¸¦ »ç¿ëÇÑ´Ù. °¡Àå ÀÚÁÖ ¾²ÀÌ´Â °ÍÀº ; ±¸ºÐÀÚÀÌÁö¸¸, ¶ÇÇÑ ´ÙÀ½À» ´õ ¾Ë¾Æ º¸ÀÚ:
±âÈ£ | Çؼ³ |
() | ¸Þ¼Òµå Á¤ÀÇ¿Í È£Ã⠽à ¸Å°³º¯¼ö ¸ñ·ÏÀ» º¸À¯ÇÑ´Ù. ¶ÇÇÑ Ç¥Çö½Ä ¿ì¼± ¼øÀ§(expressions precedence)¸¦ º¯°æÇϱâ À§ÇØ »ç¿ëµÈ´Ù. ȤÀº, Á¦¾î ¹®Àå°ú ÀÚ·áÇü º¯È¯¿¡¼ Ç¥Çö½ÄÀ» ¼ö¿ëÇÑ´Ù. |
{} | ÀÚµ¿ÀûÀ¸·Î ÃʱâȵǴ ¹è¿(vector)ÀÇ °ªµéÀ» ¼ö¿ëÇÑ´Ù. ÄÚµå ºí·°(code block)À» ¼ö¿ëÇÑ´Ù. Ŭ·¡½º, ¸Þ¼Òµå, Áö¿ª ¿µ¿ª(local scope)°ú ÇÔ²² »ç¿ëµÈ´Ù. |
[] | ¸ÅÆ®¸¯½º(matrix) ÀÚ·áÇüÀ» Á¤ÀÇÇÑ´Ù. ¸ÅÆ®¸¯½º¿¡ ÀÖ´Â °ªÀ» ÂüÁ¶ÇÑ´Ù. |
; | ¹®Àå ±¸ºÐÀÚ. |
, | º¯¼ö ¼±¾ð¿¡¼ ¿¬¼ÓÀûÀÎ ½Äº°ÀÚµéµé ±¸ºÐÇÑ´Ù. for ¹®¿¡¼ ¹®ÀåµéÀ» ±¸ºÐÇÑ´Ù. |
. | ÆÐÅ°Áö(package), ÇÏÀ§ ÆÐÅ°Áö, Ŭ·¡½º ¸íĪÀ» ±¸ºÐÇÑ´Ù. ÂüÁ¶µÈ º¯¼ö·ÎºÎÅÍ º¯¼ö ¶Ç´Â ¸Þ¼Òµå¸¦ ±¸ºÐÇÑ´Ù. |
Çٽɾî´Â ÀÚ¹Ù ¾ð¾î·Î »ç¿ëµÇ¾îÁö´Â ½Äº°ÀÚÀ̸ç ÀÚ¹Ù¿¡ ÀÇÇØ Á¤ÀÇµÈ ¹Ù¿Í ´Ù¸£°Ô »ç¿ëµÉ ¼ö ¾ø´Ù. ´ÙÀ½ Ç¥´Â ÀÚ¹Ù ÇٽɾîµéÀ» º¸ÀδÙ:
abstract | double | int | super |
boolean | else | interface | switch |
break | extends | long | synchronized |
byte | false | native | this |
byvalue | final | new | threadsafe |
case | finally | null | throw |
catch | float | package | transient |
char | for | private | true |
class | goto | protected | try |
const | if | public | void |
continue | implements | return | while |
default | import | short | |
do | instanceof | static |
ÀÌÀü ±â°í¿¡¼ ÀÚ¹Ù´Â ¿ÏÀüÇÏ°Ô °´Ã¼ÁöÇâÀûÀ̶ó°í ¾ð±ÞÇß´Ù. ±×·³¿¡µµ ºÒ±¸ÇÏ°í, È¿À²¼ºÀ» °í·ÁÇؼ, ÀÚ¹Ù´Â °´Ã¼°¡ ¾Æ´Ñ "´Ü¼øÇÑ" ÀÚ·áÇü ¿©´ü °³¸¦ Á¤ÀÇÇÑ´Ù. °Ô´Ù°¡, À̽ļºÀ» ÀÌÀ¯·Î, ¸ðµç ÀÚ·áÇüÀº À¯ÀÏÇÏ°Ô Á¤ÀÇµÈ ¹üÀ§¸¦ °¡Áø´Ù.
´Ü¼ø ÀÚ·áÇüÀº ³× °³·Î ¹¾î ±¸ºÐÇÒ ¼ö ÀÖ´Ù:
ÀÚ·áÇü | ¸íĪ | Å©±â | ¹üÀ§ |
Á¤¼ö | long | 64 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
int | 32 | -2,147,483,648 ~ 2,147,483,647 | |
short | 16 | -32,768 ~ 37,767 | |
byte | 8 | -128 ~ 127 | |
½Ç¼ö | float | 32 | 3.4 e-038 a 3.4 e+038 |
double | 64 | 1.7 e-308 a 1.7 e+308 | |
¹®ÀÚ | char | 16 | Unicode |
ºÎ¿ï¸° | boolean | true ¶Ç´Â false |
ÀϹÝÀûÀ¸·Î, º¯¼ö´Â ÀÌ·± ¹æ½ÄÀ¸·Î ¼±¾ðµÈ´Ù:
identifier type [=value] [,identifier [=value]......]; |
¿¹:
int a = 4, b, c=7; char c; myclass class; |
´ëºÎºÐÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾îµéÀº µÎ °¡ÁöÀÇ ¿µ¿ª ¹üÁÖ¸¦ Á¤ÀÇÇÑ´Ù. Àü¿ª(global)°ú Áö¿ª(local)ÀÌ ±×°ÍÀÌ´Ù. ±×·¯³ª ÀÌ´Â ÀÚ¹Ù °´Ã¼ ÁöÇâÀû ¸ðµ¨¿¡ ÀûÇÕÇÏÁö ¾Ê´Ù. ÀÌ ¸ðµ¨¿¡ ±âÃÊÇؼ, µÎ °³ÀÇ ÁÖ¿ä ¿µ¿ªÀº Ŭ·¡½º¿Í ¸Þ¼Òµå¿¡ ÀÇÇØ Á¤ÀǵǴ °ÍÀÌ´Ù.
int
ÇüÀº byte
ÇüÀ» ÀúÀåÇÒ ¸¸Å ÃæºÐÈ÷ Ä¿¾ß ÇÑ´Ù.
±×·¡¾ß ¸í½ÃÀûÀÎ º¯È¯À» ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â´Ù.
Á¤¼ö ÇüÀº char
Çü ¶Ç´Â boolean
Çü°ú ȣȯµÇÁö ¾Ê´Â´Ù.
»Ó¸¸ ¾Æ´Ï¶ó boolean
ÇüÀº ´Ù¸¥ ³ª¸ÓÁö ÀÚ·áÇüµé°ú ÀüÇô ȣȯµÇÁö ¾Ê´Â´Ù.
int °ªÀ» byte Çü¿¡ ÀúÀåÇÏ°í ½Í´Ù¸é, ´ÙÀ½°ú °°Àº Çü½Ä¿¡ µû¶ó ¸í½ÃÀûÀÎ º¯È¯À» »ç¿ëÇÏ¿©¾ß ÇÑ´Ù:
(type) value |
¿©±â¼, typeÀº ÀÚ·áÇü º¯È¯ ´ë»óÀ» ³ªÅ¸³½´Ù. ¿¹:
int a; char b; a=(int) b; |
ÀÚµ¿ÈµÈ Çü º¯È¯Àº Á¤º¸ÀÇ »ó½ÇÀ» ÃÊ·¡Çϱ⠶§¹®¿¡ ¹Ýµå½Ã Á¶½ÉÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¸é:
ºÎµ¿ ¼Ò¼ö ÇüÀ» Á¤¼ö ÇüÀ¸·Î º¯È¯ÇÒ ¶§, ¼Ò¼öÁ¡ ÀÌÇÏ°¡ ¹«½ÃµÈ´Ù:
int a; double d= 125.43; a=(int) d;º¯¼ö´Â °ªÀ¸·Î 125.¸¦ °¡Áø´Ù byte b; int i=257; b=(byte) i;b´Â °ªÀ¸·Î 1À» °¡Áö´Âµ¥, 256ÀÌ byte ÇüÀÇ ¹üÀ§ÀÎ °æ¿ì¿¡ 257À» 256À¸·Î ³ª´« °á°ú·ÎºÎÅÍ ³ª¿Â °ÍÀÌ´Ù. byte b; double d= 340.123; b=(byte) d;b´Â 84ÀÇ °ªÀ» °¡Áö°Ô µÈ´Ù |
ÀÌ·± ¸ðµç º¯È¯Àº ÄÄÆÄÀÏ·¯¿Í ÀÎÅÍÇÁ¸®ÅÍ·Î ¼öÇàµÈ´Ù. ¾î¶² ÄÄÆÄÀÏ ¿À·ùµµ ã¾Æ³»Áö ¸øÇÑ´Ù¸é ¸»ÀÌ´Ù.
¿¬»êÀÚ | Çؼ³ |
+ | ´õÇϱâ |
- | »©±â |
* | °öÇϱâ |
/ | ³ª´©±â |
% | ³ª¸ÓÁö |
++ | Áõ°¡ |
+= | ´õÇÏ°í ´ëÀÔ |
-= | »©°í ´ëÀÔ |
*= | °öÇÏ°í ´ëÀÔ |
/= | ³ª´©°í ´ëÀÔ |
%= | ³ª¸ÓÁö¸¦ ±¸ÇÏ°í ´ëÀÔ |
-- | °¨¼Ò |
³ª¸ÓÁö ¿¬»êÀÚ´Â Á¤¼ö¿Í ºÎµ¿ ¼Ò¼öÁ¡ °ª ¾çÂÊ¿¡ Àû¿ëµÉ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é:
int a=38; double d=41.95; int c=a%10; double e=d%10; |
c º¯¼ö´Â 8ÀÌ µÈ´Ù. e º¯¼ö´Â 1.95¸¦ °¡Áø´Ù.
´ëÀÔ ¿¬»êÀÚµéÀº ´ÙÀ½°ú °°Àº ±¸¼º¿¡ À¯¿ëÇÏ´Ù:
a = a + 4; Àº a+=4; ¿Í °°´Ù
a = a % 2; Àº a%=2; ¿Í °°´Ù
º¸Åë, ´ÙÀ½°ú °°ÀÌ ¸»ÇÒ ¼ö ÀÖ´Ù:
var = var op expression; Àº var op= expression; ·Î ġȯµÉ ¼ö ÀÖ´Ù.
¿¬»êÀÚ | Çؼ³ |
~ | ºñÆ® ¼öÁØÀÇ ´ÜÇ× NOT |
& | ºñÆ® ¼öÁØÀÇ AND |
| | ºñÆ® ¼öÁØÀÇ OR |
^ | ºñÆ® ¼öÁØÀÇ ¹èŸÀû OR |
>> | ¿ìÃø ½¬ÇÁÆ® |
>>> | 0À¸·Î ä¿öÁö´Â ¿ìÃø ½¬ÇÁÆ® |
<< | ÁÂÃø ½¬ÇÁÆ® |
&= | ºñÆ® ¼öÁØÀÇ AND¿Í ´ëÀÔ |
|= | ºñÆ® ¼öÁØÀÇ OR¿Í ´ëÀÔ |
^= | ºñÆ® ¼öÁØÀÇ ¹èŸÀû OR¿Í ´ëÀÔ |
>>= | ¿ìÃø ½¬ÇÁÆ®¿Í ´ëÀÔ |
>>>= | 0À¸·Î ä¿öÁö´Â ¿ìÃø ½¬ÇÁÆ®¿Í ´ëÀÔ |
<<= | ÁÂÃø ½¬ÇÁÆ®¿Í ´ëÀÔ |
¿¬»êÀÚ | Çؼ³ |
== | ¿Í °°Àº |
!= | ¿Í ´Ù¸¥ |
> | º¸´Ù Å« |
< | º¸´Ù ÀÛÀº |
>= | °°°Å³ª º¸´Ù Å« |
<= | °°°Å³ª º¸´Ù ÀÛÀº |
´Ù¸¥ ¾ð¾îµé(C/C++)°ú´Â ´Þ¸®, boolean °ªµéÀº True¿Í FalseÀÌ´Ù. Áï, À̰͵éÀº ¼öÄ¡°¡ ¾Æ´Ï´Ù..
¿¬»êÀÚ | Çؼ³ |
& | ³í¸®Àû AND |
| | ³í¸®Àû OR |
^ | ³í¸®Àû XOR(¹èŸÀû OR) |
|| | ´ÜÃà OR |
&& | ´ÜÃà AND |
! | ´ÜÇ× ³í¸®Àû NOT |
&= | AND ´ëÀÔ |
|= | OR ´ëÀÔ |
^= | XOR ´ëÀÔ |
== | ¿Í °°Àº |
!= | ¿Í °°Áö ¾ÊÀº |
?: | »ïÇ× If-then-else |
OR ´ÜÃà ¿¬»êÀÚÀÇ °á°ú´Â ´ÙÀ½°ú °°´Ù: µÎ ¹ø° ¿¬»êÀÚÀÇ °ªÀÌ ¾îÂîµÇ¾úµçÁö °£¿¡ ù ¹ø° ¿¬»êÀÚ°¡ ÂüÀ̸é ÂüÀÌ´Ù. ¸¶Âù°¡Áö·Î, AND ´ÜÃà ¿¬»êÀÚ´Â µÎ ¹ø° ¿¬»êÀÚÀÇ °ª¿¡ »ó°ü¾øÀÌ Ã¹ ¹ø° ¿¬»êÀÚ°¡ °ÅÁþÀÌ¸é °ÅÁþÀÌ´Ù.
»ïÇ× ¿¬»êÀÚÀÇ ÀϹÝÀûÀÎ Çü½ÄÀÌ´Ù:
Expession1 ? expession2 : expression3
¸¸ÀÏ Expression1ÀÌ ÂüÀ̸é, expresion2°¡ ½ÇÇàµÇ°í; ¸¸ÀÏ °ÅÁþÀ̸é, expression3ÀÌ ½ÇÇàµÈ´Ù.
¿¬»ê ¿ì¼± ¼øÀ§:
( ) | [ ] | . | |
++ | -- | ~ | ! |
* | / | % | |
+ | - | ||
>> | >>>> | << | |
> | >= | < | <= |
= = | != | ||
& | |||
' | |||
| | |||
&& | |||
|| | |||
?: | |||
= | Op= |
±¸ºÐ | ¹®Àå | Çؼ³ |
¼±º° | if | if ( condition ) sentence1; else sentence2; |
¿©·¯ ifµé | If (condition ) sentence; else if (condition) sentence; else if (condition) sentence; . . else sentence; | |
switch | switch (expression){ case value1: sentence; break; case value2: sentence; break; . ... default : sentence; } | |
¹Ýº¹ | while | while (condition) { sentence; } |
do while | do { sentences; } while (condition) | |
for | for (initialization, condition, iteration) { sentences; } | |
ºÐ±â | break | switch·ÎºÎÅÍ ºüÁü.
loop·ÎºÎÅÍ ºüÁü |
continue | Çö loop ¹Ýº¹À¸·ÎºÎÅÍ ºüÁ® ³ª¿ÀÁö¸¸ µ¿ÀÏÇÑ loop¸¦ °è¼ÓÇÑ´Ù | |
return | ¸Þ¼Òµå·ÎºÎÅÍ ¸íÈ®ÇÏ°Ô ¸®ÅÏÇÑ´Ù |
Ŭ·¡½º´Â °´Ã¼¸¦ À§ÇÑ ¸ðµ¨ (ÆÐÅÏ)ÀÌ°í, °´Ã¼´Â Ŭ·¡½ºÀÇ ÀνºÅϽº(instance)ÀÌ´Ù. ÀÚ¹Ù´Â Àü¿ª ÇÔ¼ö ¶Ç´Â º¯¼ö¸¦ Áö¿øÇÏÁö ¾Ê¾Æ, ¸ðµç ÇÁ·Î±×·¥ È°µ¿(actions) (¸Þ¼Òµå)Àº ¹Ýµå½Ã Ŭ·¡½º ³»¿¡¼ Á¤ÀǵǾî¾ß ÇÑ´Ù.
Ŭ·¡½º´Â ¿¹¾à¾î "class"¸¦ »ç¿ëÇÏ¿© Á¤ÀǵȴÙ. º¸ÅëÀÇ Å¬·¡½º Á¤ÀÇ´Â ´ÙÀ½°ú °°´Ù:
class class_name { Type instance1_of_variable; Type instance2_of_variable; . . ... type instance_variable; type method_name(parameter_list){ //body of the method } . . .. type name_of_the_method(parameter_list){ //body of the method } } |
Ŭ·¡½º ³»ºÎÀÇ º¯¼ö ¶Ç´Â µ¥ÀÌÅ͸¦ ÀνºÅϽº º¯¼ö(variables of instances)¶ó°í ºÎ¸¥´Ù. ¸Þ¼Òµå´Â Äڵ带 º¸À¯ÇÏ°í, Ŭ·¡½ºÀÇ µ¥ÀÌÅÍ°¡ ¾î¶»°Ô »ç¿ëµÉ ¼ö ÀÖ´ÂÁö Á¤ÀÇÇÑ´Ù.
Ŭ·¡½ºÀÇ °´Ã¼¸¦ ¾ò±â À§Çؼ µÎ ´Ü°è°¡ ÇÊ¿äÇÏ´Ù:
°´Ã¼¿¡ µ¿ÀûÀ¸·Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í ±×°ÍÀÇ ÂüÁ¶¸¦ ¾òÀ» °Í.
variable = new name_of_the_class(); |
¿©±â¼, "variable"Àº »ý¼ºÇÏ·Á´Â Ŭ·¡½ºÀÇ º¯¼öÀÌ°í, name_of_the_class´Â ÀνºÅϽº·Î µÇ´Â Ŭ·¡½ºÀÇ ¸íĪÀÌ´Ù. °´Ã¼ÀÇ »ý¼ºÀ» ±×¸²À¸·Î Ç¥ÇöÇÑ´Ù¸é ´ÙÀ½°ú °°´Ù:
type name_of_the_method (parameter_list) { //method_body } |
"type"Àº ¸Þ¼Òµå¿¡ ÀÇÇØ ¸®ÅϵǴ ÀÚ·áÇüÀÌ´Ù; Ŭ·¡½º ÇüÀ» Æ÷ÇÔÇÏ¿© ¾î¶² À¯È¿ÇÑ ÀÚ·áÇüÀÌ¶óµµ °¡´ÉÇÏ´Ù. ȤÀº, ¾î¶² °ªµµ ¸®ÅÏÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù(void).
¸Å°³º¯¼ö ¸ñ·Ï(parameter list)Àº ÀÚ·áÇü-½Äº°ÀÚ°¡ ½ÖÀ¸·Î ¿¬¼ÓµÈ °ÍÀε¥ ½°Ç¥·Î ±¸ºÐµÈ´Ù.(¿ªÀÚÁÖ: ¿µ¹® ¹ø¿ª¿¡¼´Â ÄÝ·ÐÀ¸·Î ±¸ºÐÇÑ´Ù°í µÇ¾î ÀÖÁö¸¸, ÀÚ¹Ù ¾ð¾î ¹®¹ýÀ» ÂüÁ¶ÇÏ¿© ½°Ç¥·Î ¹Ù²Ù¾î ¹Ù·Î ÀâÀ½.) ¸Å°³º¯¼ö´Â ¸Þ¼Òµå¿¡ ÁÖ¾îÁø ÀÎÀÚÀÇ °ªÀ» ¹Þ´Â º¯¼öÀÌ´Ù. ¸Þ¼Òµå°¡ ¸Å°³º¯¼ö¸¦ °¡ÁöÁö ¾Ê´Â´Ù¸é, ¸ñ·ÏÀº ºñ¾î ÀÖÀ» °ÍÀÌ´Ù.
"void"°¡ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÏ´Â ¸Þ¼Òµå »ç¿ë¹ý:
return value; |
¿©±â¼ value´Â ¸®ÅϵǴ °ªÀÌ´Ù.
ÀÚ¹Ù´Â ¸Å¿ì ¸¹Àº ¸Þ¼Òµå¸¦ Á¦°øÇϴµ¥ ¹«Ã´ ´Ù·ç±â ½±°í °·ÂÇÏ´Ù. ±×·¡¼ ¿©±â¼ºÎÅÍ À̹ø ±â°íÀÇ ³¡±îÁö, ¸Þ¼ÒµåÀÇ ¸Å¿ì Áß¿äÇÑ °üÁ¡À» »ìÆì º¸·Á°í ÇÑ´Ù.
±×·¸Áö¸¸, ±×·¯±â¿¡ ¾Õ¼, °£´ÜÇÑ ¿¹·Î¼ ÀÌÀüÀÇ °³³äÀ» ´Ù½Ã °ËÅäÇØ º¸ÀÚ.
(Ç®°ú °°ÀÌ) »ç°¢Çü ¸ð¾çÀÇ »óÀÚÀÇ ¿ë·®À» °è»êÇϴ Ŭ·¡½º¸¦ »ý¼ºÇÏÀÚ:
ÄÚµå | ÁÖ¼® |
class capacity { double length; double width; double height; void CalcVolume () { double volume ; volume = length*width*height; System.out.println("Volume: " + volume); } } |
¿©·¯ºÐÀÌ ¾Ë ¼ö ÀÖµíÀÌ, ¼¼ °³ÀÇ ÀνºÅϽº º¯¼ö length, width, height¸¦ º¸À¯ÇÏ´Â "capacity"¶ó´Â À̸§ÀÇ Å¬·¡½º¸¦ Á¤ÀÇÇß´Ù. ¶ÇÇÑ ±×¸© ºÎÇǸ¦ °è»êÇÏ´Â ¸Þ¼Òµå¸¦ Á¤ÀÇÇß´Ù. ¼Ò½º ÆÄÀÏÀÇ À̸§À» capacity.java¶ó°í ºÎ¸¦ °ÍÀÌ´Ù. ±×°ÍÀ» ÄÄÆÄÀÏÇϸé, capacity.class Ŭ·¡½º(ÆÄÀÏ)ÀÌ »ý±æ °ÍÀÌ´Ù. |
ÀÌ Å¬·¡½º´Â µ¶ÀÚÀûÀ¸·Î ¾î¶°ÇÑ ÀÛµ¿µµ ÇàÇÒ ¼ö ¾øÀ¸¸ç, ¾ÖÇø´°ú °°ÀÌ, ¸í·É¾î Çà(command line)À¸·ÎºÎÅÍ ½ÇÇàµÇ´Â main() ¸Þ¼Òµå¸¦ °¡ÁöÁö ¾Ê´Â´Ù. ÀÌ Å¬·¡½ºÀÇ °´Ã¼ (ÀνºÅϽº)¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Â ÅÛÇø´(template)À» »ý¼ºÇÑ °ÍÀÌ´Ù. ÀÌ ¸ñÀûÀ» ÀÌ·ç±â À§ÇØ, ¸í·É¾î ÇàÀ¸·ÎºÎÅÍ ½ÇÇàµÉ ¼ö Àִ Ŭ·¡½º¸¦ »ý¼ºÇÏ·Á°í ÇÑ´Ù.
ÄÚµå | ÁÖ¼® |
class example { public static void main(String Arg[]){ capacity p1=new capacity(); capacity p2=new capacity(); p1.length = 16; p1.width=3; p1.height=2; // p2.length = 25; p2.width=6; p2.height=3; // p1.CalcVolume(); // p2.CalcVolume(); } } |
capacity ÇüÀÇ º¯¼ö°¡ µÎ °³ Á¤ÀǵȴÙ. p1, p2°¡ ±×°ÍÀÌ´Ù.
new ¿¬»êÀÚ·Î capacity ÇüÀÇ °´Ã¼¸¦ µÎ °³ »ý¼ºÇϸç, p1, p2 º¯¼ö¸¦ ÅëÇØ °´Ã¼µéÀ» ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.
´ÙÀ½À¸·Î, »ý¼ºµÈ °´Ã¼ÀÇ º¯¼ö °¢°¢¿¡ °ªÀ» ´ëÀÔÇÑ´Ù. p1À¸·Î ÂüÁ¶ÇÑ °´Ã¼ÀÇ CalcVolume() ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù. ±×·¯¸é, °á°ú·Î "Volume: 96"ÀÌ È¸é¿¡ º¸¿©Áø´Ù. p2·Î ÂüÁ¶ÇÑ °´Ã¼µµ µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î, "Volume: 450"ÀÌ È¸é¿¡ º¸¿¬Áø´Ù. |
p1.CalcVolume()°¡ ½ÇÇàµÇ´Â °æ¿ì, ÀÚ¹Ù Çؼ®±â°¡ CalcVolume() ³»¿¡ Á¤ÀÇµÈ ÄÚµåÀÇ Á¦¾î¸¦ µû¸¥´Ù. ÀÏ´Ü ¸ðµç Á¦¾î ¹®ÀåµéÀÌ ½ÇÇàµÇ¸é È£ÃâÇÑ ·çƾ¿¡ ¸®ÅÏÇÏ°í ½ÇÇàÀº È£ÃâÀÇ ¹Ù·Î ´ÙÀ½ Çà¿¡¼ °è¼ÓµÈ´Ù.
¸Å°³º¯¼ö¸¦ °¡Áø ¸Þ¼Òµå. °ª ¸®ÅÏ.
¸Þ¼ÒµåÀÇ ´ë´Ù¼ö´Â ¸Þ¼Òµå¸¦ ÀϹÝÈÇϵµ·Ï Çã¿ëÇÏ´Â ¸Å°³º¯¼ö¿Í ÇÔ²² »ç¿ëµÈ´Ù. °Ô´Ù°¡, ¸Þ¼Òµå´Â °ªÀ» ¸®ÅÏÇÒ ¼ö ÀÖ´Ù, ±×·¡¼ »óÀÌÇÑ »óȲ¿¡¼µµ »ç¿ëµÉ ¼ö ÀÖ´Â, ´Ù¾çÇÑ µ¥ÀÌÅÍ¿Í ÇÔ²² ÀÛµ¿ °¡´ÉÇÑ ¸Þ¼Òµå¸¦ ¸¸µé ¼ö ÀÖ´Ù.
À§ÀÇ ¿¹Á¦¸¦ °³¼±ÇÏÀÚ:
ÄÚµå | ÁÖ¼® |
class capacity { double CalcVolume (double l, double a, double p) { double volume=l*a*p ; return volume; } } |
CalcVolume ¸Þ¼Òµå´Â ¼¼ °³ÀÇ ¸Å°³º¯¼ö¸¦ ¼ö·ÉÇϵµ·Ï ¼öÁ¤µÇ¾ú´Ù. ¶ÇÇÑ double ÇüÀ» ¸®ÅÏÇϵµ·Ï Á¤ÀǵǾú´Ù. ÀÌ ÀÛµ¿Àº return volume ¸í·É¿¡ ÀÇÇØ ¼öÇàµÈ´Ù. |
class example { public static void main(String Arg[]){ capacity p1 = new capacity(); capacity p2 = new capacity(); double vol; vol=p1.CalcVolume(10,3,2); System.out.println("Volume: " + vol); // vol=p2.CalcVolume(25,5,2); System.out.println("Volume: " + vol); } } |
¸Þ¼ÒµåÀÇ È£ÃâÀº ¿øÇÏ´Â ¸Å°³º¯¼ö¸¦ Àü´ÞÇÏ¿© ÇàÇØÁø´Ù. vol º¯¼ö¿¡ ¸Þ¼ÒµåÀÇ °ªÀ» ¸®ÅÏÇϴµ¥, º¯¼ö´Â ¸Þ¼Òµå¿Í µ¿ÀÏÇÑ ÇüÀ̾î¾ß ÇÑ´Ù. |
Ŭ·¡½ºÀÇ ÁÖ¿äÇÑ °üÁ¡Àº »ý¼ºÀÚ(constructors)ÀÌ´Ù. Ŭ·¡½ºÀÇ °´Ã¼°¡ »ý¼ºµÉ ¶§, ÀÌ Ç׸ñµéÀº ¾î¶² ÀϵéÀÌ ÀϾ´Â°¡¸¦ Á¤ÀÇÇÑ´Ù. À̵éÀÇ ´ëºÎºÐÀº Ŭ·¡½º Á¤ÀÇ ³»¿¡ ÀÚ½ÅÀÇ »ý¼ºÀÚ¸¦ ¸í½ÃÀûÀ¸·Î Á¤ÀÇÇÑ´Ù. ¸¸¾à Á¤ÀǵÇÁö ¾ÊÀ¸¸é, (À§ÀÇ ¿¹Á¦¿Í °°ÀÌ) ÀÚ¹Ù´Â ±âº» »ý¼ºÀÚ(default constructor)¸¦ »ç¿ëÇÑ´Ù.
Ŭ·¡½º¿¡ Æ÷ÇÔµÈ »ý¼ºÀÚ´Â Á¤È®ÇÏ°Ô Å¬·¡½º¿Í µ¿ÀÏÇÑ ¸íĪÀ» °¡Áø´Ù. ¹®Àå ±¸¼º¹ýÀº ¸Þ¼ÒµåÀÇ ±×°Í°ú À¯»çÇÏ´Ù. °´Ã¼¸¦ »ý¼ºÇÑ ÈÄ¿¡ new ¿¬»êÀÚ°¡ Á¾·áµÇ±â Àü¿¡ »ý¼ºÀÚ´Â ÀÚµ¿ÀûÀ¸·Î ½ÇÇàµÈ´Ù.
»ý¼ºÀÚ´Â ¾î¶² ÀÚ·áÇüµµ °¡ÁöÁö ¾Ê´Â´Ù. ¹¬½ÃÀûÀ¸·Î Ŭ·¡½ºÀÇ ÇüÀ» ¸®ÅÏÇϱ⠶§¹®ÀÌ´Ù.
»ý¼ºÀÚ´Â ¸ðµç °´Ã¼ »óÅÂÀÇ ÃʱâÈ·Î ¼öÇàµÈ´Ù. ±×·±µ¥, °´Ã¼ÀÇ ÀνºÅϽº¸¦ »ý¼ºÇÏ´Â ÄÚµå´Â ±×°ÍÀ» ÀÌ¿ëÇÏ´Â ÁغñµÈ °´Ã¼¸¦ °¡Áø´Ù. »çÀü¿¡, ÀνºÅϽº º¯¼ö´Â »ý¼ºÀÚ¿¡ ÀÇÇØ ÃʱâȵȴÙ.
ÀÌ´Â ¸Þ¼Òµå¿Í ÇÔ²² ÀÌ·ïÁö±â ¶§¹®¿¡, »ý¼ºÀÚ´Â ±×°ÍµéÀ» ¿ù¾À À¯¿ëÇÏ°Ô ¸¸µå´Â ¸Å°³º¯¼ö¸¦ °¡Áú ¼ö ÀÖ´Ù . ÀÌ ¸ðµç »õ·Î¿î °üÁ¡À» ¿¬±¸Çϱâ À§ÇØ À§ÀÇ ¿¹Á¦¸¦ ¼öÁ¤Çϵµ·Ï ÇÏÀÚ.
ÄÚµå | ÁÖ¼® |
class capacity { double length; double width; double height; // capacity(double l, double a, double p){ length=l; width=a; height=p; } // void CalcVolume () { double volume ; volume=large*wide*high; return volume; } } |
»ý¼ºÀÚ°¡ Ŭ·¡½º¿¡ Ãß°¡µÇ´Âµ¥, Ŭ·¡½º¿Í µ¿ÀÏÇÑ ¸íĪÀ» °¡ÁöÁö¸¸ ¾î¶² ÀÚ·áÇüµµ ¸®ÅÏÇÏÁö ¾Ê´Â ¸Þ¼ÒµåÀÇ ÀϸéÀ» º¸ÀδÙ. ÀÌ »ý¼ºÀÚ´Â ¼ö·ÉÇÑ ÀÎÀÚ·Î ¼±¾ðµÈ º¯¼öÀÇ ÀνºÅϽº¸¦ ÃʱâÈÇÑ´Ù. |
class example { public static void main(String Arg[]) { capacity p1=new capacity(10,5,2); capacity p2=new capacity(25,6,2); double vol; vol=p1.CalcVolume(); System.out.println("Volume: " + vol); // vol=p2.CalcVolume(); System.out.println("Volume: " + vol); } } |
new ¿¬»êÀڴ Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ »ý¼ºÇÑ´Ù. ±× Ŭ·¡½ºÀÇ »ý¼ºÀÚÇÑÅ× ÇÊ¿äÇÑ ¸Å°³º¯¼ö¸¦ ÀüÇÑ´Ù. |
¸¸ÀÏ °´Ã¼¿¡ ´ëÇÑ ¾î¶² ÂüÁ¶µµ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é, ÀÌ °´Ã¼´Â ´õ ÀÌ»ó »ç¿ëµÉ ¼ö ¾ø´Ù°í °¡Á¤µÇ¾î, ÇÒ´çµÈ ¸Þ¸ð¸®°¡ ÇØÁ¦µÈ´Ù. ÀÌ Ã³¸®´Â ÇÁ·Î±×·¥ ½ÇÇàÀ» ÅëÇØ ÀÚµ¿ÈµÈ ¹æ¹ýÀ¸·Î ¼öÇàµÇ±â ¶§¹®¿¡ ¸í½ÃÀûÀ¸·Î °´Ã¼¸¦ Æı«(destroy)ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.
±×·³¿¡µµ ºÒ±¸ÇÏ°í, Ŭ·¡½º¿¡ ¼Ò¸êÀÚ(finisher)¸¦ µ¡ºÙÀ̱â À§ÇØ ¸Þ¼Òµå "finalize()"°¡ »ç¿ëµÈ´Ù. Çؼ®±â°¡ °´Ã¼¸¦ Æı«ÇÒ ¶§ ÀÌ ¸Þ¼Òµå°¡ ½ÇÇàµÈ´Ù. ÀÌ ¸Þ¼Òµå¿¡, °´Ã¼¸¦ Æı«Çϱâ Àü¿¡ ½ÇÇàµÇ¾îÁö´Â ÀÛµ¿À» Æ÷ÇÔ½Ãų °ÍÀÌ´Ù.
¸Þ¼Òµå Áßø(method overload).
´ÙÇü¼º(ÇϳªÀÇ ÀÎÅÍÆäÀ̽º¸¦ À§ÇÑ ´Ù¼öÀÇ ¸Þ¼Òµå)´Â °´Ã¼ ÁöÇâ ÇÁ·Î±×·¡¹Ö¿¡¼ ±âº»ÀûÀÎ ÇÙ½É(PILLARS )ÀÇ ÇϳªÀÌ´Ù. ÀÚ¹Ù´Â ¸Þ¼Òµå Áßø¿¡ ÀÇÇØ ´ÙÇü¼ºÀ» ±¸ÇöÇÑ´Ù.
µ¿ÀÏÇÑ ¸íĪÀ» °¡Áö´Â »óÀÌÇÑ ¸Þ¼ÒµåµéÀÌ Å¬·¡½º ³»¿¡¼ Á¤ÀÇµÉ ¼ö ÀÖÁö¸¸, ±×°ÍµéÀº »óÀÌÇÑ ¸Å°³º¯¼ö ¸ñ·Ï ¶Ç´Â ÃÖ¼ÒÇÑ »óÀÌÇÑ ¸®ÅÏ ÀÚ·áÇüÀ» ¹Ýµå½Ã °¡Á®¾ß ÇÑ´Ù. ÁßøµÈ ¸Þ¼Òµå°¡ È£ÃâµÉ ¶§ »ç¿ëµÇ¾îÁö´Â ¸Þ¼ÒµåÀÇ ¹öÀüÀ» ±¸º°Çϱâ À§ÇÏ¿© ÀÚ¹Ù Çؼ®±â´Â ÀÚ·áÇü ¹× È£Ãâ°ú ÇÔ²² Àü´ÞµÈ ÀÎÀÚµéÀ» »ç¿ëÇÑ´Ù.
ºñ·Ï ´ÙÇü¼ºÀ» ¿ÏÀüÈ÷ ºÒ°¡´ÉÇϵµ·Ï ¸¸µéÁö¸¸, ÁßøµÈ ¸Þ¼ÒµåÀÇ °¢ ¹öÀüÀº »óÀÌÇÑ Å½ºÅ©(task)¸¦ ¼öÇàÇÒ ¼ö ÀÖ´Ù. ±×·¡¼ µÉ ¼ö ÀÖÀ¸¸é ¸Þ¼Òµå ÁßøÀº ¾î¶² °ü°è¸¦ ¾Ï½ÃÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¸Þ¼Òµå°¡ ÁßøµÇ¾îÁö´Â °Í°ú µ¿ÀÏÇÑ ¹æ½ÄÀ¸·Î »ý¼ºÀÚµµ ÁßøµÉ ¼ö ÀÖ´Ù.
ÀÎÀÚ Àü´Þ.
ÀϹÝÀûÀ¸·Î, ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â ÀÎÀÚ¸¦ Àü´ÞÇϱâ À§ÇØ µÎ °¡Áö ¹æ½ÄÀ» Çã¿ëÇÑ´Ù:
Á¢±Ù ÅëÁ¦.
°´Ã¼ ÁöÇâ ÇÁ·Î±×·¡¹Ö¿¡¼ ¶Ç ´Ù¸¥ ±âº»ÀûÀÎ ÇÙ½ÉÀº ĸ½¶È(ENCAPSULATION)ÀÌ´Ù. ÀÌ°ÍÀº µ¥ÀÌÅÍ°¡ ÄÚµå¿Í ¿¬°üµÈ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ´õ¿íÀÌ, ĸ½¶È´Â Á¢±Ù ÅëÁ¦¸¦ Á¦°øÇÑ´Ù. ´Ù½Ã ¸»Çؼ, ÇÁ·Î±×·¥ÀÇ ÀϺδ Ŭ·¡½ºÀÇ ¸â¹ö(member)¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù.
ÀÚ¹Ù¿¡¼ Á¢±Ù ÁöÁ¤Àº 'public', 'private', 'protected'ÀÌ´Ù.
¸Þ¼Òµå ¶Ç´Â ÀνºÅϽº-º¯¼ö°¡ 'public'À¸·Î Á¤ÀÇµÉ ¶§, ÇÁ·Î±×·¥ÀÇ ¾î¶² ºÎºÐÀ¸·ÎºÎÅ͵µ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù. ¸¸ÀÏ 'private'À¸·Î Á¤Àǵȴٸé, Ŭ·¡½º ÀÚüÀÇ ´Ù¸¥ ¸Þ¼Òµå¿¡ ÀÇÇؼ¸¸ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù. ±âº»ÀûÀ¸·Î ¸ðµç ¸Þ¼Òµå ¶Ç´Â ÀνºÅϽº-º¯¼öµéÀº (±× ÀÚ½ÅÀÌ ¼ÓÇÑ ÆÐÅ°Áö¿¡) 'public'ÀÌ´Ù.
'protected' ÁöÁ¤ÀÚ´Â »ó¼Ó°ú ÇÔ²² ÀÛ¿ëÇÒ ¶§ »ç¿ëµÈ´Ù. »ó¼ÓÀº ´ÙÀ½ ¹ø ÁÖÁ¦ÀÌ´Ù.
A »óÀ§ Ŭ·¡½º(superclass)ÀÇ Æ¯¼ºÀ» »ó¼ÓÇϴ Ŭ·¡½ºÀÎ B¸¦ ¸¸µé±â À§ÇÑ B Á¤ÀǸ¦ º¸ÀδÙ:
class B extends A { // class definition } |
Ŭ·¡½º B´Â A »óÀ§ Ŭ·¡½ºÀÇ ¸ðµç ¸â¹ö¸¦ Æ÷ÇÔÇϴµ¥, ÈÄÀÚ´Â ÀÚÀ¯·Ó°Ô »ç¿ëµÇ´Â ¹«¸í(AUTONOMOUS) Ŭ·¡½ºÀÏ ¼ö ÀÖ´Ù. ¶ÇÇÑ, Ŭ·¡½º B´Â ¾î¶² ´Ù¸¥ Ŭ·¡½ºÀÇ »óÀ§ Ŭ·¡½º°¡ µÉ ¼ö ÀÖ´Ù.
ÀÚ¹Ù´Â »óÀÌÇÑ »óÀ§ Ŭ·¡½ºµé·ÎºÎÅÍ ÇϳªÀÇ ÇÏÀ§ Ŭ·¡½º(subclass)¸¦ ¸¸µå´Â ´ÙÁß »ó¼Ó(multiple inheritance)À» Çã¿ëÇÏÁö ¾Ê´Â´Ù.
¸¸ÀÏ »óÀ§ Ŭ·¡½º¿¡ 'private'·Î Á¤ÀÇµÈ ¸â¹öµéÀÌ ÀÖ´Ù¸é, »ó¼ÓµÈ Ŭ·¡½º¿¡ ÀÇÇØ Á¢±ÙÀÌ ºÒ°¡´ÉÇÏ´Ù. ÇÏÀ§ Ŭ·¡½º°¡ Áï½ÃÀûÀ¸·Î »óÀ§ Ŭ·¡½º¸¦ ÂüÁ¶ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é, ¿¹¾à¾î 'super'°¡ »ç¿ëµÉ ¼ö ÀÖ´Ù. ÀÌ ¹æ¹ýÀ¸·Î ÇÏÀ§ Ŭ·¡½º¿¡ ÀÇÇØ Àº´ÐµÈ(hidden) »óÀ§ Ŭ·¡½ºÀÇ »ý¼ºÀÚ ¶Ç´Â ¸Þ¼Òµå¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.
ÇÏÀ§ Ŭ·¡½ºÀÇ ¸Þ¼Òµå°¡ »óÀ§ Ŭ·¡½ºÀÇ ¸Þ¼Òµå¿Í µ¿ÀÏÇÑ ¸íĪ°ú ÀÚ·áÇüÀ» °¡Áú ¶§, ¸Þ¼Òµå°¡ Áߺ¹µÈ´Ù(overwritten)°í ¸»ÇÑ´Ù. ÀÌ Æ¯¼ºÀº ÀÚ¹ÙÀÇ °·ÂÇÑ ÀϸéÀÇ ÇÑ ±âÃʸ¦ Çü¼ºÇÑ´Ù. "µ¿Àû ¼±º° ¸Þ¼Òµå(Dynamic selection method)"¶ó°í ºÎ¸¥´Ù. ÀÌ´Â, ¸Å¹ø È£Ã⸶´Ù ¾î´À ¸Þ¼Òµå°¡ »ç¿ëµÇ¾î¾ß ÇÏ´ÂÁö °áÁ¤ÀÌ, ÂüÁ¶µÈ º¯¼ö ÀÚ·áÇü¿¡ ÀÇÁ¸ÇÏ¿© ÀûÀýÇÏ°Ô ½ÇÇà Áß(execution time)¿¡ ¼öÇàµÈ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.
´ÙÀ½ ±â°í¿¡¼´Â Ãß»ó Ŭ·¡½º(abstract classes), ÀÎÅÍÆäÀ̽º(interfaces) µî°ú °°Àº »ó¼ÓÀÇ ¸ðµç ´É·ÂÀ» ¹è¿ï °ÍÀÌ´Ù.
º» À¥½ÎÀÌÆ®´Â Miguel Angel Sepúlveda´Ô¿¡ ÀÇÇØ °ü¸®µË´Ï´Ù. © Jose M. Fernandez 1998 LinuxFocus 1998 |