[C++]°­ÁÂ(12)<--Ŭ·¡½º



**********************************************
**********************************************
2-2 Ŭ·¡½º

°¡. Ŭ·¡½ºÀÇ Á¤ÀÇ

ÀÌÁ¦ ±¸Á¶Ã¼ÀÇ È®ÀåÀ¸·ÎºÎÅÍ ¾òÀº Áö½ÄÀ» ¹ÙÅÁÀ¸·Î Çؼ­ Ŭ·¡½º¿¡ Á¢±ÙÇغ¸ÀÚ.
Ŭ·¡½º¶õ È®ÀåµÈ ±¸Á¶Ã¼ÀÇ °³³ä°ú °ÅÀÇ µ¿ÀÏÇÏ´Ù. Áï ´Ù¾çÇÑ ÇüÅÂÀÇ º¯¼ö¸¦ µ¥
ÀÌÅÍ ¸â¹ö·Î °¡Áú ¼ö ÀÖÀ½Àº ¹°·Ð µ¥ÀÌÅÍ ¸â¹ö¸¦ Á¶ÀÛÇÏ´Â ¸â¹ö ÇÔ¼öµµ °¡Áú
¼ö ÀÖ´Ù. ¹°·Ð Ŭ·¡½º¿Í ±¸Á¶Ã¼´Â ¾à°£ÀÇ Â÷ÀÌ°¡ ÀÖ±â´Â ÇÏÁö¸¸ °ÅÀÇ µ¿ÀÏÇÏ´Ù
°í º¸¾Æµµ ¹«¹æÇÏ´Ù. ±×·¯¸é ±¸Á¶Ã¼¿Í ÀÌ·¸°Ô µ¿ÀÏÇÑ Å¬·¡½º¸¦ ½ÇÁ¦·Î »ç¿ëÇØ
º¸ÀÚ. ¿¹Á¦ 18-3¿¡ º¸ÀÎ ¸â¹ö ÇÔ¼ö¸¦ ¿ÜºÎ¿¡ Á¤ÀÇÇÏ´Â ±¸Á¶Ã¼¸¦ Ŭ·¡½º·Î ¹Ù²Ù
¾î ´ÙÀ½ ¿¹Á¦¸¦ ¸¸µé¾ú´Ù.

#include <stdio.h>
#include <iostream.h>
#include <conio.h>

class Position
{          // classÀÇ ¼±¾ð

public:                 // ¾×¼¼½º ±ÇÇÑ ÁöÁ¤ÀÚ
int px;
int py;
char ch;
void outpos();
};

void Position::outpos()   // member ÇÔ¼öÀÇ Á¤ÀÇ
{
gotoxy( px, py);
putch( ch);
}

void main()
{
clrscr();
Position HERE;     // °´Ã¼ »ý¼º
HERE.px = 10;
HERE.py = 10;
HERE.ch = 'S';
HERE.outpos();
}

¿¹Á¦ 18-3°ú ´Ù¸¥ Á¡Àº ¿ÀÁ÷ struct Å°¿öµå ´ë½Å¿¡ class Å°¿öµå°¡ »ç¿ëµÇ¾ú´Ù
´Â °Í¹Û¿¡ ¾ø´Ù. ±×¸®°í Ŭ·¡½º·Î ¹Ù²ñ°ú ÇÔ²² public:À̶ó´Â ¾×¼¼½º ±ÇÇÑ Áö
Á¤ÀÚ°¡ Ãß°¡µÇ¾ú´Âµ¥ ÀÌ¿¡ °üÇؼ­´Â Àá½Ã ÈÄ¿¡ ¼³¸íÇÒ ¿¹Á¤À̹ǷΠÀÏ´Ü ½Å°æ¾²
Áö ¸»±â·Î ÇÏÀÚ. ¿¹Á¦ 18-3À» ÀÌÇØÇÑ »ç¶÷À̶ó¸é 18-4µµ ÃæºÐÈ÷ ½±°Ô ÀÌÇØÇÒ
¼ö ÀÖÀ» °ÍÀÌ´Ù. class¶ó´Â Å°¿öµå´Â ±âÁ¸ÀÇ C¿¡¼­ Á¦°øÇÏ´ø struct¿Í È®ÀåµÈ
struct°£ÀÇ Â÷À̸¦ ¸íÈ®È÷ ³ªÅ¸³»±â À§ÇØ µµÀÔµÈ °Í »ÓÀÌ´Ù.
ÀÌ ¿¹Á¦¸¦ Ãâ¹ß·Î ÇÏ¿© Ŭ·¡½º¿¡ °üÇÑ ´Ù¸¥ Ư¼º¿¡ ´ëÇØ Çϳª¾¿ ¾Ë¾Æº¸±â·Î
Ç쵂 ÀÌÈĺÎÅÍ ¾ð±ÞÇÏ´Â ³»¿ëÀº Ŭ·¡½º»Ó¸¸ ¾Æ´Ï¶ó ±¸Á¶Ã¼¿¡µµ ±×´ë·Î Àû¿ëµÈ
´Ù. ±¸Á¶Ã¼¿Í Ŭ·¡½º´Â °ÅÀÇ µ¿ÀÏÇÑ ¼Ó¼ºÀ» °¡Áö°í ÀÖÀ¸¹Ç·Î Ŭ·¡½ºÀÇ ¼Ó¼º¿¡
´ëÇØ ¾Ë¸é È®ÀåµÈ ±¸Á¶Ã¼ÀÇ ¼Ó¼º¿¡ ´ëÇؼ­µµ ¶È°°ÀÌ Àû¿ëÇÒ ¼ö ÀÖ´Ù. ¾ÕÀ¸·Î´Â
Ŭ·¡½º¸¦ Áß½ÉÀ¸·Î ¼³¸íÇÏµÇ Å¬·¡½º¿Í ±¸Á¶Ã¼°¡ ´Ù¸¥ ¸é¿¡ ´ëÇؼ­¸¸ ¾ð±ÞÇϵµ
·Ï ÇÑ´Ù.
Ŭ·¡½º Á¤ÀÇÀÇ ÀϹݽÄÀº ´ÙÀ½°ú °°ÀÌ Á¤¸®ÇÒ ¼ö ÀÖ´Ù.

class class À̸§
{
¾×¼¼½º ±ÇÇÑ ÁöÁ¤ÀÚ:
µ¥ÀÌÅÍ ¸â¹ö;
¸â¹ö ÇÔ¼ö;
};

³ëÆĽɿ¡¼­ ÇÏ´Â ¸»Àε¥ Ŭ·¡½º Á¤ÀǽĿ¡¼­ Á¦ÀÏ µÚ¿¡ ÀÖ´Â semicolonÀº »ý·«
Çؼ­´Â ¾ÈµÈ´Ù. ¾×¼¼½º ±ÇÇÑ ÁöÁ¤ÀÚ¿¡ °üÇؼ­´Â ÈļúÇÒ °ÍÀÌ°í ÀÏ´Ü ´ëÃæÀÇ Çü
Ÿ¦ ºÁµÎÀÚ. Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö¿Í µ¥ÀÌÅÍ ¸â¹öÀÇ °³¼ö¿¡´Â Á¦ÇÑÀÌ ¾øÀ¸¸ç ÇÊ
¿äÇÑ ¸¸Å­ ¸â¹ö¸¦ °¡Áú ¼ö ÀÖ´Ù. ±×¸®°í µ¥ÀÌÅÍ ¸â¹ö·Î´Â ¾Æ¹« µ¥ÀÌÅÍ Å¸ÀÔÀÌ
µçÁö ÃëÇÒ ¼ö ÀÖ´Ù. int, char, double µîÀÇ ±âº» µ¥ÀÌÅÍ Å¸ÀÔÀº ¹°·ÐÀÌ°í »ç
¿ëÀÚ°¡ Á¤ÀÇÇÑ µ¥ÀÌÅÍ Å¸ÀÔ, ¶Ç´Â ´Ù¸¥ Ŭ·¡½ºÇüÀÇ º¯¼öµµ °¡´ÉÇÏ´Ù. Ŭ·¡½º°¡
´Ù¸¥ Ŭ·¡½ºÇüÀÇ º¯¼ö¸¦ ¸â¹ö·Î °¡Áú¶§ Ŭ·¡½º³¢¸® ÁßøµÇ¾ú´Ù°í Çϴµ¥ ´ÙÀ½
°ú °°Àº µÎ °¡Áö ÇüÅ°¡ ÀÖ´Ù.

class DOG
{
.
.
class CAT
{
    .
    .
    .
};

class CAT object;
  .
  .
};

class CAT
{
.
.
};

class DOG
{
.
.
CAT object;
.
.
};     

ÁøÁ¤ÇÑ ÀǹÌÀÇ ÁßøÀº ¹°·Ð ÁÂÃøÀÇ °æ¿ì°¡ ÇØ´çµÇ°ÚÁö¸¸ ÁÂÃø°ú °°Àº Áßø Çü
Å´ º°·Î ¹Ù¶÷Á÷ÇÏÁö ¸øÇÏ¸ç ¿ÀÈ÷·Á ¿À¸¥ÂÊÀÇ ÇüÅ°¡ ´õ ¹Ù¶÷Á÷ÇÏ´Ù. ½ÇÀü¿¡
¼­ ¸¹ÀÌ ¾²ÀÌ´Â Çüŵµ ¹°·Ð ¿À¸¥ÂÊÀÌ´Ù.
Ŭ·¡½º´Â ¸ðµç ¸é¿¡¼­ ±âÁ¸ÀÇ µ¥ÀÌÅÍ Å¸ÀÔ°ú µ¿µîÇÏ´Ù. ÀÌ ¸»ÀÇ Àǹ̴ Â÷Â÷
±ú´Ý°Ô µÇ°ÚÁö¸¸ ¿ì¼± ÀÌ ¸»ÀÇ Àǹ̸¦ ¼³¸íÇϱâ À§ÇÑ Å¬·¡½º Çϳª¸¦ ¿¹·Î µé°Ú
´Ù. ´ÙÀ½ Ŭ·¡½º´Â º¹¼Ò¼ö¸¦ Ç¥ÇöÇÒ ¼ö ÀÖµµ·Ï ¸¸µç Ŭ·¡½ºÀÌ´Ù.

class Complex
{

private:
    double real;
    double image;

public:
    ¸â¹ö ÇÔ¼öµé;
};

º¹¼Ò¼ö°¡ ½Ç¼öºÎ¿Í Çã¼öºÎ·Î ÀÌ·ç¾îÁø´Ù´Â °ÍÀº Àß ¾Ë°í ÀÖÀ» ÁÙ ¾Ë°í ¼³¸íÇÏ
Áö ¾Ê´Â´Ù. ÀÌ Å¬·¡½º´Â ÀÌ Ã¥ÀÇ Àü¹Ý¿¡ °ÉÃÄ ½Ç½À¿ëÀ¸·Î ÀÚÁÖ ¾Ö¿ëµÇ¹Ç·Î ÀÌ
Ã¥À» Àбâ À§Çؼ­¶óµµ Àß ºÁ µÎµµ·Ï ÇÏÀÚ.

³ª. instance

¿©±â¼­ class¿Í object, ±×¸®°í instance¶ó´Â ¿ë¾î¿¡ ´ëÇØ Á¤¸®Çغ¸ÀÚ. Ŭ·¡
½º¶õ ¿©·¯ °¡Áö ÇüÅ°¡ ´Ù¸¥ µ¥ÀÌÅÍ°¡ ¸ð¿©ÀÖÀ½Àº ¹°·Ð ¸ð¿©ÀÖ´Â µ¥ÀÌÅ͸¦ ó
¸®ÇÏ´Â ÇÔ¼ö±îÁö Æ÷°ýÇϸç ÀÚ½ÅÀÇ µ¥ÀÌÅ͸¦ ÀûÀýÇÏ°Ô ¼û±æ ¼ö ÀÖ´Â µ¥ÀÌÅÍ¿Í
ÄÚµåÀÇ ÁýÇÕüÀÌ´Ù. Å°¿öµå class·Î ¼±¾ðµÇ¸ç ¼±¾ð¿¡ ÀÇÇØ Å¬·¡½º°¡ °¡Áø µ¥ÀÌ
ÅÍ ¸â¹ö, ¸â¹ö ÇÔ¼öÀÇ ÇüŸ¦ ÄÄÆÄÀÏ·¯¿¡°Ô ¾Ë¸°´Ù. ¿¹Á¦ 2-4¿¡¼­ 4 ~ 10Çà±î
Áö°¡ ¿©±â¿¡ ÇØ´çÇÑ´Ù. Position Ŭ·¡½º°¡ Á¤¼öÇü ¸â¹ö px, py, ¹®ÀÚÇü ¸â¹ö ch
¹× ¹®ÀÚ Ãâ·Â¿¡ »ç¿ëµÇ´Â outpos() ÇÔ¼ö¸¦ °¡Áö°í ÀÖÀ½À» ¾Ë¸°´Ù.
±×·¯³ª Ŭ·¡½º¸¦ ¼±¾ðÇÑ´Ù´Â °ÍÀº Ŭ·¡½ºÀÇ ÇüŸ¦ ÄÄÆÄÀÏ·¯¿¡°Ô ¾Ë¸°´Ù´Â °Í
»ÓÀÌÁö Ŭ·¡½º°¡ ½ÇÁ¦·Î ¸Þ¸ð¸®¸¦ Â÷ÁöÇÏ°í ±¸Ã¼ÀûÀ¸·Î ½ÇÇöµÇ´Â °ÍÀº ¾Æ´Ï´Ù.
Ŭ·¡½º°¡ ¸Þ¸ð¸®»ó¿¡ ±¸ÇöµÇ±â À§Çؼ­´Â Ŭ·¡½ºÇüÀÇ º¯¼ö¸¦ ¸¸µé¾î ÁÖ¾î¾ß ÇÑ
´Ù. ¹Ù·Î ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ¸»ÀÌ´Ù.

Position HERE;

ÀÌ ¼±¾ð¿¡ ÀÇÇØ PositionÇüÀÇ º¯¼ö HERE°¡ ¸Þ¸ð¸®»ó¿¡ ½ÇÁ¦·Î ¸¸µé¾îÁö°Ô µÇ
¸ç HERE¸¦ ÅëÇØ ºñ·Î¼Ò Position Ŭ·¡½º°¡ ½ÇÇöµÇ¾ú´Ù.
Ŭ·¡½º¶õ ¿©·¯ °¡Áö ¸é¿¡¼­ º¼ ¶§ int, double µîÀÇ µ¥ÀÌÅÍ Å¸ÀÔ°ú ¶È°°Àº µ¿
µîÇÑ ÀÚ°Ý°ú Ư¡À» °®´Â´Ù. ÀÚüÀûÀ¸·Î ¿¬»êÀÚ ÇÔ¼ö¸¦ °¡Áú ¼ö ÀÖ°í C++ÀÇ µ¥
ÀÌÅÍÇü º¯È¯ ±ÔÄ¢°ú Åë¿ë ¹üÀ§ ±ÔÄ¢ÀÇ ÅëÁ¦¸¦ ¹ÞÀ¸¸ç Ŭ·¡½ºÇüÀÇ ¹è¿­, Æ÷ÀÎÅÍ
µîÀÌ ¸ðµÎ ¼±¾ð °¡´ÉÇÏ´Ù´Â µîÀÇ ¿©·¯ °¡Áö Ư¡À» »ìÆ캸¸é ¾Ë ¼ö ÀÖ´Ù. ¾Õ¿¡
¼­ Àá½Ã ¸¸µé¾î º¸¾Ò´ø Complex Ŭ·¡½º¸¦ »ç¿ëÇÏ¸é º¹¼Ò¼ö¶ó´Â C++ÀÌ Áö¿øÇÏÁö
¾Ê´Â µ¥ÀÌÅÍ Å¸ÀÔµµ ¸¸µé ¼ö ÀÖ´Ù.

Complex C;

ÀÌ ¼±¾ð¹®Àº int i;¿Í ±¸¹®»ó °°Àº ¹®ÀåÀ̸ç C º¯¼ö´Â i¿Í µ¿µîÇÑ ÀÚ°ÝÀ» °¡Áö
´Â º¯¼öÀÌ´Ù. ¶ÇÇÑ ´ÙÀ½°ú °°ÀÌ °´Ã¼³¢¸® ´ëÀÔÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù.

Position A;
Position B;
A=B;

Ŭ·¡½º¸¦ ¼±¾ðÇÏ´õ¶óµµ Ŭ·¡½º(data type) ±× ÀÚü´Â  ÄÄÆÄÀÏ·¯¸¸ ¾Ë°í ÀÖÀ»
»Ó º¯¼ö°¡ ¼±¾ðµÇÁö ¾ÊÀ¸¸é ½ÇÁ¦·Î ±× ¸ð½ÀÀ» ³ªÅ¸³»Áö ¾Ê´Â´Ù. ±¸Á¶Ã¼ÀÇ tag
¼±¾ðÀ» Çß´Ù°í Çؼ­ ±¸Á¶Ã¼ º¯¼ö°¡ »ý±â´Â °ÍÀº ¾Æ´Ï¸ç typedef¿¡ ÀÇÇØ »ç¿ëÀÚ
µ¥ÀÌÅÍÇüÀ» Á¤ÀÇÇß´Ù°í Çؼ­ »ç¿ëÀÚ°¡ Á¤ÀÇÇÑ µ¥ÀÌÅÍÇüÀÇ º¯¼ö°¡ »ý±â´Â °ÍÀÌ
¾Æ´Ô°ú °°´Ù. Ŭ·¡½ºÇüÀÇ º¯¼ö¸¦ ¼±¾ðÇÔÀ¸·Î ÀÎÇØ ¸Þ¸ð¸®»ó¿¡ ±× Ŭ·¡½ºÀÇ ½Ç
ü°¡ »ý±â°Ô µÇ´Âµ¥ À̶§ ¸Þ¸ð¸®»ó¿¡ ±¸ÇöµÈ Ŭ·¡½ºÀÇ ½Çü¸¦ instance(class,
instance µîÀº ¿ì¸®¸»·Î ¹ø¿ªÇÏÁö ¾Ê°í ±×³É ¾²±â·Î ÇÑ´Ù. object´Â °´Ã¼ ³»Áö
°³Ã¼·Î ¹ø¿ª Çϱ⵵ ÇÑ´Ù.)¶ó ÇÑ´Ù. °ð ¸Þ¸ð¸®¸¦ È®º¸ÇÏ°í Àִ Ŭ·¡½ºÇüÀÇ º¯
¼ö°¡ instanceÀÌ´Ù. Ŭ·¡½º´Â ½ÇÁ¦ ¸Þ¸ð¸®¿¡ Á¸ÀçÇÏ´Â °ÍÀÌ ¾Æ´Ï¹Ç·Î ÇÁ·Î±×·¡
¹ÖÀº Ŭ·¡½º¸¦ Á÷Á¢ ´Ù·ç´Â °ÍÀÌ ¾Æ´Ï¶ó Ŭ·¡½ºÀÇ ½ÇüÀÎ instance¸¦ ´Ù·ç°Ô
µÈ´Ù.


À̾ °è¼ÓµË´Ï´Ù. ==============>>>>>>>


--------------------------------------------------------------------------------