1. பொதுவான அடிப்படை வகுப்பு

இன்று நாம் சுவாரஸ்யமான தலைப்புகளின் ஸ்மோர்காஸ்போர்டை அனுபவிப்போம். சதுரங்கக் காய்களைக் குறிக்கும் அனைத்து வகுப்புகளையும் எளிமைப்படுத்த அடிப்படை வகுப்பை நாங்கள் அறிமுகப்படுத்தியது நினைவிருக்கிறதா ? நான் நம்புகிறேன் 🙂ChessItem

இப்போது ஒவ்வொரு துண்டுக்கும் draw()திரையில் வரைவதைக் கையாளும் ஒரு முறை உள்ளது என்று கற்பனை செய்து பாருங்கள். நீங்கள் draw()முறையை அழைக்கிறீர்கள், மற்றும் துண்டு அதன் தற்போதைய ஒருங்கிணைப்புகளில் தன்னை ஈர்க்கிறது. இந்த முறையை அடிப்படை வகுப்பிற்கு மாற்றுவது வசதியாக இருக்கும்.

ChessItem அடிப்படை வகுப்பில் முறை இருந்தால் draw(), துண்டு வகுப்புகளில் அதை மேலெழுதலாம் மற்றும் இது போன்ற நேர்த்தியான குறியீட்டை எழுதலாம்:

class ChessBoard
{
   public void drawAllChessItems()
   {
      // Add the pieces to the list
      ArrayList<ChessItem> items = new ArrayList<ChessItem>();
      items.add(new King());
      items.add(new Queen());
      items.add(new Bishop());

      // Draw them regardless of their type
      for(ChessItem item: items)
      {
         item.draw();
      }
   }
}

அடிப்படை வகுப்பை அறிமுகப்படுத்துவதன் மூலம் ChessItem, குறியீட்டை பெரிதும் எளிதாக்க முடிந்தது: ஒவ்வொரு வகுப்பின் முறைகளையும் தனித்தனியாக அழைக்க வேண்டிய அவசியமில்லை, எல்லா பொருட்களையும் ஒரே சேகரிப்பில் எளிதாக சேமிக்க முடியும்.

ஆனால் இங்கே ஒரு சுவாரஸ்யமான கேள்வி உள்ளது: draw()வகுப்பில் நேரடியாக அறிவிக்கப்பட்ட முறை ChessItemதிரையில் என்ன வரைய வேண்டும்? எல்லாவற்றிற்கும் மேலாக, சதுரங்கத்தில் அத்தகைய துண்டு எதுவும் இல்லை, எனவே வரைவதற்கு எதுவும் இல்லை.

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


2. சுருக்க வகுப்புகள்

சுருக்க வகுப்புகள்

இத்தகைய சூழ்நிலைகளுக்கு, ஜாவா ஒரு சிறப்பு வகை வகுப்பைக் கொண்டுள்ளது: சுருக்க வகுப்பு . புரோகிராமர்கள் ஒரே மாதிரியான வகுப்புகளுடன் பணிபுரிவதை எளிதாக்குவதற்கும், அவற்றில் உள்ள நகல் குறியீட்டின் அளவைக் குறைப்பதற்கும் அவை வடிவமைக்கப்பட்டுள்ளன.

சுருக்க வகுப்புகள் பற்றி தெரிந்து கொள்ள வேண்டிய மூன்று விஷயங்கள் இங்கே.

நடைமுறைப்படுத்தப்படாத முறை

ஒரு சுருக்க வர்க்கம் செயல்படுத்தப்படாமல் ஒரு முறை அறிவிப்பைக் கொண்டிருக்கலாம். இதுவே இந்த முறையை சுருக்கமாக்குகிறது. முறை உடல் வெறுமனே அரைப்புள்ளியால் மாற்றப்படுகிறது. முறையின் பெயருக்கு முன், abstractமுக்கிய சொல்லை எழுதுகிறோம். உதாரணமாக:

public abstract class ChessItem
{
   public int x, y; // Coordinates
   private int value; // The piece's value
   public int getValue() // Ordinary method that returns value field
   {
      return value;
   }

   public abstract void draw(); // Abstract method. The implementation is missing.
}

சுருக்க வகுப்பு

செயல்படுத்தப்படாத ஒவ்வொரு முறையும் சுருக்கமான முக்கிய சொல்லைக் கொண்டு குறிக்கப்படுகிறது. ஒரு வகுப்பில் ஒரு சுருக்க முறை இருந்தால், வகுப்பும் முக்கிய சொல்லால் குறிக்கப்படும் abstract.

பொருட்களை உருவாக்குவதை தடை செய்தல்

நீங்கள் ஒரு சுருக்க வகுப்பின் பொருட்களை உருவாக்க முடியாது . அத்தகைய குறியீடு வெறுமனே தொகுக்கப்படாது.

குறியீடு விளக்கம்
ChessItem item = new ChessItem();
item.draw();
இந்த குறியீடு தொகுக்கப்படவில்லை :
ChessItem item = new Queen();
item.draw();
ஆனால் நீங்கள் இதைச் செய்யலாம்

ஒரு சுருக்க வகுப்பைப் பெறுதல்

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

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

மேலும் இவை அனைத்தும் ஏன் அவசியம்? சுருக்க வகுப்புகள் ஏன் தேவை? அதற்குப் பதிலாக சாதாரணமானவற்றைப் பயன்படுத்தலாமல்லவா? மேலும் சுருக்க முறைகளுக்குப் பதிலாக, இரண்டு வெற்று சுருள் அடைப்புக்குறிகளை முறை உடலாக எழுத முடியவில்லையா?

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

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

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