CodeGym/Java Blog/சீரற்ற/ஜாவாவில் OOP கருத்துக்கள்
John Squirrels
நிலை 41
San Francisco

ஜாவாவில் OOP கருத்துக்கள்

சீரற்ற குழுவில் வெளியிடப்பட்டது
members
ஜாவாவின் மிகப்பெரிய பலங்களில் ஒன்று பொருள் சார்ந்த நிரலாக்கம் (OOP). அதனால்தான் இந்த மொழி மிகவும் பிரபலமானது மற்றும் எந்த அளவிலான திட்டங்களுக்கும் மிகவும் பொருத்தமானது. பொருள் சார்ந்த நிரலாக்கம் என்றால் என்ன? இது மந்திரம் அல்ல, ஆனால் நீங்கள் உண்மையிலேயே அதில் நுழைந்தால் அது மாயாஜாலமாகத் தோன்றும். OOP என்பது உங்கள் மென்பொருளை எவ்வாறு உருவாக்குவது என்பது பற்றியது. மென்பொருளை திறம்பட உருவாக்கவும் பயன்படுத்தவும் ஜாவா பொருள்களுக்கு இடையே சில குறிப்பிட்ட தொடர்புகள் மற்றும் உறவுகளை உருவாக்க அனுமதிக்கும் ஒரு கருத்தாக்கம் அல்லது ஜாவாவில் உள்ள ஓப் கருத்துகளின் தொகுப்பாகும். ஜாவாவில் OOP கருத்துக்கள் - 1கிளாசிக்கல் OOP 3 + 1 முக்கிய கருத்துகளை உள்ளடக்கியது. கிளாசிக்ஸுடன் ஆரம்பிக்கலாம்.

அந்த பொருள்

ஜாவா பொருள்கள் மற்றும் நிஜ உலக பொருள்கள் இரண்டு பண்புகளைக் கொண்டுள்ளன: நிலை மற்றும் நடத்தை.

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

இணைத்தல்

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

ஜாவாவில் இது எவ்வாறு செயல்படுகிறது:

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

ஜாவா குறியீட்டில் இணைப்பதற்கான எடுத்துக்காட்டு:

public class Student {
private int age;
private String name;

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

public class Test{
public static void main(String[] args) {
Student firstStudent = new Student();
firstStudent.setName("John");
// The name field is private, so you can no longer do this:  firstStudent.name = "John";
}
}

நீங்கள் ஏன் அடைப்பைப் பயன்படுத்த வேண்டும்?

உங்கள் குறியீட்டை மாற்றுவதை எளிதாக்குவதே முக்கிய காரணம். உங்களிடம் ஹாக்கி பள்ளிக்கான விண்ணப்பம் உள்ளது என்று கற்பனை செய்து பாருங்கள், மேலும் இரண்டு துறைகள் கொண்ட ஹாக்கி மாணவர் வகுப்பு உள்ளது, அது மாணவர் பள்ளியில் சேர்ந்தபோது அவரது பெயரையும் வயதையும் சேமிக்கிறது. இந்த மாதிரி ஏதாவது:
public class HockeyStudent {
public String name;
public  int ageOfEnrollment;
}
ageOfEnrollment புலம் பொதுவானது, பெறுபவர்கள் அல்லது செட்டர்கள் இல்லை... இந்த வகுப்பை பல வகுப்புகள் பயன்படுத்துகின்றன, மேலும் சில டெவலப்பர்கள் ஒரு முழு எண்ணாக புலம் போதாது என்று முடிவு செய்யும் வரை எல்லாம் சரியாக இருந்தது . ஒரு குழுவில் உள்ள சில ஹாக்கி வீரர்கள் தங்கள் சகாக்களை விட கிட்டத்தட்ட ஒரு வயது மூத்தவர்கள், எனவே அவர்கள் பிறந்த மாதத்தைப் பொறுத்து அவர்களை இரண்டு குழுக்களாகப் பிரிப்பது மிகவும் வசதியாக இருக்கும். எனவே வயதுஆஃப்என்ரோல்மென்ட் புலத்தை ஒரு முழு எண்ணாக (int[][]) மாற்ற வேண்டும் : முதல் எண் முழு ஆண்டுகளுக்கானது மற்றும் இரண்டாவது மாதங்கள். இப்போது நீங்கள் மாணவர் வகுப்பைப் பயன்படுத்தும் அனைத்து குறியீட்டையும் மறுசீரமைக்க வேண்டும் ! ஆனால் உங்கள் வயது பதிவு என்றால்புலம் தனிப்பட்டது மற்றும் உங்களிடம் பெறுபவர்கள் மற்றும் செட்டர்கள் உள்ளனர், பின்னர் எல்லாம் எளிதாக இருக்கும். ஒரு மாணவரின் வயதை அமைப்பதற்கான தேவை மாறினால், setAgeOfEnrollment() செட்டர் முறையில் லாஜிக்கைப் புதுப்பித்து , உங்கள் வகுப்புகள் எந்த பிரச்சனையும் இல்லாமல் மாணவரைப் பயன்படுத்துவதைத் தொடரலாம் ! இந்த உதாரணம் ஓரளவு திட்டமிடப்பட்டது, ஆனால் என்காப்சுலேஷனைப் பயன்படுத்துவது ஏன் ஒரு சிறந்த யோசனை என்பதை இது விளக்குகிறது என்று நம்புகிறேன்.

பரம்பரை

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

ஜாவாவில் இது எவ்வாறு செயல்படுகிறது:

  1. பெற்றோர் வகுப்பை உருவாக்கவும்.
  2. நீட்டிக்கப்பட்ட முக்கிய சொல்லைப் பயன்படுத்தி குழந்தை வகுப்பை உருவாக்கவும் .
  3. குழந்தை வகுப்பின் கட்டமைப்பாளரில், பெற்றோரின் புலங்களை அமைக்க super(parentField1, parentField2, ...) முறையைப் பயன்படுத்தவும்.

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

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

Student firstStudent = new Student();

மாணவர் வகுப்பின் இயல்புநிலை கட்டமைப்பாளரை அழைக்க புதிய முக்கிய சொல்லைப் பயன்படுத்துகிறீர்கள் : tudent() .

சில விதிகள்:

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

ஜாவா குறியீட்டில் உள்ள பரம்பரை உதாரணம்

தொலைபேசி வகுப்பை உருவாக்குவோம் .
public class Phone {
    int price;
    double weight;

// Constructor
public Phone(int price, double weight) {
        this.price = price;
        this.weight = weight;
    }

    void orderPhone(){
        System.out.println("Ordering phone...");
    }
}
நிச்சயமாக, வெவ்வேறு வகையான தொலைபேசிகள் உள்ளன, எனவே இரண்டு குழந்தை வகுப்புகளை உருவாக்குவோம்: ஒன்று ஆண்ட்ராய்டு தொலைபேசிகளுக்கும் இரண்டாவது ஐபோன்களுக்கும். பின்னர் பெற்றோரிடம் இல்லாத சில புலங்களையும் முறைகளையும் சேர்ப்போம். பெற்றோர் வகுப்பில் உள்ள புலங்களைத் துவக்க, கட்டமைப்பாளர்களை அழைக்க சூப்பர்() ஐப் பயன்படுத்துவோம் .

ஜாவாவில் பரம்பரை உதாரணம்

public class Android extends Phone {

// Some new fields
String androidVersion;
int screenSize;

    String secretDeviceCode;

// Constructor
    public Android(int price, double weight, String androidVersion, int screenSize, String secretDeviceCode) {
        super(price, weight); // Android inherits Phone’s fields

        //this - reference to the current object
        //super - reference to the parent object

        this.androidVersion = androidVersion;
        this.screenSize = screenSize;
        this.secretDeviceCode = secretDeviceCode;
    }

	// New Android-specific method, does not exist in the Phone class
    void installNewAndroidVersion() {
        System.out.println("installNewAndroidVersion invoked...");

    }

}

public class IPhone extends Phone {

    boolean fingerPrint;

    public IPhone(int price, double weight, boolean fingerPrint) {
        super(price, weight);
        System.out.println("IPhone constructor was invoked...");
        this.fingerPrint = fingerPrint;
    }

    void deleteIPhoneFromDb() {
        System.out.println("deleteIPhoneFromDb invoked...");
    }

@Override // This is about polymorphism, see below
void orderPhone(){
        System.out.println("Ordering my new iPhone and deleting the old one...");
    }
}
எனவே, மீண்டும் சொல்ல: ஜாவாவில், பெற்றோர் வகுப்பின் புலங்கள் மற்றும் முறைகளை மரபுரிமையாகப் பெறும் குழந்தை வகுப்புகளுடன் ஒரு வகுப்பை நீட்டிக்க பரம்பரை உங்களை அனுமதிக்கிறது. குறியீடு மறுபயன்பாட்டை அடைய இது ஒரு சிறந்த வழியாகும்.

பாலிமார்பிசம்

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

அது என்ன அர்த்தம் மற்றும் ஜாவாவில் எவ்வாறு செயல்படுகிறது:

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

முறை மீறல்

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

ஜாவா குறியீட்டில் பாலிமார்பிஸத்தின் எடுத்துக்காட்டு

public class Musician {
    String name;
    int age;

    // Default constructor
    public Musician() {
    }

    // Parameterized constructor
    public Musician(String name, int age) {
        this.name = name;
        this.age = age;
    }

    void play() {
        System.out.println("I am playing my instrument...");
    }
}
வெவ்வேறு இசைக்கலைஞர்கள் வெவ்வேறு கருவிகளைப் பயன்படுத்துகிறார்கள். இரண்டு குழந்தை வகுப்புகளை உருவாக்குவோம்: பியானோ கலைஞர் மற்றும் வயலின் கலைஞர் . பாலிமார்பிஸத்திற்கு நன்றி, ஒவ்வொன்றும் நாடகம்() முறையின் அதன் சொந்த பதிப்பை செயல்படுத்தும் . மேலெழுதும்போது, ​​@Override சிறுகுறிப்பைப் பயன்படுத்தலாம் , ஆனால் அது தேவையில்லை.
public class Pianist extends Musician {

    String favoritePianoType;

    public Pianist(String name, int age, String favoritePianoType) {
        super(name, age);
        this.favoritePianoType = favoritePianoType;
    }


    @Override
void play(){
        System.out.println("I am playing the piano...");
    }
}
வயலின் வாசிப்பவர் தனிப்பாடலாகவோ அல்லது இசைக்குழுவில் உறுப்பினராகவோ இருக்கலாம். எங்கள் நாடகம்() முறையை மேலெழுதும்போது அதைக் கருத்தில் கொள்வோம் .
public class Violinist extends Musician {
    boolean isSoloist;

public Violinist(String name, int age, boolean isSoloist) {
            super(name, age);
            this.isSoloist = isSoloist;
        }


    @Override
void play(){
if (isSoloist)
        System.out.println("I am playing the violin solo...");
else
System.out.println("I am playing the violin in an orchestra...");

    }
}
ஒரு டெமோ வகுப்பை உருவாக்குவோம் , அதில் மூன்று பொருள்களை உருவாக்குவோம், முன்பு உருவாக்கப்பட்ட வகுப்புகள் ஒவ்வொன்றின் ஒரு நிகழ்வு. என்ன முடிவு கிடைக்கும் என்று பார்ப்போம்.
public class Demo {
  public static void main(String[] args) {
  Musician musician = new Musician();
  Violinist violinist = new Violinist("John", 32, true);
  Pianist pianist = new Pianist("Glen", 30, "Acoustic");

  System.out.println("Musician said:");
  musician.play();
  System.out.println("Violinist said:");
  violinist.play();
  System.out.println("Pianist said:");
  pianist.play();
    }
}
நாம் பெறுவது இங்கே:
Musician said:
I am playing my instrument...
Violinist said:
I am playing the violin solo…
Pianist said:
I am playing the piano...
ஒவ்வொரு வயலின் கலைஞரும் பியானோ கலைஞரும் ஒரு இசைக்கலைஞர், ஆனால் ஒவ்வொரு இசைக்கலைஞரும் ஒரு வயலின் அல்லது பியானோ கலைஞர் அல்ல. அதாவது, நீங்கள் புதிதாக ஒன்றை உருவாக்கத் தேவையில்லை என்றால், நீங்கள் இசைக்கலைஞரின் விளையாட்டு முறையைப் பயன்படுத்தலாம். அல்லது சூப்பர் கீவேர்டைப் பயன்படுத்தி குழந்தையிடமிருந்து பெற்றோரின் முறையை அழைக்கலாம் . பியானிஸ்ட்டின் குறியீட்டில் அதைச் செய்வோம்:
public class Pianist extends Musician {

    String favoritePianoType;

    @Override
    void play(){
        super.play();
        System.out.println("I am playing the piano...");
    }
}
இப்போது டெமோ வகுப்பில் நமது முக்கிய() முறையை அழைப்போம் . இதோ முடிவு:
Musician said:
I am playing my instrument...
Violinist said:
I am playing the violin solo...
Pianist said:
I am playing my instrument...
I am playing the piano...

முறை ஓவர்லோடிங்

முறை ஓவர்லோடிங் என்பது ஒரே வகுப்பில் ஒரே பெயரில் பல்வேறு முறைகளைப் பயன்படுத்துவதாகும். அவற்றின் அளவுருக்களின் எண்ணிக்கை, வரிசை அல்லது வகைகளின் அடிப்படையில் அவை வேறுபட்டிருக்க வேண்டும். ஒரு பியானோ கலைஞரால் ஒலி பியானோ மற்றும் மின்சார பியானோ வாசிக்க முடியும் என்று வைத்துக்கொள்வோம். எலக்ட்ரிக் இசையை இசைக்க, இசைக்கலைஞருக்கு மின்சாரம் தேவை. இரண்டு வெவ்வேறு நாடகம்() முறைகளை உருவாக்குவோம் . அளவுருக்கள் இல்லாத முதலாவது, ஒலியியல் பியானோவிற்கும், இரண்டாவது அளவுருவுடன் மின்சாரம் உள்ளதா என்பதைக் குறிக்கும்.
public class Pianist extends Musician {

    String name;
    int age;
    String favoritePianoType;

    @Override
    void play(){
        super.play();
        System.out.println("I am playing the piano...");
    }
    void play(boolean isElectricity){
        if (isElectricity) {
            System.out.println("The electricity is on.");
            System.out.println("I am playing the piano...");
        }
        else System.out.println("I can't play this without electricity.");
    }
}
இதன் மூலம், இரண்டாவது ப்ளே (பூலியன்) முறையில் முதல் ப்ளே() முறையை நீங்கள் இந்த முறையில் பயன்படுத்தலாம்:
void play(boolean isElectricity){
        if (isElectricity) {
            System.out.println("The electricity is on.");
            play();
        }
        else System.out.println("I can't play this without electricity.");
    }
எங்கள் டெமோ வகுப்பில் சில வரிகளைச் சேர்ப்போம், எங்கள் ஓவர்லோடிங்கை நிரூபிக்க:
public class Demo {
    public static void main(String[] args) {

        Musician musician = new Musician();
        Violinist violinist = new Violinist("John", 23, true);
        Pianist pianist = new Pianist("Glen", 30, "Acoustic");

        System.out.println("Musician said:");
        musician.play();
        System.out.println("Violinist said:");
        violinist.play();
        System.out.println("Pianist said:");
        pianist.play();
        System.out.println("The pianist will now try the electric piano:");
        pianist.play(true);
        System.out.println("The electricity has been shut off. Now when trying the electric piano, the pianist says:");
        pianist.play(false);
    }
}
இதோ முடிவு:
Musician said:
I am playing my instrument...
Violinist said:
I am playing the violin solo...
Pianist said:
I am playing my instrument...
I am playing the piano...
The pianist will now try the electric piano:
The electricity is on.
I am playing my instrument...
I am playing the piano...
The electricity has been shut off. Now when trying the electric piano, the pianist says:
I can't play this without electricity.
அதன் அளவுருக்கள் மற்றும் பொருள் வகையின் அடிப்படையில் எந்த முறையைப் பயன்படுத்த வேண்டும் என்பதை Java அறிந்திருக்கிறது. அது பாலிமார்பிசம்.

சுருக்கம்

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

ஜாவாவில் இது எவ்வாறு செயல்படுகிறது:

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

  2. பொருள்களை உருவாக்குவதற்கான டெம்ப்ளேட் ஒரு வர்க்கம். இது ஒத்த பண்புகள் மற்றும் உள் அமைப்பு கொண்ட பொருள்களின் தொகுப்பின் விளக்கமாகும்.

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

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

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

ஜாவா குறியீட்டில் உள்ள இடைமுகத்தின் எடுத்துக்காட்டு

interface Human {
	public void struggle();
	public void protect();
}

interface Vulcan {
	int angleOfPointyEars;
	public void turnOffEmotions(boolean isOn);
	public void telepathy();
}
நீங்கள் ஒன்றுக்கு மேற்பட்ட இடைமுகங்களை செயல்படுத்தலாம்
The Spock class implements Human and Vulcan {
public void struggle() {
System.out.println("I am struggling...");
}
	public void protect() {
System.out.println("You are under my protection!);
}
public void turnOffEmotions(boolean isOn){
If (isOn) {
System.out.println("I am turning off my emotions.");
isOn= !isOn;
}
}
	public void telepathy() {
System.out.println("Connecting to your brain...");
}

}
தொடக்க மாணவர்களுக்கு, இது ஜாவாவில் உள்ள பொருள் சார்ந்த நிரலாக்கத்தின் அனைத்து முக்கிய கருத்துகளையும் உள்ளடக்கியது. 4 முக்கிய OOP கொள்கைகளைத் தவிர, ஜாவாவில் இணைப்பு, திரட்டல் மற்றும் கலவை ஆகியவையும் உள்ளன. நீங்கள் அவற்றை "கூடுதல் OOP கொள்கைகள்" என்று அழைக்கலாம். அவர்கள் தங்கள் தனி கட்டுரைக்கு தகுதியானவர்கள்.
கருத்துக்கள்
  • பிரபலமானவை
  • புதியவை
  • பழையவை
ஒரு கருத்தைத் தெரிவிக்க நீங்கள் உள்நுழைந்திருக்க வேண்டும்
இந்தப் பக்கத்தில் இதுவரை எந்தக் கருத்தும் வழங்கப்படவில்லை