موصى به: استخدم ASP لصنع مخططات الفطيرة ، مخططات شريط ، إلخ. في عملنا ، غالبًا ما نحتاج إلى تحويل البيانات إلى مخططات شريطية ، ومخططات فطيرة ، وما إلى ذلك لتسهيل وتحليل البيانات البديهية. هنا سأقدم لك مكونًا يصنع مخططات الفطيرة ومخططات الشريط في ASP: Csdrawgraph ، CSDGT.ZIP. لأنه مكون ، نحتاج إلى استخدام REGSV قبل استخدامه.
برمجة موجهة نحو الكائن
مع زيادة تعقيد تصميم البرنامج ، لا يكفي طرق البرمجة المنظمة. السبب الأساسي لعدم كفاية الاستخدام هو أنه من غير المريح إعادة استخدام الكود. ولدت طريقة موجهة نحو الكائن ، وتنفذ وظائف إعادة استخدام الكود الكامل نسبيا من خلال الميراث. غالبًا ما يُطرح العديد من الطلاب على سؤال أثناء المقابلات عند التقدم للوظائف. دعنا نتحدث عن البرمجة الموجهة للكائنات. الطلاب عاجزون عن الكلام ويعودون ليسألني عن كيفية الإجابة على هذا السؤال. قلت له أن كلمة واحدة فقط كافية. البرمجة الموجهة للكائنات هي تغليف البيانات ؛ برمجة النماذج (القوالب) هي تغليف الخوارزميات. في وقت لاحق ، عندما واجه طالب هذه المشكلة ، أجابها ببساطة بحكم بسيط ، ونظر الطرف الآخر إلى الطالب بإعجاب (أخبرني الطالب بفخر لاحقًا). لماذا ذلك؟ لأنه فقط من خلال تجربة شاملة وممارسة يمكن استخراج هذا الجوهر.
تم اقتراح أساليب وأفكار التصميم الموجهة نحو الكائن في وقت مبكر من أوائل السبعينيات. والغرض من ذلك هو إجبار البرنامج على معالجة البيانات من خلال الوظائف. وبهذه الطريقة ، يتم تنفيذ تغليف البيانات ، ويمكن تجنب الأخطاء التي تسببها أي رمز في طريقة التصميم السابقة. من الصعب جدًا العثور على هذا الخطأ وتعديله. ثم يمكنك القول أنه حتى لو لم أستخدم الموجهة نحو الكائن ، عندما أرغب في الوصول إلى بيانات معينة ، فأنا فقط أستخدم وظيفة المكالمات للوصول إليها ، ألا يكون الأمر جيدًا؟ نعم ، لا بأس ، لكنها ليست إلزامية. الناس كسولون. عندما أرغب في إضافة 1 إلى أنا ، لماذا يجب علي استدعاء وظيفة؟ ننسى ذلك ، من الأسهل حفظ المتاعب. هاها ، بسبب هذا الكسل ، من الصعب التقاطه عندما يكون البرنامج يعاني من خطأ. موجه نحو الكائن إلزامي ، ويحل مشكلة الكسل الخاصة بك من مرحلة التجميع.
من قبيل الصدفة ، فإن التفكير الموجهة للكائنات يتوافق في الواقع مع التعامل مع المشكلات في حياتنا اليومية. على سبيل المثال ، أخطط لرمي فنجان الشاي ، كيف يمكنني التخلص منه؟ إنه بسيط للغاية ، واخترت فنجان الشاي ، والمشي إلى سلة المهملات ، ورميها بعيدًا! انتبه لتحليل هذه العملية. نختار أولاً كائنًا ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- يمكن كتابة قطعة من الورق ، تمزق ، محترقة ... وهذا يعني ، بمجرد تحديد كائن ، يتم تحديد الطريقة أيضًا. هذه هي الطريقة التي تكون بها حياتنا اليومية. ومع ذلك ، عندما تفكر في برمجةنا وعمليات الكمبيوتر ، فإن هذا ليس هو الحال. خذ عملية DOS كمثال. أرغب في حذف ملف بواسطة: C:> اسم ملف del <Enter> في موجه DOS. انتبه إلى هذه العملية. الإجراءات في المقدمة (DEL) والكائنات موجودة في الخلف (اسم الملف) ، والطرق الموجهة للكائنات بالترتيب المعاكس. إذن إنها مجرد مسألة ترتيب ، ما تأثيرها؟ هاها ، يجب أن تكون قد رأيت هذه الظاهرة: لم يتم العثور على ملف. آه ~~~ ، كنت مخطئًا ، كنت مخطئًا ، كتبت خطابًا في اسم الملف الخطأ ، لذلك أعود إلى: C:> اسم ملف Del 2 <Enter>. يحدث للأسف مرة أخرى ، تقرير الكمبيوتر: قراءة الملف فقط. هاها ، الألم :). لذا فإن تشغيل DOS ينتهك بالفعل عاداتنا اليومية (بالطبع ، لم يثير أحد أي اعتراضات من قبل) ، ولكن الآن بسبب استخدام التصميم الموجهة للكائنات ، يتم حل هذه المشكلات في وقت الترجمة ، وليس في وقت التشغيل. OBJ.FUN () ، بالنسبة لهذا البيان ، سواء كان كائنًا أو وظيفة ، إذا كان هناك أي مشكلة في مدخلاتك ، فسيتم الإبلاغ عنها أثناء التجميع ، بحيث يمكنك تعديلها ، بدلاً من ارتكاب الأخطاء أثناء التنفيذ ، مما سيؤدي إلى التقاط الأخطاء في كل مكان.
في الوقت نفسه ، يمكن للموجهة نحو الكائن حل مشكلة إعادة استخدام الكود - الميراث. اعتدت أن أكتب فئة كلب ، مع سمات (متغيرات): شعر ، 4 أرجل ، ذيل مرفوع (واحد ذو ذيل متدلي هو ذئب) ، أنف حساس للغاية ، ويحب أن يأكل اللحوم والعظام ... وتشمل الأساليب (الوظيفة): قادرة على الجري ، رائحة ، نباح ... إذا كان يلتقط الفئران ، فإن الناس سوف يطلقون عليه الوساطة. حسنًا ، لقد كتب نوع الكلب. ولكن في حياتي الفعلية ، يشبه الكلب الذي لديّ الكلب الذي كتبته من قبل ، مع وجود اختلاف بسيط ، أي كلبي ، هو: مجعد وطويل ، مع أنف صغير ، فم صغير ... لذا ، استمدت نوعًا جديدًا يسمى Pug وأضفت ميزات جديدة إلى الكلب. حسنًا ، تم الانتهاء من البرنامج وإعادة استخدام الكود الصحيح من الرمز السابق - وهذا هو فائدة البرمجة الموجهة للكائنات. نجاحي يقف فقط على أكتاف العملاق. بالطبع ، إذا كنت تستخدم VC ، فإن الكود الذي يعيد استخدامه أكثر هو مكتبة فئة MFC.
=============================================================================
حسنًا ، ثم انظر كيف نستخدم ASP.
يستخدم الجميع عمومًا لغة البرمجة النصية الافتراضية لـ IIS كلغة تنفيذ من جانب الخادم في ASP. في البداية ، يتم خلط البرنامج النصي VBS و HTML معًا لتحقيق وظائف معينة. على سبيل المثال ، تحتاج إلى عرض أحدث 5 سجلات على الصفحة الحالية ، هذا كل شيء.
1. تحديد الاتصال بقاعدة البيانات أولاً ، مثل:
| ما يلي هو المحتوى المقتبس: db_path = ../database/cnbruce2005.mdb تعيين conn = server.createBject (adodb.connection) connstr = provider = microsoft.jet.oledb.4.0 ؛ مصدر البيانات = & server.mappath (db_path) Conn.Open Connstr |
2. ثم قم بإنشاء مجموعة سجلات قاعدة بيانات لاستخراج المعلومات ذات الصلة
| ما يلي هو المحتوى المقتبس: تعيين rs = server.createBject (adodb.recordset) SQL = حدد TOP 5 * من [News] Order بواسطة N_ID DESC Rs.Open SQL ، Conn ، 1،1 |
3. أخيرًا ، عرض البيانات من خلال طريقة الحلقة
| ما يلي هو المحتوى المقتبس: افعل بينما لا rs.eof استجابة. write rs (n_title) Rs.Movenext حلقة هناك أيضًا عمليات إيقاف وإصدار نهائية Rs.close تعيين روبية = لا شيء |
لذلك هنا في الرد. اكتب RS (N_Title) ، لتصميم الويب النهائي ، يقدر أن بعض عناصر علامات HTML أخرى تحتاج إلى إضافة قبل وبعد ذلك. بطبيعة الحال ، يتم خلط البرامج النصية VBS و HTML.
دعونا ننظر إليها مرة أخرى. إذا كانت هناك العديد من الصفحات التي تحتاج إلى عرض هذه السجلات الخمسة ، فهل يتعين عليك تعيين كل صفحة كهذه؟ بالطبع ، أهم شيء هو أن تصميم كل صفحة مختلف. ثم هذا هو التكرار. كرر أين؟ هل يمكنك عدم تكراره من فضلك؟
1. لاتصالات قاعدة البيانات ، يتم إنشاء ملف اتصال قاعدة البيانات conn.asp مباشرة ، والمحتوى كما هو مذكور أعلاه.
2. طالما أنك بحاجة إلى استخدام قاعدة البيانات وتحتاج إلى إنشاء اتصال ، يمكنك تضمين ملف اتصال قاعدة البيانات المباشر.
<!-#تضمين ملف = conn.asp->
إذن ما هي التكرارات التي يتم حفظها أعلاه؟ كرر كل اتصال قاعدة بيانات. هذا هو مضاد للالبلاغ لبعض الرموز الشائعة. دعونا نلقي نظرة عليه. إذا أردت أن تعرض هذه الصفحة 5 قطع وتلك الصفحة لعرض 6 قطع ، فماذا أفعل؟ من الواضح أن هذا يمكن أن يكون تعديلًا بسيطًا لبيان SQL في الصفحة الحالية ، مثل التعديل الأصلي لأعلى 5 إلى أعلى 6.
حسنًا ، استمر في المشاهدة ، هل هناك أي تكرار؟ نعم ، باستثناء التعاريف المختلفة لاستعلام SQL ، فإن الباقي كلها مكررة.
لذا ، استمر في التفكير في حل: هل يمكنك تحديد عدد العناصر المستخرجة بنفسك؟ أرغب فقط في استخراج عدد قليل من العناصر ، لكن البرنامج يحتاج فقط إلى كتابة واحدة. ثم في هذا الوقت ، سوف تكون الوظيفة مفيدة. على سبيل المثال ، أحدد وظيفة مثل هذه:
| ما يلي هو المحتوى المقتبس: وظيفة TopNews (tnum) تعيين rs = server.createBject (adodb.recordset) SQL = حدد TOP & TNUM & * من [News] Order بواسطة N_ID DESC Rs.Open SQL ، Conn ، 1،1 افعل بينما لا rs.eof استجابة. write rs (n_title) Rs.Movenext حلقة Rs.close تعيين روبية = لا شيء وظيفة نهاية |
بعد ذلك ، يمكنك استخدام TopNews (5) أو TopNews (6) لإكمال الحاجة
... للوهلة الأولى ، يبدو أن ASP يستخدم الوظائف ويتم الانتهاء منه أخيرًا. نظرًا لأن وظيفة البرنامج الرئيسية يتم تحويلها إلى وحدة دالة ، فأنت بحاجة إلى تسميتها مباشرة عند استخدام هذه الوظيفة على الصفحة الأمامية. إذا لزم الأمر ، قم بتعديل قيمة معلمة الوظيفة لتكون نهاية مثالية/.
فلماذا تم تقديم الفصول الدراسية في ASP؟ ما هو هذا النوع؟ وكيفية تطبيقه؟
في لغة البرمجة النصية ASP ، لدى VBScript كلمة رئيسية للفصل ، والتي يمكن استخدامها لإعلان فئة مخصصة. على سبيل المثال
| ما يلي هو المحتوى المقتبس: اسم الفصل البيانات الطبقة النهائية |
هنا ، يمكن إعلان الأعضاء العامين أو الخاصين في البيانات ، بما في ذلك الوظائف والأعضاء والسمات.
يستخدم JavaScript وظيفة لإعلان فئة ، ثم يحدد الخصائص في الوظيفة من خلال هذا النمط.
أي واحد بسيط لاختيار أي واحد. بعد تحديد اسم الفصل ، أي الفصل ، ما الذي يمكن فعله هنا؟
الأول. وثائق MSDN: في Visual Basic 6.0 ، عند إنشاء وتدمير وحدة الفئة ، تستخدم وحدة الفئة الأحداث التهيئة وإنهاءها لأداء جميع العمليات اللازمة. عندما يتم مواجهة كائن لأول مرة بعد بيان جديد ، يتم رفع الحدث التهيئة ، وعندما يتم إصدار المرجع الأخير إلى الكائن ، يتم رفع الحدث على الفور. ومع ذلك ، يمكن استدعاء طرق الحدث هذه مباشرة في أي وقت أثناء التنفيذ.
لذلك غالبًا ما أرى أمثلة مثل هذا:
تعلن الفئة Cnbruce 'فئة تدعى Cnbruce
| ما يلي هو المحتوى المقتبس: cnrose الخاص sub class_initialize الخاص cnrose = اسمي cnrose. نهاية الفرعية sub sub class_terminate () نهاية الفرعية الطبقة النهائية |
انظر ، هذا هو التهيئة.
بالإضافة إلى ذلك ، هناك دعهم والحصول على طرق في فئة ASP. على سبيل المثال ، أضف بين الفئة Cnbruce من الكود أعلاه ... الفئة النهائية:
| ما يلي هو المحتوى المقتبس: الممتلكات العامة تحصل على yname yname = cnrose نهاية الملكية |
هذا ليصبح:
تعلن الفئة Cnbruce 'فئة تدعى Cnbruce
| ما يلي هو المحتوى المقتبس: cnrose الخاص sub class_initialize الخاص cnrose = اسمي cnrose. نهاية الفرعية sub sub class_terminate () نهاية الفرعية الممتلكات العامة تحصل على yname yname = cnrose نهاية الملكية الطبقة النهائية |
إذن كيفية استخراج القيمة ، على سبيل المثال
| ما يلي هو المحتوى المقتبس: تعيين AAA = cnbruce جديد الرد. write aaa.yname |
لاحظ أن aaa.yname يشعر بالفعل قليلاً. AAA هو كائن يعرف بأنه فئة Cnbruce. يتم عرض الإخراج النهائي حيث يحصل Yname على قيمة في كائن هذه الفئة. محتوى القيمة الخاص به هو قيمة المتغير cnrose ، وتم تهيئة القيمة. لذلك ، فإن النتيجة النهائية هي اسمي cnrose.
هذا هو الحصول على ، الذي يستخرج مباشرة داخل الفئة المغلفة بالفعل ، فماذا عن السماح؟ وهذا هو ، عمليات الوصول التفاعلية الخارجية إلى الفصول. على سبيل المثال ، أقوم الآن بتطبيق القيمة المحددة خارجيًا على الفصل. هذا هو ، حدد أولاً:
| ما يلي هو المحتوى المقتبس: الممتلكات العامة دع Mname (NNN) cnrose = nnn نهاية الملكية |
معناها بسيط للغاية. سيتم تعيين قيمة المعلمة NNN إلى CNROSE المتغير وفقًا للقيم الخارجية المختلفة. بعد ذلك ، فإن برنامج MOOP OK ، أي أن محتوى المتغير المعروض CNROSE ، ليس هو المحتوى المتهيج ، ولكن القيمة غير المؤكدة التي يتم تطبيقها خارجيًا بواسطة LET. ثم كيفية تطبيق Let.
aaa.mname = sdasdasd
فقط حدد القيمة مباشرة. ثم انظر الآن إلى البرنامج بأكمله:
| ما يلي هو المحتوى المقتبس: <٪ فئة Cnbruce cnrose الخاص sub class_initialize الخاص cnrose = اسمي cnrose. نهاية الفرعية الممتلكات العامة تحصل على yname yname = cnrose نهاية الملكية الممتلكات العامة دع Mname (NNN) cnrose = nnn نهاية الملكية الطبقة النهائية تعيين AAA = cnbruce جديد aaa.mname = hahahoho الرد. write aaa.yname ٪> |
على الرغم من أن قيمة aaa.mname يتم تعريفها على أنها hahahoho ، وفقًا للممتلكات العامة ، دع Mname (NNN) ، قيمتها هي Cnrose المتغيرة. عندما يخرج AAA.yname ، وفقًا للممتلكات العامة ، GET YNAME ، فليس من المستغرب أن تكون قيمة النتيجة. /
بالنسبة للبرامج الوظيفية ، يتم تعريفها على أنها وظيفة وظيفة أو روتين فرعي في الفصل.
لذلك ، بشكل عام ، مجرد مجموعة من الوظائف ، ومن السهل الكتابة والتبدو جيدة عند التطبيق (اسم الفئة المباشرة ، الطريقة ، اسم الفصل ، السمة -_!) ، ولكن لا تتوقع أن يكون لها خدمات تفكير موجهة نحو الكائنات مثل Java أو .NET.
الوقت محدود ، والبداية والنهاية ليست سوى قليلا.
مشاركة: نصائح لاستخدام ASP لنقل بيانات تنسيق HTML للتفوق تعرف على كيفية إنشاء صفحة ASP لدفق بيانات HTML إلى جدول بيانات EXCL وعرض جدول بيانات EXCL في IE. حتى الآن ، هناك عدة طرق لإنشاء جداول بيانات Excel باستخدام تقنية ASP ، ويمكنك أيضًا استخدام مجموعات Excel 8.0 VBA من جانب الخادم