Professional Documents
Culture Documents
RAILWAY TRACKING SYSTEM - En.ar
RAILWAY TRACKING SYSTEM - En.ar
com -
خالصة:
نظام إدارة مسارات السكك الحديدية هو مشروع برمجي يدعم خدمات نظ ام مس ارات الس كك الحديدي ة وفًق ا لج داول
القطارات .تم تصميم المشروع بواجهة مستخدم رسومية جيدة تسمح بمراقب ة والتحكم في القط ارات المختلف ة على الش بكة .لقد
حدث مرات عديدة أنك كنت تنتظر في محطة السكة الحدي د وص ول ش خص م ا وليس ل ديك أي معلوم ات دقيقة ح ول ت وقيت
القطار وأشياء أخ رى .يعم ل نظ ام إدارة المس ار وفًق ا لج داول القط ارات ويض ع المس ارات المناس بة لتمري ر القط ارات وفًق ا
لمسارها المحدد .تم تصميم برنامج إدارة القطارات لدعم وصيانة البيانات الخاصة بقطارات متعددة على شبكة السكك الحديدي ة.
يتم االحتفاظ بج داول القط ارات ومس اراتها في قاع دة بيان ات .عن دما يم ر القط ار على مس ار م ا ،تتم إدارة تقاطع ات المس ار
اإلضافي أو وصالته وفًقا لمسار القطار .بمجرد مرور القطار ،يتم تكوين المسار ليمر القطار المقرر التالي.
مقدمة:
لقد حدث مرات عديدة أنك كنت تنتظر في محطة السكة الحديد وصول شخص ما وليس لديك أي معلومات دقيقة حول
توقيت القطار وأشياء أخرى .لذا نقدم لكم هنا مشروًعا حول تتبع السكك الحديدية والتنبؤ بوقت الوص ول .باس تخدام ه ذا النظ ام
يمكن للمستخدم الحصول على معلومات حول توقيت القطار ،وهل هو في الوقت المحدد أم ال ،وغيرها من المعلومات .في هذا،
سيقوم النظام بتتبع توقيت القطار في أي وقت غادر فيه القطار من محطة معينة وتمرير تفاصيل التوقيت هذه إلى نظام المحط ة
األخرى حيث سيعرض التوقيت وفًقا للقطار المغادر من المحطة السابقة .إذا وجد النظام أي ت أخير في القط ار بس بب اإلش ارة،
فسيقوم تلقائًيا بتحديث توقيت القطار في المحطة التالية وسيتم عرضه للمشاهدين.
يوجد في هذا النظام وحدة إدارية تقوم بإدخال التفاصيل الخاصة بالقطارات وتوقيتها وسيتم تمرير هذه التفاص يل ع بر
خادم اإلنترنت ويتم جلبها بواسطة النظام في المحطات األخرى ،كما يوجد نظام آخر يعرض معلومات القط ار للمش اهدين على
منصة .سيحصل النظام الثاني على جميع المعلومات الخاص ة بجمي ع القط ارات ولكن ه س يحدد تلقائًي ا البيان ات ال تي تش ير إلى
محطة معينة ويعرض تلك المعلومات على الشاشة .على سبيل المثال ،إذا قام مسؤول في محطة مومباي بإدخال معلومات ح ول
محطة دلهي ،فلن يتأثر نظام محطة تشيناي ،لكن نظام محطة دلهي سيعرض المعلومات حول القطار .يعم ل ه ذا النظ ام مث ل -
عندما يغادر القطار متأخًرا من المحطة ،سيقوم المسؤول بإدخال تفاصيل حول المغادرة ووقتها ،ويتم إرسال هذه المعلومات في
الوقت الفعلي إلى خادم اإلنترنت ويتم استرجاعها على نظام آخر من خالل خادم اإلنترنت وتظهر التفاصيل على الشاشة .يمتل ك
مدراء المحطات في كل محطة تسجيل دخول يمكنهم من خالله تحديث وقت وصول القطار إلى محطتهم عند وصوله .يتم تثبيت
هذا النظام الثاني في مواقع مختلفة بالمحطة ليتمكن المشاهدون من عرض المعلومات .سيضيف المسؤول معلومات مثل القط ار
المغادر من المحطة ،والوصول المتوقع إلى الوجهة ،والت أخير في ج دول القط ار ،وم ا إلى ذل ك .ينش ر ه ذا المش روع أح داث
جدول القطار في الوقت الفعلي لالشتراك في تطبيقات عمالء متعددة.
مزايا
يساعد هذا النظام الركاب على معرفة تأخيرات القطارات وتوقيتها.
سلبيات
إذا كانت تفاصيل القطار التي أدخلها المسؤول خاطئة ،فسيعرض النظام في المحطة التالية معلومات خاطئة
إذا كان هناك أي فشل في الشبكة ،فلن يعمل النظام بأكمله بشكل صحيح.
تحليل النظام:
النظام الموجود:
يعاني نظام حجز السكك الحديدية الحالي من العديد من أوجه القصور المرتبطة به .في النظام الحالي ،تستخدم السكك
الحديدية لتعيين مستويات حجز القطارات أعلى من سعة المقاعد للتعويض عن إلغاء الركاب وعدم الحضور ،مما يؤدي إلى
الحجز الزائد في الوكيل بشكل متكرر للقيام بذلك وبالتالي إضاعة الوقت والمال للجميع .في النظام الحالي ،لم يتم تحقيق التكامل
بين خطوط السكك الحديدية المختلفة على منصات واحدة .ومع ظهور نظام الحجز عبر اإلنترنت ،يمكن التغلب على هذه
العيوب.
مساوئ النظام الحالي:
باهظة الثمن
الوقت المستغرق اإلجراءات واألساليب
ال قابلية
ال سهل االستخدام
النظام المقترح:
يحتفظ نظام الحجز اإللكتروني الجديد بقاعدة البيانات بشكل مركزي مما يوفر للعمالء المعلومات المطلوبة من أي
مكان في العالم كلما لزم األمر .ويتطلب هذا النظام استخدام واجهة برمجة التطبيقات ( )APIالتي من خاللها تتفاعل البيانات
من قاعدة بيانات مركزية تراقب جميع عمليات تبادل البيانات التي تتم من جانب العميل إليها وتقوم بتحديثها تلقائًيا .من خالل
نظام الحجز عبر اإلنترنت ،يستطيع العميل حجز وشراء تذكرة وبالتالي توفير الوقت والمال للعميل والسكك الحديدية/الوكيل.
وبما أن المعلومات يتم تخزينها مركزًيا ،فلن يفقد العميل تذكرته أبًدا كما هو الحال في النظام الحالي.
مزايا النظام المقترح:
انخفاض النفقات بشكل ملحوظ.
توفير الوقت من خالل عدم االضطرار إلى شحن الورق أو إعادة إدخال البيانات في جهاز الكمبيوتر.
بيانات أكثر ثراًء واكتمااًل وأكثر دقة.
النشر عن بعد للمسافرين؛ وفي كثير من الحاالت
القدرة على استخدام األجهزة التي تمتلكها بالفعل
مواصفات النظام:
متطلبات األجهزة:
متطلبات البرنامج:
الوحدات:
وحدة المسؤول
وحدة تسجيل دخول الركاب
وحدة تسجيل الركاب
وحدة البحث عن القطارات
وحدة حجز التذاكر
وحدة تتبع القطار
وصف الوحدة:
تسجيل دخول المسؤول
يتم التحكم في النظام بأكمله من قبل المسؤول ،حيث يقوم المسؤول بتسجيل الدخول إلى النظام من خالل إعطاء
تفاصيل المصادقة الخاصة به مثل اسم المستخدم وكلمة المرور .بعد الدخول إلى النظام يمكنه رؤية القطارات المتوفرة حاليا
للركاب .تفاصيل القطار هي اسم القطار ،المغادرة ،الوجهة ،توفر المقاعد ،وأيام التشغيل .ويمكن للمسؤول أيًضا إضافة قطار
جديد إلى قواعد البيانات.
تسجيل دخول الركاب
في هذه الوحدة ،يمكن للمستخدم تسجيل الدخول إلى النظام من خالل تقديم بيانات االعتماد الخاصة به ،إذا كان
المستخدم جديًدا على هذا التطبيق ،وليس لديه تفاصيل بيانات االعتماد الخاصة به مثل اسم المستخدم وكلمة المرور؛ يمكنه
التسجيل كعضو جديد في هذا النظام عن طريق التسجيل.
تسجيل الركاب
إذا لم يكن لدى أي مستخدم اسم مستخدم وكلمة مرور لتسجيل الدخول إلى النظام ،فيمكنه اختيار التسجيل كعضو جديد
عن طريق اختيار خيار التسجيل .ويطلب منه تقديم معلوماته الشخصية ومعلومات االتصال مثل االسم والعنوان ورقم الهاتف
ومعرف البريد اإللكتروني ،ويمكنه اختيار اسم المستخدم وكلمة المرور الخاصة به .إذا نجح التسجيل ،فيمكن للمستخدم تسجيل
الدخول إلى النظام ،عن طريق اسم المستخدم وكلمة المرور التي يختارها.
بحث القطار
بعد تسجيل الدخول بنجاح إلى النظام ،يمكن للركاب البحث عن القطارات المتاحة حسب متطلباتهم .قد تكون متطلبات
المغادرة والوجهة وتاريخ الرحلة .يتم عرض قائمة القطارات المتاحة للمستخدم .ثم يمكن للمستخدم اختيار أي قطار وإجراء
حجز التذاكر .إذا لم يكن هناك قطار متاح ،فيمكن للمستخدم تغيير تاريخ الرحلة أو المغادرة أو الوجهة.
وحدة حجز التذاكر
إذا كان تاريخ الرحلة والوجهة والمغادرة متطابًقا مع قطار ،فيمكن للراكب اختيار القطار المعين ،وبعد تحديد القطار
المعين ،سيحصل المستخدم على تفاصيل القطارات وتوافر المقاعد في كل درجة ،وستكون الفئات هي مكيف الهواء ،ومقعد
النوم ،ومقاعد فصل .يمكن للمستخدم اختيار أي فئة ،وإدخال عدد المقاعد المراد حجزها ،إذا اختار المستخدم مقاعد غير متاحة،
فسيطالبه بإعطاء مقعد محدد أقل من أو يساوي المقاعد المتاحة .بعد اختيار ال .بالنسبة للمقاعد ،يمكن للمستخدم الدفع ،وعندما
يكون مستعًدا للدفع ،سيتم عرض تفاصيل الحجز للمستخدم مثل الدرجة وعدد المقاعد والمبلغ اإلجمالي .وبعد ذلك يجوز
للمستخدم تأكيد الدفع أو إلغائه .إذا أكد الدفع ،فسيتم حجز التذكرة فقط لذلك الراكب ،وإال ستكون مفتوحة للجميع.
تتبع القطار
لدى الراكب خيارات لتتبع القطارات في الوقت الحقيقي .سيظهر الموقع الفعلي للقطارات في الخريطة مع المكان الذي
يسافر فيه القطار حالًيا .يمكن للركاب اختيار قطار معين ،ثم يتم عرض تفاصيل القطار مثل المحطة السابقة والثابتة التالية
وتاريخ بدء القطار والوقت المتوقع للوصول إلى المحطة التالية للمستخدم .يظهر المسار الذي يغطيه القطار كخط أصفر،
وسيظهر المسار الذي سيتم تغطيته كخط أصفر منقط .سيتم عرض القطارات التي تعمل حالًيا في موعدها باللون األزرق،
وسيتم عرض القطارات المتأخرة حالًيا باللون األحمر.
تصميم النظام:
بنية النظام:
نحن نؤمن إيماًنا راسًخ ا ب أن الم زيج الص حيح من أح دث تقني ات المعلوم ات واالتص االت يمكن أن ي وفر حًال فع اًال
وممكًنا لمتطلبات نظام تتبع القطارات الموثوق به والدقيق لتحسين كفاءة وإنتاجية السكك الحديدية الهندية.
يشمل الحل الذي نقترحه مجموعة قوية من الحوسبة المتنقلة والنظ ام الع المي لالتص االت المتنقل ة ()WIRELESS
والنظام العالمي لتحديد المواقع ( )GPSوتقنيات وبرامج نظام المعلومات الجغرافية ( )GISلتوف ير نظ ام ذكي لتتب ع القط ارات
وإدارتها لتحسين النظام الحالي .خدمة النقل بالسكك الحديدية .يتم دمج كل هذه التقنيات بسالسة لبناء بنية قوية وقابلة للتطوير.
مخططات :UML
UMLلتقف على لغة النمذجة الموحدة UML .هي لغة نمذجة موحدة لألغراض العامة في مجال هندسة البرمجيات الموجهة
للكائنات .تتم إدارة المعيار وتم إنشاؤه بواسطة مجموعة إدارة الكائنات.
الهدف هو أن تصبح UMLلغة مشتركة إلنشاء نماذج لبرامج الكمبيوتر الموجهة للكائن ات .في ش كله الح الي يتك ون
UMLمن عنصرين رئيس يين :النم وذج التع ريفي والت دوين .في المس تقبل ،يمكن أيًض ا إض افة ش كل من أش كال الطريقة أو
العملية؛ أو المرتبطة بـ .UML
لغة النمذجة الموحدة هي لغة قياسية لتحديد وتصور وبناء وتوثيق عناصر النظام البرمجي ،وك ذلك لنمذج ة األعم ال واألنظم ة
األخرى غير البرمجية.
يمثل UMLمجموعة من أفضل الممارسات الهندسية التي أثبتت نجاحها في نمذجة األنظمة الكبيرة والمعقدة.
يعد UMLجزًء ا مهًم ا جًدا من تطوير البرامج الموجهة للكائنات وعملية تطوير البرامج .يس تخدم UMLفي الغ الب
تدوينات رسومية للتعبير عن تصميم مشاريع البرمجيات.
األهداف:
األهداف األساسية في تصميم UMLهي كما يلي:
تزويد المستخدمين بلغة نمذجة مرئية معبرة وجاهزة لالستخدام حتى يتمكنوا من تطوير وتبادل نماذج ذات معنى. .1
توفير آليات التوسع والتخصص لتوسيع المفاهيم األساسية. .2
كن مستقًال عن لغات البرمجة المحددة وعملية التطوير. .3
توفير أساس رسمي لفهم لغة النمذجة. .4
تشجيع نمو سوق أدوات .OO .5
دعم مفاهيم التطوير ذات المستوى األعلى مثل التعاون واألطر واألنماط والمكونات. .6
دمج أفضل الممارسات. .7
مخطط حالة االس تخدام ه و رس م بي اني للجه ات الفاعل ة ،ومجموع ة من ح االت االس تخدام محاط ة بح دود النظ ام،
وارتباطات االتصال (المشاركة) بين الجهات الفاعلة والمستخدمين والتعميم بين حاالت االستخدام .يحدد نموذج حالة االس تخدام
المظهر الخارجي (الجهات الفاعلة) والداخل (حالة االستخدام) لسلوك النظام.
الرسم البياني التالي يصور مخطط حالة االستخدام للنظام المقترح .تمثل حالة االستخدام "التحقق من أنماط التصنيف"
أنه يمكن للمستخدم الحصول على قواعد أو أنماط تصنيف من مجموعة البيانات األصلية .تعمل حالة االستخدام هذه على توسيع
نطاق حساب كسب المعلومات ،ألننا نقوم بالتقسيم بين Tupelosبناًء على كس ب المعلوم ات المحس وب لك ل س مة .يتم تحدي د
السمة التي تتمتع بأقصى قدر من الحصول على المعلومات كمعيار للتقسيم.
تمثل حالة االستخدام "التحقق من الحفاظ على الخصوصية" أنه يمكن للمس تخدم التحقق من مس توى الخصوص ية في
مجموعة البيانات .تعمل حالة االستخدام هذه على توسيع نطاق تعميم البيانات حيث يرتبط مستوى الخصوصية ارتباًط ا مباش ًرا
بمستوى التعميم.
حالة االستخدام:
تسلسل:
الطوارئ:
نشاط:
دفد:
تصميم المدخالت:
تصميم المدخالت هو حلقة الوص ل بين نظ ام المعلوم ات والمس تخدم .وهي تش تمل على المواص فات واإلج راءات المتط ورة
إلعداد البيانات وهذه الخطوات ضرورية لوضع بيانات المعامالت في نموذج قابل لالس تخدام للمعالج ة ويمكن تحقي ق ذل ك عن
طريق فحص الكمبيوتر لقراءة البيانات من مستند مكتوب أو مطبوع أو يمكن أن يحدث ذلك عن طريق قيام األشخاص بالمفت اح
البيانات مباشرة إلى النظام .يركز تصميم الم دخالت على التحكم في كمي ة الم دخالت المطلوب ة ،والتحكم في األخط اء ،وتجنب
التأخير ،وتجنب الخطوات اإلضافية ،والحفاظ على بساطة العملية .تم تصميم اإلدخال بطريقة ت وفر األم ان وس هولة االس تخدام
مع الحفاظ على الخصوصية .يأخذ تصميم اإلدخال في االعتبار األمور التالية:
أهداف:
.1تصميم اإلدخال هو عملية تحويل الوصف الموجه للمستخدم للمدخالت إلى نظام قائم على الكمبيوتر .يع د ه ذا التص ميم مهًم ا
لتجنب األخطاء في عملي ة إدخ ال البيان ات وإظه ار االتج اه الص حيح لإلدارة للحص ول على المعلوم ات الص حيحة من النظ ام
المحوسب.
.2ويتم تحقيق ذلك من خالل إنشاء شاشات سهلة االستخدام إلدخ ال البيان ات للتعام ل م ع حجم كب ير من البيان ات .اله دف من
تصميم المدخالت هو تسهيل عملية إدخال البيان ات و خلوه ا من األخط اء .تم تص ميم شاش ة إدخ ال البيان ات بحيث يمكن تنفي ذ
جميع عمليات معالجة البيانات .كما يوفر مرافق عرض السجالت.
.3عند إدخال البيانات سيتم التأكد من صحتها .يمكن إدخال البيانات بمساعدة الشاشات .يتم توفير الرسائل المناس بة عن د الحاج ة
لذلك حتى ال يكون المستخدم في حالة من الذعر الفوري .وبالتالي فإن الهدف من تصميم اإلدخال هو إنشاء تخطيط إدخال يسهل
متابعته
تصميم المخرجات:
المخرجات عالية الجودة هي التي تلبي متطلبات المستخدم النه ائي وتقدم المعلوم ات بوض وح .في أي نظ ام ،يتم إرس ال نت ائج
المعالجة إلى المستخدمين وإلى النظ ام اآلخ ر من خالل المخرج ات .في تص ميم المخرج ات ،يتم تحدي د كيفي ة نقل المعلوم ات
للحاج ة الفوري ة وك ذلك مخرج ات النس خة المطبوع ة .وهي أهم المعلوم ات المص درية والمباش رة للمس تخدم .يعم ل تص ميم
المخرجات الفعال والذكي على تحسين عالقة النظام لمساعدة المستخدم على اتخاذ القرار.
.1يجب أن يتم تصميم مخرجات الكمبيوتر بطريقة منظمة ومدروس ة جي ًدا؛ يجب تط وير المخرج ات الص حيحة م ع التأك د من
تصميم كل عنصر مخرجات بحيث يجد األشخاص أن النظام يمكن استخدامه بسهولة وفعالية .عند تحلي ل مخرج ات الكم بيوتر،
يجب عليهم تحديد المخرجات المحددة المطلوبة لتلبية المتطلبات.
.3قم بإنشاء مستند أو تقرير أو تنسيقات أخرى تحتوي على معلومات ينتجها النظام.
يجب أن يحقق نموذج اإلخراج لنظام المعلومات واحًدا أو أكثر من األهداف التالية.
نقل معلومات حول األنشطة السابقة أو الوضع الحالي أو توقعات الشركة
مستقبل.
قم باإلشارة إلى األحداث أو الفرص أو المشكالت أو التحذيرات المهمة.
قم بتشغيل اإلجراء.
تأكيد اإلجراء.
بيئات النظام
ذكري المظهر:
يوفر Androidإطار عمل تطبيقًيا غنًيا يسمح لك بإنشاء تطبيقات وألعاب مبتكرة لألجهزة المحمولة في بيئة لغة
.Javaتوفر المستندات المدرجة في شريط التنقل األيمن تفاصيل حول كيفية إنشاء التطبيقات باستخدام واجهات برمجة
التطبيقات المتنوعة لنظام .Androidإذا كنت جديًدا في مجال تطوير ،Androidفمن المهم أن تفهم المفاهيم األساسية التالية
حول إطار عمل تطبيقات :Androidتوفر التطبيقات نقاط دخول متعددة .يتم إنشاء تطبيقات Androidكمجموعة من
المكونات المتميزة التي يمكن استدعاؤها بشكل فردي .على سبيل المثال ،يوفر النشاط الفردي شاشة واحدة لواجهة المستخدم،
وتؤدي الخدمة العمل بشكل مستقل في الخلفية .من أحد المكونات يمكنك بدء مكون آخر باستخدام النية .يمكنك أيًضا بدء مكون
في تطبيق مختلف ،مثل نشاط في تطبيق خرائط إلظهار عنوان .يوفر هذا النموذج نقاط دخول متعددة لتطبيق واحد ويسمح ألي
تطبيق بالتصرف كتطبيق "افتراضي" للمستخدم إلجراء قد تستدعيه التطبيقات األخرى.
يوفر Androidإطار عمل تطبيًقا قابًال للتكيف يسمح لك بتوفير موارد فريدة لتكوينات األجهزة المختلفة .على سبيل
المثال ،يمكنك إنشاء ملفات تخطيط XMLمختلفة ألحجام شاشات مختلفة ويحدد النظام التخطيط الذي سيتم تطبيقه بناًء على
حجم شاشة الجهاز الحالي .يمكنك االستعالم عن مدى توفر ميزات الجهاز في وقت التشغيل إذا كانت أي ميزات تطبيق تتطلب
أجهزة معينة مثل الكاميرا .إذا لزم األمر ،يمكنك أيًض ا اإلعالن عن الميزات التي يتطلبها تطبيقك حتى ال تسمح أسواق
التطبيقات مثل متجر Google Playبالتثبيت على األجهزة التي ال تدعم هذه الميزة.
أساسيات التطبيق
تتم كتابة تطبيقات Androidبلغة برمجة .Javaتقوم أدوات Android SDKبتجميع التعليمات البرمجية الخاصة بك -جنًبا
إلى جنب مع أي ملفات بيانات وموارد -في ملف :APKحزمة ،Androidوهي عبارة عن ملف أرشيف به ملفapk.
الحقة .يحتوي ملف APKواحد على جميع محتويات تطبيق Androidوهو الملف الذي تستخدمه األجهزة التي تعمل بنظام
Androidلتثبيت التطبيق .بمجرد تثبيته على الجهاز ،يعيش كل تطبيق Androidفي وضع حماية األمان الخاص به :نظام
التشغيل Androidهو نظام Linuxمتعدد المستخدمين حيث يكون كل تطبيق مستخدًم ا مختلًفا .افتراضًيا ،يقوم النظام بتعيين
معرف مستخدم Linuxفريد لكل تطبيق (يتم استخدام المعرف فقط بواسطة النظام وهو غير معروف للتطبيق) .يقوم النظام
بتعيين األذونات لجميع الملفات الموجودة في التطبيق بحيث ال يتمكن سوى معرف المستخدم المعين لهذا التطبيق من الوصول
إليها .تحتوي كل عملية على جهاز ظاهري خاص بها ( ،)VMلذلك يتم تشغيل التعليمات البرمجية للتطبيق بمعزل عن
التطبيقات األخرى .افتراضًيا ،يعمل كل تطبيق بعملية Linuxالخاصة به .يبدأ Androidالعملية عندما يلزم تنفيذ أي من
مكونات التطبيق ،ثم يقوم بإيقاف العملية عندما ال تكون هناك حاجة إليها أو عندما يتعين على النظام استعادة الذاكرة لتطبيقات
أخرى.
مكونات التطبيق
مكونات التطبيق هي اللبنات األساسية لتطبيق .Androidيمثل كل مكون نقطة مختلفة يمكن للنظام من خاللها الدخول إلى
تطبيقك .ال تمثل جميع المكونات نقاط دخول فعلية للمستخدم ويعتمد بعضها على بعضها البعض ،ولكن كل منها موجود ككيان
خاص به ويلعب دوًرا محدًدا — كل عنصر عبارة عن كتلة بناء فريدة تساعد في تحديد السلوك العام لتطبيقك .هناك أربعة
أنواع مختلفة من مكونات التطبيق .يخدم كل نوع غرًضا مميًز ا وله دورة حياة مميزة تحدد كيفية إنشاء المكون وتدميره .فيما
يلي األنواع األربعة لمكونات التطبيق:
أنشطة
يمثل النشاط شاشة واحدة بها واجهة مستخدم .على سبيل المثال ،قد يشتمل تطبيق البريد اإللكتروني على نشاط واحد يعرض
قائمة برسائل البريد اإللكتروني الجديدة ،ونشاًطا آخر إلنشاء بريد إلكتروني ،ونشاًطا آخر لقراءة رسائل البريد اإللكتروني.
على الرغم من أن األنشطة تعمل مًعا لتكوين تجربة مستخدم متماسكة في تطبيق البريد اإللكتروني ،إال أن كل نشاط منها مستقل
عن اآلخر .على هذا النحو ،يمكن لتطبيق مختلف بدء أي من هذه األنشطة (إذا كان تطبيق البريد اإللكتروني يسمح بذلك) .على
سبيل المثال ،يمكن لتطبيق الكاميرا بدء النشاط في تطبيق البريد اإللكتروني الذي يقوم بإنشاء بريد جديد ،حتى يتمكن المستخدم
من مشاركة صورة .يتم تنفيذ النشاط كفئة فرعية مننشاطويمكنك معرفة المزيد عنها في دليل مطور األنشطة.
خدمات
الخدمة عبارة عن مكون يتم تشغيله في الخلفية لتنفيذ عمليات طويلة األمد أو ألداء عمل للعمليات البعيدة .ال توفر الخدمة واجهة
مستخدم .على سبيل المثال ،قد تقوم إحدى الخدمات بتشغيل الموسيقى في الخلفية أثناء وجود المستخدم في تطبيق مختلف ،أو قد
تجلب البيانات عبر الشبكة دون حظر تفاعل المستخدم مع أحد األنشطة .يمكن لمكون آخر ،مثل النشاط ،بدء تشغيل الخدمة
والسماح لها بتشغيلها أو االرتباط بها من أجل التفاعل معها .يتم تنفيذ الخدمة كفئة فرعية من الخدمة ويمكنك معرفة المزيد عنها
في دليل مطور الخدمات.
موفري المحتوى
يدير موفر المحتوى مجموعة مشتركة من بيانات التطبيق .يمكنك تخزين البيانات في نظام الملفات ،أو قاعدة بيانات ،SQLite
أو على الويب ،أو أي موقع تخزين ثابت آخر يمكن لتطبيقك الوصول إليه .ومن خالل موفر المحتوى ،يمكن للتطبيقات األخرى
االستعالم عن البيانات أو حتى تعديلها (إذا سمح موفر المحتوى بذلك) .على سبيل المثال ،يوفر نظام Androidمزود محتوى
يدير معلومات االتصال الخاصة بالمستخدم .على هذا النحو ،يمكن ألي تطبيق لديه األذونات المناسبة االستعالم عن جزء من
موفر المحتوى (مثل )ContactsContract.Dataلقراءة وكتابة معلومات حول شخص معين .يعد موفرو المحتوى مفيًدا أيًضا
في قراءة وكتابة البيانات الخاصة بتطبيقك وغير المشتركة .على سبيل المثال ،يستخدم نموذج تطبيق Note Padموفر
المحتوى لحفظ المالحظات .يتم تطبيق موفر المحتوى كفئة فرعية لموفر المحتوى ويجب تنفيذ مجموعة قياسية من واجهات
برمجة التطبيقات التي تمكن التطبيقات األخرى من إجراء المعامالت .لمزيد من المعلومات ،راجع دليل مطور موفري
المحتوى.
جهاز استقبال البث هو مكون يستجيب إلعالنات البث على مستوى النظام .تنشأ العديد من عمليات البث من النظام — على
سبيل المثال ،إعالن يعلن عن إيقاف تشغيل الشاشة أو انخفاض طاقة البطارية أو التقاط صورة .يمكن للتطبيقات أيًضا بدء
عمليات البث ،على سبيل المثال ،للسماح للتطبيقات األخرى بمعرفة أن بعض البيانات قد تم تنزيلها على الجهاز وهي متاحة
لالستخدام .على الرغم من أن أجهزة استقبال البث ال تعرض واجهة مستخدم ،إال أنها قد تقوم بإنشاء إعالم شريط الحالة لتنبيه
المستخدم عند حدوث حدث بث .ومع ذلك ،فإن األمر األكثر شيوًعا هو أن جهاز استقبال البث هو مجرد "بوابة" للمكونات
األخرى ويهدف إلى القيام بقدر ضئيل جًدا من العمل .على سبيل المثال ،قد يبدأ خدمة لتنفيذ بعض األعمال بناًء على الحدث .يتم
تنفيذ مستقبل البث كفئة فرعية لمستقبل البث ويتم تسليم كل بث ككائن غرض .لمزيد من المعلومات ،راجع فئة مستقبل البث.
جافا
لدى Oracleمنتجان يقومان بتطبيق Java Platform Standard Edition (Java SE) 7: Java SE Development
Kit (JDK) 7و.Java SE Runtime Environment (JRE) 7
JDK 7عبارة عن مجموعة شاملة من ،JRE 7وتحتوي على كل ما هو موجود في ،JRE 7باإلضافة إلى أدوات مثل
المترجمين ومصححي األخطاء الالزمة لتطوير التطبيقات الصغيرة والتطبيقات .يوفر JRE 7المكتبات وجهاز Java
الظاهري ( )JVMوالمكونات األخرى لتشغيل التطبيقات الصغيرة والتطبيقات المكتوبة بلغة برمجة .Javaالحظ أن JRE
يتضمن مكونات غير مطلوبة بواسطة مواصفات ،Java SEبما في ذلك مكونات Javaالقياسية وغير القياسية.
تعد القدرة على تخزين واسترجاع كائنات Java TMأمًرا ضرورًيا لبناء جميع التطبيقات باستثناء التطبيقات األكثر عابرة .إن
مفتاح تخزين واسترجاع الكائنات في نموذج متسلسل هو تمثيل حالة الكائنات الكافية إلعادة بناء الكائن (الكائنات) .قد تدعم
الكائنات التي سيتم حفظها في الدفق الواجهة القابلة للتسلسل أو الواجهة القابلة للتحويل .بالنسبة لكائنات ،Java TMيجب أن
يكون النموذج المتسلسل قادًرا على التعرف والتحقق من فئة Java TMالتي تم حفظ محتويات الكائن منها واستعادة المحتويات
إلى مثيل جديد .بالنسبة للكائنات القابلة للتسلسل ،يتضمن الدفق معلومات كافية الستعادة الحقول الموجودة في الدفق إلى إصدار
متوافق من الفئة .بالنسبة للكائنات القابلة للتحويل إلى الخارج ،يكون الفصل هو المسؤول الوحيد عن التنسيق الخارجي
لمحتوياته.
تشير الكائنات التي سيتم تخزينها واسترجاعها بشكل متكرر إلى كائنات أخرى .ويجب تخزين تلك الكائنات األخرى
واسترجاعها في نفس الوقت للحفاظ على العالقات بين الكائنات .عندما يتم تخزين كائن ما ،يتم أيًض ا تخزين كافة الكائنات التي
يمكن الوصول إليها من هذا الكائن.
تكون قابلة للتوسيع لدعم التنظيم وإلغاء التنظيم حسب الحاجة للكائنات البعيدة.
تعد كتابة الكائنات واألوليات إلى الدفق عملية مباشرة .على سبيل المثال:
أوًال ،يلزم وجود ،OutputStreamفي هذه الحالة ،FileOutputStreamلتلقي البايتات .ثم يتم إنشاء
ObjectOutputStreamالذي يكتب إلى .FileOutputStreamبعد ذلك ،تتم كتابة السلسلة " "Todayوكائن التاريخ إلى
الدفق .وبشكل أكثر عمومية ،تتم كتابة الكائنات باستخدام طريقة writeObjectويتم كتابة العناصر األولية إلى المجرى
باستخدام طرق .DataOutput
تقوم طريقة كتابة الكائن (راجع القسم " ،2.3طريقة كتابة الكائن") بتسلسل الكائن المحدد واجتياز مراجعه إلى كائنات أخرى
في الرسم البياني للكائن بشكل متكرر إلنشاء تمثيل متسلسل كامل للرسم البياني .ضمن الدفق ،يؤدي المرجع األول ألي كائن
إلى إجراء تسلسل للكائن أو إضفاء الطابع الخارجي عليه وتعيين مقبض لهذا الكائن .يتم ترميز المراجع الالحقة لهذا الكائن
كمقبض .يؤدي استخدام مقابض الكائنات إلى الحفاظ على المراجع المشتركة والدائرية التي تحدث بشكل طبيعي في الرسوم
البيانية للكائنات .تستخدم المراجع الالحقة لكائن ما المقبض فقط مما يسمح بتمثيل مضغوط للغاية.
مطلوب معالجة خاصة للمصفوفات وثوابت التعداد والكائنات من النوع Classو ObjectStreamClassو .Stringيجب أن
تقوم الكائنات األخرى بتنفيذ الواجهة القابلة للتسلسل أو الواجهة القابلة للتحويل ليتم حفظها أو استعادتها من الدفق.
تتم كتابة أنواع البيانات األولية إلى الدفق باستخدام األساليب الموجودة في واجهة ،DataOutputمثل writeIntأو
writeFloatأو .writeUTFتتم كتابة البايتات الفردية ومصفوفات البايتات باستخدام طرق .OutputStreamباستثناء
الحقول القابلة للتسلسل ،تتم كتابة البيانات األولية إلى الدفق في سجالت بيانات الكتلة ،مع بداية كل سجل بعالمة وإشارة إلى
عدد البايتات في السجل.
يمكن توسيع ObjectOutputStreamلتخصيص المعلومات حول الفئات في الدفق أو الستبدال الكائنات التي سيتم تسلسلها.
ارجع إلى وصف طريقة annotateClassو replaceObjectللحصول على التفاصيل.
القراءة من دفق كائن
أوًال ،هناك حاجة إلى ،InputStreamفي هذه الحالة ،FileInputStreamباعتباره الدفق المصدر .ثم يتم إنشاء
ObjectInputStreamالذي يقرأ من .InputStreamبعد ذلك ،تتم قراءة السلسلة " "Todayوكائن التاريخ من الدفق.
بشكل عام ،تتم قراءة الكائنات باستخدام طريقة readObjectوتتم قراءة العناصر األولية من المجرى باستخدام طرق
.DataInput
تقوم طريقة قراءة الكائن بإلغاء تسلسل الكائن التالي في الدفق واجتياز مراجعه إلى كائنات أخرى بشكل متكرر إلنشاء رسم
بياني كامل للكائنات المتسلسلة.
تتم قراءة أنواع البيانات األولية من الدفق باستخدام الطرق الموجودة في واجهة ،DataInputمثل readIntأو readFloatأو
.readUTFتتم قراءة البايتات الفردية ومصفوفات البايتات باستخدام أساليب .InputStreamباستثناء الحقول القابلة للتسلسل،
تتم قراءة البيانات األولية من سجالت البيانات المجمعة.
يمكن توسيع ObjectInputStreamالستخدام المعلومات المخصصة في الدفق حول الفئات أو الستبدال الكائنات التي تم إلغاء
تسلسلها .راجع أوصاف أسلوب ResolveClassو resolveObjectللحصول على التفاصيل.
ينتج عن تسلسل الكائنات ويستهلك دفًقا من البايتات التي تحتوي على واحد أو أكثر من العناصر األولية والكائنات .الكائنات
المكتوبة في الدفق ،بدورها ،تشير إلى كائنات أخرى ،والتي يتم تمثيلها أيًض ا في الدفق .ينتج عن تسلسل الكائنات تنسيق دفق
واحد فقط يقوم بتشفير الكائنات المضمنة وتخزينها.
يقوم كل كائن يعمل كحاوية بتنفيذ واجهة تسمح بتخزين العناصر األولية والكائنات فيها أو استرجاعها منها .هذه الواجهات هي
واجهات ObjectOutputو ObjectInputالتي:
يجب أن يسمح كل كائن سيتم تخزينه في الدفق بتخزين نفسه بشكل صريح ويجب أن ينفذ البروتوكوالت الالزمة لحفظ حالته
واستعادتها .يحدد تسلسل الكائنات اثنين من هذه البروتوكوالت .تسمح البروتوكوالت للحاوية بأن تطلب من الكائن كتابة حالته
وقراءتها.
ليتم تخزينه في تدفق الكائنات ،يجب أن يقوم كل كائن بتنفيذ الواجهة القابلة للتسلسل أو الواجهة القابلة للتحويل:
بالنسبة للفئة القابلة للتسلسل ،يمكن لتسلسل الكائنات حفظ واستعادة حقول كل فئة من الكائنات تلقائًيا والتعامل تلقائًيا مع الفئات
التي تتطور عن طريق إضافة حقول أو أنواع فائقة .يمكن للفئة القابلة للتسلسل أن تعلن عن أي من حقولها تم حفظها أو
استعادتها ،وكتابة وقراءة القيم والكائنات االختيارية.
بالنسبة للفئة القابلة للتخصيص ،تقوم عملية تسلسل الكائنات بتفويض الفصل للتحكم الكامل في تنسيقها الخارجي وكيفية حفظ
حالة النوع (األنواع) الفائقة واستعادتها.
يمكن تعريف الحقول القابلة للتسلسل لفئة ما بطريقتين مختلفتين .يتم تعريف الحقول االفتراضية القابلة للتسلسل للفئة على أنها
الحقول غير العابرة وغير الثابتة .يمكن تجاوز هذا الحساب االفتراضي عن طريق اإلعالن عن حقل خاص في الفئة القابلة
للتسلسل .serialPersistentFields ،يجب تهيئة هذا الحقل بمصفوفة من كائنات ObjectStreamFieldالتي تسرد أسماء
وأنواع الحقول القابلة للتسلسل .يجب أن تكون معّد الت الحقل خاصة وثابتة ونهائية .إذا كانت قيمة الحقل فارغة أو لم تكن مثياًل
لـ ،][ObjectStreamFieldأو إذا لم يكن الحقل يحتوي على المعدالت المطلوبة ،فسيكون السلوك كما لو لم يتم اإلعالن عن
الحقل على اإلطالق.
باستخدام serialPersistentFieldsلتحديد الحقول القابلة للتسلسل لفئة ما ،لم يعد هناك قيود على أن الحقل القابل للتسلسل
يجب أن يكون حقًال ضمن التعريف الحالي للفئة القابلة للتسلسل .يمكن لطريقتي writeObjectو readObjectللفئة القابلة
للتسلسل تعيين التنفيذ الحالي للفئة إلى الحقول القابلة للتسلسل للفئة باستخدام الواجهة الموضحة في القسم " ،1.7الوصول إلى
الحقول القابلة للتسلسل للفئة ".لذلك ،يمكن أن تتغير حقول الفئة القابلة للتسلسل في إصدار الحق ،طالما أنها تحافظ على التعيين
مرة أخرى إلى الحقول القابلة للتسلسل والتي يجب أن تظل متوافقة عبر حدود اإلصدار.
ملحوظة -ومع ذلك ،هناك قيود على استخدام هذه اآللية لتحديد الحقول القابلة للتسلسل للفئات الداخلية .يمكن أن تحتوي الفئات
الداخلية فقط على الحقول الثابتة النهائية التي تمت تهيئتها لثوابت أو تعبيرات مبنية على ثوابت .وبالتالي ،ليس من الممكن تعيين
serialPersistentFieldsلفئة داخلية (على الرغم من أنه من الممكن تعيينها لفئات األعضاء الثابتة) .للتعرف على القيود
األخرى المتعلقة بتسلسل مثيالت الفئة الداخلية ،راجع القسم " ،1.10الواجهة القابلة للتسلسل".
يجب وضع العالمة @ serialفي تعليق javadocللحقل االفتراضي القابل للتسلسل .بناء الجملة كما يليserial field-@ :
descriptionيصف وصف الحقل االختياري معنى الحقل وقيمه المقبولة .يمكن أن يمتد وصف الحقل على عدة أسطر .عند
إضافة حقل بعد اإلصدار األولي ،تشير العالمة @ sinceإلى اإلصدار الذي تمت إضافة الحقل إليه .يوفر وصف الحقل لـ @
serialوثائق خاصة بالتسلسل ويتم إلحاقه بتعليق javadocللحقل ضمن وثائق النموذج التسلسلي.
تصف عالمة @ serialDataتسلسالت وأنواع البيانات المكتوبة أو المقروءة .تصف العالمة تسلسل ونوع البيانات االختيارية
المكتوبة بواسطة writeObjectأو جميع البيانات المكتوبة بواسطة الطريقة .Externalizable.writeExternalبناء الجملة
كما يليserialData data-description@ :
يتعرف تطبيق javadocعلى عالمات javadocالتسلسلية ويقوم بإنشاء مواصفات لكل فئة قابلة للتسلسل وقابلة للتحويل.
راجع القسم ج" ،1.مثال للتنفيذ البديل لملف "java.io.Fileللحصول على مثال يستخدم هذه العالمات.
عندما يتم اإلعالن عن فئة قابلة للتسلسل ،يتم تحديد الحالة القابلة للتسلسل للكائن من خالل الحقول القابلة للتسلسل (حسب االسم
والنوع) باإلضافة إلى البيانات االختيارية .ال يمكن كتابة البيانات االختيارية بشكل صريح إال من خالل طريقة writeObject
لفئة قابلة للتسلسل .يمكن قراءة البيانات االختيارية من خالل طريقة readObjectالخاصة بالفئة القابلة للتسلسل وإال فإن
التسلسل سيتخطى البيانات االختيارية غير المقروءة.
عندما يتم اإلعالن عن فئة قابلة للتحويل إلى الخارج ،فإن البيانات التي يتم كتابتها إلى الدفق بواسطة الفئة نفسها تحدد الحالة
التسلسلية .يجب أن يحدد الفصل الترتيب واألنواع والمعنى لكل مرجع مرجعي مكتوب في الدفق .يجب أن يتعامل الفصل مع
تطوره الخاص ،حتى يتمكن من االستمرار في قراءة البيانات المكتوبة وكتابة البيانات التي يمكن قراءتها بواسطة اإلصدارات
السابقة .يجب أن ينسق الفصل مع الفئة الفائقة عند حفظ البيانات واستعادتها .يجب تحديد موقع بيانات الفئات الفائقة في الدفق.
يجب أن يتأكد مصمم الفئة القابلة للتسلسل من أن المعلومات المحفوظة للفئة مناسبة لالستمرارية وتتبع القواعد المحددة للتسلسل
لقابلية التشغيل البيني والتطور .تم شرح تطور الفئة بمزيد من التفصيل في الفصل الخامس" ،إصدار الكائنات القابلة للتسلسل".
الوصول إلى الحقول القابلة للتسلسل للفئة
تسمح واجهة برمجة التطبيقات للحقول القابلة للتسلسل للفئة بالوصول بشكل صريح/تعيين الحقول القابلة للتسلسل حسب االسم
والنوع
يتم استخدام اآللية االفتراضية تلقائًيا عند قراءة أو كتابة الكائنات التي تنفذ الواجهة القابلة للتسلسل وال تقوم بأي تخصيص
إضافي .يتم تعيين الحقول القابلة للتسلسل إلى الحقول المقابلة للفئة ويتم كتابة القيم إما إلى الدفق من تلك الحقول أو تتم قراءتها
وتعيينها على التوالي .إذا كانت الفئة توفر أساليب writeObjectو ،readObjectفيمكن استدعاء اآللية االفتراضية عن
طريق استدعاء defaultWriteObjectو .defaultReadObjectعند تنفيذ طريقتي writeObjectو ،readObjectيكون
لدى الفصل فرصة لتعديل قيم الحقول القابلة للتسلسل قبل كتابتها أو بعد قراءتها.
عندما ال يمكن استخدام اآللية االفتراضية ،يمكن للفئة القابلة للتسلسل استخدام طريقة putFieldsالخاصة بـ
ObjectOutputStreamلوضع قيم الحقول القابلة للتسلسل في الدفق .تضع طريقة writeFieldsالخاصة بـ
ObjectOutputStreamالقيم بالترتيب الصحيح ،ثم تكتبها في الدفق باستخدام البروتوكول الموجود للتسلسل .في المقابل،
يقرأ أسلوب readFieldsالخاص بـ ObjectInputStreamالقيم من الدفق ويجعلها متاحة للفئة حسب االسم بأي ترتيب.
راجع القسم " ،2.2فئة "ObjectOutputStream.PutFieldوالقسم " ،3.2فئة ".Object InputStream.GetField
للحصول على وصف تفصيلي لواجهة برمجة تطبيقات الحقول القابلة للتسلسل.
توفر واجهة ObjectOutputواجهة مجردة قائمة على التدفق لتخزين الكائنات .فهو يعمل على توسيع واجهة DataOutput
بحيث يمكن استخدام هذه األساليب لكتابة أنواع البيانات البدائية .يمكن استخدام الكائنات التي تنفذ هذه الواجهة لتخزين العناصر
األولية والكائنات.
يتم استخدام طريقة writeObjectلكتابة كائن .تعكس االستثناءات التي تم طرحها األخطاء أثناء الوصول إلى الكائن أو
حقوله ،أو االستثناءات التي تحدث أثناء الكتابة إلى وحدة التخزين .إذا تم طرح أي استثناء ،فقد يكون التخزين األساسي تالًفا .في
حالة حدوث ذلك ،راجع الكائن الذي يقوم بتطبيق هذه الواجهة للحصول على مزيد من المعلومات.
يتم استخدام طريقة readObjectلقراءة كائن وإعادته .تعكس االستثناءات التي تم طرحها األخطاء أثناء الوصول إلى الكائنات
أو حقولها أو االستثناءات التي تحدث أثناء القراءة من وحدة التخزين .إذا تم طرح أي استثناء ،فقد يكون التخزين األساسي تالًفا.
في حالة حدوث ذلك ،راجع الكائن الذي يقوم بتنفيذ هذه الواجهة للحصول على معلومات إضافية.
ينتج عن تسلسل الكائنات دفًقا يحتوي على معلومات حول فئات JavaTMللكائنات التي يتم حفظها .بالنسبة للكائنات القابلة
للتسلسل ،يتم االحتفاظ بمعلومات كافية الستعادة تلك الكائنات حتى في حالة وجود إصدار مختلف (لكن متوافق) من تطبيق
الفئة .يتم تعريف الواجهة القابلة للتسلسل لتحديد الفئات التي تنفذ البروتوكول القابل للتسلسل:
(استخدم العضو serialPersistentFieldsلإلعالن بشكل صريح عن أنها قابلة للتسلسل أو استخدم الكلمة األساسية العابرة
لإلشارة إلى الحقول غير القابلة للتسلسل).
تمتع بإمكانية الوصول إلى ُم نشئ no-argألول فئة فائقة غير قابلة للتسلسل
طريقة writeObjectللتحكم في المعلومات التي يتم حفظها أو إللحاق معلومات إضافية بالتدفق
طريقة readObjectإما لقراءة المعلومات المكتوبة بواسطة طريقة writeObjectالمقابلة أو لتحديث حالة الكائن
بعد استعادته
طريقة writeReplaceتسمح للفئة بترشيح كائن بديل ليتم كتابته في الدفق
طريقة readResolveتسمح للفئة بتعيين كائن بديل للكائن الذي تمت قراءته للتو من الدفق
يسمح ObjectOutputStreamو ObjectInputStreamللفئات القابلة للتسلسل التي تعمل عليها بالتطور (السماح بإجراء
تغييرات على الفئات المتوافقة مع اإلصدارات السابقة من الفئات) .راجع القسم " ،5.5تطور نوع JavaTMالمتوافق"
للحصول على معلومات حول اآللية المستخدمة للسماح بإجراء تغييرات متوافقة.
ملحوظة -ال ُينصح بشدة بإجراء تسلسل للفئات الداخلية (أي الفئات المتداخلة التي ليست فئات أعضاء ثابتة) ،بما في ذلك الفئات
المحلية والمجهولة ،وذلك لعدة أسباب .نظًر ا ألن الفئات الداخلية المعلنة في سياقات غير ثابتة تحتوي على مراجع ضمنية غير
عابرة لمثيالت الفئة المتضمنة ،فإن إجراء تسلسل لمثيل الفئة الداخلية سيؤدي إلى تسلسل مثيل الطبقة الخارجية المرتبطة به
أيًضا .الحقول االصطناعية التي تم إنشاؤها بواسطة ( javacأو برامج التحويل البرمجي JavaTMاألخرى) لتنفيذ الفئات
الداخلية تعتمد على التنفيذ وقد تختلف بين المترجمين؛ يمكن أن تؤدي االختالفات في مثل هذه الحقول إلى تعطيل التوافق وكذلك
تؤدي إلى تعارض قيم serialVersionUIDاالفتراضية .األسماء المخصصة للفئات الداخلية المحلية والمجهولة تعتمد أيًضا
على التنفيذ وقد تختلف بين المترجمين .نظًر ا ألن الفئات الداخلية ال يمكنها اإلعالن عن أعضاء ثابتين بخالف الحقول الثابتة في
وقت الترجمة ،فال يمكنها استخدام آلية serialPersistentFieldsلتعيين الحقول القابلة للتسلسل .أخيًرا ،نظًرا ألن الفئات
الداخلية المرتبطة بالمثيالت الخارجية ال تحتوي على ُم نشئات ذات وسيطات صفرية (يقبل ُم نشئو هذه الفئات الداخلية ضمنًيا
المثيل المتضمن كمعلمة ُم لحقة مسبًقا) ،فال يمكنهم تنفيذ .Externalizableومع ذلك ،ال تنطبق أي من المشكالت المذكورة
أعاله على فئات األعضاء الثابتة.
بالنسبة للكائنات القابلة للتخصيص ،يتم حفظ هوية فئة الكائن فقط بواسطة الحاوية؛ يجب على الفصل حفظ واستعادة المحتويات.
يتم تعريف واجهة Externalizableعلى النحو التالي:
يكون التابعان writeExternalو readExternalهما المسؤوالن الوحيدان عن التنسيق ،في حالة كتابة تنسيق محدد خارجًيا
ملحوظة -تعتبر أساليب writeExternalو readExternalعامة وتزيد من خطر قدرة العميل على كتابة أو قراءة المعلومات
في الكائن بخالف استخدام األساليب والحقول الخاصة به .يجب استخدام هذه األساليب فقط عندما تكون المعلومات التي يحتفظ
بها الكائن غير حساسة أو عندما ال يشكل الكشف عنها خطًرا أمنًيا.
طريقة writeReplaceتسمح للفئة بترشيح كائن بديل ليتم كتابته في الدفق
طريقة readResolveتسمح للفئة بتعيين كائن بديل للكائن الذي تمت قراءته للتو من الدفق
يتم إجراء تسلسل لثوابت التعداد بشكل مختلف عن الكائنات العادية القابلة للتسلسل أو الخارجية .يتكون الشكل المتسلسل لثابت
التعداد من اسمه فقط؛ قيم حقل الثابت غير موجودة في النموذج .إلجراء تسلسل لثابت التعداد ،يكتب ObjectOutputStream
القيمة التي يتم إرجاعها بواسطة طريقة اسم ثابت التعداد .إللغاء تسلسل ثابت التعداد ،يقرأ ObjectInputStreamاسم الثابت
من الدفق؛ يتم بعد ذلك الحصول على الثابت الذي تم إلغاء تسلسله عن طريق استدعاء األسلوب
،java.lang.Enum.valueOfوتمرير نوع تعداد الثابت مع اسم الثابت المستلم كوسيطات .مثل الكائنات األخرى القابلة
للتسلسل أو الخارجية ،يمكن أن تعمل ثوابت التعداد كأهداف للمراجع الخلفية التي تظهر الحًقا في مجرى التسلسل.
ال يمكن تخصيص العملية التي يتم من خاللها إجراء تسلسل لثوابت التعداد :يتم تجاهل أي أساليب writeObjectو
readObjectو readObjectNoDataو writeReplaceو readResolveالمحددة بواسطة أنواع التعداد أثناء التسلسل
وإلغاء التسلسل .وبالمثل ،يتم أيًض ا تجاهل أي إعالنات حقل serialPersistentFieldsأو - serialVersionUIDجميع
أنواع التعداد لها معرف serialVersionUIDثابت يبلغ .0Lيعد توثيق الحقول والبيانات القابلة للتسلسل ألنواع التعداد غير
ضروري ،حيث ال يوجد اختالف في نوع البيانات المرسلة.
عند تطوير فئة توفر وصوًال متحكًم ا إلى الموارد ،يجب توخي الحذر لحماية المعلومات والوظائف الحساسة .أثناء إلغاء
التسلسل ،تتم استعادة الحالة الخاصة للكائن .على سبيل المثال ،يحتوي واصف الملف على مؤشر يوفر الوصول إلى مورد نظام
التشغيل .إن القدرة على تزوير واصف الملف من شأنها أن تسمح ببعض أشكال الوصول غير القانوني ،حيث أن استعادة الحالة
تتم من الدفق .لذلك ،يجب أن يتبع وقت تشغيل التسلسل النهج المحافظ وال يثق في أن الدفق يحتوي فقط على تمثيالت صالحة
للكائنات .لتجنب المساس بفئة ما ،يجب عدم استعادة الحالة الحساسة للكائن من الدفق ،أو يجب إعادة التحقق منها بواسطة الفئة.
تتوفر العديد من التقنيات لحماية البيانات الحساسة في الفصول الدراسية.
أسهل أسلوب هو وضع عالمة على الحقول التي تحتوي على بيانات حساسة كعابرة خاصة .الحقول العابرة ليست ثابتة ولن يتم
حفظها بواسطة أي آلية استمرارية .سيؤدي وضع عالمة على الحقل إلى منع ظهور الحالة في الدفق ومن استعادتها أثناء إلغاء
التسلسل .نظًر ا ألنه ال يمكن استبدال الكتابة والقراءة (للحقول الخاصة) خارج الفصل ،فإن الحقول المؤقتة للفصل تكون آمنة.
ال ينبغي إجراء تسلسل للفئات الحساسة بشكل خاص على اإلطالق .ولتحقيق ذلك ،يجب أال يقوم الكائن بتنفيذ الواجهة القابلة
للتسلسل أو الواجهة القابلة للتحويل.
قد تجد بعض الفئات أنه من المفيد السماح بالكتابة والقراءة ولكن على وجه التحديد التعامل مع الحالة وإعادة التحقق من صحتها
عند إلغاء تسلسلها .يجب على الفصل تطبيق أساليب writeObjectو readObjectلحفظ الحالة المناسبة واستعادتها فقط .إذا
تم رفض الوصول ،فسيؤدي طرح NotSerializableExceptionإلى منع المزيد من الوصول.
:SQL
لغة االستعالم الهيكلية ( ) SQLهي مجموعة من البيانات التي يمكن من خاللها لجميع البرامج والمستخدمين الوصول إلى
البيانات في قاعدة بيانات أوراكل .غالًبا ما تسمح برامج التطبيقات وأدوات أوراكل للمستخدمين بالوصول إلى قاعدة البيانات
دون استخدام SQLمباشرة ،ولكن هذه التطبيقات بدورها يجب أن تستخدم SQLعند تنفيذ طلب المستخدم .يقدم هذا الفصل
معلومات أساسية عن SQLكما تستخدمها معظم أنظمة قواعد البيانات.
تاريخ SQL
نشر الدكتور إي إف كود ورقة بحثية بعنوان "نموذج عالئقي للبيانات لبنوك البيانات المشتركة الكبيرة" في يونيو 1970في
مجلة رابطة آالت الكمبيوتر ( ،)ACMاتصاالت .ACMيتم اآلن قبول نموذج Coddباعتباره النموذج النهائي ألنظمة إدارة
قواعد البيانات العالئقية ( .)RDBMSتم تطوير اللغة ،لغة االستعالم اإلنجليزية المنظمة ( ،)SEQUELبواسطة شركة
،.IBM Corporation, Incالستخدام نموذج .Coddأصبح SEQUELفيما بعد ( SQLال يزال ُينطق "تكملة") .في عام
،1979قدمت شركة ( .Relational Software, Incالمعروفة اآلن باسم )Oracleأول تطبيق متاح تجارًيا لـ .SQLاليوم،
يتم قبول SQLكلغة RDBMSالقياسية.
معايير SQL
تسعى Oracleجاهدة لالمتثال للمعايير المقبولة في الصناعة وتشارك بنشاط في لجان معايير .SQLاللجان المقبولة من قبل
الصناعة هي المعهد الوطني األمريكي للمعايير ( )ANSIوالمنظمة الدولية للمعايير ( ،)ISOالتابعة للجنة الكهروتقنية الدولية
( .)IECلقد قبل كل من ANSIو ISO/IECلغة SQLباعتبارها اللغة القياسية لقواعد البيانات العالئقية .عندما يتم نشر
معيار SQLجديد في نفس الوقت بواسطة هذه المؤسسات ،تتوافق أسماء المعايير مع االصطالحات المستخدمة من قبل
المؤسسة ،ولكن المعايير متطابقة من الناحية الفنية.
تم اعتماد أحدث معيار SQLفي يوليو 2003ويسمى غالًبا .SQL:2003األسماء الرسمية لهذا المعيار هي:
توفر نقاط قوة SQLفوائد لجميع أنواع المستخدمين ،بما في ذلك مبرمجي التطبيقات ومسؤولي قواعد البيانات
والمديرين والمستخدمين النهائيين .من الناحية الفنية SQL ،هي لغة فرعية للبيانات .الغرض من SQLهو توفير واجهة لقاعدة
بيانات عالئقية مثل ،Oracle Databaseوجميع عبارات SQLهي تعليمات لقاعدة البيانات .في هذا SQLيختلف عن لغات
البرمجة ذات األغراض العامة مثل Cو .BASICومن بين ميزات SQLما يلي:
فهو يستخدم عبارات معقدة وقوية بشكل فردي ،وبالتالي فهي قائمة بذاتها .لم تكن عبارات التحكم في التدفق جزًء ا من SQLفي
األصل ،ولكن تم العثور عليها في الجزء االختياري الذي تم قبوله مؤخًرا من .SQL، ISO/IEC 9075-5: 1996وتعرف
عبارات التحكم في التدفق بشكل شائع باسم "الوحدات المخزنة المستمرة" ( ،)PSMوامتداد PL/SQLإلى Oracle SQL
يشبه .PSM
يتيح لك SQLالعمل مع البيانات على المستوى المنطقي .يجب أن تهتم بتفاصيل التنفيذ فقط عندما تريد معالجة البيانات .على
سبيل المثال ،السترداد مجموعة من الصفوف من جدول ،يمكنك تحديد شرط يستخدم لتصفية الصفوف .يتم استرداد جميع
الصفوف التي تستوفي الشرط في خطوة واحدة ويمكن تمريرها كوحدة إلى المستخدم أو إلى عبارة SQLأخرى أو إلى تطبيق.
ال تحتاج إلى التعامل مع الصفوف واحًدا تلو اآلخر ،وال داعي للقلق بشأن كيفية تخزينها أو استرجاعها فعلًيا .تستخدم جميع
عبارات SQLالُم حِّسن ،وهو جزء من Oracle Databaseالذي يحدد الوسائل األكثر فعالية للوصول إلى البيانات المحددة.
توفر Oracleأيًضا تقنيات يمكنك استخدامها لجعل الُم حِّسن يؤدي مهمته بشكل أفضل.
توفر لغة SQLبيانات لمجموعة متنوعة من المهام ،بما في ذلك:
االستعالم عن البيانات
إدراج وتحديث وحذف الصفوف في الجدول
إنشاء الكائنات واستبدالها وتعديلها وإسقاطها
التحكم في الوصول إلى قاعدة البيانات وكائناتها
ضمان اتساق قاعدة البيانات وسالمتها
يقوم SQLبتوحيد كافة المهام السابقة في لغة واحدة متسقة.
تدعم جميع أنظمة إدارة قواعد البيانات العالئقية الرئيسية لغة ،SQLلذا يمكنك نقل جميع المهارات التي اكتسبتها باستخدام لغة
SQLمن قاعدة بيانات إلى أخرى .باإلضافة إلى ذلك ،فإن كافة البرامج المكتوبة بلغة SQLقابلة للنقل .يمكن غالًبا نقلها من
قاعدة بيانات إلى أخرى مع القليل من التعديل.
التحسينات األخيرة
يعد محرك Oracle Database SQLهو األساس لجميع تطبيقات .Oracle Databaseتتطور Oracle SQLباستمرار
لتلبية المتطلبات المتزايدة لتطبيقات قواعد البيانات ولدعم بنيات الحوسبة الناشئة وواجهات برمجة التطبيقات وبروتوكوالت
الشبكة.
باإلضافة إلى البيانات المنظمة التقليدية ،فإن SQLقادرة على تخزين واسترجاع ومعالجة البيانات األكثر تعقيًدا:
توفر أنواع الكائنات وأنواع المجموعات وأنواع REFالدعم للبيانات المنظمة المعقدة .يتم اآلن دعم عدد من عوامل تشغيل
المجموعات المتعددة المتوافقة مع المعايير لنوع مجموعة الجدول المتداخل.
توفر الكائنات الكبيرة ( )LOBsالدعم لكل من البيانات الشخصية والبيانات الثنائية غير المنظمة .يمكن أن يصل حجم LOB
واحد إلى 8إلى 128تيرابايت ،اعتماًدا على حجم كتلة قاعدة البيانات.
يتيح لك دعم التعبير العادي األصلي إجراء عمليات بحث عن األنماط والتعامل مع النص الحر المنسق بشكل فضفاض داخل
قاعدة البيانات.
تعمل أنواع البيانات ذات الفاصلة العائمة األصلية المستندة إلى معيار IEEE754على تحسين معالجة الفاصلة العائمة الشائعة
في معايير XMLو Javaوتقليل مساحة التخزين المطلوبة للبيانات الرقمية.
تعمل وظائف SQLالتجميعية والتحليلية المضمنة على تسهيل الوصول إلى البيانات ومعالجتها في مستودعات البيانات
وأسواق البيانات.
ستستمر التحسينات المستمرة في Oracle SQLفي توفير الدعم الشامل لتطوير تطبيقات قواعد البيانات متعددة االستخدامات
وقابلة للتطوير وعالية األداء.
االتفاقيات المعجمية
تنطبق االصطالحات المعجمية التالية إلصدار عبارات SQLبشكل خاص على تطبيق Oracle Databaseلـ ،SQLولكنها
مقبولة بشكل عام في تطبيقات SQLاألخرى.
عندما تقوم بإصدار عبارة ،SQLيمكنك تضمين عالمة تبويب أو أكثر أو مسافات أو تعليقات في أي مكان تظهر فيه مسافة
ضمن تعريف العبارة .وبالتالي ،تقوم Oracle Databaseبتقييم العبارتين التاليتين بنفس الطريقة:
حالة األحرف غير مهمة في الكلمات المحجوزة والكلمات الرئيسية والمعرفات والمعلمات .ومع ذلك ،فإن حالة األحرف مهمة
في النصوص الحرفية واألسماء المقتبسة ،ودعم األدوات
SQL*Plusعبارة عن أداة استعالم تفاعلية ومجّم عة يتم تثبيتها مع كل تثبيت لخادم قاعدة بيانات Oracleأو عميل .يحتوي
على واجهة مستخدم سطر األوامر وواجهة مستخدم على شبكة اإلنترنت تسمى .iSQL*Plus
Oracle JDeveloperعبارة عن بيئة تطوير متكاملة متعددة المنصات تدعم دورة الحياة الكاملة لتطوير Javaوخدمات
الويب و .SQLوهو يوفر واجهة رسومية لتنفيذ وضبط عبارات SQLومخطط مخطط مرئي (مصمم نماذج قاعدة البيانات).
كما أنه يدعم تحرير وتجميع وتصحيح تطبيقات .PL/SQL
Oracle HTML DBهي بيئة مستضافة لتطوير ونشر تطبيقات الويب المتعلقة بقواعد البيانات .يعد SQL Workshop
أحد مكونات Oracle HTML DBالذي يتيح لك عرض كائنات قاعدة البيانات وإدارتها من مستعرض الويب .توفر SQL
Workshopوصوًال سريًعا إلى معالج أوامر SQLومستودع البرامج النصية .SQL
تتيح لك Oracle Call Interfaceو Oracle Precompilersإمكانية تضمين عبارات SQLالقياسية في لغة برمجة
اإلجراءات.
تتيح لك واجهة ) Oracle Call (OCIتضمين عبارات SQLفي برامج .C
تقوم مترجمات Oracleالمسبقة ++Pro*C/C ،و ،Pro*COBOLبتفسير عبارات SQLالمضمنة وترجمتها إلى عبارات
يمكن فهمها بواسطة مترجمي ++C/Cو ،COBOLعلى التوالي.
تدعم معظم أدوات ( Oracleوليس كلها) أيًضا جميع ميزات .Oracle SQLيصف هذا المرجع الوظيفة الكاملة لـ .SQLإذا
كانت أداة Oracleالتي تستخدمها ال تدعم هذه الوظيفة الكاملة ،فيمكنك العثور على مناقشة للقيود في الدليل الذي يصف األداة،
مثل SQL*Plusدليل المستخدم والمرجع.
يحتوي هذا الفصل على معلومات مرجعية حول العناصر األساسية لـ .Oracle SQLهذه العناصر هي أبسط اللبنات األساسية
لعبارات .SQLولذلك ،قبل استخدام العبارات الموضحة في التعرف على المفاهيم التي يغطيها هذا الفصل.
أنواع البيانات
تحتوي كل قيمة يتم التعامل معها بواسطة Oracle Databaseعلى نوع بيانات .يقوم نوع بيانات القيمة بربط مجموعة ثابتة
من الخصائص بالقيمة .تؤدي هذه الخصائص إلى قيام Oracleبمعاملة قيم نوع بيانات واحد بشكل مختلف عن قيم نوع آخر.
على سبيل المثال ،يمكنك إضافة قيمرقمنوع البيانات ،ولكن ليس قيمخامنوع البيانات.
عند إنشاء جدول أو مجموعة ،يجب عليك تحديد نوع بيانات لكل عمود من أعمدته .عندما تقوم بإنشاء إجراء أو وظيفة مخزنة،
يجب عليك تحديد نوع بيانات لكل من الوسائط الخاصة به .تحدد أنواع البيانات هذه مجال القيم التي يمكن أن يحتوي عليها كل
عمود أو يمكن أن تحتوي عليها كل وسيطة .على سبيل المثال،تاريخال يمكن لألعمدة قبول القيمة 29فبراير (باستثناء السنة
الكبيسة) أو القيم 2أو "الحذاء" .كل قيمة يتم وضعها الحًقا في عمود تفترض نوع بيانات العمود .على سبيل المثال ،إذا قمت
بإدراج'-01يناير'98-الىتاريخعمود ،ثم يعامل أوراكل'-01يناير'98-سلسلة األحرف كتاريخالقيمة
بعد التحقق من ترجمتها إلى تاريخ صالح.
توفر قاعدة بيانات Oracleعدًدا من أنواع البيانات المضمنة باإلضافة إلى عدة فئات لألنواع المعرفة من قبل المستخدم والتي
يمكن استخدامها كأنواع بيانات .يظهر بناء جملة أنواع بيانات Oracleفي المخططات التالية .وينقسم نص هذا القسم إلى
األقسام التالية:
نوع البيانات إما عددي أو غير عددي .يحتوي النوع العددي على قيمة ذرية ،بينما يحتوي النوع غير العددي (يسمى أحياًنا
"المجموعة") على مجموعة من القيم .الكائن الكبير ( )LOBهو شكل خاص من أنواع البيانات العددية التي تمثل قيمة عددية
كبيرة للبيانات الثنائية أو الشخصية .تخضع LOBsلبعض القيود التي ال تؤثر على األنواع العددية األخرى بسبب حجمها .يتم
توثيق هذه القيود في سياق بناء جملة SQLذي الصلة.
يلخص الجدول التالي أنواع البيانات المضمنة في .Oracleيرجى الرجوع إلى بناء الجملة في األقسام السابقة للعناصر
النحوية .يتم استخدام الرموز المدرجة ألنواع البيانات داخلًيا بواسطة .Oracle Databaseيتم إرجاع رمز نوع البيانات
الخاص بعمود أو سمة كائن بواسطة الدالة .DUMP
الشاريحدد نوع البيانات سلسلة أحرف ذات طول ثابت .تضمن Oracleأن جميع القيم المخزنة في ملفشارالعمود له الطول
المحدد حسب الحجم .إذا قمت بإدراج قيمة أقصر من طول العمود ،فستقوم Oracleبتوزيع القيمة على طول العمود .إذا
حاولت إدراج قيمة طويلة جًدا بالنسبة للعمود ،فسترجع Oracleخطًأ.
الطول االفتراضي لشارالعمود هو 1بايت والحد األقصى المسموح به هو 2000بايت .يمكن إدراج سلسلة ذات بايت واحد
في ملفشار()10العمود ،ولكن السلسلة فارغة إلى 10بايت قبل تخزينها.
عندما تقوم بإنشاء جدول معشارعمود ،بشكل افتراضي تقوم بتوفير طول العمود بالبايت .البايتالمؤهل هو نفس
االفتراضي .إذا كنت تستخدمشار التصفيات ،على سبيل المثالشار( 10شار) ،ثم تقوم بتوفير طول العمود باألحرف.
الحرف هو من الناحية الفنية نقطة رمز لمجموعة أحرف قاعدة البيانات .يمكن أن يتراوح حجمه من 1بايت إلى 4بايت،
اعتماًدا على مجموعة أحرف قاعدة البيانات .البايتوشارتتجاوز المؤهالت الدالالت المحددة بواسطة
NLS_LENGTH_SEMANTICSالمعلمة ،التي تحتوي على دالالت البايت االفتراضية .ألسباب تتعلق باألداء ،توصي
OracleباستخدامNLS_LENGTH_SEMANTICSالمعلمة لتعيين دالالت الطول والتي
تستخدمهابايتوشارالمؤهالت فقط عند الضرورة لتجاوز المعلمة.
النشارنوع البيانات هو نوع بيانات Unicodeفقط .عندما تقوم بإنشاء جدول معنشارالعمود ،يمكنك تحديد طول العمود
باألحرف .يمكنك تحديد مجموعة األحرف الوطنية عند إنشاء قاعدة البيانات الخاصة بك.
يتم تحديد الحد األقصى لطول العمود من خالل تعريف مجموعة األحرف الوطنية .مواصفات العرض لنوع بيانات
الحرفنشار الرجوع إلى عدد األحرف .الحد األقصى لحجم العمود المسموح به هو 2000بايت.
إذا قمت بإدراج قيمة أقصر من طول العمود ،فستقوم Oracleبتوزيع القيمة على طول العمود .ال يمكنك إدراج أشارقيمة
فينشارعمود ،وال يمكنك إدراجنشارالقيمة في أشارعمود.
النفارتشار2نوع البيانات هو نوع بيانات Unicodeفقط .عندما تقوم بإنشاء جدول معنفارتشار2العمود ،يمكنك
توفير الحد األقصى لعدد األحرف التي يمكنه االحتفاظ بها .تقوم Oracleبعد ذلك بتخزين كل قيمة في العمود تماًم ا كما
تحددها ،بشرط أال تتجاوز القيمة الحد األقصى لطول العمود.
يتم تحديد الحد األقصى لطول العمود من خالل تعريف مجموعة األحرف الوطنية .مواصفات العرض لنوع بيانات
الحرفنفارتشار2الرجوع إلى عدد األحرف .الحد األقصى لحجم العمود المسموح به هو 4000بايت .يرجى الرجوع
إلىدليل دعم عولمة قاعدة بيانات أوراكلللحصول على معلومات حول دعم نوع بيانات .Unicode
الفارتشار2يحدد نوع البيانات سلسلة أحرف ذات طول متغير .عندما تقوم بإنشاءفارتشار2العمود ،يمكنك توفير الحد
األقصى لعدد البايتات أو أحرف البيانات التي يمكنه االحتفاظ بها .تقوم Oracleبعد ذلك بتخزين كل قيمة في العمود تماًم ا كما
تحددها ،بشرط أال تتجاوز القيمة الحد األقصى لطول العمود .إذا حاولت إدراج قيمة تتجاوز الطول المحدد ،فسترجع Oracle
خطًأ.
يجب عليك تحديد الحد األقصى لطول aفارتشار2عمود .يجب أن يكون هذا الحد األقصى بايت واحد على األقل ،على
الرغم من أنه ُيسمح للسلسلة الفعلية المخزنة بأن تكون سلسلة ذات طول صفري ('') .يمكنك استخدام الشارالتصفيات ،على
سبيل المثالفارتشار10(2شار) ،إلعطاء الحد األقصى لطول األحرف بدًال من البايتات .الحرف هو من الناحية الفنية
نقطة رمز لمجموعة أحرف قاعدة البيانات.شاروبايتتتجاوز المؤهالت إعداد
NLS_LENGTH_SEMANTICSالمعلمة ،التي تحتوي على بايت افتراضي .ألسباب تتعلق باألداء ،توصي Oracle
باستخدامNLS_LENGTH_SEMANTICSالمعلمة لتعيين دالالت الطول والتي تستخدمهابايتوشارالمؤهالت فقط
عند الضرورة لتجاوز المعلمة .الحد األقصى لطولفارتشار2البيانات 4000بايت .يقارن أوراكلفارتشار2القيم
باستخدام دالالت المقارنة غير المبطنة.
لضمان تحويل البيانات بشكل صحيح بين قواعد البيانات ذات مجموعات أحرف مختلفة ،يجب عليك التأكد من ذلكفارتشار
2تتكون البيانات من سالسل جيدة التكوين .يرىدليل دعم عولمة قاعدة بيانات أوراكللمزيد من المعلومات حول دعم مجموعة
األحرف.
ال تستخدمفارتشارنوع البيانات .استخدم الفارتشار2نوع البيانات بدال من ذلك .على الرغم من أنفارتشارنوع
البيانات مرادف حالًيا لـفارتشار ،2الفارتشارتمت جدولة إعادة تعريف نوع البيانات كنوع بيانات منفصل يستخدم
لسالسل األحرف ذات الطول المتغير مقارنة بدالالت المقارنة المختلفة.
تقوم أنواع البيانات الرقمية في Oracle Databaseبتخزين أرقام الفاصلة العائمة والثابتة الموجبة والسالبة ،والصفر،
والالنهاية ،والقيم التي تمثل النتيجة غير المحددة لعملية ما (أي "ليست رقًم ا" أونان) .للحصول على معلومات حول تحديد
أنواع البيانات الرقمية كنوع بيانات رقم حرفي
الرقميقوم نوع البيانات بتخزين الصفر باإلضافة إلى األرقام الثابتة الموجبة والسالبة ذات القيم المطلقة من 130-10 × 1.0
إلى (ولكن ليس بما في ذلك) .10126 × 1.0إذا قمت بتحديد تعبير حسابي تكون قيمته مطلقة أكبر من أو تساوي × 1.0
، 10126ثم تقوم Oracleبإرجاع خطأ .كلرقمتتطلب القيمة من 1إلى 22بايت.
أين:
ص هي الدقة ،أو العدد اإلجمالي لألرقام العشرية المهمة ،حيث يكون الرقم األكثر أهمية هو الرقم غير الصفر الموجود في
أقصى اليسار ،والرقم األقل أهمية هو الرقم األكثر شهرة على اليمين .تضمن Oracleإمكانية نقل األرقام بدقة تصل إلى 20
رقًم ا أساسًيا من 100رقم ،وهو ما يعادل 39أو 40رقًم ا عشرًيا اعتماًدا على موضع العالمة العشرية.
سهو المقياس ،أو عدد األرقام من العالمة العشرية إلى الرقم األقل أهمية .يمكن أن يتراوح المقياس من 84-إلى .127
المقياس اإليجابي هو عدد األرقام المهمة الموجودة على يمين العالمة العشرية بما في ذلك الرقم األقل أهمية.
المقياس السلبي هو عدد األرقام المهمة الموجودة على يسار العالمة العشرية ،ولكن ال يشمل الرقم األقل أهمية .بالنسبة للمقياس
السالب ،يكون الرقم األقل أهمية على الجانب األيسر من العالمة العشرية ،ألنه يتم تقريب البيانات الفعلية إلى العدد المحدد من
المنازل على يسار العالمة العشرية .على سبيل المثال ،مواصفات ( )2-،10تعني التقريب إلى مئات.
يمكن أن يكون المقياس أكبر من الدقة ،في أغلب األحيان عندماهيتم استخدام التدوين .عندما يكون المقياس أكبر من الدقة ،تحدد
الدقة الحد األقصى لعدد األرقام المهمة على يمين العالمة العشرية .على سبيل المثال ،عمود تم تعريفه كـرقم()4,5يتطلب
صفًر ا للرقم األول بعد العالمة العشرية ويقوم بتقريب كافة القيم بعد الرقم الخامس بعد العالمة العشرية.
من الممارسات الجيدة تحديد مقياس ودقة عمود رقم النقطة الثابتة لمزيد من التحقق من سالمة اإلدخال .ال يؤدي تحديد المقياس
والدقة إلى فرض طول ثابت لجميع القيم .إذا تجاوزت القيمة الدقة ،فسترجع Oracleخطًأ .إذا تجاوزت القيمة المقياس ،تقوم
Oracleبتقريبها.
يمثل هذا رقًم ا ثابًتا بدقة pومقياس 0ويعادلرقم(ع .)0،يحدد غياب محددات الدقة والمقياس الحد األقصى للنطاق والدقة
لرقم .Oracle
يمكن أن تحتوي أرقام الفاصلة العائمة على نقطة عشرية في أي مكان من الرقم األول إلى الرقم األخير أو ال يمكن أن تحتوي
على نقطة عشرية على اإلطالق .يمكن استخدام األس بشكل اختياري بعد الرقم لزيادة النطاق (على سبيل المثالe- 1.777 ،
.)20ال تنطبق قيمة المقياس على أرقام الفاصلة العائمة ،ألن عدد األرقام التي يمكن أن تظهر بعد العالمة العشرية غير مقيد.
تختلف أرقام الفاصلة العائمة الثنائية عنرقمبالطريقة التي يتم بها تخزين القيم داخلًيا بواسطة .Oracle Databaseيتم تخزين
القيم باستخدام الدقة العشرية لرقم .جميع القيم الحرفية التي تقع ضمن النطاق والدقة التي يدعمهارقميتم تخزينها بالضبط
كمارقم .يتم تخزين القيم الحرفية تماًم ا ألنه يتم التعبير عن القيم الحرفية باستخدام الدقة العشرية (األرقام من 0إلى .)9يتم
تخزين أرقام الفاصلة العائمة الثنائية باستخدام الدقة الثنائية (األرقام 0و .)1ال يمكن لنظام التخزين هذا تمثيل كافة القيم
باستخدام الدقة العشرية تماًم ا .في كثير من األحيان ،يتم التراجع عن الخطأ الذي يحدث عند تحويل قيمة من الدقة العشرية إلى
الدقة الثنائية عندما يتم تحويل القيمة مرة أخرى من الدقة الثنائية إلى الدقة العشرية .الحرفي 0.1هو مثال على ذلك.
BINARY_FLOAT
BINARY_FLOATهو نوع بيانات رقم الفاصلة العائمة ذو 32بت ودقة واحدة .كلBINARY_FLOATتتطلب
القيمة 5بايت ،بما في ذلك بايت الطول.
ثنائي_مزدوج
ثنائي_مزدوجهو نوع بيانات رقم الفاصلة العائمة مزدوج الدقة 64بت .كلثنائي_مزدوجتتطلب القيمة 9بايت،
بما في ذلك بايت الطول.
دراسة النظام
دراسة الجدوى:
يتم تحليل جدوى المشروع في هذه المرحلة ويتم طرح مقترح األعمال مع خطة عامة جًدا للمشروع وبعض تقديرات التكلفة.
أثناء تحليل النظام ،سيتم إجراء دراسة جدوى النظام المقترح .وذلك للتأكد من أن النظام المقترح ال يشكل عبئا على الشركة.
لتحليل الجدوى ،من الضروري فهم بعض المتطلبات الرئيسية للنظام.
الجدوى االقتصادية:
تم إجراء هذه الدراسة للتحقق من األث ر االقتص ادي ال ذي س يحدثه النظ ام على المنظم ة .إن حجم األم وال ال تي يمكن للش ركة
ضخها في البحث وتطوير النظام محدود .ويجب أن تكون النفقات مبررة .وهكذا تم تطوير النظام كذلك ضمن الميزانية وهذا م ا
تحقق ألن معظم التقنيات المستخدمة متاحة بشكل مجاني .وكان ال بد من شراء المنتجات المخصصة فقط.
الجدوى الفنية:
يتم إجراء هذه الدراسة للتحقق من الجدوى الفنية ،أي المتطلبات الفنية للنظام .يجب أال يك ون ألي نظ ام يتم تط ويره طلب كب ير
على الموارد التقنية المتاحة .سيؤدي ذلك إلى ارتفاع الطلب على الموارد التقنية المتاحة .سيؤدي هذا إلى فرض متطلب ات عالي ة
على العميل .يجب أن يكون للنظام المطور متطلب ات متواض عة ،حيث ال يل زم س وى الح د األدنى من التغي يرات أو التغي يرات
الفارغة لتنفيذ هذا النظام.
الجدوى االجتماعية:
جانب الدراسة هو التحقق من مستوى قبول النظام من قب ل المس تخدم .ويتض من ذل ك عملي ة ت دريب المس تخدم على اس تخدام
النظام بكف اءة .يجب أال يش عر المس تخدم بالتهدي د من النظ ام ،ب ل يجب علي ه قبول ه كض رورة .يعتم د مس توى القب ول من قب ل
المستخدمين فقط على األساليب المستخدمة لتثقيف المستخدم حول النظام وجعله على دراية ب ه .ويجب رف ع مس توى ثقت ه ح تى
يتمكن أيضًا من تقديم بعض االنتقادات البناءة ،وهو أمر مرحب به باعتباره المستخدم األخير للنظام.
اختبار النظام
خطة االختبار:
يعد اختبار البرمجيات عنصًرا حاسًم ا في ضمان جودة البرمجيات ويمثل المراجعة النهائية للمواصفات والتصميم والترميز .في
الواقع ،االختبار هو الخطوة الوحيدة في عملية هندسة البرمجيات التي يمكن اعتبارها مدمرة وليست بناءة.
تدمج استراتيجية اختبار البرامج أساليب تصميم حالة اختبار البرامج في سلسلة من الخطوات المخطط ة جي ًدا وال تي ت ؤدي إلى
إنشاء البرنامج بنجاح .االختبار هو مجموعة األنشطة التي يمكن التخطيط لها مسبًقا وإجراؤه ا بش كل منهجي .ال دافع األساس ي
الختبار البرنامج هو تأكيد جودة البرنامج بأس اليب يمكن تطبيقه ا اقتص ادًيا وفع اًال على ك ل من األنظم ة االس تراتيجية الكب يرة
والصغيرة الحجم.
يمكن النظر إلى عملية هندسة البرمجيات على أنها دوامة .في البداي ة تح دد هندس ة النظ ام دور البرن امج وت ؤدي إلى
تحليل متطلب ات البرن امج حيث يتم إنش اء مج ال المعلوم ات والوظ ائف والس لوك واألداء والقي ود ومع ايير التحقق من ص حة
البرنامج .وبالتحرك نحو الداخل على طول الحلزون ،نصل إلى التصميم وأخيًر ا إلى البرمجة .لتطوير برامج الكمبيوتر ،نتحرك
على طول خطوط انسيابية تقلل من مستوى التجريد في كل دورة.
ويمكن أيًض ا النظر إلى استراتيجية اختبار البرمجيات في سياق اللولب .يبدأ اختبار الوحدة عند قم ة الحل زون ويرك ز
على كل وحدة من وحدات البرنامج كم ا تم تنفي ذها في الك ود المص دري .اختب ار التقدم من خالل التح رك للخ ارج على ط ول
الدوامة الختبار التكامل ،حيث يتم التركيز على تصميم وبناء بنية البرمجيات .عند الحديث عن منعطف آخر للخارج على ش كل
حلزوني ،نواجه اختبار التحقق من الصحة حيث يتم التحقق من صحة المتطلبات المح ددة كج زء من تحلي ل متطلب ات البرن امج
مقابل البرنامج الذي تم إنشاؤه .أخيًر ا نصل إلى اختبار النظام ،حيث يتم اختبار البرنامج وعناصر النظام األخرى ككل.
أنواع االختبار:
يركز اختب ار الوح دة جه ود التحقق على أص غر وح دة في تص ميم البرن امج ،وهي الوح دة .اختب ار الوح دة ل دينا موج ه نح و
الصندوق األبيض ويتم إجراء بعض الوحدات بالتوازي.
تم ممارسة جميع المسارات المستقلة مرة واحدة على األقل
يتم تنفيذ كافة الحلقات ضمن حدودها وضمن حدودها التشغيلية
في هذا الجزء من االختبار تم اختبار كل ش رط من ج وانب الص واب والخط أ .وتم اختب ار جمي ع المس ارات الناتج ة.
بحيث يتم تتبع كل مسار قد يتم إنشاؤه في حالة معينة للكشف عن أي أخطاء محتملة.
يفحص االختبار المختلط تشغيل الفصل بدقة خوارزمية ولكنه يفحص فقط األس اليب والمتغ يرات العام ة .من الناحي ة
القياسية للتطبيق ،يعتبر االختبار المختلط بمثابة اختب ار الص ندوق األبيض نظ ًرا ألن الفئ ات ال تي يتم اختباره ا ق د ال تتع رض
للتطبيق .من مستوى الفصل الدراسي ،يعتبر االختبار المختلط بمثابة اختبار الصندوق األسود نظًرا لع دم الكش ف عن األس اليب
والمتغيرات الخاصة وعدم التشكيك أبًدا في كيفية إنتاج النتائج.
تقرير االختبار والتحليل
اختبار التجميع:
لقد كانت فكرة جيدة أن نقوم باختبار التحمل الخاص بنا في وقت مبكر ،ألن ه يمنحن ا ال وقت إلص الح بعض
حاالت الجمود غير المتوقعة ومشاكل االستقرار التي حدثت فقط عندما تعرضت المكونات ألحجام معامالت كبيرة جًدا.
اختبار التنفيذ:
تم تحميل هذا البرنامج وتنفيذه بنجاح .بسبب البرمجة الجيدة لم تكن هناك أخطاء في التنفيذ
اختبار اإلخراج:
.1اختبار الصندوق األبيض:ويسمى ه ذا االختب ار أيًض ا باختب ار الص ندوق الزج اجي .في ه ذا االختب ار ،من خالل
معرفة الوظيفة المحددة التي تم تصميم المنتج ألداءها ،يمكن إجراء اختبار يوضح أن ك ل وظيف ة تعم ل بكام ل طاقته ا في نفس
ال وقت للبحث عن األخط اء في ك ل وظيف ة .إنه ا طريقة تص ميم حال ة اختب ار تس تخدم بني ة التحكم في التص ميم اإلج رائي
الستخالص حاالت االختبار .اختبار المسار األساسي هو اختبار الصندوق األبيض.
.2اختبار الصندوق األسود:في هذا االختبار ،من خالل معرف ة التش غيل ال داخلي للمنتج ،يمكن إج راء اختب ارات للتأك د من أن
"جميع ال تروس متش ابكة" ،أي أن التش غيل ال داخلي يتم وفًق ا للمواص فات وأن جمي ع المكون ات الداخلي ة ق د تم ت دريبها بش كل
مناسب .وهو يركز بشكل أساسي على المتطلبات الوظيفية للبرنامج.
توفر استراتيجية اختبار البرامج خريطة طريق لمطور البرامج .االختبار عبارة عن مجموعة من األنشطة ال تي يمكن
التخطيط لها مسبًقا وإجراؤها بشكل منهجي .لهذا السبب ،يجب تحديد قالب الختب ار البرمجي ات ،وه و عب ارة عن مجموع ة من
الخط وات ال تي يمكنن ا من خالله ا وض ع ط رق تص ميم حال ة اختب ار معين ة ،لعملي ة هندس ة البرمجي ات .يجب أن تتمت ع أي
استراتيجية الختبار البرمجيات بالخصائص التالية:
يبدأ االختبار على مستوى الوحدة ويعمل "خارجًيا" نحو تكامل النظام القائم على الكمبيوتر بالكامل.
تقنيات االختبار المختلفة مناسبة في أوقات مختلفة.
يقوم مطور البرنامج ومجموعة اختبار مستقلة بإجراء االختبار.
يع د االختب ار وتص حيح األخط اء من األنش طة المختلف ة ولكن يجب اس تيعاب تص حيح األخط اء في أي اس تراتيجية
اختبار.
وحدة التجارب:يركز اختبار الوحدة على جهود التحقق في أصغر وحدة من تصميم البرامج (الوحدة النمطية).
اعتبارات اختبار الوحدة
اختبار التكامل :اختبار التكامل هو أسلوب منهجي لبناء هيكل البرنامج أثناء إج راء االختب ارات للكش ف عن األخط اء
المرتبطة بالتفاعل .هناك نوعان من اختبارات التكامل:
التكامل من أعلى إلى أسفل :التكامل من أعلى إلى أسفل هو نهج تدريجي لبناء هياكل البرن امج .يتم دمج الوح دات عن
طريق التحرك لألسفل من خالل التسلسل الهرمي للتحكم بدًء ا من وحدة التحكم الرئيسية.
التكامل من أسفل إلى أعلى :التكامل من أسفل إلى أعلى ،كما يوحي اس مه ،يب دأ البن اء واالختب ار باس تخدام الوح دات
التلقائية.
اختبار االنحدار :في هذه المسابقة الستراتيجية اختبار التكامل ،اختبار االنحدار ه و إع ادة تنفي ذ مجموع ة فرعي ة من
االختبارات التي تم إجراؤها بالفعل لضمان عدم نشر التغييرات آلثار جانبية غير مقصودة.
اختبار التحقق:
في ذروة اختبار التكامل ،يتم تجميع البرامج بالكامل كحزمة واحدة؛ تم الكشف عن أخطاء الواجهة وتصحيحها ،وقد تبدأ سلسلة
نهائية من اختبارات البرامج -اختب ار التحقق من الص حة .يمكن ف رض غرام ات على التحقق من الص حة بع دة ط رق ،ولكن
التعريف البسيط هو أن التحقق ينجح عندما يعمل البرنامج بطريقة يمكن أن يتوقعها العميل بشكل معقول.
يتم تحديد التوقعات المعقولة في مواصفات متطلبات البرن امج -وهي وثيقة تص ف جمي ع س مات البرن امج المرئي ة للمس تخدم.
تحتوي المواصفات على قسم بعنوان "معايير التحقق من الصحة" .تشكل المعلومات الواردة في هذا القسم األس اس لنهج اختب ار
التحقق من الصحة.
يتم التحقق من صحة البرامج من خالل سلسلة من اختبارات الصندوق األسود التي تثبت توافقها مع المتطلب ات .تح دد
خطة االختبار فئات االختبارات التي سيتم إجراؤها ،ويحدد إجراء االختبار حاالت اختب ار مح ددة س يتم اس تخدامها في محاول ة
للكشف عن األخطاء بما يتوافق مع المتطلبات .تم تصميم كل من الخطة واإلجراءات لضمان تلبي ة جمي ع المتطلب ات الوظيفي ة؛
يتم تحقيق جميع متطلبات األداء؛ التوثيق صحيح ومصمم بواسطة اإلنسان؛ ويتم استيفاء المتطلبات األخرى.
بعد إجراء كل حالة اختبار للتحقق من الص حة ،يوج د أح د الش رطين المحتملين )1( :تتواف ق الوظيف ة أو خص ائص األداء م ع
المواصفات ويتم قبولها ،أو ( )2يتم الكشف عن االنحراف عن المواصفات ويتم إنش اء قائم ة العي وب .ن ادًرا م ا يمكن تص حيح
االنحراف أو الخطأ الذي تم اكتشافه في هذه المرحلة في المشروع قبل االنتهاء المقرر .غالًبا ما يكون من الض روري التف اوض
مع العميل لتحديد طريقة لحل أوجه القصور.
مراجعة التكوين:
أحد العناصر المهمة في عملية التحقق من الصحة هو مراجعة التكوين .الهدف من المراجع ة ه و التأك د من أن جمي ع
عناصر تكوين البرنامج قد تم تطويرها بشكل صحيح ،وفهرستها ،والحصول على التفاصيل الالزم ة ل دعم مرحل ة الص يانة في
دورة حياة البرنامج .تسمى مراجعة التكوين أحياًنا بالتدقيق.
يكاد يكون من المستحيل لمطور البرامج أن يتنبأ بالكيفية التي سيستخدم بها العميل البرنامج حًق ا .ق د يتم إس اءة تفس ير
تعليمات االستخدام؛ قد يتم استخدام مجموعة غريبة من البيانات بانتظ ام؛ واإلخ راج ال ذي ب دا واض ًحا للمخت بر ق د يك ون غ ير
مفهوم للمستخدم في الميدان.
عندما يتم إنشاء برنامج مخصص لعميل واحد ،يتم إجراء سلسلة من اختب ارات القب ول لتمكين العمي ل من التحقق من
صحة جميع المتطلبات .يمكن أن يتراوح اختبار القب ول ،ال ذي يجري ه المس تخدم النه ائي ب دًال من مط ور النظ ام ،من "اختب ار
قيادة" غير رسمي إلى سلسلة من االختبارات مخططة ومنفذة بشكل منهجي .في الواقع ،يمكن إج راء اختب ار القب ول على م دى
أسابيع أو أشهر ،وبالتالي الكشف عن األخطاء التراكمية التي قد تؤدي إلى تدهور النظام بمرور الوقت.
إذا تم تط وير البرن امج كمنتج ليتم اس تخدامه من قب ل العدي د من العمالء ،فمن غ ير العملي إج راء اختب ارات القب ول
الرسمية مع كل واحد منهم .يستخدم معظم منشئي منتجات البرامج عملية تسمى اختبار ألفا وبيتا للكشف عن األخطاء ال تي يب دو
أن المستخدم النهائي هو الوحيد القادر على اكتشافها.
يجري العميل اختبار ألفا في موقع المطور .يتم استخدام البرن امج في بيئ ة طبيعي ة حيث يقوم المط ور "ب النظر ف وق
كتف" المستخدم وتسجيل األخطاء ومشاكل االستخدام .يتم إجراء اختبارات ألفا في بيئة خاضعة للرقابة.
يتم إجراء االختبار التجري بي في واح د أو أك ثر من مواق ع العمالء بواس طة المس تخدم النه ائي للبرن امج .على عكس
اختبار ألفا ،المطور غير موجود بشكل ع ام .ول ذلك ،ف إن االختب ار التجري بي ه و تط بيق "مباش ر" للبرن امج في بيئ ة ال يمكن
للمطور التحكم فيها .يسجل العميل جميع المشكالت التي تمت مواجهتها أثناء االختبار التجريبي ويبلغ المط ور به ا على ف ترات
زمنية منتظمة .نتيجة للمشاكل ال تي تم اإلبالغ عنه ا أثن اء اختب ار الرهان ات ،يقوم مط ور البرن امج ب إجراء التع ديل ثم يس تعد
إلصدار منتج البرنامج إلى قاعدة العمالء بأكملها.
خاتمة
بعد رؤية العديد من التطورات والتغييرات في تكنولوجيا تتبع الموقع ،أصبح لدى السكك الحديدية الهندي ة اآلن القدرة
على تحديد الموقع والسمات األخرى للقطار التشغيلي بطريقة اقتص ادية دقيقة .ومن ثم فمن الواض ح أن ه لمواكب ة الطلب الي وم
على المعلومات واالمتثال للحكم الذي يركز على المواطن ،يعد التقدم التكنولوجي ض رورًيا لدول ة من دول الع الم الث الث ،حيث
أن العوامل الحاسمة لنجاح أي دولة ستكون في نهاية المطاف على م دى تعاونه ا وتعاونه ا .مض اعفة إط ار الحوكم ة من حيث
التدفق السلس للمعلومات الدقيقة وفي الوقت المناسب بين النظام البيئي للحوكمة.