ውርስ vs ቅንብር
ውርስ እና ቅንብር በOOP (Object Oriented Programming) ውስጥ የሚገኙ ሁለት ጠቃሚ ፅንሰ ሀሳቦች ናቸው። በቀላል አነጋገር፣ ሁለቱም ቅንብር እና ውርስ ለአንድ ክፍል ተጨማሪ ንብረቶችን ወይም ባህሪን ከማቅረብ ጋር ይገናኛሉ። ውርስ ለአንድ ክፍል ከወላጅ ክፍል ንብረቶችን እና ባህሪን በማራዘም የመውረስ ችሎታ ነው። በሌላ በኩል፣ ቅንብር የአንድ ክፍል የተለያዩ ክፍሎች ያሉ ነገሮችን እንደ አባል ውሂብ የማካተት ችሎታ ነው።
ውርስ ምንድን ነው?
ከላይ እንደተገለፀው ውርስ ለአንድ ክፍል ከወላጅ ክፍል ንብረቶችን እና ባህሪን በማራዘም የመውረስ ችሎታ ነው።ውርስ በመሠረቱ የነባር ክፍል ንብረቶችን እና ባህሪን በአዲስ የተገለጸ ክፍል በመፍቀድ እንደገና ጥቅም ላይ ማዋልን ይሰጣል። ክፍል A B ን ከተራዘመ፣ ክፍል B የወላጅ ክፍል (ወይም ሱፐር መደብ) ተብሎ ይጠራል እና ክፍል A ደግሞ የሕፃን ክፍል (ወይም የተገኘ ክፍል/ንዑስ ክፍል) ይባላል። በዚህ ምሳሌ ሁኔታ፣ ክፍል ሀ ሁሉንም የህዝብ እና የተጠበቁ ባህሪያትን እና የሱፐር መደብ (B) ዘዴዎችን ይወርሳል። ንዑስ ክፍል ከወላጅ ክፍል የተወረሰውን ባህሪ እንደአማራጭ መሻር (አዲስ ወይም የተራዘመ ተግባርን ለዘዴዎች ያቀርባል)።
ውርስ በOOP ውስጥ ያለውን የ"is-a" ግንኙነትን ይወክላል። ይህ በመሠረቱ ሀ ደግሞ ለ ነው ማለት ነው። በገሃዱ ዓለም የፕሮግራም አወጣጥ ችግር ውስጥ፣ የሰራተኛ ክፍልን ለመፍጠር የሰው ክፍል ሊራዘም ይችላል። ይህ ስፔሻላይዜሽን ይባላል። ግን መጀመሪያ የሰራተኛ ክፍልን መፍጠር እና ከዚያም ወደ ግለሰብ ክፍል ማጠቃለልም ይችላሉ (i.ሠ. አጠቃላይ). በዚህ ምሳሌ፣ ተቀጣሪው የግለሰቡ ንብረቶች እና ባህሪ (ማለትም ተቀጣሪም ሰው ነው) እና አንዳንድ ተጨማሪ ተግባራትን ሊይዝ ይችላል (ስለዚህ፣ ሰው ተቀጣሪ አይደለም) እንዲሁም።
ጥንቅር ምንድን ነው?
ቅንብር የአንድ ክፍል የተለያዩ ክፍሎች ያሉ ነገሮችን እንደ አባል ውሂብ የማካተት ችሎታ ነው። ለምሳሌ፣ ክፍል A እንደ አባል የክፍል B ነገር ሊይዝ ይችላል። እዚህ በ B ውስጥ የተገለጹት ሁሉም ህዝባዊ ዘዴዎች (ወይም ተግባራት) በክፍል A ውስጥ ሊፈጸሙ ይችላሉ. ክፍል A መያዣ ይሆናል, ክፍል B ደግሞ የያዘው ክፍል ይሆናል. ቅንብር ኮንቴይነርሺፕ ተብሎም ይጠራል። በዚህ ምሳሌ፣ ክፍል A ክፍል B ያቀፈ ነው ማለት ይቻላል። ምንም እንኳን መያዣው ሁሉንም የክፍሉን የህዝብ ዘዴዎች ለማስፈፀም ቢችልም, ተጨማሪ ተግባራትን ለመለወጥ ወይም ለማቅረብ እንደማይችል ልብ ሊባል የሚገባው ነው. ወደ እውነተኛው ዓለም የፕሮግራም አወጣጥ ችግር ስንመጣ፣ የክፍል ቴክስትቦክስ ነገር በክፍል ፎርም ውስጥ ሊይዝ ይችላል፣ ስለዚህም ቅጹ ቴክስትቦክስን ይይዛል (ወይም በአማራጭ፣ ፎርም በቴክስትቦክስ የተዋቀረ ነው) ሊባል ይችላል።
በውርስ እና ቅንብር መካከል ያለው ልዩነት ምንድን ነው?
ውርስ እና ቅንብር ሁለት የኦኦፒ ፅንሰ-ሀሳቦች ቢሆኑም ፕሮግራሚር እንዲያሳካቸው በሚፈቅዱት ነገር ላይ በጣም የተለያዩ ናቸው። ውርስ ለአንድ ክፍል ከወላጅ ክፍል ንብረቶችን እና ባህሪን በማራዘም የመውረስ ችሎታ ሲሆን ጥንቅር ደግሞ የአንድ ክፍል የተለያዩ ክፍሎች ያሉ ነገሮችን እንደ አባል መረጃ የመያዝ ችሎታ ነው። አንድ ክፍል ከተራዘመ ሁሉንም ህዝባዊ እና የተጠበቁ ንብረቶችን/ ባህሪን ይወርሳል እና እነዚያ ባህሪያት በንዑስ መደብ ሊሽሩ ይችላሉ። ነገር ግን አንድ ክፍል በሌላ ውስጥ ከተያዘ, መያዣው በተያዘው ውስጥ ባህሪን ለመለወጥ ወይም ለመጨመር ችሎታ አያገኝም. ውርስ በOOP ውስጥ የ"is-a" ግንኙነትን ይወክላል፣ ቅንብር ግን "ያለው" ግንኙነትን ይወክላል።