ABAP

2010-01-26 9 views
48

की Helicopterview मैं ए बी ए पी के बारे में एक बात पता नहीं है, यह एक OO पक्ष है अलग से, और मैं इसके बारे में helicopterview के कुछ प्रकार है चाहते हैं इससे पहले कि मैं विस्तार से इस पर गौर करने के लिए शुरू करते हैं। मुझे पता है कि मैं इसे पढ़ते समय यह सब पा सकता हूं, लेकिन जैसा कि मैंने शुरुआत करने वालों के लिए कहा था, मुझे यह जानना है कि मैं किससे निपट रहा हूं।ABAP

  • क्या यह (हमेशा) संकलित है?
  • टाइपपेस्ट: क्या यह दृढ़ता से टाइप किया गया है? क्या यह प्रकार अनुमान का उपयोग करता है?
  • विरासत: एकल/बहुउद्देशीय, इंटरफ़ेस जैसी संरचनाएं?
  • संग्रह: क्या यह सरणी से अलग संग्रह है? क्या यह सामान्य संग्रह है? क्या यह सूची समझ का उपयोग करता है?
  • सरणी, वापसी/पैरामीटर, ओवरराइडिंग में भिन्नता (con/contra/in) भिन्नता के बारे में कैसे?
  • कोई अपवाद हैडलिंग?
  • अनुबंध समर्थन द्वारा डिजाइन में कोई भी निर्माण?
  • अन्य प्रसिद्ध भाषाओं के संपर्क में कुछ भी उल्लेखनीय है?
  • ...

विशेषताओं के बारे में कोई भी सामान्य जानकारी मूल रूप से स्वागत किया जाएगा! (हमेशा) संकलित

उत्तर

73

यह है?

एबीएपी को बाइट-कोड (जिसे ऐतिहासिक कारणों से "लोड" कहा जाता है) में "संकलित" किया जाता है जिसे तब कर्नेल के अंदर वर्चुअल मशीन द्वारा निष्पादित किया जाता है। आप जावा के साथ इसकी तुलना एक बड़े अंतर के साथ कर सकते हैं: लोड मशीन-स्वतंत्र नहीं है, लेकिन लक्ष्य मशीन प्रकार के लिए अनुकूलित है। इसका मतलब यह है कि कई अलग-अलग प्रकार के अनुप्रयोग सर्वरों के साथ एक सिस्टम परिदृश्य में, आपके पास एक प्रोग्राम के लिए कई पूर्व-संकलित लोड हो सकते हैं। ऐसा नहीं है कि आप इसे कभी भी देखेंगे - संपूर्ण संकलन प्रक्रिया स्वचालित रूप से संभाली जाती है।

Typestem: यह दृढ़ता से टाइप किया है? क्या यह प्रकार अनुमान का उपयोग करता है?

शीर्ष पर सामान्य प्रकार की प्रणाली के साथ दृढ़ता से टाइप किया गया। ध्यान दें कि एक पूर्ण डेटा शब्दकोश है जो भाषा में एकीकृत है - बहुत आसान है।

विरासत: एकल/एकाधिक, इंटरफ़ेस जैसी संरचनाएं?

एकल विरासत। अंतरफलक समर्थित हैं, समग्र इंटरफेस और कार्यान्वयन घटक नामकरण (दो इंटरफेस IF_FOO और IF_BAR दोनों एक विधि बीएजेड को परिभाषित कर सकते हैं, और दोनों इंटरफ़ेस को लागू करने वाली कक्षा में दो विधियां IF_FOO ~ BAZ और IF_BAR ~ BAZ) होंगी।

संग्रह: क्या यह सरणी से अलग संग्रह है? क्या यह सामान्य संग्रह है? क्या यह सूची समझ का उपयोग करता है?

अन्य प्रोग्रामिंग भाषाओं में आपको "सरणी" के रूप में क्या पता है, वास्तव में एबीएपी में मौजूद नहीं है - आप आमतौर पर तथाकथित "आंतरिक तालिकाओं" का उपयोग करेंगे। डाटाबेस की तरह संरचित इन-मेमोरी टेबल सोचें।अलग-अलग मॉड्यूल के माध्यम से संग्रह कक्षाओं के कुछ विचार फैले हुए हैं, लेकिन ऐसा करने के लिए वैधानिक तरीका आंतरिक तालिकाओं का उपयोग करना है - एक तथाकथित तालिका प्रकार की रेखाएं परिभाषित करें जो या तो संदर्भ या संरचनाओं के संदर्भ का प्रतिनिधित्व करती हैं जिनमें इस तरह के संदर्भ शामिल हैं।

एरे, रिटर्नटाइप, पैरामीटर्टेप्स, ओवरराइडिंग में भिन्न (con/contra/in) भिन्नता के बारे में कैसे?

Arrays: ऊपर देखें। ओवरराइडिंग: इंटरफ़ेस विधि को कार्यान्वित करते समय या सुपरक्लास विधियों को ओवरराइड करते समय आप विधि हस्ताक्षर नहीं बदल सकते हैं। पैरामीटर के लिए - यह इस बात पर निर्भर करता है कि आप डेटा (या डेटा संदर्भ) या ऑब्जेक्ट संदर्भों को स्थानांतरित करते हैं या नहीं। आम तौर पर, जब आप स्पष्ट रूप से डाउनकास्टिंग निष्पादित करना चाहते हैं तो उपेक्षा हो सकती है।

कोई अपवाद हैडलिंग?

हां। एक से अधिक तरीकों से - फिर ऐतिहासिक कारणों (पिछड़े संगतता) के लिए। कक्षा-आधारित अपवाद समर्थित हैं।

अनुबंध समर्थन द्वारा डिजाइन में कोई भी निर्माण?

कोई भी जिसे मैं जानता हूं।

अन्य प्रसिद्ध भाषाओं के संपर्क में कुछ भी उल्लेखनीय है?

बहुत सारी चीज़ें। आप एक बेशक पक्षपाती अवलोकन के लिए http://www.volker-wegert.de/en/node/17 और http://www.volker-wegert.de/en/node/21 जाँच करने के लिए :-)

+0

बहुत frienly टीएक्स! मैंने आपको वोट देने की भी कोशिश की, लेकिन मुझे अभी भी इसे पंजीकृत करना है .. मैं इसके बाद बाद में वापस आ सकता हूं। – Marc

+0

महान उत्तर, मुझे बहुत कुछ प्रबुद्ध किया। उत्सुक है कि http://www.volker-wegert.de/ पर समर्थक अपनी साइट के लिए सामग्री प्रबंधन प्रदान करने के लिए PHP- आधारित ओपन सोर्स फ्री ड्रूपल का उपयोग करता है। उत्सुक है क्योंकि एसएपी और ड्रूपल के बीच एक इंटरफ़ेस होने पर कुछ दिलचस्प "मैश-अप" हो सकते हैं। सिस्टम को विकास में अलग रखते हुए, लेकिन जब उन्हें एक साथ रखा जाता है, तो कुछ रोचक संभावनाएं हो सकती हैं, उदा। ड्रूपल द्वारा प्रदान किए गए एसएपी के लिए एक शक्तिशाली वेब फ्रंट एंड/वेब आधारित ऐप्स। – therobyouknow

+0

@ रोब: मैं जावा, ईएमएफ, एक्सटेक्स्ट और एबीएपी को मैशिंग करने में अधिक हूं। PHP और ABAP वास्तव में मेरी तरह की बुत नहीं है :-) – vwegert

22

मैं कुछ चीजें पिछले जबाब नहीं है प्रदान करने के लिए कोशिश करता हूँ चाहते हो सकता है, जबकि लंघन क्या वे उल्लेख किया:

यह है (हमेशा) संकलित?
ठीक है, प्रोग्रामर के लिए इंटरफ़ेस "सक्रिय करें" कहता है, संकलित नहीं करता है, लेकिन ऐसा इसलिए है क्योंकि संस्करण प्रबंधन में बनाया गया है। जब आप कुछ सक्रिय करते हैं, तो यह इसे संकलित करता है, और स्रोत और बाइनरी संस्करणों को "सक्रिय" संस्करण बनाता है। अगर कोई ऐसे स्रोत को चलाने का प्रयास करता है जो संकलित नहीं होता है, तो इसे स्वचालित रूप से संकलित किया जाएगा क्योंकि वे इसे चलाते हैं।

टाइपपेम: क्या यह दृढ़ता से टाइप किया गया है?
असल में, हाँ। एबीएपी पास्कल और कोबोल के बीच एक अजीब क्रॉस की तरह है। "फ़ील्ड सिंबल" हैं, जो पॉइंटर्स की तरह हैं। अब सामान्य प्रकार भी हैं। (और जेनेरिक फील्ड पॉइंटर्स)। सबसे अच्छे चीजों में से एक यह है कि एबीएपी प्रकारों और डेटाबेस प्रकारों के बीच कोई अंतर नहीं है। आपके द्वारा बनाई गई कोई भी तालिका स्वचालित रूप से संरचना प्रकार बन जाएगी। यही कहना है कि, एबीएपी डेटाबेस के साथ एकीकृत है जिस तरह से लगभग कोई अन्य भाषा नहीं है। आप एसक्यूएल भी लिख सकते हैं, जो वास्तव में एबीएपी का हिस्सा है, क्योंकि केवल एक स्ट्रिंग होने के विपरीत, अन्य भाषाओं में।

विरासत: एकल/बहुउद्देशीय, इंटरफ़ेस जैसी संरचनाएं?
इंटरफ़ेस संरचनाएं हैं, मैं आमतौर पर उनका उपयोग नहीं करता हूं। यदि आपने बहुत से उपयोग करने योग्य कक्षाएं बनाई हैं, तो वे एक अच्छा विचार होंगे।

संग्रह: क्या यह सरणी से अलग संग्रह है? क्या यह सामान्य संग्रह है? क्या यह सूची समझ का उपयोग करता है?
बेहतर, इसमें "आंतरिक टेबल" हैं, जो मूल रूप से एक प्रकार की गतिशील सरणी हैं। उन्हें डेटा शब्दकोश में शामिल किसी भी प्रकार से घोषित किया जा सकता है। उन्हें लूप, सॉर्ट किया जा सकता है, आदि। कई प्रकार हैं, जिनमें हैंश और सॉर्ट किए गए वेरिएंट शामिल हैं।

कोई अपवाद हैंडलिंग?
ओओपी और गैर-ओओपी दोनों प्रकार।

अन्य प्रसिद्ध भाषाओं के संपर्क में कुछ भी उल्लेखनीय है?
जैसा कि अन्य पोस्टर ने कहा, बहुत कुछ। डेटाबेस संचालन के साथ कुछ भी करना बहुत जटिल है, और जटिल संरचनाओं और डेटा प्रकारों का पुन: उपयोग करना बहुत अच्छा है। यह स्वाभाविक रूप से क्रॉस-डेटाबेस और क्रॉस-प्लेटफार्म (ओएस, और प्रोसेसर) है। यह एक बहुत अच्छा संस्करण प्रबंधन और परिवहन प्रणाली है। पूरे एसएपी सिस्टम में बहुत अच्छा बहु भाषा समर्थन है। आप स्वचालित शीर्षक और चयन बॉक्स के साथ स्वचालित स्क्रीन आसानी से प्राप्त कर सकते हैं, जिसका अर्थ है कि आप कम प्रोग्रामिंग और अधिक काम कर सकते हैं। आपको डीबी प्रकारों और भाषा प्रकारों आदि के बीच मानचित्रण करने की आवश्यकता नहीं है।
चीजें इससे कम की तुलना में कम हैं:
1. संख्या आमतौर पर ASCII के रूप में संग्रहीत होती है, इससे कई अनुप्रयोगों में गणित में तेज़ी से कम होता है।
2. अधिकांश डेटा संरचनाएं बहुत सामान्यीकृत हैं, जिसका अर्थ है कि आपका डेटा कभी-कभी 50 तालिकाओं में फैलाया जा सकता है। "स्टार" प्रश्न बहुत आम हैं। डेटा को पुनर्प्राप्त करने के लिए फ़ंक्शंस में निर्मित (एफ। लॉजिकल डेटाबेस) उन मामलों में आपका मित्र हैं।
3. एसएपी ने सब कुछ सब कुछ करने की कोशिश की, इसलिए बहुत सारे कॉन्फ़िगरेशन विकल्प इत्यादि हैं, और कभी-कभी कोई फ़ंक्शन ऐसा नहीं करता जो आपने पिछले व्यवहार के आधार पर किया था।
4. एबीएपी कभी-कभी बहुत वर्बोज़ होता है। GUI_DOWNLOAD जैसी सरल चीज़ पर "पैटर्न" बटन का उपयोग करने का प्रयास करें।
5. एसएपी उनके द्वारा उठाए गए कार्यों के साथ बहुत महत्वाकांक्षी था, और इस प्रकार हार्डवेयर, ऑपरेटिंग सिस्टम और आरडीबीएम सिस्टम की शुरुआत में सीमाएं बढ़ीं। इस प्रकार, उनके पास विरासत kludges है कि इससे निपटने के लिए सुंदर नहीं हैं। (पूल टेबल्स, क्लस्टर टेबल इत्यादि)
6. जब आप कोई प्रोग्राम सक्रिय करते हैं, तो यह फ़ंक्शन मॉड्यूल के साथ पूर्ण संगतता जांच नहीं करता है। ऐसी परिस्थितियां हैं जहां कुछ समस्या के साथ सक्रिय नहीं होगा, लेकिन फिर रन-टाइम पर दुर्घटनाग्रस्त हो जाती है, यहां तक ​​कि ऐसे मामलों में जहां इसे संकलित समय पर पकड़ा जा सकता था।