வகுப்பு வரைபடம்

300px|right|thumbnail|UML 2.0 வரைபடங்களின் நிலைமுறை, கிளாஸ் வரைபடங்களாக காண்பிக்கப்பட்டுள்ளனமென்பொருள் பொறியியலில், **கிளாஸ் வரைபடம்** என்பது ஒருங்கிணைந்த மாடலிங் மொழியில் (யுனிஃபைட் மாடலிங் லாங்குவேஜ்) (UML) ஒரு முறைமையின் அமைப்பை நிலையான வடிவ படங்கள் மூலம் விளக்குவதாகும். அதில் அந்த முறைமையின் கிளாஸ்கள், அவற்றின் பண்புகூறுகள் மற்றும் கிளாஸ்களுக்கு இடையேயான உறவுகள் ஆகியவை காண்பிக்கப்படும்.

## உறுப்புகள் (Members)
பண்புக்கூறுகள், முறைகள்(methods) மற்றும் அவற்றைப் பற்றிய கூடுதல் விவரங்கள் போன்ற கிளாஸ் உறுப்புகளைக் காண்பிக்க UML வழிமுறைகளை வழங்குகிறது.

### காட்சித்தன்மை (Visiblity)
கிளாஸ் உறுப்புகளின் (பண்புக்கூறுகள் மற்றும் முறைகள்) காட்சித்தன்மையைக் குறிப்பிட உறுப்புகளின் பெயர்களுக்கு முன்பாக பின்வரும் குறிமானங்கள் சேர்க்கப்பட வேண்டும்.:

### நோக்கம்
உறுப்புகளுக்கு UML இருவகையான நோக்கங்களைக் குறிப்பிடுகிறது: நேர்வு (instance) மற்றும் பிரிப்பான் (classifier). நேர்வு உறுப்புகளின் நோக்கம் ஒரு குறிப்பிட்ட நேர்வு மட்டுமே. பண்புக்கூறுகளைப் பொறுத்த வரை, இதன் மதிப்பு நேர்வுகளுக்கு இடையே வேறுபடக்கூடியது. முறைகளைப் பொறுத்தவரை, இதை அழைப்பது (invocation) நேர்வின் நிலையை மாற்றி விடக்கூடியது. அதாவது, நேர்வு பண்புக்கூறுகளை பாதிக்கும். ஆனால், பிரிப்பான் உறுப்பில் இதன் நோக்கம் ஒரு கிளாஸ் ஆகும். பண்புக்கூறுகளைப் பொறுத்த வரை, இதன் மதிப்பு எல்லா நேர்வுகளுக்கும் சமமாக இருக்கும். முறைகளைப் பொறுத்த வரை, இதை அழைப்பது நேர்வின் நிலையை பாதிக்காது. பிரிப்பான் உறுப்புகள் பொதுவாக பல நிரலாக்க மொழிகளில் "நிலையானதாக" காணப்படுகிறது. ஒரு உறுப்பு பிரிப்பான் நோக்கத்துடனானது என்றால், அதன் பெயர் அடிக்கோடிட்டு காண்பிக்கப்பட வேண்டும். இல்லாவிட்டால், இயல்புநிலையான நேர்வு நோக்கமே எடுத்துக்கொள்ளப்படும்.

## உறவுகள்
கிளாஸ் மற்றும் ஆப்ஜெக்ட் வரைபடங்களில் காணப்படும் குறிப்பிட்ட வகையான, தர்க்க ரீதியான இணைப்புகளைக் குறிப்பிடக் கூடிய பொதுவான சொல்லே உறவு எனப்படுவதாகும். பின்வரும் உறவுமுறைகளை UML வழங்குகிறது:

### நேர்வு நிலை உறவுகள்
#### புற இணைப்புகள்
ஆப்ஜெக்ட்களுக்கு இடையேயான அடிப்படை உறவுமுறையானது *இணைப்பு* எனப்படுவதாகும். ஒன்று அல்லது அதற்கு மேற்பட்ட ஆப்ஜெக்ட் பெட்டிகளை இணைக்கும் கோட்டால் இது காண்பிக்கப்படுகிறது. இதை ஒரு ஆப்ஜெக்ட் வரைபடம் அல்லது கிளாஸ் வரைபடத்தில் காண்பிக்கலாம். சேர்க்கையின் ஒரு நிகழ்வே ஒரு இணைப்பு ஆகும்.

#### சேர்க்கை (Association)
400px|right|thumbnail|இரண்டு கிளாஸ்களுக்கு இடையேயான சேர்க்கைக்கான எடுத்துக்காட்டு கிளாஸ் வரைபடம்
*[[சேர்க்கை (object-oriented programming)|சேர்க்கை]]* என்பது ஒரு இணைப்புகளின் குடும்பத்தைக் குறிக்கிறது. பைனரி சேர்க்கைகளில் (இரு முனைகளைக் கொண்டவை) ஒரு கோடு அதன் இரு முனைகளில் கிளாஸ் பெட்டிகளுடன் இணைக்கப்பட்டிருக்கும். உயர்நிலை சேர்க்கைகள் இரண்டு முனைகளுக்கும் அதிகமானதைக் கொண்டதாக வரைய முடியும். அவ்வாறான நிலைகளில் முனைகள் ஒரு மைய டைமண்டுடன் இணைக்கப்பட்டிருக்கும்.

சேர்க்கைகளுக்கு பெயரிட முடியும், மேலும் சேர்க்கையின் முனைகளில் ரோல் பெயர்கள், உரிமை காட்டிகள், பன்மைத்தன்மை, காட்சித்தன்மை மற்றும் பிற பண்புகள் போன்றவற்றைச் சேர்க்கலாம். ஐந்து வெவ்வேறு வகையான சேர்க்கைகள் உள்ளன. இரு-திசை மற்றும் ஒற்றை திசை சேர்க்கைகள் பொதுவானவை. எடுத்துக்காட்டாக, ஒரு ஃப்ளைட் கிளாஸானது, பிளேன் கிளாஸுடன் இருதிசையிலும் சேர்ந்துள்ளது. கிளாஸ் வரைபடங்களில் மட்டுமே சேர்க்கைகளைக் காண்பிக்க முடியும்.

எடுத்துக்காட்டு: "துறையானது கல்வித்திட்டங்களை வழங்குகிறது", என்பது ஒரு சேர்க்கை உறவுமுறை.

#### திரட்டுதல்
300px|right|thumbnail|இரண்டு கிளாஸ்களுக்கு இடையேயான திரட்டுலைக் காண்பிக்கும் கிளாஸ் வரைபடம்

சேர்க்கை உறவுமுறையின் ஒரு மாறுப்பட்ட வகையே *[[திரட்டுதல் (object-oriented programming)|திரட்டுதல்]]* ஆகும். இது "has a"(கொண்டது) என்ற பண்பினால் ஆனது. திரட்டுதல் உறவுமுறையானது சேர்க்கையை விட அதிகம் நுணுக்கமானது. பகுதி-முழுமை அல்லது உறவின் ஒரு பகுதியை விளக்குவதே இந்த சேர்க்கையாகும். ஒரு வகை சேர்க்கை உறவே என்பதால் திரட்டுதல் உறவானது, சேர்க்கையைப் போன்றே எல்லா பெயர்களையும் கொள்ள முடியும். ஆனாலும், ஒரு திரட்டுதல் உறவில் இரண்டுக்கு மேற்பட்ட கிளாஸ்கள் இருக்க முடியாது.

ஒரு கிளாஸானது மற்ற கிளாஸ்களின் தொகுப்பு அல்லது கன்டெய்னராக இருக்கும்போது *திரட்டுதல்* சாத்தியமாகும், ஆனால் உள்ளிருக்கும் கிளாஸ்கள் கன்டெய்னர் உடன் உறுதியான *வாழ்க்கை சுழற்சி சார்பு* கொண்டிருக்காது, கன்டெய்னர் அழிக்கப்பட்டாலும் அதன் உள்ளடக்கங்கள் அழிக்கப்படாது.

UML இல், உள்ளிருக்கும் கிளாஸ்(களை) கொண்டிருக்கும் கிளாஸுடன் இணைக்கும் கோடுகளின் முனையில் ஒரு *நிரப்பப்படாத* டைமண்ட் வடிவம் மூலமாக அது வெளிப்படுத்தப்படுகிறது.

#### கூட்டமைவு (Composition)

*[[ஆப்ஜெக்ட் கூட்டமைவு|கூட்டமைவு]]* "owns a" இன் பலமான வகை அல்லது சேர்க்கை உறவுமுறை. திரட்டுதல் உறவுமுறையை விடவும், கூட்டமைவு அதிக நுணுக்கமானது. அடர்த்தியான டைமண்ட் வடிவத்தின் மூலம் குறிப்பிடப்படுகிறது.

*கூட்டமைவு* உறவுமுறையில் பொதுவாக, கொண்டிருக்கும் கிளாஸின் நேர்வுகள் மற்றும் உள்ளிருக்கும் கிளாஸின் நேர்வுகள் ஆகியவற்றுக்கு இடையே வலுவான *வாழ்க்கை சுழற்சி சார்பு* காணப்படும்: அதாவது கன்டெய்னர் அழிக்கப்பட்டால், அதில் உள்ள எல்லா நேர்வும் அதனுடன் அழிக்கப்படும். ஒரு கூட்டமைவு நீக்கப்படுவதற்கு முன்பு அதன் ஒரு பகுதியை அகற்றி விடலாம் (அனுமதிக்கப்படும் இடங்களில்) எனவே அது கூட்டமைவுடன் சேர்ந்து நீக்கப்படாது என்பதை நினைவில் கொள்க.

கூட்டமைவு உறவுமுறையின் UML வரைபட வெளிப்பாடானது, உள்ளிருக்கும் கிளாஸை இணைக்கும் கோட்டின் கொண்டிருக்கும் கிளாஸ் முனையில் ஒரு *நிரப்பபட்ட* டைமண்ட் வடிவம் ஆகும்.

#### கூட்டமைவு மற்றும் திரட்டுதல் ஆகியவற்றுக்கு இடையேயான வேறுபாடுகள்
கூட்டமைவின் மொத்த மதிப்பானது 0..1 இன் மடங்குகளாக அல்லது 1 ஆக இருக்க வேண்டும், அதாவது மொத்த மதிப்பானது ஒரே ஒரு மொத்தத்தையே கட்டாயம் கொண்டிருக்க வேண்டும் என்பதைக் குறிப்பிடுகிறது. திரட்டுதலின் மொத்தம் எதன் மடங்குகளிலும் இருக்கலாம்.

உலகப்பூர்வமான மொத்த-பகுதி உறவுமுறைகளை விளக்க கூட்டமைவு முறையைப் பயன்படுத்தலாம். எ.கா., an engine is part of a car (ஒரு எஞ்சின் காரின் ஒரு பகுதி) என்பது சரியாக ஒரு கூட்டமைவு உறவுமுறையாகும். ஆனாலும், ஒரு மென்பொருள் அல்லது தரவுத்தள உறவுமுறையைக் குறிப்பிட திரட்டுதல் உறவுமுறையே சிறந்ததாகும். எடுத்துக்காட்டாக, car model engine ENG01 is part of a car model CM01 (கார் மாடல் எஞ்சின் ENG01 என்பது CM01 கார் மாடலின் ஒரு பகுதியாகும்), ஏனெனில் ENG01 என்பது வேறு கார் மாடலின் பகுதியாகவும் இருக்கக்கூடும். எனவே திரட்டுதல் உறவுமுறையானது, பொதுவாக "கேட்டலாக்" அமைப்பு என்றும், கூட்டமைவு "இயல்முறை" அமைப்பு என்றும் குறிப்பிடப்படுகின்றன.
***' 

=== கிளாஸ் நிலை உறவுமுறைகள் ===
==== பொதுமைப்படுத்தல் ====
[[படிமம்:KP-UML-Generalization-20060325.svg|300px|right|thumbnail|ஒரு சூப்பர்கிளாஸ் மற்றும் இரண்டு துணை கிளாஸ்கள் ஆகியவற்றுக்கு இடையே பொதுமைப்படுத்தலைக் காண்பிக்கும் கிளாஸ் வரைபடம்]]

தொடர்புடைய இரண்டு கிளாஸ்களில் ஒன்று (''துணைவகை'' ) மற்றொன்றின் (''சூப்பர்வகை'' ) சிறப்பு வடிவமாக கருதப்படுகிறது, மேலும் சூப்பர்வகையானது துணைவகையின் ***'பொதுமைப்படுத்தல்* *' ' ஆக கருதப்படுகிறது. நடைமுறையில், துணைவகையின் எந்தவொரு நேர்வும் சூப்பர்வகையின் ஒரு நேர்வாகவும் இருக்கும் என்றாகிறது. இந்தவகை பொதுமைப்படுத்தலின் ஒரு எடுத்துக்காட்டை உயிரி அட்டவணையில் காணலாம்: மனிதர்கள், சிமியன் என்பதன் துணை வகையாவார்கள், அதுவும் பாலூட்டிகளின் துணை வகையாகும். இந்த உறவுமுறையை, A என்பது B ஆகும் என்ற வாக்கியத்திலிருந்து எளிதில் புரிந்து கொள்ளலாம் (ஒரு மனிதன் ஒரு பாலூட்டியாவான், ஒரு **பாலூட்டி** ஒரு விலங்காகும்).

ஒன்று அல்லது அதற்கு மேற்பட்ட துணை வகைகளை இணைக்கும் கோட்டின் ஒரு சூப்பர் வகை முனையில் ஒரு நிரப்பப்படாத முக்கோண வடிவமே பொதுமைப்படுத்தலுக்கான UML வரைபட வெளிப்பாடாகும்.

பொதுமைப்படுத்தல் உறவுமுறையானது *[[மரபுவழி அடைதல் (கணினி அறிவியல்)|மரபுவழி]]* அல்லது *"is a (என்பது)"* உறவுமுறை என்றும் கூறப்படுகிறது.

பொதுமைப்படுத்தல் உறவுமுறைகளில் உள்ள *சூப்பர்வகை* *"parent"* , *சூப்பர்கிளாஸ்* , *அடிப்படை கிளாஸ்* அல்லது *அடிப்படை வகை* என்றும் வழங்கப்படுகிறது.

பொதுமைப்படுத்தல் உறவுமுறைகளில் உள்ள *துணை வகை* *"child"* , *derived class* , *derived type* , *inheriting class* அல்லது *inheriting type* என்றும் கூறப்படுகிறது.

இந்த உறவுமுறையில் குறிப்பிடப்படுபவை உயிரியல் ரீதியான parent/child உறவுமுறையுடன் எவ்வகையிலும் தொடர்புடையவை அல்ல: இந்த சொற்களைப் பயன்படுத்துவது மிகவும் பொதுவானது, ஆனால் தவறாக புரிந்து கொள்ளப்படக்கூடியது.

* பொதுமைப்படுத்தல்-சிறப்புப்படுத்தல் உறவுமுறை

:A is a type of B(A என்பது B இன் ஒரு வகை)
::எ.கா. "an oak is a type of tree (ஓக் ஒரு வகை மரம்)", "an automobile is a type of vehicle(தானியங்கி என்பது ஒருவகை வண்டி)"

பொதுமைப்படுத்தலை கிளாஸ் வரைபடங்கள் மற்றும் பயன் நிலை வரைபடம் ஆகியவை மூலம் மட்டுமே காண்பிக்க முடியும்.

#### ஏற்றுக்கொள்ளுதல் (Realization)
UML இல், ஏற்றுக்கொள்ளுதல் உறவுமுறை என்பது, இரு மாதிரி கூறுகளுக்கு இடையே உள்ள உறவுமுறையாகும், இதில் ஒரு மாதிரி கூறு (கிளையண்ட்) மற்றொரு மாதிரி கூறின் (வழங்குநர்) நடத்தையை ஏற்றுக்கொள்கிறது. ஒரு ஏற்றுக்கொள்ளுதல் உறவுமுறையானது, இடைவெளியிட்ட கோடும் வழங்குநரை நோக்கி நிரப்பப்படாத அம்புமுனையையும் கொண்டது.

ஏற்றுக்கொள்ளுதல் உறவுமுறையை கிளாஸ் அல்லது பொருள் வரைபடங்களில் மட்டுமே காண்பிக்க முடியும்.

கிளாஸ்கள், இடைமுகங்கள், பொருள்கள் மற்றும் தொகுப்புகள் போன்ற கிளையண்ட் கூறை வழங்குநர் கூறுடன் இணைப்பவை தொடர்பான ஏற்றுக்கொள்ளுதல் உறவுமுறையே ஏற்றுக்கொள்ளுதலாகும். கிளாஸ்கள் மற்றும் இடைமுகங்கள் மற்றும் பொருள்களுக்கு இடையே மற்றும் இடைமுகங்கள் ஆகியவற்றுக்கு இடையேயான ஏற்றுக்கொள்ளுதல் உறவுமுறையானது கிளாஸ் இடைமுகத்தின் செயல்பாடுகளை ஏற்றுக்கொள்கிறது என்பதைக் காண்பிக்கிறது.

### பொது உறவுமுறை
305px|thumb|"கார்" வகை மற்றும் "சக்கரம்" வகை ஆகியற்றுக்கு இடையே சார்ந்திருத்தலைக் காண்பிக்கும் கிளாஸ் வரைபடம்

#### சார்ந்திருத்தல் (Dependency)
சார்ந்திருத்தல் என்பது ஒரு வகையில் வலுவற்ற உறவுமுறையாகும், இதன்படி ஒரு கிளாஸானது மற்றொரு கிளாஸை எப்போதாவது ஒருமுறை பயன்படுத்துவதால் அதை சார்ந்திருக்கிறது.
அளவுரு மாறியாக அல்லது மற்றொரு கிளாஸின் ஒரு முறையின் அக மாறியாக ஒரு கிளாஸ் இருக்கும்போது சார்ந்திருத்தல் ஏற்படுகிறது.

### பன்மைத்தன்மை (Multiplicity)

தொடர்புடைய இரண்டு கிளாஸ்களில் (குறைந்தபட்சம்) ஒன்றாவது மற்றொன்றை குறிப்பிடுகிறது என்று சேர்க்கை உறவுமுறையானது காட்டுகிறது. ஆனால், பொதுமைப்படுத்தல் உறவுமுறையில், இது பின்வரும் வாக்கியத்தின் மூலம் எளிதாக புரிந்து கொள்ளப்படுகிறது 'A has a B' ('A க்கு B உண்டு') (ஒரு தாய் பூனையிடம் குட்டிகள் உண்டு, குட்டி பூனைகளிடம் தாய் பூனை உண்டு). 

ஒரு சேர்க்கையின் UML வெளிப்பாடு என்பது ஆப்ஜெக்ட்(களின்) ரோலை விளக்கும், தேவைக்கேற்ற அம்புமுனையுடன் கூடிய ஒரு கோடு. மற்றும் ஒரு உறுப்பின் நேர்வுகளின் பன்மைத்தன்மையை (சேர்க்கையில் பங்கேற்கும் ஆப்ஜெக்ட்களின் எண்ணிக்கை) சுட்டும் தேவைக்கேற்றை குறிப்புகள் ஒவ்வொரு முனையிலும். 

பொதுவான பன்மைத்தன்மைகளாவன:...

## ஆய்வு மரபுகள்

திட்டப்பணியின் தொடக்க காலத்தில், கிளாஸ் வரைபடங்கள் மூலம் ஒரு முறைமையின் ஆரம்பநிலை கருத்தியல் மாதிரிகளை உருவாக்கலாம். இந்த நிலையில் கிளாஸ்கள் சில எல்லைகள், கட்டுப்பாடுகள் மற்றும் உறுப்புகளாகவே இருக்கும், அரிதாக சில நேரங்களில் வடிவமைப்பு வரையிலும் கூட அதிக மாற்றமின்றி கொண்டு செல்லப்படும்.

### எல்லைகள்

எல்லை கிளாஸ்கள் செயல்படுநர்கள் மற்றும் முறைமையின் அக உறுப்புகள் ஆகியவற்றுக்கு இடையே தொடர்பைக் கையாளும். அவை பயனர் இடைமுகங்கள், முறைமை இடைமுகங்கள் அல்லது சாதன இடைமுகங்களாக (எடுத்துக்காட்டுக்காக) இருக்கக்கூடும். முறைமையின் பயன்நிலை வரைபடத்தில் அவை பொதுவாக செயல்படுநர்-பயன் என்ற இணைகளாக காண்பிக்கப்படும்.

அவை ஒரு வட்டத்துடன் இடதுபுறத்தில் செங்குத்துக்கோட்டுடன் இணையும் சிறு கோட்டுடன் காணப்படும் (பயன்நிலை முறைமை எல்லையுடன் இணைக்கப்பட்டதாக கருதப்படும்). மாற்றாக, இவை சாதாரண கிளாஸாகவும் அதனுடன் «boundary» மரபு குறியீட்டை கிளாஸ் பெயருக்கு மேலே கொண்டதாகவும் குறிக்கலாம்.

### உறுப்புகள் (Entities)

முறைமையால் கையாளப்படும் தகவல்களைக் காண்பிக்க உறுப்பு கிளாஸ்கள் பயன்படுத்தப்படுகின்றன. சில நேரங்களில் இவை தகவல்களுடன் இணைந்த நடத்தையையும் குறிக்க பயன்படும். அவற்றை தரவுத்தள அட்டவணைகளாக அல்லது பிற தரவு மூலங்களாக கருதக்கூடாதுs.

ஒரு வட்டத்தின் முழு அகலத்துக்கும் பரவியுள்ள கிடைமட்டக்கோட்டின் மேல் வட்டம் இருப்பதாக இது வரையப்படுகிறது. மாற்றாக, இவை சாதாரண கிளாஸாகவும் அதனுடன் «entity» மரபு குறியீட்டை கிளாஸ் பெயருக்கு மேலே கொண்டதாகவும் குறிக்கலாம்.

### கட்டுப்பாடுகள்

பயன்நிலை மற்றும் அதனால் சீரமைப்பு கிளாஸ்கள் ஆகியவற்றுக்கான கட்டுப்பாட்டு போக்கைக் கட்டுப்பாட்டு கிளாஸ்கள் கையாள்கின்றன. பயன் நிலையில் உள்ள அனைத்தையும் இவை செய்வதில்லை, ஆனால் இவற்றுக்கு பணி செய்யக் கூடிய பிற கிளாஸ்களை இவை ஒருங்கிணைக்கும்.

அவை, ஒரு வட்டம் மற்றும் அதன் இடதுபுறத்தைச் சுட்டும் ஒரு அம்புக்குறி ஆகியவை இணைந்ததாக வரையப்படுகின்றன. மாற்றாக, இவை சாதாரண கிளாஸாகவும் அதனுடன் «control» மரபு குறியீட்டை கிளாஸ் பெயருக்கு மேலே கொண்டதாகவும் குறிக்கலாம்.

## இதையும் பாருங்கள்

* இயக்கக்கூடிய UML
* UML கருவிகளின் பட்டியல்

;தொடர்புடைய படங்கள்

* டொமைன் மாதிரி
* உறுப்பு-தொடர்பு மாதிரி
* ஆப்ஜெக்ட் வரைபடம்

## குறிப்புதவிகள்

## புற இணைப்புகள்
* UML 2 கிளாஸ் வரைபடங்களுக்கு ஓர் அறிமுகம்
* UML 2 கிளாஸ் வரைபடம் வழிகாட்டுதல்கள்
* IBM கிளாஸ் வரைபடம் அறிமுகம்

பகுப்பு:வரைபடங்கள்
பகுப்பு:ஒருங்கு மாதிரியாக்க மொழி
பகுப்பு:கூகுள் தமிழாக்கம்-கணினியியல்