CodeGym /Java Blog /சீரற்ற /வகுப்புகளுக்கு இடையிலான உறவுகள். பரம்பரை, கலவை மற்றும் தி...
John Squirrels
நிலை 41
San Francisco

வகுப்புகளுக்கு இடையிலான உறவுகள். பரம்பரை, கலவை மற்றும் திரட்டல்

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

ஜாவாவில் உள்ள பரம்பரை மற்றும் அதன் நன்மைகள்

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

public class Car {

   private String model;
   private int maxSpeed;
   private int yearOfManufacture;

   public Car(String model, int maxSpeed, int yearOfManufacture) {
       this.model = model;
       this.maxSpeed = maxSpeed;
       this.yearOfManufacture = yearOfManufacture;
   }


public void gas() {
       // Gas
   }

   	public void brake() {
       // Brake
   }
}


public class Truck extends Car {

   public Truck(String model, int maxSpeed, int yearOfManufacture) {
       super(model, maxSpeed, yearOfManufacture);
   }
}



public class Sedan extends Car {
   public Sedan(String model, int maxSpeed, int yearOfManufacture) {
       super(model, maxSpeed, yearOfManufacture);
   }
}
பல்வேறு வகையான கார்களுடன் பணிபுரியும் ஒரு குறிப்பிட்ட திட்டம் எங்களிடம் உள்ளது. நீங்கள் கார் ஆர்வலராக இல்லாவிட்டாலும், உலகில் பல வகையான கார்கள் இருப்பதை நீங்கள் அறிந்திருக்கலாம். :) அதன்படி, கார்களின் பொதுவான பண்புகளை ஒரு பொதுவான பெற்றோர் வகுப்பாக பிரிப்போம் Car. அனைத்து கார்களின் வகையையும் பொருட்படுத்தாமல் பொதுவானது என்ன? ஒவ்வொரு காருக்கும் ஒரு ஆண்டு உற்பத்தி, மாடல் பெயர் மற்றும் அதிகபட்ச வேகம் உள்ளது. modelஇந்த பண்புகளை , maxSpeed, மற்றும் புலங்களில் வைக்கிறோம் yearOfManufacture. நடத்தையைப் பொறுத்தவரை, எந்தவொரு காரும் முடுக்கிவிடலாம் மற்றும் மெதுவாகச் செல்லலாம். gas():) மற்றும் இந்த நடத்தையை நாங்கள் வரையறுக்கிறோம்brake()முறைகள். இதனால் நமக்கு என்ன பலன்கள் கிடைக்கும்? முதலில், இது குறியீட்டின் அளவைக் குறைக்கிறது. நிச்சயமாக, நாம் பெற்றோர் வர்க்கம் இல்லாமல் செய்ய முடியும். ஆனால் ஒவ்வொரு காரும் வேகம் மற்றும் வேகத்தை குறைக்க வேண்டும் என்பதால் , , , , மற்றும் வகுப்புகள் மற்றும் மற்ற ஒவ்வொரு கார் வகுப்பிலும் நாம் உருவாக்க gas()மற்றும் brake()முறைகளை உருவாக்க வேண்டும் . நாம் எவ்வளவு கூடுதல் குறியீடு எழுத வேண்டும் என்று கற்பனை செய்து பாருங்கள். , , மற்றும் புலங்களைப் பற்றி மறந்துவிடாதீர்கள் : பெற்றோர் வகுப்பை அகற்றினால், ஒவ்வொரு கார் வகுப்பிலும் அவற்றை உருவாக்க வேண்டும்! TruckSedanF1CarSportsCarmodelmaxSpeedyearOfManufactureவகுப்புகளுக்கு இடையிலான உறவுகள்.  பரம்பரை, கலவை மற்றும் திரட்டல் - 2எங்களிடம் இரண்டு டஜன் கார் வகுப்புகள் இருக்கும்போது, ​​நகல் குறியீட்டின் அளவு மிகவும் தீவிரமானது. பொதுவான புலங்கள் மற்றும் முறைகளை ("மாநிலங்கள்" மற்றும் "நடத்தைகள்" என்றும் அழைக்கப்படுகிறது) பெற்றோர் வகுப்பிற்கு நகர்த்துவது, நிறைய நேரத்தையும் இடத்தையும் சேமிக்க உதவுகிறது. மற்ற கார் வகைகளுக்கு இல்லாத தனித்துவமான பண்புகள் அல்லது முறைகள் சில வகைகளுக்கு இருந்தால், பெரிய விஷயமில்லை. நீங்கள் எப்போதும் ஒரு சந்ததி வகுப்பில் அவர்களை உருவாக்கலாம், எல்லோரிடமிருந்தும் தனித்தனியாக.

public class F1Car extends Car {

   public void pitStop() {

       // Only race cars make pit stops
   }

   public static void main(String[] args) {

       F1Car formula1Car = new F1Car();
       formula1Car.gas();
       formula1Car.pitStop();
       formula1Car.brake();
   }
}
உதாரணமாக ஃபார்முலா ஒன் ரேஸ் கார்களை பார்க்கலாம். அவர்களின் "உறவினர்கள்" போலல்லாமல், அவர்கள் ஒரு தனித்துவமான நடத்தை கொண்டவர்கள் - அவர்கள் அவ்வப்போது ஒரு பிட் ஸ்டாப் எடுக்கிறார்கள். இது நம்மைத் தொந்தரவு செய்யாது. பெற்றோர் வகுப்பில் உள்ள பொதுவான நடத்தையை நாங்கள் ஏற்கனவே விவரித்துள்ளோம் Car, மேலும் சந்ததி வகுப்புகளின் குறிப்பிட்ட நடத்தை அந்த வகுப்புகளில் சேர்க்கப்படலாம். வகுப்புகளுக்கு இடையிலான உறவுகள்.  பரம்பரை, கலவை மற்றும் திரட்டல் - 3புலங்களிலும் இதுவே உண்மை: குழந்தை வகுப்பில் தனித்துவமான பண்புகள் இருந்தால், குழந்தை வகுப்பிற்குள் இந்த புலங்களை அமைதியாக அறிவித்து, கவலைப்படுவதை நிறுத்துவோம். :) குறியீட்டை மீண்டும் பயன்படுத்தும் திறன் பரம்பரையின் முக்கிய நன்மை. புரோகிராமர்களுக்கு, கூடுதல் குறியீட்டை எழுதாமல் இருப்பது மிகவும் முக்கியம். உங்கள் வேலையில் இதை மீண்டும் மீண்டும் சந்திப்பீர்கள். முக்கியமான வேறு ஒன்றை நினைவில் கொள்ளவும்: ஜாவாவிற்கு பல மரபுகள் இல்லை. ஒவ்வொரு வகுப்பும் ஒரு வகுப்பை மட்டுமே பெறுகிறது. இதற்கான காரணங்களைப் பற்றி அடுத்த பாடங்களில் விரிவாகப் பேசுவோம். இப்போதைக்கு அதை மட்டும் நினைவில் வைத்துக்கொள்ளுங்கள். வேறு சில OOP மொழிகளில் இருந்து ஜாவாவை வேறுபடுத்துகிறது. எடுத்துக்காட்டாக, C++ பல மரபுகளை ஆதரிக்கிறது. பரம்பரையுடன் எல்லாம் அதிகமாகவோ அல்லது குறைவாகவோ தெளிவாக உள்ளது. தொடரலாம்.

கலவை மற்றும் திரட்டல்

வகுப்புகள் மற்றும் பொருட்களை ஒன்றாக இணைக்க முடியும். பரம்பரை என்பது "இஸ்-அ" உறவை விவரிக்கிறது. சிங்கம் ஒரு விலங்கு. அத்தகைய உறவு பரம்பரையைப் பயன்படுத்தி எளிதில் வெளிப்படுத்தப்படுகிறது, Animalபெற்றோர் வர்க்கம் மற்றும் Lionகுழந்தை எங்கே. இருப்பினும், எல்லா உறவுகளும் இவ்வாறு விவரிக்கப்படவில்லை. எடுத்துக்காட்டாக, விசைப்பலகை கண்டிப்பாக கணினியுடன் தொடர்புடையது, ஆனால் அது கணினி அல்ல . கைகள் எப்படியாவது ஒரு நபருடன் தொடர்புடையவை, ஆனால் அவை ஒரு நபர் அல்ல. இந்த சந்தர்ப்பங்களில், எங்களுக்கு மற்றொரு வகையான உறவு உள்ளது: "is-a" அல்ல, ஆனால் "has-a". ஒரு கை ஒரு நபர் அல்ல, ஆனால் ஒரு நபரின் ஒரு பகுதியாகும். விசைப்பலகை என்பது கணினி அல்ல, ஆனால் கணினியின் ஒரு பகுதி. கலவை மற்றும் திரட்டலைப் பயன்படுத்தி ஒரு உறவுமுறையை குறியீட்டில் விவரிக்கலாம். வித்தியாசம் உறவின் "கண்டிப்பாக" உள்ளது. ஒரு எளிய உதாரணம் தருவோம்: எங்களிடம் ஒரு Carவகுப்பு உள்ளது. ஒவ்வொரு காருக்கும் ஒரு இயந்திரம் உள்ளது. கூடுதலாக, ஒவ்வொரு காருக்கும் பயணிகள் உள்ளனர். Engine engineமற்றும் புலங்களுக்கு இடையே உள்ள அடிப்படை வேறுபாடு என்ன Passenger[] passengers? பயணிகள் Aகாரில் அமர்ந்திருப்பதால், பயணிகள் காரில் இல்லை Bஎன்று அர்த்தமல்ல. Cஒரு கார் பல பயணிகளுக்கு ஒத்திருக்கும். மேலும், அனைத்து பயணிகளும் ஒரு காரை விட்டு இறங்கினால், அது இன்னும் சீராக இயங்கும். Carவகுப்பிற்கும் அணிவரிசைக்கும் இடையிலான உறவு Passenger[] passengersகுறைவான கண்டிப்பானது. இது திரட்டுதல் என்று அழைக்கப்படுகிறது . திரட்டலுக்கு இது மற்றொரு சிறந்த உதாரணம். எங்களிடம் ஒரு Studentவகுப்பு மற்றும் ஒரு உள்ளது என்று வைத்துக்கொள்வோம்StudentGroupவர்க்கம். ஒரு மாணவர் பல மாணவர் அமைப்புகளில் சேரலாம்: ஒரு இயற்பியல் கிளப், ஒரு ஸ்டார் வார்ஸ் ரசிகர் மன்றம் மற்றும்/அல்லது ஒரு மாணவர் நகைச்சுவை கிளப். கலவை என்பது ஒரு கடுமையான உறவுமுறை. கலவையைப் பயன்படுத்தும் போது, ​​ஒரு பொருள் சில பொருளின் ஒரு பகுதியாகும் மற்றும் அதே வகையிலான மற்றொரு பொருளுக்கு சொந்தமானதாக இருக்க முடியாது. எளிமையான உதாரணம் கார் எஞ்சின். ஒரு இயந்திரம் ஒரு காரின் ஒரு பகுதியாகும், மற்றொரு காரின் பகுதியாக இருக்க முடியாது. Carநீங்கள் பார்க்க முடியும் என, அவர்களின் உறவு மற்றும் இடையே உள்ள உறவை விட மிகவும் கடுமையானது Passengers. வகுப்புகளுக்கு இடையிலான உறவுகள்.  பரம்பரை, கலவை மற்றும் திரட்டல் - 4
கருத்துக்கள்
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION