ஜாவாவில் உள்ள திடக் கோட்பாடுகளைப் பற்றி நீங்கள் தெரிந்து கொள்ள வேண்டியது எல்லாம்



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

உலகில் (OOP), பல வடிவமைப்பு வழிகாட்டுதல்கள், வடிவங்கள் அல்லது கொள்கைகள் உள்ளன. இந்த கொள்கைகளில் ஐந்து பொதுவாக ஒன்றாக தொகுக்கப்படுகின்றன மற்றும் அவை SOLID என்ற சுருக்கத்தால் அறியப்படுகின்றன. இந்த ஐந்து கொள்கைகளில் ஒவ்வொன்றும் குறிப்பிட்ட ஒன்றை விவரிக்கும்போது, ​​அவை ஒன்றுடன் ஒன்று ஒன்றுடன் ஒன்று தத்தெடுப்பதை குறிக்கிறது அல்லது மற்றொன்றை ஏற்றுக்கொள்ள வழிவகுக்கிறது. இந்த கட்டுரையில் ஜாவாவில் SOLID கோட்பாடுகளை புரிந்துகொள்வோம்.

ஜாவாவில் SOLID கோட்பாடுகளின் வரலாறு

ராபர்ட் சி. மார்ட்டின் ஐந்து பொருள் சார்ந்த வடிவமைப்புக் கொள்கைகளை வழங்கினார், மேலும் “S.O.L.I.D” என்ற சுருக்கமும் இதற்குப் பயன்படுத்தப்படுகிறது. S.O.L.I.D இன் அனைத்து கொள்கைகளையும் நீங்கள் ஒருங்கிணைந்த முறையில் பயன்படுத்தும்போது, ​​எளிதாக நிர்வகிக்கக்கூடிய மென்பொருளை உருவாக்குவது உங்களுக்கு எளிதாகிறது. S.O.L.I.D ஐப் பயன்படுத்துவதற்கான பிற அம்சங்கள்:





  • இது குறியீடு வாசனையைத் தவிர்க்கிறது.
  • விரைவாக பயனற்ற குறியீடு.
  • தகவமைப்பு அல்லது சுறுசுறுப்பான மென்பொருள் மேம்பாட்டைச் செய்ய முடியும்.

உங்கள் குறியீட்டில் S.O.L.I.D இன் கொள்கையைப் பயன்படுத்தும்போது, ​​நீங்கள் திறமையான மற்றும் பயனுள்ள குறியீட்டை எழுதத் தொடங்குகிறீர்கள்.



S.O.L.I.D இன் பொருள் என்ன?

திடமானது ஜாவாவின் ஐந்து கொள்கைகளை குறிக்கிறது:

  • எஸ் : ஒற்றை பொறுப்புக் கொள்கை
  • அல்லது : திறந்த மூடிய கொள்கை
  • எல் : லிஸ்கோவ் மாற்றுக் கொள்கை
  • நான் : இடைமுகப் பிரித்தல் கொள்கை
  • டி : சார்பு தலைகீழ் கொள்கை

இந்த வலைப்பதிவில், ஜாவாவின் ஐந்து SOLID கொள்கைகளையும் விரிவாக விவாதிப்போம்.



ஜாவாவில் ஒற்றை பொறுப்புக் கொள்கை

அது என்ன சொல்கிறது?

ராபர்ட் சி. மார்ட்டின் ஒரு வர்க்கத்திற்கு ஒரே ஒரு பொறுப்பு மட்டுமே இருக்க வேண்டும் என்று விவரிக்கிறார்.

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

கொள்கையை ஒரு எடுத்துக்காட்டுடன் நன்கு புரிந்து கொள்ள முடியும். பின்வரும் செயல்பாடுகளைச் செய்யும் ஒரு வகுப்பு இருப்பதாக கற்பனை செய்து பாருங்கள்.

  • தரவுத்தளத்துடன் இணைக்கப்பட்டுள்ளது

  • தரவுத்தள அட்டவணைகளிலிருந்து சில தரவைப் படியுங்கள்

  • இறுதியாக, அதை ஒரு கோப்பில் எழுதுங்கள்.

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

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

இந்த கொள்கை ஏன் தேவைப்படுகிறது?

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

இந்த கொள்கையை தெளிவுபடுத்துவதற்கான ஒரு எடுத்துக்காட்டு:

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

பொது வகுப்பு UserSettingService {public void changeEmail (பயனர் பயனர்) {if (checkAccess (user)) {// மாற்றுவதற்கான விருப்பத்தை வழங்கவும்}} பொது பூலியன் சரிபார்ப்பு அணுகல் (பயனர் பயனர்) {// பயனர் செல்லுபடியாகும் என்பதை சரிபார்க்கவும். }}

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

பொது வகுப்பு UserSettingService {பொது வெற்றிட மாற்றம் மின்னஞ்சல் (பயனர் பயனர்) {if (SecurityService.checkAccess (பயனர்)) {// மாற்றுவதற்கான விருப்பத்தை வழங்கவும்}}} பொது வகுப்பு பாதுகாப்பு சேவை {பொது நிலையான பூலியன் சரிபார்ப்பு அணுகல் (பயனர் பயனர்) {// அணுகலை சரிபார்க்கவும். }}

ஜாவாவில் மூடிய கோட்பாட்டைத் திறக்கவும்

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

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

  • வகுப்பிலிருந்து மரபுரிமை

  • வகுப்பிலிருந்து தேவையான நடத்தைகளை மேலெழுதும்

  • வகுப்பின் சில நடத்தைகளை விரிவுபடுத்துதல்

திறந்த-மூடிய கொள்கையின் சிறந்த எடுத்துக்காட்டு உலாவிகளின் உதவியுடன் புரிந்து கொள்ள முடியும். உங்கள் குரோம் உலாவியில் நீட்டிப்புகளை நிறுவியதை நினைவில் கொள்கிறீர்களா?

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

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

இந்த கொள்கை ஏன் தேவைப்படுகிறது?

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

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

பொது வகுப்பு செவ்வகம் {பொது இரட்டை நீளம் பொது இரட்டை அகலம்}

அடுத்து இந்த செவ்வகத்தின் பரப்பளவைக் கணக்கிட ஒரு வகுப்பை உருவாக்குகிறோம்இது ஒரு முறை கணக்கிடும் செவ்வக ஏரியாஇது செவ்வகத்தை எடுக்கும்உள்ளீட்டு அளவுருவாக மற்றும் அதன் பகுதியைக் கணக்கிடுகிறது.

பொது வகுப்பு ஏரியா கால்குலேட்டர் {பொது இரட்டை கணக்கீடு செவ்வகம்அரியா (செவ்வக செவ்வகம்) {திரும்ப செவ்வகம்.நீளம் * செவ்வகம்.அகலம்}}

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

பொது வகுப்பு வட்டம் {பொது இரட்டை ஆரம்}

பின்னர் நாங்கள் ஏரியல்கல்குலேட்டரை மாற்றுகிறோம்ஒரு புதிய முறையின் மூலம் வட்டக் கணக்கீடுகளைச் சேர்க்க வர்க்கம் கணக்கிடுக சுழற்சிஅரியா ()

பொது வகுப்பு ஏரியா கால்குலேட்டர் {பொது இரட்டை கணக்கீடு செவ்வகம் (செவ்வகம் செவ்வகம்) {திரும்ப செவ்வகம்.நீளம் * செவ்வகம்.அகலம்} பொது இரட்டை கணக்கீடு வட்ட வட்ட (வட்டம் வட்டம்) {வருவாய் (22/7) * வட்டம்.ராடியஸ் * வட்டம்.ராடியஸ்}}

எவ்வாறாயினும், மேலே எங்கள் தீர்வை நாங்கள் வடிவமைத்த விதத்தில் குறைபாடுகள் இருந்தன என்பதை நினைவில் கொள்க.

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

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

திறந்த / மூடிய கொள்கைக்கு இணங்க மேலே வடிவமைப்பின் மாற்றம்:

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

லூப் நிரல் எடுத்துக்காட்டுகளுக்கான ஜாவா
பொது இடைமுகம் வடிவம் {பொது இரட்டை கணக்கீடு ஏரியா ()} பொது வகுப்பு செவ்வகம் செயல்படுத்துகிறது வடிவம் {இரட்டை நீளம் இரட்டை அகலம் பொது இரட்டை கணக்கீடு ஏரியா () {வருவாய் நீளம் * அகலம்}} பொது வகுப்பு வட்டம் வடிவம் {பொது இரட்டை ஆரம் பொது இரட்டை கணக்கீடு ஏரியா () {திரும்ப (22) / 7) * ஆரம் * ஆரம்}}

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

பொது வகுப்பு ஏரியா கால்குலேட்டர் {பொது இரட்டை கணக்கீடு ஷேப்அரியா (வடிவ வடிவம்) {திரும்ப வடிவம். கணக்கிடு ஏரியா ()}}

இந்த ஏரியா கால்குலேட்டர்வகுப்பு இப்போது மேலே குறிப்பிட்டுள்ள எங்கள் வடிவமைப்பு குறைபாடுகளை முழுமையாக நீக்குகிறது மற்றும் திறந்த-மூடிய கோட்பாட்டை கடைபிடிக்கும் ஒரு சுத்தமான தீர்வை வழங்குகிறது. ஜாவாவில் உள்ள பிற SOLID கோட்பாடுகளுடன் செல்லலாம்

ஜாவாவில் லிஸ்கோவ் மாற்றுக் கொள்கை

ராபர்ட் சி. மார்ட்டின் அதை விவரிக்கிறார், பெறப்பட்ட வகைகள் அவற்றின் அடிப்படை வகைகளுக்கு முற்றிலும் மாற்றாக இருக்க வேண்டும்.

லிஸ்கோவ் மாற்றுக் கொள்கை q (x) ஐ ஒரு சொத்தாகக் கருதுகிறது, இது T இன் வகையைச் சேர்ந்த x இன் நிறுவனங்களைப் பற்றி நிரூபிக்கப்படுகிறது. இப்போது, ​​இந்த கொள்கையின்படி, q (y) இப்போது S வகைக்கு சொந்தமான y பொருள்களுக்கு நிரூபிக்கப்பட வேண்டும், மற்றும் எஸ் உண்மையில் டி இன் துணை வகை. நீங்கள் இப்போது குழப்பமடைகிறீர்களா, லிஸ்கோவ் மாற்றுக் கொள்கை உண்மையில் என்ன அர்த்தம் என்று தெரியவில்லையா? அதன் வரையறை சற்று சிக்கலானதாக இருக்கலாம், ஆனால் உண்மையில், இது மிகவும் எளிதானது. ஒரே விஷயம் என்னவென்றால், ஒவ்வொரு துணைப்பிரிவும் அல்லது பெறப்பட்ட வகுப்பும் அவற்றின் பெற்றோர் அல்லது அடிப்படை வகுப்பிற்கு மாற்றாக இருக்க வேண்டும்.

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

இந்த கொள்கை ஏன் தேவைப்படுகிறது?

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

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

பொது வகுப்பு செவ்வகம் {தனியார் எண்ணாக நீளம் தனியார் எண்ணாக அகலம் பொது எண்ணாக கிடைக்கும் நீளம் () {வருவாய் நீளம்} பொது வெற்றிட தொகுப்பு நீளம் (முழு நீளம்) {this.length = length} public int getBreadth () {திரும்ப அகலம்} பொது வெற்றிட செட் அகலம் (int அகலம்) { this.breadth = அகலம்} public int getArea () this இதைத் தரவும். நீளம் * this.breadth}}

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

பொது வகுப்பு சதுக்கம் செவ்வகத்தை நீட்டிக்கிறது {பொது வெற்றிட செட் அகலம் (முழு அகலம்) {super.setBreadth (அகலம்) super.setLength (அகலம்)} பொது வெற்றிட தொகுப்பு நீளம் (முழு நீளம்) {super.setLength (நீளம்) super.setBreadth (நீளம்)}}

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

பொது வகுப்பு LSPDemo {public void calculateArea (செவ்வகம் r) {r.setBreadth (2) r.setLength (3) r.getArea () == 6: printError ('area', r) வலியுறுத்தல் r.getLength () == 3: printError ('length', r) r.getBreadth () == 2: printError ('அகலம்', r)} private string printError (சரம் பிழைஇடென்டிஃபர், செவ்வகம் r) {திரும்பவும் '+ errorIdentifer +' இன் எதிர்பாராத மதிப்பு உதாரணமாக '+ r.getClass (). getName ()} பொது நிலையான வெற்றிட மெயின் (சரம் [] ஆர்க்ஸ்) {LSPDemo lsp = புதிய LSPDemo () // செவ்வகத்தின் ஒரு நிகழ்வு lsp.calculateArea (புதிய செவ்வகம் ()) // சதுக்கத்தின் ஒரு உதாரணம் lsp.calcularArea (புதிய சதுக்கம் ()) pass pass

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

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

  1. நீளம் எப்போதுமே முறைக்கான உள்ளீடாக அமைக்கப்பட்ட நீளத்திற்கு சமமாக இருக்க வேண்டும், setLength
  2. அகலம் எப்போதும் முறை, setBreadth க்கு உள்ளீடாக அனுப்பப்பட்ட அகலத்திற்கு சமமாக இருக்க வேண்டும்
  3. பரப்பளவு எப்போதும் நீளம் மற்றும் அகலத்தின் தயாரிப்புக்கு சமமாக இருக்க வேண்டும்

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

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

இடைமுகப் பிரித்தல் கோட்பாடு

ராபர்ட் சி. மார்ட்டின் அதை விவரிக்கிறார், வாடிக்கையாளர்கள் தேவையற்ற முறைகளை செயல்படுத்த கட்டாயப்படுத்தக்கூடாது, அதை அவர்கள் பயன்படுத்த மாட்டார்கள்.

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

எடுத்துக்காட்டாக, பதிவுகள் எழுதுவதற்கும் படிப்பதற்கும் ஒற்றை பதிவு இடைமுகம் ஒரு தரவுத்தளத்திற்கு பயனுள்ளதாக இருக்கும், ஆனால் ஒரு கன்சோலுக்கு அல்ல. பதிவுகள் படித்தல் ஒரு கன்சோல் லாகருக்கு எந்த அர்த்தமும் இல்லை. ஜாவா கட்டுரையில் இந்த SOLID கோட்பாடுகளுடன் நகரும்.

இந்த கொள்கை ஏன் தேவைப்படுகிறது?

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

இப்போது உணவகத்திற்கான ஜாவா இடைமுகத்தை உருவாக்கி அதற்கு உணவக இன்டர்ஃபேஸ்.ஜாவா என்று பெயரிடுவோம்.

பொது இடைமுகம் உணவக இன்டர்ஃபேஸ் {பொது வெற்றிடத்தை ஏற்றுக்கொள்ஆன்லைன் ஆர்டர் () பொது வெற்றிடத்தை எடுத்துக் கொள்ளுங்கள் டெலிபோன்ஆர்ட்டர் () பொது வெற்றிட ஊதியம்ஆன்லைன் () பொது வெற்றிட நடைஇன் கஸ்டமர் ஆர்டர் () பொது வெற்றிட ஊதியம்இன் பர்சன் ()

ஆன்லைன் ஆர்டரை ஏற்றுக்கொள்வது, தொலைபேசி ஒழுங்கை எடுப்பது, நடைபயிற்சி வாடிக்கையாளரிடமிருந்து ஆர்டர்களை ஏற்றுக்கொள்வது, ஆன்லைன் கட்டணத்தை ஏற்றுக்கொள்வது மற்றும் கட்டணத்தை நேரில் ஏற்றுக்கொள்வது போன்ற 5 முறைகள் உணவக இன்டர்ஃபேஸில் வரையறுக்கப்பட்டுள்ளன.

ஆன்லைன் வாடிக்கையாளர்களுக்கான உணவக இன்டர்ஃபேஸை OnlineClientImpl.java ஆக செயல்படுத்துவதன் மூலம் தொடங்குவோம்

பொது வகுப்பு OnlineClientImpl உணவக இன்டர்ஃபேஸை செயல்படுத்துகிறது {பொது வெற்றிடத்தை ஏற்றுக்கொள்வதுஆன்லைன் ஆர்டர் () online // ஆன்லைன் ஆர்டரை வைப்பதற்கான தர்க்கம்} பொது வெற்றிடத்தை எடுத்துக்கொள்ள டெலெபோன்ஆர்ட்டர் () {// ஆன்லைன் ஆர்டருக்கு பொருந்தாது புதிய ஆதரவற்ற செயல்பாட்டு எக்ஸ்செஷன் ()} பொது வெற்றிட ஊதியம் () pay // பணம் செலுத்துவதற்கான தர்க்கம் ஆன்லைன்} public void walkInCustomerOrder () Online // ஆன்லைன் ஆர்டருக்கு பொருந்தாது புதிய ஆதரிக்கப்படாத ஆபரேஷன் எக்ஸ்செப்ஷன் ()} பொது வெற்றிட ஊதியம்இன் பெர்சன் () {// ஆன்லைன் ஆர்டருக்கு பொருந்தாது புதிய ஆதரிக்கப்படாத ஆபரேஷன் எக்ஸ்செஷன் ()}}
  • மேலே உள்ள குறியீடு (OnlineClientImpl.java) ஆன்லைன் ஆர்டர்களுக்கானது என்பதால், ஆதரிக்கப்படாத ஆபரேஷன் எக்ஸ்செஷன் எறியுங்கள்.

  • ஆன்லைன், தொலைபேசி மற்றும் வாக்-இன் வாடிக்கையாளர்கள் ஒவ்வொன்றிற்கும் குறிப்பிட்ட உணவக இன்டர்ஃபேஸ் செயல்படுத்தலைப் பயன்படுத்துகின்றனர்.

  • டெலிஃபோனிக் கிளையன்ட் மற்றும் வாக்-இன் கிளையண்டிற்கான செயல்படுத்தல் வகுப்புகள் ஆதரிக்கப்படாத முறைகளைக் கொண்டிருக்கும்.

  • 5 முறைகள் உணவக இன்டர்ஃபேஸின் ஒரு பகுதியாக இருப்பதால், செயல்படுத்தல் வகுப்புகள் அவற்றில் 5 ஐ செயல்படுத்த வேண்டும்.

  • செயல்படுத்தல் வகுப்புகள் ஒவ்வொன்றும் ஆதரிக்கப்படாத ஆபரேஷன் எக்ஸ்செப்சனை தூக்கி எறியும் முறைகள். நீங்கள் தெளிவாகக் காணக்கூடியது போல - எல்லா முறைகளையும் செயல்படுத்துவது திறமையற்றது.

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

    ஜாவாவில் ஒத்திசைவு என்றால் என்ன
  • ரெஸ்டாரன்ட் இன்டர்ஃபேஸ்.ஜாவா ஒற்றை பொறுப்புக் கோட்பாட்டை உடைக்கிறது, ஏனெனில் கொடுப்பனவுகளுக்கான தர்க்கம் மற்றும் ஆர்டர் பிளேஸ்மென்ட் ஆகியவை ஒரே இடைமுகத்தில் தொகுக்கப்பட்டுள்ளன.

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

  1. கட்டணம் மற்றும் ஒழுங்கு வேலைவாய்ப்பு செயல்பாடுகளை இரண்டு தனி மெலிந்த இடைமுகங்களாக பிரிக்கவும், PaymentInterface.java மற்றும் OrderInterface.java.

  2. ஒவ்வொரு வாடிக்கையாளரும் PaymentInterface மற்றும் OrderInterface ஒவ்வொன்றையும் ஒரு செயல்படுத்தலைப் பயன்படுத்துகின்றனர். எடுத்துக்காட்டாக - OnlineClient.java OnlinePaymentImpl மற்றும் OnlineOrderImpl மற்றும் பலவற்றைப் பயன்படுத்துகிறது.

  3. ஒற்றை பொறுப்புக் கோட்பாடு இப்போது கட்டண இடைமுகம் (PaymentInterface.java) மற்றும் வரிசைப்படுத்தும் இடைமுகம் (OrderInterface) என இணைக்கப்பட்டுள்ளது.

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

ISP ஐப் பயன்படுத்திய பிறகு

சார்பு தலைகீழ் கொள்கை

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

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

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

இந்த கொள்கை ஏன் தேவைப்படுகிறது?

இது ஒரு புரோகிராமரை ஹார்ட்கோட் சார்புகளை அகற்ற அனுமதிக்கிறது, இதனால் பயன்பாடு தளர்வாக இணைக்கப்பட்டு நீட்டிக்கக்கூடியதாக மாறும்.

பொது வகுப்பு மாணவர் {தனியார் முகவரி முகவரி பொது மாணவர் () {முகவரி = புதிய முகவரி ()}}

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

இதன் மூலம், ஜாவாவில் இந்த SOLID கோட்பாடுகளின் முடிவுக்கு வருகிறோம்.

பாருங்கள் உலகெங்கிலும் பரவியுள்ள 250,000 க்கும் மேற்பட்ட திருப்தியான கற்றவர்களின் வலைப்பின்னலுடன் நம்பகமான ஆன்லைன் கற்றல் நிறுவனமான எடுரேகாவால். ஜுவா டெவலப்பராக விரும்பும் மாணவர்கள் மற்றும் நிபுணர்களுக்காக எடுரேகாவின் ஜாவா ஜே 2 இஇ மற்றும் எஸ்ஓஏ பயிற்சி மற்றும் சான்றிதழ் பாடநெறி வடிவமைக்கப்பட்டுள்ளது. ஜாவா புரோகிராமிங்கில் உங்களுக்கு ஒரு தொடக்கத்தைத் தருவதற்கும், ஹைபர்னேட் & ஸ்பிரிங் போன்ற பல்வேறு ஜாவா கட்டமைப்புகளுடன் கோர் மற்றும் மேம்பட்ட ஜாவா கருத்தாக்கங்களுக்கும் பயிற்சி அளிப்பதற்காக இந்த பாடநெறி வடிவமைக்கப்பட்டுள்ளது.

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