ContentsClass #05: °´Ã¼ÁöÇâÀû µ¥ÀÌŸ ¸ðµ¨¸µ
in place March 31, 2002, lasted modified March 31, 2002, working
Object-Oriented Concept °´Ã¼ÁöÇâÀû °³³ä
°´Ã¼ (Object)
- Ç¥Çö ´ë»óÀÌ µÇ´Â ¸ðµç »ç¹°À» º¸´Â ÅëÀÏµÈ °³³ä
¿¹: ÀÚµ¿Â÷, ÀÚµ¿Â÷ÀÇ ¿£Áø- °³³äÀûÀÌ°í Ãß»óÀûÀÎ °Íµµ µ¿ÀÏÇÑ ½Ã°¢À¸·Î º¼¼ö ÀÖÀ½
¿¹: ÀÚµ¿Â÷ÀÇ ¹è±â·®, ¹è±â·®À» Ç¥½ÃÇÏ´Â Á¤¼ö- Çö½Ç¼¼°èÀÇ »ç¹°À» °´Ã¼¶ó´Â ´ÜÀÏ °³³äÀ¸·Î °íÁ¤½ÃÅ´À¸·Î½á, º¹ÀâÇÑ Çö½ÇÀ» ÇϳªÀÇ °øÅëµÈ ´ÜÀ§ÀÇ °ü°è·Î ´Ü¼øÈ
¼Ó¼º (Attributes)
- °´Ã¼´Â °³Ã¼ÀÇ ³»¿ë¸¦ ³ªÅ¸³»´Â ¼Ó¼º(Attribute)¸¦ °¡Áö°í ÀÖ´Ù.
- ¼Ó¼ºÀº ¼Ó¼ºÀ̸§°ú µµ¸ÞÀÎ(Domain)À¸·Î ±¸¼ºµÇ¾î ÀÖÀ¸¸ç µµ¸ÞÀÎÀº Ŭ·¡½º·Î Á¤ÀǵȴÙ.
- µµ¸ÞÀÎÀº ¼Ó¼ºÀÇ °ªÀÌ ¼ÓÇÒ ÁýÇÕÀ» Ç¥½ÃÇÏ¸ç ¼Ó¼º°ªÀÌ µµ¸ÞÀÎ ÁýÇÕÀÇ ¿ø¼ÒÀ̾î¾ß ÇÔÀ» Type Integrity Constraint¶ó ÇÑ´Ù.
¿¹ - ÇÑ ¹ßµ¿±â °´Ã¼ÀÇ Ç׸ñÀ¸·Î´Â Ãâ·Â, ÇüÁ¤¼ö, ÇǽºÅæÀÇ ¼ö, ±×¸®°í ¹è±â·®µîÀ» °¡Áú ¼ö ÀÖ´Ù.°´Ã¼ ID (Object Identifier)
- °´Ã¼°£ÀÇ ±¸º°Àº ¼Ó¼ºÀÇ °ªÀÇ Â÷ÀÌ¿¡¸¸ ÀÇÁ¸ÇÏÁö ¾Ê´Â´Ù.
- °´Ã¼´Â ºñ·Ï ¼Ó¼º°ªÀÌ °°´õ¶óµµ ±¸º°ÀÌ °¡´ÉÇÑ °´Ã¼ ID°¡ Á¸ÀçÇÑ´Ù.
- ÀÌÀÇ ±¸ÇöÀº ¼Ó¼º¿Ü¿¡ ½Ã½ºÅÛ¿¡¼ °¢ °´Ã¼¿¡ Á¦°øÇÏ´Â ±¸º°°¡´ÉÇÑ ID·Î µÉ¼öÀÖ´Ù (Address µî)
Ŭ·¡½º (Class)
- °°Àº Á¾·ùÀÇ °´Ã¼¸¦ ¸ð¾ÆÁÖ´Â ÀÏÁ¾ÀÇ Æ²(Structure)
- Çö½Ç¼¼°è¸¦ °´Ã¼¶ó´Â ÇϳªÀÇ ´ÜÀ§·Î º¸¸é, À̵é Çϳª ÇϳªÀÇ °ü°è¸¦ ³ªÅ¸³»´Â °ÍÀº ºñÈ¿À²ÀûÀÌ¸ç ºÒ°¡´É
- À̵éÁß °°Àº °ÍµéÀ» ÇϳªÀÇ Æ²·Î ¹°í ±× ƲµéÀÇ °ü°è¸¦ Á¤ÀÇÇÏ´Â °ÍÀÌ È¿À²Àû
- Ŭ·¡½º´Â °°Àº Á¾·ùÀÇ ¼Ó¼º°ú ¸Þ½îµå¸¦ °¡Áö°í ÀÖ´Ù.
- Ŭ·¡½º¸¦ À§ÇÑ ¼Ó¼º°ú ¸Þ½îµå¸¦ °¡Áú¼ö ÀÖ´Ù.
¿¹: °¢°¢ÀÇ ÇлýÀ» °´Ã¼·Î ÇÏ´Â Çлý Ŭ·¡½º´Â Ŭ·¡½º¿¡ ¼ÓÇÑ Çлý¼ö¸¦ ÀúÀåÇÏ´Â 'Çлý¼ö'¶ó¸¥ ¼Ó¼ºÀ» °¡Áú¼ö ÀÖÀ¸¸ç »õ·Î¿î ÇлýÀ» »ý¼ºÇÏ´Â CreateStd() ¸Þ½îµå¿Í ÇлýÀÇ À̸§À» Ãâ·ÂÇÏ´Â PrintStdID()´Â ¼·Î ´Ù¸¥ DomainÀ» °¡Áø´Ù.Ŭ·¡½º »ó¼Ó°èÃþ (Class Inheritance Hierarchy)
Ŭ·¡½º°£ÀÇ °ü°è(Relationship)¸¦ °èÃþ(Hierarchy)¶ó ĪÇϸç Ŭ·¡½º °èÃþ¿¡´Â »ó¼Ó°èÃþ (Class Inheritance Hierarchy) ¿Í ±¸¼º°èÃþ (Class Composition Hierarchy)·Î µÇ¾î ÀÖ´Ù.
- ÇÑ Å¬·¡½º°¡ ´Ù¸¥ Ŭ·¡½ºÀÇ Æ¯¼öÇÑ °æ¿ì°¡ µÇ´Â °æ¿ì
- µÎ Ŭ·¡½º°£¿¡ »ó¼Ó¼º(Inheritance)ÀÌ ³ªÅ¸³²
- »ó¼Ó¼ºÀÌ ³ªÅ¸³ª´Â °ü°è¿¡¼ ÀϹÝÀûÀΠŬ·¡½º(»óÀ§ Ŭ·¡½º: Super Class)ÀÇ ¸ðµç Ç׸ñÀº Ư¼öÇÑ Å¬·¡½º(ÇÏÀ§ Ŭ·¡½º: Sub Class)¿¡ ¸ðµÎ »ó¼ÓµÈ´Ù
- ÇÏÀ§ Å©·¡½º´Â »óÀ§ Ŭ·¡½º¿¡¼ »ó¼Ó¹ÞÀº Ç׸ñ¿¡ ´ëÇؼ´Â ´Ù½Ã Á¤ÀÇÇÒ ÇÊ¿ä°¡ ¾ø´Ù
- ¿¹·Î Ãâ·Â°ú ¹è±â·®À» Ç׸ñÀ¸·Î °¡Áö´Â ¹ßµ¿±â¶ó´Â Ŭ·¡½º ¾Æ·¡¿¡ Ãâ·Â, ¹è±â·®, Á¡È±â±¸¶ó´Â Ç׸ñÀ» °¡Áø °¡¼Ö¸° ¹ßµ¿±â¿Í Ãâ·Â, ¹è±â·®, ±×¸®°í ¾ÐÃà±â±¸¶ó´Â Ç׸ñÀ» °¡Áø µðÁ© ¹ßµ¿±â¶ó´Â µÎ°¡Áö ÇÏÀ§ Ŭ·¡½º°¡ Á¸Àç
±×¸² 5-1 Ŭ·¡½º »ó¼Ó °èÃþ ¿¹Å¬·¡½º ±¸¼º°èÃþ (Class Composition Hierarchy)
- ÇÑ Å¬·¡½º°¡ ´Ù¸¥ Ŭ·¡½ºÀÇ ÇÑ Ç׸ñ°ªÀÇ ¹üÀ§ (Domain)°¡ µÇ´Â °æ¿ì
- Ŭ·¡½º¿¡ ¼ÓÇÑ °´Ã¼ÀÇ ÇÑ ¼Ó¼º °ªÀº ÇØ´ç ¼Ó¼ºÀÇ µµ¸ÞÀÎÀΠŬ·¡½ºÀÇ ÇÑ °´Ã¼¸¦ °´Ã¼ ID¸¦ ÀÌ¿ëÇÏ¿© °¡¸£Å°°í ÀÖÀ½
- ¿¹·Î ±×¸² 5-1ÀÇ µïÁ©±â°üÀÇ ¾ÐÃà¿¡ °üÇÑ ¼Ó¼ºÀº Compression Ŭ·¡½º¸¦ µµ¸ÞÀÎÀ¸·Î °¡Áø Ŭ·¡½º ±¸¼º°èÃþÀ» ±¸¼ºÇÑ´Ù.
¸Þ½îµå (Method)
- ÀÚ·á¿Í ±× ÀڷḦ ó¸®ÇÏ´Â ÇÁ·Î½Ãµà¾î(Procedure)¸¦ °°Àº Àå¼Ò¿¡ °°Àº ¹æ¹ýÀ¸·Î °ü¸®ÇÑ´Ù¸é ¸Å¿ì Æí¸® - Abstract Data Type
- °´Ã¼ÀÇ ¸Þ½îµå´Â ÇØ´ç °´Ã¼¸¦ ó¸®ÇÏ´Â ÇÁ·Î½Ãµà¾î
- °´Ã¼ÀÇ Á¤ÀÇ¿¡ ¸Þ½îµå Á¤ÀÇ Æ÷ÇÔ
- ¸Þ½îµå´Â ¸Þ¼¼Áö(Message)¿¡ ÀÇÇÏ¿© ±¸µ¿µÇ¸ç, ¸Þ¼¼Áö´Â '´ë»ó°´Ã¼'.'¸Þ½îµåÀ̸§() À¸·Î Ç¥Çö
- ¸Þ¼¼ÁöÀÇ °´Ã¼°£ÀÇ À̵¿Àº ¸Þ¼¼Áö Àü´Þ(Message Passing)
¿¹: ºÎÇ°°´Ã¼¿¡ ÇØ´ç ºÎÇ°ÀÇ ¹«°Ô¸¦ °è»êÇÏ´Â ¸Þ½îµå¸¦ ½ÇÇà½ÃÅ°½Ã¿À - Part.CalcWeight()
±×¸² 5-2 ¸Þ¼¼Áö Àü´Þ ¿¹Á¤º¸ ÀºÀÍ Encapsulation
- °´Ã¼ÀÇ Á¤º¸¸¦ ÀÏÁ¤ÇÑ °æ·Î¸¦ ÅëÇؼ¸¸ Á¢±ÙÇÒ ¼ö ÀÖ°Ô ÇÏ´Â °Í( ¸Þ½îµå¸¦ ÅëÇÏ¿© )
- °´Ã¼¿¡ Á¢±ÙÇÏ´Â ÀÌ¿ëÀڴ ǥÁØÈµÈ ¹æ¹ýÀ» ÀÌ¿ë - Interface
- ³»ºÎ±¸Çö°ú Interface¸¦ µ¶¸³½ÃÄÑ ¸ðµâÈµÈ ½Ã½ºÅÛ °³¹ß °¡´É
Polymorphism
- ¸Þ½îµå°¡ »ó¼Ó¼º¿¡ ÀÇÇÏ¿© ÇϳªÀÇ ¸Þ½îµå¸¦ ¿©·¯ Ŭ·¡½º¿¡ Àû¿ëÇÒ ¼ö ÀÖ´Â ¼ºÁú
- POINTÀÇ ÇÏÀ§Å¬·¡½º¸¦ 3D Point¶ó ÇßÀ»¶§ CalcLength() ¶ó´Â ¸Þ½îµå´Â µÎ Ŭ·¡½º¿¡¼ ¸ðµÎ »ç¿ë°¡´É
- ÇÏÀ§ Ŭ·¡½ºÀÇ ¸Þ½îµå´Â »óÀ§ Ŭ·¡½ºÀÇ ¸Þ½îµåÀÇ Äڵ带 Àç »ç¿ëÇÒ ¼ö ÀÖ´Ù.
°´Ã¼ÁöÇâÀû Á¦Ç° ¸ðµ¨¸µ Object-Oriented Product Modeling
Part Modeling
- ºÎÇ°¿¡ ´ëÇÑ ÀϹÝÀûÀÎ ¼Ó¼ºÀ» Æ÷ÇÔÇÏ´Â °´Ã¼
- ¼Ó¼ºÀ¸·Î¼´Â ºÎÇ°¹øÈ£, ºÎÇ°¸í, ºÎÇ°Á¾·ù ¼³°èÀÚµîÀ» °¡Áø´Ù.
±×¸² 5-3 Product ModelingAsembly and Atomic Parts
- PartÀÇ ÇÏÀ§ Ŭ·¡½º·Î½á Á¶¸³Ç°À» Æ÷ÇöÇÏ´Â Assembly Part Ŭ·¡½º¿Í ´ÜÇ°À» Ç¥½ÃÇÏ´Â Atomic Part Ŭ·¡½º Á¤ÀÇ
- »óÀ§ Ŭ·¡½ºÀÇ ¸ðµç Attribute »ó¼Ó
- Assembly Part Ŭ·¡½º´Â components ¼Ó¼ºÀ» ÀÌ¿ëÇÏ¿© Attomic Part¸¦ Ŭ·¡½º ±¸¼º °èÃþÀ¸·Î ¿¬°á
- Atomic Part´Â ÀÚüÀÇ MaterialÀ» Ŭ·¡½º ±¸¼º °èÃþÀ¸·Î ¿¬°á
Method Design
- ´ÜÀ§ ºÎÇ°ÀÇ ¹«°Ô¸¦ ±¸ÇÏ´Â ¸Þ½îµå¸¦ Á¶¸³ºÎÇ°, ±â°èÀüüÀÇ ¹«°Ô¸¦ °è»êÇϴµ¥ Àç»ç¿ë
- Polymorphism ¿¡ ÀÇÇÏ¿© Part Ŭ·¡½ºÀÇ ¸Þ½îµå´Â Assembly Part ¿Í Atomic PartÀÇ ¹«°Ô°è»ê ¸Þ½îµå·Î ±¸Çö
±×¸² 5-4 ¸Þ½îµå ¼³°èis_weight_less_than(X, ASS_ID) weight X; object_id ASS_ID; IF X < calc_assy_weight( ASS_ID.component ) RETURN true; ELSE RETURN false; calc_assy_weight(component) set_part_obj component; part_object obj; RETURN ¥Òcal_weight( obj ) when obj ¡ô component; calc_weight(obj) part_obj obj; RETURN calc_volumn(obj.elements) * obj.material_type.density;Constraint Checking
- ºÎÇ°ÀÇ ¹«°Ô¿¡ ´ëÇÑ Constraint Á¤ÀÇ
- µ¥ÀÌŸº£À̽º¸¦ °í·ÁÇÑ ECA Rule·Î Á¤ÀÇ
Knowledge & Engineering Databases (c) copyright Namchul Do, 2002