CodeGym /Java Blog /சீரற்ற /ஜாவாவில் எனும் வகுப்பு
John Squirrels
நிலை 41
San Francisco

ஜாவாவில் எனும் வகுப்பு

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

public class DayOfWeek {

   private String title;

   public DayOfWeek(String title) {
       this.title = title;
   }

   public static void main(String[] args) {
       DayOfWeek dayOfWeek = new DayOfWeek("Saturday");
       System.out.println(dayOfWeek);
   }

   @Override
   public String toString() {
       return "DayOfWeek{" +
               "title='" + title + '\'' +
               '}';
   }
}
எல்லாம் சரியாக இருப்பதாகத் தெரிகிறது, ஆனால் ஒரு சிக்கல் உள்ளது: DayOfWeek வகுப்பின் கட்டமைப்பாளருக்கு நீங்கள் எந்த உரையையும் அனுப்பலாம் . அதாவது "தவளை", "கிளவுட்" அல்லது "azaza322" என்ற பெயரில் வாரத்தின் ஒரு நாளை யாராவது உருவாக்கலாம். வாரத்தில் 7 உண்மையான நாட்கள் மட்டுமே இருப்பதால், அவை ஒவ்வொன்றும் ஒரு குறிப்பிட்ட பெயரைக் கொண்டிருப்பதால், நாங்கள் எதிர்பார்க்கும் நடத்தை இது தெளிவாக இல்லை. எனவே, DayOfWeek வகுப்பிற்கான சாத்தியமான மதிப்புகளின் வரம்பை எப்படியாவது கட்டுப்படுத்துவதே எங்கள் பணி . ஜாவா 1.5 வருவதற்கு முன்பு, டெவலப்பர்கள் இந்த சிக்கலுக்கு தங்கள் சொந்த தீர்வுகளை உருவாக்க வேண்டியிருந்தது, ஏனெனில் மொழியில் ஆயத்த தீர்வு இல்லை. அந்த நாட்களில், புரோகிராமர்கள் மதிப்புகளின் எண்ணிக்கையை குறைக்க வேண்டும் என்றால், அவர்கள் இதைச் செய்தார்கள்:

public class DayOfWeek {

   private String title;

   private DayOfWeek(String title) {
       this.title = title;
   }

   public static DayOfWeek SUNDAY = new DayOfWeek("Sunday");
   public static DayOfWeek MONDAY = new DayOfWeek("Monday");
   public static DayOfWeek TUESDAY = new DayOfWeek("Tuesday");
   public static DayOfWeek WEDNESDAY = new DayOfWeek("Wednesday");
   public static DayOfWeek THURSDAY = new DayOfWeek("Thursday");
   public static DayOfWeek FRIDAY = new DayOfWeek("Friday");
   public static DayOfWeek SATURDAY = new DayOfWeek("Saturday");

   @Override
   public String toString() {
       return "DayOfWeek{" +
               "title='" + title + '\'' +
               '}';
   }
}
நீங்கள் கவனிக்க வேண்டியது இங்கே:
  • கட்டமைப்பாளர் தனிப்பட்டவர். ஒரு கட்டமைப்பாளர் தனிப்பட்ட மாற்றியமைப்புடன் குறிக்கப்பட்டால் , ஒரு பொருளை உருவாக்க அதைப் பயன்படுத்த முடியாது. வகுப்பில் ஒரே ஒரு கட்டமைப்பாளர் இருப்பதால், DayOfWeek பொருட்களை உருவாக்க முடியாது.

    
    	public class Main {
    
       		public static void main(String[] args) {
          
           			DayOfWeek sunday = new DayOfWeek(); // Error!
       		}
    }
    

  • நிச்சயமாக, வகுப்பில் தேவையான பொது நிலையான பொருள்கள் உள்ளன , அவை சரியாக துவக்கப்பட்டன (வாரத்தின் நாட்களின் சரியான பெயர்களைப் பயன்படுத்தி).

    இது இந்த பொருட்களை மற்ற வகுப்புகளில் பயன்படுத்த அனுமதித்தது.

    
    	public class Person {
    
       		public static void main(String[] args) {
    
           			DayOfWeek sunday = DayOfWeek.SUNDAY;
    
           			System.out.println(sunday);
      		 }
    }
    

    வெளியீடு:

    DayOfWeek{title = 'ஞாயிறு'}

இந்த அணுகுமுறை பெரும்பாலும் சிக்கலை தீர்க்கிறது. எங்களிடம் வாரத்தில் 7 நாட்கள் உள்ளன, மேலும் யாரும் புதியவற்றை உருவாக்க முடியாது. இந்த தீர்வை ஜோசுவா ப்ளாச் தனது எஃபெக்டிவ் ஜாவா புத்தகத்தில் வழங்கினார் . சொல்லப்போனால், அந்த புத்தகம் மிகவும் அருமையாக உள்ளது மற்றும் எந்த ஜாவா டெவலப்பர்களும் படிக்க வேண்டிய புத்தகம். Enum வகுப்பை எவ்வாறு பயன்படுத்துவது - 2ஜாவா 1.5 இன் வெளியீட்டில், மொழி அத்தகைய சூழ்நிலைகளுக்கு ஒரு ஆயத்த தீர்வைப் பெற்றது: ஜாவா எனம்ஸ் . ஜாவாவில் எனும் ஒரு வகுப்பு. இது போன்ற சிக்கல்களைத் தீர்ப்பதற்கு இது சிறப்பாக "நன்றாக வடிவமைக்கப்பட்டுள்ளது", அதாவது குறிப்பிட்ட வரையறுக்கப்பட்ட மதிப்புகளை உருவாக்குகிறது. ஜாவாவின் படைப்பாளிகள் ஏற்கனவே தயாராக எடுத்துக்காட்டுகளை வைத்திருந்தனர் (உதாரணமாக, C ஏற்கனவே enum இருந்தது ), அதனால் அவர்களால் சிறந்த மாறுபாட்டை உருவாக்க முடிந்தது.

அப்படியானால் ஜாவா என்றால் என்ன?

நமது DayOfWeek உதாரணத்தை மீண்டும் பார்க்கலாம்:

public enum DayOfWeek {

   SUNDAY,
   MONDAY,
   TUESDAY,
   WEDNESDAY,
   THURSDAY,
   FRIDAY,
   SATURDAY
}
இப்போது அது மிகவும் எளிமையானதாகத் தெரிகிறது :) உள்நாட்டில், எங்கள் Enum 7 நிலையான மாறிலிகளைக் கொண்டுள்ளது. அதை நாம் ஒரு திட்டத்தை செயல்படுத்த பயன்படுத்த முடியும். உதாரணமாக, ஒரு மாணவர் இன்று பள்ளிக்குச் செல்ல வேண்டுமா என்பதைத் தீர்மானிக்கும் திட்டத்தை எழுதுவோம். எங்கள் மாணவர் தினசரி அட்டவணையைப் பெறுவார், இது மாணவர் அட்டவணை வகுப்பால் குறிப்பிடப்படுகிறது:

public class StudentSchedule {

   private DayOfWeek dayOfWeek;
   // ... other fields


   public DayOfWeek getDayOfWeek() {
       return dayOfWeek;
   }

   public void setDayOfWeek(DayOfWeek dayOfWeek) {
       this.dayOfWeek = dayOfWeek;
   }
}
அட்டவணை பொருளின் dayOfWeek மாறி இன்று எந்த நாள் என்பதை தீர்மானிக்கிறது. இதோ எங்கள் மாணவர் வகுப்பு:

public class Student {

   private StudentSchedule schedule;
   private boolean goToSchool;

   public void wakeUp() {
      
       if (this.schedule.getDayOfWeek() == DayOfWeek.SUNDAY) {
           System.out.println("Hooray, you can sleep more!");
       } else {
           System.out.println("Damn, time for school again :(");
       }
   }
}
வேக்அப்() முறையில் , மாணவர் அடுத்து என்ன செய்ய வேண்டும் என்பதைத் தீர்மானிக்க Java Enum ஐப் பயன்படுத்துகிறோம் . DayOfWeek இல் ஒவ்வொரு துறையைப் பற்றிய விவரங்களையும் நாங்கள் வழங்கவில்லை , மேலும் எங்களுக்கு இது தேவையில்லை: வாரத்தின் நாட்கள் எவ்வாறு செயல்பட வேண்டும் என்பது தெளிவாகத் தெரிகிறது. அதன் தற்போதைய வடிவத்தில் இதைப் பயன்படுத்தினால், எங்கள் குறியீட்டில் என்ன நடக்கிறது என்பதை எந்த டெவலப்பரும் புரிந்துகொள்வார்கள். Enum இன் வசதிக்கான மற்றொரு உதாரணம் , அதன் மாறிலிகளை ஸ்விட்ச் ஸ்டேட்மென்ட்டுடன் பயன்படுத்தலாம். எடுத்துக்காட்டாக, ஒரு கண்டிப்பான உணவுக்கான திட்டத்தை எழுதுவோம், அதில் உணவுகள் நாளுக்கு நாள் திட்டமிடப்படுகின்றன:

public class VeryStrictDiet {
   public void takeLunch(DayOfWeek dayOfWeek) {
       switch (dayOfWeek) {
           case SUNDAY:
               System.out.println("Sunday Dinner! You can even enjoy something a little sweet today.");
               break;
           case MONDAY:
               System.out.println("Lunch for Monday: chicken noodle soup!");
               break;
           case TUESDAY:
               System.out.println("Tuesday, today it's celery soup :(");
               break;
               //... and so on to the end
       }
   }
}
ஜாவா 1.5க்கு முன் பயன்படுத்தப்பட்ட பழைய தீர்வை விட இது Enums நன்மைகளில் ஒன்றாகும் - பழைய தீர்வை ஸ்விட்ச்சுடன் பயன்படுத்த முடியாது . எனம் பற்றி நீங்கள் வேறு என்ன தெரிந்து கொள்ள வேண்டும் ? Enum என்பது அனைத்து சாத்தியக்கூறுகளையும் கொண்ட ஒரு உண்மையான வகுப்பாகும். எடுத்துக்காட்டாக, வாரத்தின் நாட்களின் தற்போதைய செயலாக்கம் போதுமானதாக இல்லை என்றால், நீங்கள் மாறிகள், கட்டமைப்பாளர்கள் மற்றும் முறைகளை DayOfWeek இல் சேர்க்கலாம் :

public enum DayOfWeek {
  
   SUNDAY ("Sunday"),
   MONDAY ("Monday"),
   TUESDAY ("Tuesday"),
   WEDNESDAY ("Wednesday"),
   THURSDAY ("Thursday"),
   FRIDAY ("Friday"),
   SATURDAY ("Saturday");

   private String title;

   DayOfWeek(String title) {
       this.title = title;
   }

   public String getTitle() {
       return title;
   }

   @Override
   public String toString() {
       return "DayOfWeek{" +
               "title='" + title + '\'' +
               '}';
   }
}
இப்போது எங்கள் Enum மாறிலிகள் தலைப்பு புலம், பெறுபவர் மற்றும் ஸ்ட்ரிங் முறைக்கு மேலெழுதப்பட்டவை. வழக்கமான வகுப்புகளுடன் ஒப்பிடும்போது, ​​எனுமில் ஒரு தீவிர வரம்பு வைக்கப்பட்டுள்ளது - இது மரபுரிமையாக இருக்க முடியாது. கூடுதலாக, கணக்கீடுகள் சிறப்பியல்பு முறைகளைக் கொண்டுள்ளன:
  • மதிப்புகள்() : Enum இல் உள்ள அனைத்து மதிப்புகளின் வரிசையை வழங்குகிறது :

    
    public static void main(String[] args) {
       		System.out.println(Arrays.toString(DayOfWeek.values()));
    }
    

    வெளியீடு:

    [DayOfWeek{title = 'ஞாயிறு'}, DayOfWeek{title = 'திங்கள்'}, DayOfWeek{title = 'செவ்வாய்'}, DayOfWeek{title = 'புதன்கிழமை'}, DayOfWeek{title = 'வியாழன்'}, DayOfWeek{title = 'வெள்ளிக்கிழமை'}, DayOfWeek{title = 'சனிக்கிழமை'}]

  • ordinal() : மாறிலியின் வரிசை எண்ணை வழங்குகிறது. எண்கள் பூஜ்ஜியத்தில் இருந்து தொடங்குகிறது:

    
    	public static void main(String[] args) {
    
       		int sundayIndex = DayOfWeek.SUNDAY.ordinal();
       		System.out.println(sundayIndex);
    }
    

    வெளியீடு:

    0

  • valueOf() : அனுப்பப்பட்ட பெயருடன் தொடர்புடைய Enum பொருளை வழங்குகிறது:

    
    public static void main(String[] args) {
       DayOfWeek sunday = DayOfWeek.valueOf("SUNDAY");
       System.out.println(sunday);
    }
    

    வெளியீடு:

    DayOfWeek{title = 'ஞாயிறு'}

குறிப்பு:Enum புலங்களைக் குறிப்பிட பெரிய எழுத்துக்களைப் பயன்படுத்துகிறோம் . இவை மாறிலிகள் ஆதலால் கேமல்கேஸை விட அனைத்து தொப்பிகளையும் பயன்படுத்துகின்றன .
கருத்துக்கள்
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION