|
|
|
|
|
با سلام خدمت دوستان عزیز من به خاطر ارادت به مولا حسین(ع) زیارت معروف ایشان را در وبلاگم میگزارم و ان شا الله از هفته آینده مطالب جدید را قرار میدم.
التماس دعا زيارت معروفه امام حسين در روز عاشوراء ![]() السلام عليك يا أبا عبد الله السلام عليك يابن رسول الله السلام عليك يابن أمير المؤمنين وابن سيد الوصيّين السلام عليك يابن فاطمة سيدة نساء العالمين السلام عليك يا ثار الله وابن ثاره والوتر الموتور السلام عليك وعلى الأرواح التي حلت بفنائك عليكم مني جميعاً سلام الله أبدا ما بقيت وبقي الليل والنهار يا أبا عبد الله لــقد عظمت الرّزية وجلّت وعظمت المصيبة بك علينا وعلى جميع أهل الإسلام وجلت وعظمت مصيبتك في السماوات على جميع أهل السماوات فلعن الله أمة أسست أساس الظلم والجور عليكم أهل البيت ولعن الله أمة دفعتكم عن مقامكم وأزالتكم عن مراتبكم التي رتبكم الله فيها ولعن الله أمة قتلتكم ولعن الله الممهدين لهم بالتمكين من قتالكم برئت إلى الله واليكم منهم ومن اشياعهم واتباعهم واوليائهم يا أبا عبد الله اني سلمٌ لمن سالمكم وحرب لمن حاربكم إلى يوم القيامة ولعن الله آل زياد وآل مروان ولعن الله بني امية قاطبةً ولعن الله ابن مرجانة ولعن الله عمر بن سعد ولعن الله شمراً ولعن الله أمة أسرجت وألجمت وتنقبت لقتالك بأبي أنت وأمي لقد عظم مصابي بك فأسأل الله الذي أكرم مقامك وأكرمني بك أن يرزقني طلب ثارك مع إمام منصور من أهل بيت محمد صلّى الله عليه وآله اللهم اجعلني عندك وجيهاً بالحسين عليه السلام في الدنيا والآخرة يا أبا عبد الله اني اتقرّب إلى الله وإلى رسوله وإلى أمير المؤمنين وإلى فاطمة وإلى الحسن واليك بموالاتك وبالبراءة ممن قاتلك ونصب لك الحرب وبالبراءة ممن أسس أساس الظلم والجور عليكم وأبرأ إلى الله وإلى رسوله ممن أسس أساس ذلك وبنى عليه بُنيانه وجرى في ظلمه وجوره عليكم وعلى اشياعكم برئت إلى الله واليكم منهم واتقرب إلى الله ثم اليكم بموالاتكم وموالاة وليكم وبالبراءة من أعدائكم والناصبين لكم الحرب وبالبراءة من اشياعهم واتباعهم إني سلم لمن سالمكم وحرب لمن حاربكم وولي لمن والاكم وعدو لمن عاداكم فأسأل الله الذي أكرمني بمعرفتكم ومعرفة اوليائكم ورزقني البراءة من أعدائكم أن يجعلني معكم في الدنيا والآخرة وأن يُثبت لي عندكم قدم صدق في الدنيا والآخرة وأسأله أن يُبلغني المقام المحمود لكم عند الله وأن يرزقني طلب ثاري مع إمام هدىً ظاهر ناطق بالحق منكم وأسأل الله بحقكم وبالشأن الذي لكم عنده أن يعطيني بمصابي بكم افضل ما يعطي مصاباً بمصيبة، مصيبة ما أعظمها وأعظم رزيتها في الإسلام وفي جميع السماوات والأرض اللهم اجعلني في مقامي هذا ممن تناله منك صلوات ورحمة ومغفرة اللهم اجعل محياي محيا محمد وآل محمد ومماتي ممات محمد وآل محمد اللهم إن هذا يوم تبركت به بنو أمية وابن آكلة الاكباد اللعين بن اللعين على لسانك ولسان نبيك صلّى الله عليه وآله في كل موطن وموقف وقف فيه نبيك صلّى الله عليه وآله اللهم ألعن أبا سفيان ومعاوية ويزيد بن معاوية عليهم منك اللعنة ابد الآبدين وهذا يوم فرحت به آل زياد وآل مروان بقتلهم الحسين صلوات الله عليه اللهم فضاعف عليهم اللعن منك والعذاب الأليم اللهم إني اتقرب إليك في هذا اليوم وفي موقفي هذا وايــام حياتي بالبراءة منهم واللعنة عليهم وبالــموالاة لنبيك
وآل نبيك عليه وعليهم السلام.
سپس صد بار ميگوئى: اللهم العن أول ظالم ظلم حق محمد وآل محمد وآخر تابع له على ذلك اللهم العن العصابة التي جاهدت الحسين وشايعت وبايعت وتابعت على قتله اللهم العنهم جميعاً.
سپس صد بار ميگوئى: السلام عليك يا أبا عبد الله وعلى الارواح التي حلت بفنائك عليك مني سلام الله أبدا ما بقيت وبقي الليل والنهار ولا جعله الله آخر العهد مني لزيارتكم السلام على الحسين وعلى علي بن الحسين وعلى اولاد الحسين وعلى أصحاب الحسين.
سپس ميگوئى: اللهم خص أنت أول ظالم باللعن مني وأبدأ به أولا ثم العن الثاني والثالث والرابع اللهم العن يزيد خامساً والعن عبيد الله بن زياد وابن مرجانة وعمر بن سعد وشمراً وآل أبي سفيان وآل زياد وآل مروان إلى يوم القيامة.
سپس به سجده ميروى و ميگوئى:
اللهم لك الحمد حمد الشاكرين لك على مصابهم الحمد لله على عظيم رزيتي اللهم ارزقني شفاعة الحسين يوم الورود وثبت لي قدم صدق عندك مع الحسين واصحاب الحسين الذين بذلوا مهجهم دون الحسين عليه السلام.
التماس دعاء ![]() |
||
|
+
نوشته شده در جمعه 21 بهمن1384ساعت 16:33 توسط لوتوس
|
|
||
|
|
|
|
|
این مصیبت را به همگی تسلیت عرض می کنم ان شا الله که حضرت ما را از یارانش قرار دهد.
|
||
|
+
نوشته شده در دوشنبه 17 بهمن1384ساعت 15:39 توسط لوتوس
|
|
||
|
|
|
|
|
دات نت ، پلات فرم جديد ماکروسافت بمنظور تحقق نظريه : " نرم افزار بعنوان سرويس " ، است . دات نت يک محيط پياده سازي است که بکمک آن مي توان اقدام به ايجاد و بکارگيري نرم افزار و نسل جديدي از عناصر موسوم به " سرويس هاي وب " ، نمود. تمامي محصولات اصلي ماکروسافت از ويژوال استوديو دات نت تا ويندوز و نهايتا" مجموعه آفيس ، متاثر از پلات فرم فوق شده و خواهند شد . دات نت به پياده کنندگان اين امکان را خواهد داد که با زبان برنامه نويسي مورد علاقه خود ، اقدام به پياده سازي برنامه ها نمايند. ويژگي ( پتانسيل ) فوق از طريق معرفي CLR)Common Language Runtime )، ميسر شده است . در اين مقاله قصد داريم به بررسي دات نت پرداخته و پتانسيل ها و قابليت هاي آن را تشريح نمائيم . در جولاي سال 2000 ، شرکت ماکروسافت در کنفرانس پياده کنندگان حرفه اي (PDC ) ، در شهر Orlando ايالت کاليفرنيا ، جزئيات بيشتري از نسل جديد پلات فرم خود ( دات نت ) بمنظور پياده سازي برنامه هاي ويندوز و اينترنت را در اختيار علاقه مندان خصوصا" پياده کنندگان نرم افزار قرار داد . محوريت ابتکار فوق ، بر فريمورک دات نت استواربوده ونشاندهنده يک پلات فرم مناسب بهمراه کتابخانه هاي کلاس گسترده اي است که پتانسيل هاي متعددي را در اختيار قرار مي دهد. يکي از نکات قابل توجه در پلات فرم فوق،استفاده از XML و SOAP بمنظور ارتباط بين نرم افزارها ي موجود در اينترنت ( نرم افزارهاي مبتني بر وب ) ، است . در اين راستا مجموعه اي از محصولات مبتني بر سرويس دهنده با نام سرويس دهندگان Enterprise دات نت، مطرح که بمنزله نسل جديدي از محصولات Backoffice ماکروسافت ، مي باشند. فريمورک دات نت ، مدلي کاملا" جديد بمنظور برنامه نويسي و بکارگيري نرم افزار را ارائه نموده است. "بيل گيتس "، در سخنراني خود در PDC ، بدين نکته اشاره داشتند که در هر پنج تا شش سال ما شاهد يک تحول عمده در رابطه با پياده سازي نرم افزار بوده ايم . آخرين موارد در اين زمينه به سوئيچ از DOS به ويندوز در سال 1990 و گذر از پياده سازي شانزده بيتي به سي و دو بيتي ( از ويندوز widows 3.x به ويندوز NT/95 ) در اواسط دهه 90 ميلادي ، است. با معرفي دات نت در PDC ، پياده کنندگان آن را معماري مناسبي براي پياده سازي نرم افزار ( برنامه هاي Desktop و برنامه هاي وب ) مشاهده نمودند . ويژوال استوديو دات نت ، اولين محصول مبتني بر دات نت ماکروسافت بوده که در سال 2001 در اختيار علاقه مندان قرار گرفت . اهميـت دات نت براي ماکروسافت تا بدين حد است که در سال 2001 ، بيش از هشتاد درصد منابع بخش تحقيق و توسعه اين شرکت در رابطه با آن صرف شده است . زبان سي شارپ ، که زباني جديد براي برنامه نويسي در دات نت است بعنوان زبان استاندارد براي پياده سازي داخلي در شرکت ماکروسافت پذيرفته شده است . يک پلات فرم مناسب براي آينده دات نت، اولين پلات فرم طراحي شده از صدر تا ذيل با در نظر گرفتن واقعيتي با نام اينترنت است . دات نت از يک ماشين مجازي خاص در اين زمينه استفاده مي نمايد . ماهيت ماشين مجازي فوق ، بگونه اي است که از API ويندوز فاصله و در اين رابطه از يک کتابخانه کلاس استفاده مي نمايد که مي توان به جرات اين ادعا را داشت که تاکنون نظير آن ، ايجاد نشده است . امکان استفاده از زبانهاي متعدد برنامه نويسي ، وجود خواهد داشت .معماري دات نت ، امکان ارتباط بين زبانها را بسادگي فراهم خواهد کرد .دات نت ، يک رويکرد جديد در رابطه با پياده سازي نر م افزار را مطرح نموده است . نگاه به دات نت ، عمدتا" بصورت سيستم هاي توزيع شده است. با استفاده از XML ،امکان اجراي توابع بر روي کامپيوترهاي متفاوت يک سازمان ويا جهان فراهم و جلوه اي زيبا در همياري بمنظور اجراي يک برنامه ، به نمايش در خواهد آمد. از اين منظر ، سيستم ها از سرويس دهندگان تا سيستم هاي بدون کابل ، قادر به اشتراک پلات فرم عمومي يکساني خواهند بود . با استفاده از نسخه هاي دات نت که براي تمام آنها در دسترس خواهد بود، امکان ارتباط مناسب آنها با يکديگر فراهم خواهد شد. دات نت ، بمنظور طراحي و پياده سازي برنامه هاي سنتي نيز راهکارها و امکانات مناسبي را ارائه تا از اين طريق امکان پياده سازي و بکارگيري اين نوع از نرم افزارها ، بسادگي انجام گيرد . برخي از تکنولوژي ها ي ارائه شده در دات نت نظير فرم هاي ويندوز، تلاشي در اين راستا است . ايده هاي اوليه از اواخر سال 1995 ، شرکت ماکروسافت توجهي خاص و قابل توجه نسبت به اينترنت نمود . هدف ماکروسافت در اين زمينه پيوند بين پلات فرم ويندوز و اينترنت بود. ماحصل تلاش ماکروسافت در اين زمينه ارائه مدل برنامه نويسي Windiws DNA ، بود . در اين راستا مجموعه اي از ابزارها و تکنولوژي هاي مبتني بر اينترنت ، طراحي و ارائه گرديد . ASP ، از اولين تلا ش هاي ماکروسافت در اين زمينه است . عملا" در اين زمينه ( مطرح شدن اسکريپت ها ي مفسري ) يک برگشت به عقب نسبت به پياده سازي ساختيافته و شي گراء را شاهد بوده ايم . طراحي ، اشکال زدائي و نگهداري چنين کدهاي غير ساختيافته اي مسائل خاص خود را خواهد داشت . ساير زبانها نظير ويژوال بيسيک بصورت موفقيت آميز در رابطه با برنامه نويسي بر روي اينترنت و پلات فرم ماکروسافت استفاده مي گرديد ولي اغلب از آن بمنظور ايجاد عناصري که از طريق ASP ، بخدمت گرفته مي شدند ، استفاده مي گرديد .در اين رابطه تلاش هاي اندکي نيز در جهت ايجاد يک اينترفيس مبتني بر وب بر روي زبان هاي سنتي نظير webclasses در VB ، نيز انجام شد ولي هيچکدام از تلاش هاي فوق ، در سطح گسترده اي مورد استقبال و پذيرش قرار نگرفت . ماکروسافت در صدد حل آشفتگي هاي همراه برنامه هاي ويندوز DNA بود . ويندوز DNA ، تصويري مناسب از يک معماري Three-Tire و مبتني بر COM بود که تکنولوژي ASP در لايه Presentation ، اشياء Bussiness در لايه مياني و يک engine بانک اطلاعاتي رابطه اي در لايه Data ، قرار مي گرفت . مفاهيم همراه DNA ،کامل و بي عيب بود اما در زمان استفاده عملياتي چالش هاي خاص خود را بدنبال داشت . پياده سازي عناصر COM ، مستلزم يک سطح مناسب از دانش و مهارت است و مي بايست زمان زيادي در اين رابطه صرف گردد . بکارگيري نرم افزارهاي DNA ، نيز مسائل خاص خود را داشت ( مسائل مربوط به ورژن ، نصب عناصر و عناصري که با آن مرتبط مي باشند ) . بموازات تلاش ساير شرکت ها در رابطه با ارائه راهکارهائي خاص بمنظور پياده سازي برنامه ها ي وب ، شرکت ماکروسافت در صدد برطرف نمودن محدوديت هاي مدل برنامه نويسي DNA گرديد. تولد دات نت در اوايل سال 1998 ، گروهي از پياده کنندگان نرم افزار در ماکروسافت ، کار خود را بر روي نسخه اي جديد از IIS ( نسخه چهار) ، به اتمام رساندند که داراي چندين ويژگي جديد در رابطه با ASP بود .در اين راستا ، قابليت هاي جديدي بمنظور پياده سازي برنامه هاي وب در ويندوز NT ، فراهم گرديد.گروه پياده کننده داراي ايده هاي متعددي براي اعمال اصلاحات جديد بودند . گروه فوق ، کار خود را بر روي يک معماري جديد براي پياده سازي ايده هاي مطرح شده ، آغاز نمود . اين پروژه ، NGWS)Netx Generation Window Services) ، ناميده گرديد. پس از ارائه ويژوال استوديو شش ، در اواخر سال 1998 ، تلاش براي ايجاد نسخه اي جديد از ويژوال استوديو در دستور NGWS ، قرار گرفت . گروه COM+/MTS در مدل پيشنهادي خود از يک Runtime ، عمومي براي تمامي زبانهاي استفاده شده در ويژوال استوديو ، استفاده نمودند . تلاش افراد درگير در پروژه NGWS ادامه تا در نهايـت ، شرکت ماکروسافت در کنفرانس پياده کنندگان حرفه اي (PDC) ، دات نت را معرفي نمود. مروري بر فريمورک دات نت فريمورک دات نت ، تمامي لايه هاي پياده سازي نرم افزار را از سطح سيستم عامل به بالا ، تحت پوشش قرار مي دهد. فريمورک فوق، سطحي مناسب وقدرتمند از ارتباط و همبستگي بين تکنولوژي Presentation ، تکنولوژي هاي Component و تکنولوژي هاي Data را ارائه مي نمايد ( نظير اين ارتباط و همبستگي تاکنون در پلات فرم ويندوز مشاهده نشده است) . معماري فوق ، امکان طراحي و پياده سازي برنامه هاي مبتني بر اينترنت و محيط هاي Desktop ، را بسادگي فراهم و نيازهاي هر گروه از نرم افزارهاي فوق را بخوبي جواب مي دهد . اجزاي اصلي فريمورک دات نت در شکل زير نشان داده شده است . فريمورک دات نت از لايه پائين با عملياتي نظير مديريت حافظه آغاز و بسمت بالا بمنظور ارائه اينترفيس هاي برنامه ها و کاربران ، دنبال مي شود . در بين لايه ها ، لايه هاي سيستمي ديگر که هر يک داراي پتانسيل هاي خاصي براي پياده کنندگان مي باشند ، وجود دارد. CLR) Common Language Runtime) ، بمنزله قلب فريمورک دات نت محسوب و engine لازم بمنظور ارائه قابليت هاي کليدي را ارائه مي نمايد . CLR ، شامل عناصر اساسي ديگري نظير: (Common Type System (CTS ، است. علاوه بر مديريت حافظه ، CLR ، مراجعات به اشياء و عمليات Garbage Collection را نيز انجام مي دهد . در لايه مياني ، ما شاهد نسل جديدي از سرويس هاي استاندارد نظير ADO.NET و XML مي باشيم .سرويس هاي فوق ، تحت کنترل فريمورک بوده و امکان بکارگيري آنها بصورت جامع و استاندارد در بين تمامي زبانها ، فراهم مي گردد . بالاترين لايه ، شامل اينترفيس هاي برنامه و کاربر است . فرم هاي ويندوز ، روشي جديد بمنظور ايجاد برنامه هاي Desktop مبتني بر win32 مي باشند. فرم هاي وب ، يک رابط کاربر مناسب براي برنامه هاي مبتني بر وب را ارائه مي نمايند. سرويس هاي وب ، مکانيزمي بمنظور ارتباط برنامه ها از طريق اينترنت و با استفاده از SOAP ، مي باشد. سرويس هاي وب ، قابل مقايسه با عناصر COM و DCOM بوده با اين تفاوت مهم که در اين راستا از تکنولوژي هاي متعدد اينترنت ، استفاده مي گردد. فرم هاي وب و سرويس هاي وب ، اينترفيس اينترنت دات نت را تشکيل و پياد ه سازي آنان از طريق بخش ديگري در فريمورک دات نت که ASP.NET ، ناميده مي شود ، محقق مي گردد . پتانسيل هاي موجود در هر لايه فريمورک دات نت ، توسط هر يک از زبان هاي سازگار با دات نت ، قابل استفاده خواهد بود. در پايان لازم است به اين نکته اشاره گردد که در اين رابطه ( فريمورک دات نت ) مي توان از اينترفيس هاي مبتني بر متن ( کاراکتري) نيز استفاده کرد . اين نوع برنامه ها اصطلاحا" Console Application ، ناميده مي شوند . دربخش دوم اين مقاله به بررسي CLR و جايگاه آن در فريمورک دات نت، خواهيم پرداخت . |
||
|
+
نوشته شده در دوشنبه 17 بهمن1384ساعت 1:26 توسط لوتوس
|
|
||
|
|
|
|
|
يك آرايه گروهي از متغيرهاي يك نوع است كه با يك نام مشترك به آنها ارجاع مي شود . مي توان آرايه ها را براي هر يك از انواع ايجاد نمود و ممكن است اين آرايه ها داراي يك يا چندين بعد باشند . براي دسترسي به يك عضو آرايه از نمايه (index) آن آرايه استفاده مي شود . آرايه ها يك وسيله مناسب براي گروه بندي اطلاعات مرتبط با هم هستند . نكته : اگر با Cو C++و آشنايي داريد ، آگاه باشيد . آرايه ها در جاوا بطور متفاوتي نسبت به زبانهاي ديگر كار مي كنند . آرايه هاي يك بعدي آرايه يك بعدي بطور ضروري فهرستي از متغيرهاي يكنوع است . براي ايجاد يك آرايه ، بايد يك متغير آرايه از نوع مورد نظرتان ايجاد كنيد . فرم عمومي اعلان يك آرايه يك بعدي بقرار زير است : type var-name []; در اينجا type اعلان كننده نوع اصلي آرايه است . نوع اصلي تعيين كننده نوع داده براي هر يك از اعضائ داخل در آرايه است . بنابراين ، نوع اصلي آرايه تعيين مي كند كه آرايه چه نوعي از داده را نگهداري مي كند . بعنوان مثال ، در زير يك آرايه با نام month-days با نوع آرايه اي از عدد صحيح اعلان شده است . + int month_days[]; واقعي آرايه اي وجود ندارد . در حقيقت ، مقدار month-days برابر تهي (null) مي باشد كه يك آرايه بدون مقدار را معرفي مي كند . براي پيوند دادن month-days با يك آرايه واقعي و فيزيكي از اعداد صحيح ، بايد از يك عملگر new استفاده نموده و به month-days منتسب كنيد. new يك عملگراست كه حافظه را اختصاص ميدهد. بعداnew " را با دقت بيشتري بررسي مي كنيم ، اما لازم است كه هم اكنون از آن استفاده نموده و حافظه را براي آرايه ها تخصيص دهيد . فرم عمومي new آنگونه كه براي آرايه هاي يك بعدي بكار مي رود بقرار زير ظاهر خواهد شد : array-var=new type [size]; در اينجا type مشخص كننده نوع داده اي است كه تخصيص داده مي شود، size مشخص كننده تعداد اعضائ آرايه است و array-var متغير آرايه است كه به آرايه پيوند مي يابد . يعني براي استفاده از new در تخصيص يك آرايه ، بايد نوع و تعداد اعضايي كه تخصيص مي يابند را مشخص نماييد . اعضائ آرايه كه توسط new تخصيص مي يابند بطور خودكار با مقدار صفر مقدار دهي اوليه مي شوند . اين مثال يك آرايه 12 عضوي از اعداد صحيح را تخصيص داده و آنها را به month-days پيوند مي دهد . + month_days = new int[12]; ارجاع خواهد نمود . بعلاوه كليه اجزائ در آرايه با عدد صفر مقدار دهي اوليه خواهند شد . اجازه دهيد مرور كنيم : بدست آوردن يك آرايه مستلزم پردازش دو مرحله اي است . اول بايد يك متغير با نوع آرايه مورد نظرتان اعلان كنيد . دوم بايد حافظه اي كه آرايه را نگهداري مي كند ، با استفاده از new تخصيص دهيد و آن را به متغير آرايه نسبت دهيد . بنابراين در جاوا كليه آرايه ها بطور پويا تخصيص مي يابند . اگر مفهوم تخصيص پويا براي شما ناآشناست نگران نباشيد . اين مفهوم را بعدا" تشريح خواهيم كرد . هر بار كه يك آرايه را تخصيص مي دهيد ، مي توانيد بوسيله مشخص نمودن نمايه آن داخل كروشه [] به يك عضو مشخص در آرايه دسترسي پيدا كنيد . كليه نمايه هاي آرايه ها با عدد صفر شروع مي شوند. بعنوان مثال اين دستور مقدار 28 را به دومين عضو month-days نسبت مي دهد . + month_days[1] = 28; + System.out.println(month_days[3]); آرايه براي تعداد روزهاي هر ماه ايجاد مي كند . + // Demonstrate a one-dimensional array. ميكند. همانطوريكه ذكر شد، نمايه هاي آرايه جاوا با صفر شروع مي شوند، بنابراين تعداد روزهاي ماه آوريل در month-days[3] برابر 30 مي باشد . اين امكان وجود دارد كه اعلان متغير آرايه را با تخصيص خود آرايه بصورت زير تركيب نمود : + int month_days[] = new int[12]; اين همان روشي است كه معمولا" در برنامه هاي حرفه اي نوشته شده با جاوا مشاهده مي كنيد . مي توان آرايه ها را زمان اعلانشان ، مقدار دهي اوليه نمود . پردازش آن بسيار مشابه پردازشي است كه براي مقدار دهي اوليه انواع ساده استفاده مي شود . يك مقدار ده اوليه آرايه فهرستي از عبارات جدا شده بوسيله كاما و محصور شده بين ابروهاي باز و بسته مي باشد . كاماها مقادير اجزائ آرايه را از يكديگر جدا مي كنند . آرايه بطور خودكار آنقدر بزرگ ايجاد مي شود تا بتواند ارقام اجزايي را كه در مقدار ده اوليه آرايه مشخص كرده ايد ، دربرگيرد . نيازي به استفاده از new وجود ندارد . بعنوان مثال ، براي ذخيره نمودن تعداد روزهاي هر ماه ، كد بعدي يك آرايه مقدار دهي اوليه شده از اعداد صحيح را بوجود مي آورد : + // An improved version of the previous program. جاوا بشدت كنترل مي كند تا مطمئن شود كه بطور تصادفي تلاشي براي ذخيره نمودن يا ارجاع مقاديري خارج از دامنه آرايه انجام ندهيد . سيستم حين اجراي جاوا كنترل مي كند كه كليه نمايه هاي آرايه ها در دامنه صحيح قرار داشته باشند . ( از اين نظر جاوا كاملا"با Cاو C++و متفاوت است كه هيچ كنترل محدوده اي در حين اجرا انجام نمي دهند . ) بعنوان مثال ، سيستم حين اجرا ، مقدار هر يك از نمايه ها به month-days را كنترل مي كند تا مطمئن شود كه بين ارقام 0 و 11 داخل قرار داشته باشند . اگر تلاش كنيد تا به اجزائ خارج از دامنه آرايه ( اعداد منفي يا اعدادي بزرگتر از طول آرايه ) دسترسي يابيد، يك خطاي حين اجرا (run-time error) توليد خواهد شد . در زير يك مثال پيچيده تر مشاهده مي كنيد كه از يك آرايه يك بعدي استفاده مي كند . اين برنامه ميانگين يك مجموعه از ارقام را بدست مي آورد . + // Average an array of values. در جاوا آرايه هاي چند بعدي در واقع آرايه اي از آرايه ها هستند . اين قضيه همانطوريكه انتظار داريد ظاهر و عملكردي مشابه آرايه هاي چندبعدي منظم (regular) دارد . اما خواهيد ديد كه تاوتهاي ظريفي هم وجود دارند . براي اعلان يك متغير آرايه چند بعدي ، با استفاده از مجموعه ديگري از كروشه ها هر يك از نمايه هاي اضافي را مشخص مي كنيد. بعنوان مثال ، عبارت زيرر يك متغير آرايه دو بعدي بنام twoD را اعلان مي كند . + int twoD[][] = new int[4][5]; نظر داخلي اين ماتريس بعنوان يك آرايه از آرايه نوع int پياده سازي خواهد شد . بطور فرضي ، اين آرايه را مي توان بصورت شكل زير نمايش داد . Right index determines column. و سپس مقادير آنها را نمايش مي دهد : + // Demonstrate a two-dimensional array. 5 6 7 8 9 بعد را مشخص نماييد . مي توانيد ابعاد ديگر را جداگانه تخصيص دهيد . بعنوان مثال ، كد زير حافظه اولين بعد twoD را هنگام اعلان آن تخصيص مي دهد . اين كد حافظه دومين بعد را بصورت دستي اختصاص مي دهد . + int twoD[][] = new int[4][]; احتمال چنين مزيتهايي وجود دارد . بعنوان مثال ، هنگاميكه ابعاد را بصورت دستي اختصاص مي دهيد ، نيازي نيست كه همان ارقام براي اجزائ هر بعد را تخصيص دهيد . همانطوريكه قبلا" گفتيم ، از آنجاييكه آرايه هاي چند بعدي واقعا" آرايه اي از آرايه ها هستند ، طول هر يك از آرايه ها تحت كنترل شما قرار مي گيرند . بعنوان مثال ، برنامه بعدي يك آرايه دو بعدي ايجاد مي كند كه در آن اندازه هاي دومين بعد نامساوي هستند . + // Manually allocate differing size second dimension. 1 2 | [0][0] | زيرا برخلاف آنچه مردم هنگام مواجه شدن با يك آرايه چند بعدي انتظار دارند رفتار مي كنند . اما اين آرايه ها در برخي شرايط بسيار كارا هستند . بعنوان مثال ، اگر نياز به يك آرايه دو بعدي خيلي بزرگ داريد كه داراي تجمع پراكنده باشد ( يعني كه يكي و نه همه اجزائ آن مورد استفاده قرار مي گيرند ) ، آنگاه آرايه بي قاعده احتمالا" يك راه حل كامل خواهد بود . اين امكان وجود دارد كه آرايه هاي چند بعدي را مقدار دهي اوليه نمود . براي اينكار ، فقط كافي است هر يك از مقدار ده اوليه ابعاد را داخل مجموعه ابروهاي ختص خودش قرار دهيد . برنامه بعدي يك ماتريس ايجاد مي كند كه هر يك از اجزائ آن شامل حاصلضرب نمايه هاي سطرها و ستونها هستند. همچنين دقت نماييد كه مي توان از عبارات همچون مقادير لفظي داخل مقدار ده اوليه آرايه استفاده نمود . + // Initialize a two-dimensional array. 0 1 2 3 دهي اوليه مشخص شده ، مقدار دهي اوليه شده است . مثالهاي بيشتري درباره استفاده از آرايه چند بعدي بررسي مي كنيم . برنامه بعدي يك آرايه سه بعدي 3x4x5 ايجاد مي كند . سپس حاصل نمايه هاي مربوطه را براي هر عضو بارگذاري مي كند . در نهايت اين حاصل ها را نمايش خواهد داد : + // Demonstrate a three-dimensional array. 0 0 0 0 0 يك شكل دوم براي اعلان يك آرايه بصورت زير وجود دارد : type [] var-name; در اينجا كروشه ها بعداز مشخص كننده نوع مي آيند نه بعداز نام متغير آرايه . بعنوان مثال دو شكل اعلان زير يكسان عمل مي كنند : + int a1[] = new int[3]; + char twod1[][] = n |
||
|
+
نوشته شده در دوشنبه 17 بهمن1384ساعت 1:25 توسط لوتوس
|
|
||
|
|
|
|
|
براي نوشتن يك كاراكتر در فايل ، از توابع ()putc و ()fputc استفاده ميشود. طريقه استفاده از اين دو تابع يكسان است . تابع ()putc در گونه هاي جديد C و ()fputc در گونه هاي قديمي C وجود داشته است . چون تابع ()putc به صورت ماكرو تعريف شده است سرعت عمل آن بالا است . لذا سعي ما در اين است كه از تابع ()putc استفاده شود . الگوي تابع ()putc بصورت زير است : int putc( int ch/FILE *fp) در الگوي فوق ، ch كاراكتري است كه بايد در فايل نوشته شود و fp اشاره گري از نوع فايل است كه مشخص مي كند، كاراكتر موردنظر بايد در چه فايلي نوشته شود. براي خواندن كاراكترها از فايل ، ميتوان از دو تابع ()getcو()fgetc) استفاده نمود . نحوه بكارگيري اين دو تابع يكسان است . تابع ()fgetc در گونه هاي قديمي C و ()getc در گونه هاي جديد C وجود دارد . چون تابع ()getc بصورت ماكرو پياده سازي شده است از سرعت بيشتري برخوردار است . لذا ما سعي در استفاده از تابع ()getc داريم . الگوي اين تابع بصورت زير است : int getc( FILE *fp) در الگوي فوق ، fp اشاره گري است كه مشخص مي كند كاراكتر مورد نظر از كدام فايل بايد خوانده شود . در مورد خواندن و نوشتن داده ها بر روي فايل بايد به نكاتي توجه داشت : 1 وقتي كاراكترهايي بر روي فايل نوشته مي شوند بايد مكان بعدي كه ، كاراكتر آتي در آنجا قرار مي گيرد مشخص باشد . همچنين وقتي كه كاراكترهايي از فايل خوانده ميشوند بايد مشخص باشد كه تاكنون تا كجا فايل خوانده شده است و كاراكتر بعدي از كجا بايد خوانده شود . براي برآوردن اين هدف ، سيستم از يك متغير بنام " موقعيت سنج فايل " استفاده مي كند كه با هر دستور خواندن و يا نوشتن بر روي فايل ، مقدار اين متغير بطور اتوماتيك تغيير مي كند تا موقعيت فعلي فايل را مشخص نمايد . لذا عمل نوشتن بر روي فايل و عمل خواندن از روي آن از جايي شروع مي شود كه اين متغير نشان مي دهد . 2 در هنگام خواندن داده ها از فايل بايد بتوان انتهاي فايل را تست نمود . يعني در برنامه بايد بتوان اين تست را انجام داد كه ، اگر در حين خواندن داده ها از فايل ، " موقعيت سنج فايل " به انتهاي فايل رسيد دستور خواندن بعدي صادر نگردد . چرا كه در غير اينصورت ، سيستم پيام خطايي را مبني بر نبودن اطلاعات در فايل صادر مي كند . در حين خواندن داده ها از فايل text پس از رسيدن به انتهاي فايل تابع ()getc يا ()fgetc علامت EOF را برمي گرداند. لذا در هنگام خواندن داده ها از فايل text مي توان به عمل خواندن ادامه داد . تا اين كه كاراكتر خوانده شده برابر با EOF گردد. درفايل باينري براي تست كردن انتهاي فايل ازتابع ()feof استفاده ميگردد. الگوي اين تابع بصورت زير است : int feof( FILE *fp) در الگوي فوق ، fp اشاره گري است كه مشخص مي كند اين تابع بايد بر روي چه فايلي عمل كند . تابع ()fopen علاوه بر تشخيص انتهاي فايلهاي باينري براي تشخيص انتهاي فايل هاي text نيز استفاده مي شود . اكنون به بررسي مثال هايي در مورد فايل هاي text و باينري و چگونگي تست انتهاي اين دو نوع فايل مي پردازيم . مثال 1: برنامه اي كه كاراكترهايي را از ورودي خوانده و در يك فايل text قرار مي دهد ( آخرين كاراكتر ورودي $ است ) و سپس داده هاي موجود در اين فايل را خوانده و به فايل ديگري منتقل مي كند . #include "stdio.h" this is a sample file. قرار ميدهد و سپس كاراكترهاي موجود در اين فايل را خوانده و به يك فايل باينري ديگر منتقل مي كند . اسامي فايل هاي ورودي و خروجي بعنوان آرگومان تابع اصلي به برنامه وارد مي شوند . #include "stdio.h" پرانتزهاي باز و بسته و همچنين تعداد آكولادهاي باز و بسته را شمارش مي كند . نام فايل ورودي بعنوان آرگومان تابع اصلي ، به برنامه وارد مي شود . #include "stdio.h" E:\TC>9-3 11.7.c |
||
|
+
نوشته شده در دوشنبه 17 بهمن1384ساعت 1:24 توسط لوتوس
|
|
||
|
|
|
|
|
پس از اين كه برنامه نويس كارش را با فايل تمام كرد ، بايد آن را ببندد . |
||
|
+
نوشته شده در دوشنبه 17 بهمن1384ساعت 1:21 توسط لوتوس
|
|
||
|
|
|
|
|
يک برنامه کامپيوتري ، از مجموعه اي دستورالعمل که نوع و نحوه انجام يک فعاليت را براي کامپيوتر مشخص مي نمايند ، تشکيل مي گردد. دستورالعمل هاي نوشته شده بعنوان نمونه ممکن است به کامپيوتر اعلام نمايند که تعدادي از اعداد را با يکديگر جمع و يا دو عدد را بايکديگر مقايسه و بر اساس نتيجه بدست آمده ، اتخاذ تصميم نمايد. دستورالعمل هاي نوشته شده ، صرفا" براي کامپيوتر قابل فهم و اجراء خواهند بود.کامپيوتر دستورالعمل هاي نوشته شده را اجراء و ماحصل آن رسيدن به اهدافي خواهد بود که بر اساس آن برنامه طراحي و پياده سازي شده است . دستورالعمل ها ، مي بايست با استفاده از يکي از زبانها ي برنامه نويسي نوشته شده ( کد ينگ ) و در ادامه در اختيار کامپيوتر قرار داده شوند. زبانهاي برنامه نويسي متعددي نظير : فرترن ، بيسيک ، کوبال ، پاسکال، ،C ، جاوا ، ويژوال بيسيک و ... وجود دارد. برنامه نويسي کامپيوتر ، مشابه آموزش گره زدن کفش به کودکان است . براي نيل به هدف فوق ، مي بايست تمامي مراحل لازم بصورت شفاف به کودکان آموزش داده شود . کودکان با دنبال نمودن دستورالعمل هاي ارائه شده ، قادر به گره زدن کفش خود خواهند بود ( روش انجام اين کار براي آنان مشخص شده و بر اساس آن ، امکان نيل به هدف مورد نظر توسط کودکان فراهم مي گردد ) . VB.NET ، زباني است که مي توا ن نحوه نيل به يک خواسته را بکمک آن بصورت شفاف ( نظير آموزش گره زدن کفش به کودکان ) مشخص و کامپيوتر با دنبال نمودن مراحل مشخص شده ، خواسته مورد نظر را محقق نمايد. با استفاده از VB.NET ، مي توان محصولاتي راايجاد که زمينه استفاده از آنان در محيط ويندوز و اينترنت ، وجود خواهد داشت . فراموش نکنيم در زمان فراگيري يک تکنولوژي در ابتدا مي بايست شيوه راه رفتن را بياموزيم و در ادامه اقدام به دويدن نمود . VB.NET يکي از زبان هاي حمايت شده در دات نت مي باشد . با استفاده از زبان فوق علاوه بر اينکه مي توان برنامه هاي مبتني بر ويندوز را پياده سازي نمود ، امکان استفاده از آن بعنوان زبان مورد نظر در زمان ايجاد برنامه هاي مبتني بر وب که از تکنولوژي ASP.NET استفاده مي نمايند ، نيز وجود خواهد داشت . با توجه به اهميت و جايگاه خاص اين زبان در دات نت ، مجموعه مقالاتي در رابطه با آموزش اصولي اين زبان آماده شده که بتدريج بر روي سايت قرار خواهند گرفت . در اولين مقاله از اين مجموعه به معرفي اوليه VB.NET خواهيم پرداخت . در ابتدا لازم است با ويژگي هاي منحصر بفرد برنامه هاي مبتني بر ويندوز در قياس با برنامه هاي مبتني بر DOS ، آشنا شده و پس از مروري مختصر به روند شکل گيري نسخه هاي متعدد ويژوال بيسيک ، با نحوه نصب آن نيز آشنا شويم . برنامه نويسي مبتني بر DOS در مقابل ويندوز برنامه نويسي مبتني بر ويندوز داراي تفاوت هاي عمده اي نسبت به برنامه نويسي سنتي در محيط DOS است.برنامه هاي DOS ، مسيري دقيق و مشخص را ازابتدا تا پايان دنبال مي نمايند . رويکرد فوق ، باعث بروز محدوديت هائي در رابطه با عملکرد برنامه ها از يکطرف و تحميل محدوديت هائي به کاربران در طي نمودن مسير مشخص شده ، مي گردد. از زاويه اي خاص مي توان عملکرد يک برنامه مبتني بر DOS را مشابه قدم زدن در يک راهرو ( سالن )، در نظر گرفت . بمنظور رسيدن به نقطه انتهائي سالن ، مي بايست طول سالن طي تا به انتهاي آن رسيد . در اين راستا از موانع متعدد موجود در مسير ، مي بايست عبور تا سرانجام به مقصد مورد نظر رسيد . در زمان پيمودن مسير ، صرفا" امکان بازنمودن درب هاي خاصي ، وجود خواهد داشت . ويندوز ، دنياي جديدي از برنامه نويسي مبتني بر "رويداد" را ايجاد نموده است . کليک نمودن موس ، تغيير اندازه پنجره ، تغيير محتويات يک Textbox ، نمونه هائي از يک "رويداد" مي باشند. کدهاي نوشته شده ، نحوه برخورد با يک رويداد را مشخص مي نمايد. براي رسيدن به انتهاي يک سالن کافي است بر روي "انتهاي سالن " ، کليک نمود و ديگر ضرورتي به پيمودن تمامي مسير تا رسيدن به انتهاي سالن نخواهد بود . درصورتيکه به انتهاي سالن رسيده باشيم و متوجه گرديم که اين مکان ، محلي نيست که انتظار آن را داشته ايم ، بسادگي مي توان مقصد جديدي را براي خود انتخاب ، بدون اينکه ضرورتي به برگشت در نقطه آغازين مسير وجود داشته باشد. برنامه نوشته شده عکس العمل هاي لازم در ارتباط با حرکت شما را بهمراه عمليات مربوطه بمنظور تکميل فعاليت ها ي مورد نظر انجام خواهد داد . با استفاده از VB.NET ، مي توان کدهاي لازم بمنظور ارائه عکس العمل لازم در زمان تحقق يک رويداد را نوشت .در اين راستا ، برنامه نويسان مي توانند کدهاي لازم در رابطه با رويدادهائي که امکان تحقق آنها وجود دارد را نوشته تا در زمان بروز رويداد مورد نظر ، عکس العمل لازم از طرف برنامه صورت پذيرد.در اين زمينه مي توان از نوشتن کدهاي ديگر بمنظور برخورد با رويدادهاي غيرضروري ، صرفنظر کرد. مثلا" ويندوز قادر به تشخيص رويداد"کليک " از "کليک مضاعف " است . اين بدان معني است که اگر مي خواهيد برنامه مورد نظر شما ،عکس العمل لازم در ارتباط با رويداد "کليک" را داشته باشد ، مي بايست صرفا" کد مربوط به رويداد " کليک"، نوشته گردد و الزامي به نوشتن کدهاي لازم بمنظور برخورد با رويداد "کليک مضاعف" ، وجود نخواهد داشت . در دنياي برنامه نويسي DOS ، کاربر عکس العمل لازم را نسبت به برنامه انجام مي دهد در صورتيکه در ويندوز ، برنامه ها عکس العمل لازم را با توجه به رفتار کاربران ، انجام خواهند داد . يکي ديگر از مزاياي مهم برنامه هاي ويندوز ، عدم وابستگي برنامه ها به يک سخت افزار خاص است . ويندوز تمهيدات لازم در خصوص ارتباط با سخت افزار را پيش بيني و برنامه نويسان نياز به آگاهي از نحوه عملکرد يک دستگاه سخت افزاري خاص بمنظور استفاده از آن ، نخواهند داشت . مثلا" برنامه نويسان ضرورتي به آگاهي از نحوه عملکرد هر نوع چاپگر ليزري، بمنظور ايجاد خروجي مورد نظر خود در برنامه ها ، نخواهند داشت. ويندوز، امکانات لازم در اين خصوص را از طريق ارائه روتين هاي عمومي که با درايورهاي مورد نظر مرتبط مي گردند ، فراهم مي نمايد. شايد همين موضوع دليل موفقيت ويندوز باشد . روتين هاي عمومي اصطلاحا" Windows (API ) Application Programming Interface ناميده مي شوند . تاريخچه ويژوال بيسيک قبل از معرفي ويژوال بيسيک در سال 1991 ، پياده کنندگان نرم افزار مجبور به تسلط و مهارت در زمينه استفاده از ++C بهمراه موارد پيچيده اي در اين خصوص بودند . بدين ترتيب ، صرفا" افراد خاص آموزش ديده، قادر به خلق نرم افزارهاي قدرتمند بمنظور اجراء در محيط ويندوز بودند. ويژوال بيسيک ، محدوديت فوق را تغيير و مي توان اين ادعا را داشت که امروزه خطوط زيادي از برنامه هاي نوشته شده با استفاده از ويژوال بيسيک کد شده است . ويژوال بيسيک ، ظاهر برنامه نويسي تحت ويندوز را با حذف عمليات اضافي براي نوشتن کدهاي لازم جهت طراحي بخش رابط کاربر (UI) ، تغيير داده است . در اين راستا ، زمانيکه بخش رابط کاربر ، ترسيم مي گردد ، برنامه نويس مي تواند کدهاي لازم بمنظور انجام عکس العمل مناسب در رابطه با رويداد ها را به آن اضافه نمايد . زمانيکه ماکروسافت نسخه شماره سه ويژوال بيسيک را ارائه نمود ، مجددا" دنياي برنامه نويسي با تغيير مهمي مواجه گرديد. در اين راستا امکانات مناسبي براي نوشتن برنامه هاي مبتني بر بانک هاي اطلاعاتي ، در اختيار برنامه نويسان قرار گرفت. ماکروسافت بدين منظور محصول جديدي با نام DAO)Data Access Objects) را ارائه نمود . برنامه نويسان با استفاده از DAO ، امکان انجام عمليات متفاوت در رابطه با داده ها را ، بدست آوردند . نسخه هاي شماره چهار و پنج ، قابليت هاي نسخه سه را افزايش و اين امکان را براي پياده کنندگان نرم افزار فراهم نمود تا برنامه هاي خود را جهت اجراء در محيط ويندوز 95 ، طراحي و پياده سازي نمايند . در اين زمينه ، برنامه نويسان قادر به نوشتن کدهائي گرديدند که امکان استفاده از آنان توسط ساير پياده کنندگان نرم افزار که از زباني ديگر استفاده مي کردند، فراهم گرديد. نسخه شماره شش ويژوال بيسيک ، روش جديدي بمنظور دستيابي به بانک هاي اطلاعاتي را ارائه نمود: ADO)ActiveX Data Objects ) . يکي از اهداف اوليه طراحي ADO ، امکان دستيابي به بانک هاي اطلاعاتي براي پياده کنندگان برنامه هاي مبتني بر وب است که از تکنولوژي ASP ، استفاده مي نمايند. همزمان با ارائه جديدترين نسخه ويژوال بيسيک که VB.NET ناميده مي شود ، بسياري از محدوديت هاي مرتبط با ويژوال بيسيک برطرف گرديد . در گذشته ويژوال بيسيک با انتفادات فراوان مواجه ( عدم وجود امکانات مناسب در مقايسه با جاوا و يا ++C ) و بسياري آن را نظير يک اسباب بازي در دنياي وسيع زبان هاي برنامه نويسي مي پنداشتند. VB.NET با غلبه بر مشکلات نسخه هاي پيشين ، توانسته است در مدت زمان کوتاهي ، بعنوان يک ابزار پياده سازي بسيار قدرتمند مطرح و گزينه اي مناسب براي برنامه نويسان در تمامي سطوح باشد . نصب VB.NET براي نصب VB.NET ، از دو رويکرد متفاوت مي توان استفاده کرد : نصب بهمراه ويژوال استوديو دات نت نصب نسخه استاندارد هر يک از گزينه هاي فوق ، امکان ايجاد برنامه هاي مبتني بر ويندوز را فراهم مي نمايند . مراحلي که در ادامه ذکر مي گردد ، نحوه نصب ويژوال استوديو را تشريح مي نمايد . مرحله اول : برنامه Setup.exe را از روي CD مربوطه فعال نمائيد. مرحله دوم : جعبه محاوره اي ، مراحل و اولويت هاي عمليات نصب را نشان خواهد داد. بمنظور صحت عملکرد VB.NET ، چندين Component نصب و يا بهنگام خواهند شد . اولين مرحله نصب، بهنگام سازي عناصر (Components) است . بر روي گزينه Windows Component Update ، کليک نمائيد. مرحله سوم : برنامه نصب در ادامه سيستم را بررسي تا نوع عناصري را که مي بايست بهنگام گردند، مشخص گردد. دامنه فرآيند بهنگام سازي به وضعيت ماشيني که بر روي آن ويژوال استوديو دات نت نصب مي گردد، بستگي خواهد داشت . مرحله چهارم : با توجه به اينکه ممکن است در زمان بهنگام سازي لازم باشد چندين مرتبه سيستم راه اندازي گردد ، از شما درخواست نام و رمز عبور شده تا ضرورتي به نشستن و نگاه کردن به کامپيوتر و واکنش لازم ( درج نام و رمز عبور به سيستم ) پس از هر مرتبه راه اندازي سيستم نباشد . بدين ترتيب در زمان راه انداري سيستم ، عمليات مربوطه بصورت اتوماتيک و بدون نياز به تايپ نام و رمز عبور ، انجام خواهد شد . عمليات فوق ، اختياري است و در صورتيکه گزينه فوق انتخاب نگردد ، با هر مرتبه راه اندازي سيستم، پيام مناسب ارائه و مي بايست واکنش لازم ( تايپ نام و رمز عبور) را انجام داد . مرحله پنجم : در اين مرحله با فشردن دکمه ! Install Now ، بهنگام سازي عناصر (Components) آغاز مي گردد . با اتمام هر يک از آيتم ها يک Check mark بمنزله اتمام مرحله مربوطه نشان داده مي شود . در مقابل عنصر جاري براي بهنگام سازي نيز يک فلش قرمز رنگ نسان داده مي شود. مرحله ششم : پس از بهنگام سازي عناصر ، مجددا" به صفحه اصلي Setup مراجعت و امکان نصب ويژوال استوديو دات نت فراهم مي گردد.( کليک نمودن برروي گزينه Visiual Studio.NET ) نکته : در صورتيکه قصد داريد که از طريق ماشين فوق ، يک برنامه تحت وب پياده سازي نمائيد ، لازم است IIS و FrontPage Extensions قبلا" نصب شده باشد( بصورت پيش فرض در زمان نصب ويندوز 2000 نصب خواهد شد ) در صورتيکه ويژوال استوديو دات نت ، بر روي کامپيوتري نصب مي گردد که داراي سيستم عامل ويندوز 2000 نسخه Professional است ، با يک پيام خطاء مواجه خواهيم شد( عدم وجود عناصر لازم ) با فشردن دکمه Install Component ، عمليات نصب IIS و Frontpage Extensions انجام خواهد شد . در صورتيکه دکمه Continue ، انتخاب گردد ، در آينده نمي توانيد برنامه هاي تحت وب را بصورت محلي بر روي کامپيوتر خود پياده سازي نمائيد . مرحله هفتم : نظير اکثر برنامه هاي نصب ، ليستي از گزينه هاي موجود ( شامل عناصر ) براي نصب در اختيار شما قرار مي گيرد . شما مي توانيد ، صرفا" آنچيزي را که بدان نياز داريد ، نصب نمائيد . مثلا" در صورتيکه ظرفيت درايو شما پايين و يا ضرورتي به استفاده از ويژوال ++C دات نت را نداريد ، مي توان در اين مرحله از نصب آن صرفنظر کرد. هر گزينه اي که در اين مرحله انتخاب نمي گردد ، مي توان در صورت ضرورت آن را در آينده نصب کرد. براي هر يک از امکاناتي که قرار است نصب گردند ، سه بخش اطلاعاتي متفاوت نمايش داده مي شود : بخش Feature Properties . فايل ها ي مورد نظر براي نصب و ميزان فضاي مورد نياز را نشان مي دهد . بخش Feature description . هر Feature چيست و چه عملياتي را انجام مي دهد . بخش Space Allocation ، وضعيت فضاي ذخيره سازي هارد را با توجه به گزينه هاي انتخاب شده ، نشان خواهد داد . نکته : زمانيکه ويژوال استوديو دات نت ، اجراء مي گردد مجموعه اي از اطلاعات بين ديسک و حافظه مبادله مي گردد . بنابراين لازم است به ميزان کافي ظرفيت آزاد بر روي هارد ديسک وجود داشته باشد ، در اين راستا نمي توان دقيقا" مشخص نمود که به چه ميزان فضاي آزاد نياز خواهد بود ولي حداقل يکصد مگابايت توصيه مي گردد . مرحله هشتم : ويژوال استوديو دات نت ، شامل مجموعه اي گسترده از فايل هاي مستندات ( راهنما ) است . در اين مرحله مي توان تنظيمات لازم در خصوص اجراي مستندات از طريق CD و يا دايرکتوري نصب شده بر روي هارد را انجام داد . در اين زمينه مي توان يک مسير بر روي هارد را مشخص تا مستندات نصب و يا گزينه Run From Source را انتخاب تا بر اساس آن مستندات همچنان بر روي CD باقي بمانند . مرحله نهم : پس از انتخاب عناصر مورد نظر براي نصب ، با فشردن دکمه ! Install Now ، عمليات نصب آغاز مي گردد . مدت زمان نصب ، بستگي به موارد انتخابي و نوع سيستم دارد . مثلا" نصب تمام ويژوال استوديو دات نت بهمراه تمامي مستندات بر روي يک ماشين با دارا بودن 256 مگابايت حافظه اصلي، سرعت 650 مگاهرتز و دوازده گيگابايـت هارد ديسک ، حدود يک ساعت طول خواهد کشيد . مرحله دهم : پس از اتمام مرحله قبل ، با انتخاب گزينه Service Release ، بررسي لازم در خصوص بهنگام سازي انجام مي گيرد . اين عمليات از طريق اينترنت انجام خواهد شد . در اين زمينه به يک خط پرسرعت و مطمئن نياز خواهد بود . پس از انجام مراحل فوق ، ويزوال استوديو دات نت بر روي سيستم نصب و محيط لازم براي نوشتن برنامه هاي VB.NET فراهم شده است . |
||
|
+
نوشته شده در چهارشنبه 12 بهمن1384ساعت 11:41 توسط لوتوس
|
|
||
|
|
|
|
|
ارتقائ خودكار انواع در عبارات Automatic Type promotion in Expressions علاوه بر انتسابها ، در شرايط ديگري هم تبديلات خاص انواع ممكن است اتفاق بيفتد : در عبارات . حالتي را در نظر بگيريد كه در يك عبارت ، ميزان دقت لازم براي يك مقدار واسطه گاهي از دامنه هر يك از عملوندهاي خود تجاوز مي نمايد . بعنوان مثال ، عبارت زير را در نظر بگيريد : + byte a = 40; براي اداره اين نوع مشكلات ، جاوا بطور خودكار هر يك از عملوندهاي byteو shortو را هنگام ارزشيابي يك عبارت به int ارتقائ مي دهد . اين بدان معني است كه زير عبارت a*b با استفاده از اعداد صحيح و نه byte اجرا مي شود. بنابراين عدد 2000 نتيجه عبارت واسطه 50*40 مجاز است ، اگر چه aو bو هر دو بعنوان نوع byte مشخص شده اند . همانقدر كه ارتقائ خودكار مفيداست ، مي تواند سبب بروز خطاهاي زمان كامپايل (compile-time) گردد . بعنوان مثال ، اين كد بظاهر صحيح يك مشكل را بوجود مي آورد . + byte b = 50; متغير byte ذخيره كند . اما چون عملوندها بطور خودكار هنگام ارزشيابي عبارت به int ارتقائ يافته اند ، جواب حاصله نيز به int ارتقائ يافته است . بنابراين جواب عبارت اكنون از نوع int است كه بدون استفاده از تبديل cast امكان نسبت دادن آن به يك byte وجود ندارد. اين قضيه صادق است ، درست مثل همين حالت ، حتي اگر مقدار نسبت داده شده همچنان با نوع هدف سازگاري داشته باشد . در شرايطي كه پيامدهاي سر ريز (overflow) را درك مي كنيد، بايد از يك تبديل صريح cast نظير مورد زير استفاده نماييد . + byte b = 50; كه مقدار صحيح عدد 100 را بدست مي آورد . قوانين ارتقائ انواع علاوه بر ارتقائbyteو shortوبه int جاوا چندين قانون ارتقائانواع را تعريف كرده كه قابل استفاده در عبارات مي باشند . اين قوانين بصورت زير هستند . اول اينكه كليه مقادير byteو shortوبه int ارتقائ مي يابند ، همانگونه كه قبلا" توضيح داده ايم . آنگاه اگر يك عملوند ، long باشد ، كل عبارت به long ارتقائ مي يابد . اگر يك عملوند float باشد ، كل عبارت به float ارتقائ مي يابد . اگر هر يك از عملوندها يك double باشند ، حاصل آنها double خواهد شد . برنامه بعدي نشان مي دهد كه چگونه هر يك از مقادير در عبارت ارتقائ مي يابد تا با آرگومان دوم به هر يك از عملگرهاي دودويي ، مطابقت يابد . + class Promote { نگاه كنيم : + double result =( f * b )+( i / c( - )d * s); عبارت نيز از نوع float خواهد بود . در زير عبارت بعدي يعني i/c، c، به يك نوع int ارتقائ يافته و جواب آن زير عبارت نيز از نوع int خواهد بود . سپس در زير عبارت d*s ، مقدار S به نوع double ارتقائ يافته و نوع زير عبارت نيز double خواهد بود . در نهايت اين سه مقدار واسطه ، float، int،، double، در نظر گرفته مي شوند . خروجي float بعلاوه int از نوع float خواهد شد . آنگاه اين نتيجه منهاي آخرين double به نوع double ارتقائ يافته ، كه نوع مربوط به جواب نهايي |
||
|
+
نوشته شده در چهارشنبه 12 بهمن1384ساعت 11:34 توسط لوتوس
|
|
||
|
|
|
|
|
تابع ()fopen براي باز كردن فايل مورداستفاده قرار گرفته و داراي الگوي زير است : FILE *fopen(char *filename / *mode) در الگوي فوق ، filename به رشته اي اشاره مي كند كه حاوي نام فايل و محل تشكيل يا وجود آن است . نام فايل داده از قانون نامگذاري فايل برنامه تبعيت مي كند و شامل دو قسمت : نام و انشعاب است كه بهتر است انشعاب فايل داده ، dat انتخاب گردد . محل تشكيل يا وجود فايل مي تواند شامل نام درايو و يا هر مسير موجود روي ديسك باشد . mode مشخص مي كند كه فايل چگونه بايد باز شود ( ورودي خروجي و يا ... ) . مقاديري كه ميتوانند بجاي mode در تابع ()fopen قرار گيرند همراه با مفاهيم آنها در جدول زير آمده اند . mode مفهوم (rt)r فايلي از نوع text را به عنوان ورودي باز مي كند (wt)w فايلي از نوع text را به عنوان خروجي باز مي كند (at)a فايل را طوري بازميكند كه بتوان اطلاعاتي را به انتهاي آن اضافه نمود rb فايلي از نوع باينري را به عنوان ورودي باز مي كند wb فايلي از نوع باينري را به عنوان خروجي باز مي كند ab فايل موجود از نوع باينري را طوري باز مي كند كه بتوان اطلاعاتي را به انتهاي آن اضافه نمود (r+t)r+ فايل موجود از نوع text را به عنوان ورودي و خروجي باز مي كند (w+t)w+ فايلي از نوع text را به عنوان ورودي و خروجي باز مي كند (a+t)a+ فايل موجود از نوع text را به عنوان ورودي و خروجي باز مي كند r+b فايل موجود از نوع باينري را به عنوان ورودي و خروجي باز ميكند w+b فايل از نوع باينري را به عنوان ورودي و خروجي باز مي كند a+b فايل از نوع باينري را به عنوان ورودي و خروجي باز ميكند ( اين فايل مي تواند قبلا" وجود داشته باشد ) . جدول مقادير معتبر mode در تابع ()fopen براي باز كردن فايل بايد يك اشاره گر از نوع فايل تعريف گردد تا به فايلي كه توسط تابع fopen باز مي شود اشاره نمايد . اگر فايل به دلايلي باز نشود اين اشاره گر برابر با NULL خواهد بود. بعنوان مثال ، دستورات زير را درنظر بگيريد: FILE *fp;( 1) fp=fopen("A:test"/"w");( 2) دستور (1)، متغير fp رااز نوع اشاره گر فايل تعريف مي كند و دستور (2) فايلي بنام test را بر روي درايو A ايجاد مي نمايد ( چون حالت "w" ، فايل را به صورت خروجي باز مي كند ) . براي تشخيص اين كه آيا فايل با موفقيت باز شده است يا خير مي توان اشاره گر فايل را با NULL مقايسه كرد. ( NULL ماكرويي است كه در فايل stdio.h تعريف شده است و با حروف بزرگ بكار مي رود ) . اگر اشاره گر فايل برابر با NULL باشد بدين معني است كه فايل باز نشده است : if((fp=fopen("A:test"/"w"))==NULL) |
||
|
+
نوشته شده در چهارشنبه 12 بهمن1384ساعت 11:30 توسط لوتوس
|
|
||
|
|
|
|
|
هر فايل قبل از اين كه بتواند مورد استفاده قرار گيرد ، بايد باز گردد . مواردي كه در حين باز كردن فايل مشخص مي شوند عبارتند از : 1 نام فايل 2 نوع فايل از نظر ذخيره اطلاعات (textيا binaryا) 3 نوع فايل از نظر ورودي خروجي ( آيا فايل فقط به عنوان ورودي است ، آيا فقط بعنوان خروجي است يا هم بعنوان ورودي است و هم بعنوان خروجي ) . يك فايل ممكن است طوري باز شود كه فقط عمل نوشتن اطلاعات بر روي آن مجاز باشد . به چنين فايلي ، فايل خروجي گفته مي شود . اگر فايل طوري باز گردد كه فقط عمل خواندن اطلاعات از آن امكان پذير باشد به چنين فايلي ، فايل ورودي گفته مي شود . اگر فايل طوري باز شود كه هم عمل نوشتن اطلاعات بر روي آن مجاز باشد و هم عمل خواندن اطلاعات از آن ، به چنين فايلي ، فايل ورودي و خروجي گفته ميشود. اگر فايلي قبلا" وجود نداشته باشد ، در حين باز شدن بايد بعنوان فايل خروجي باز شود . اگر فايلي قبلا" وجود داشته باشد و بعنوان خروجي باز گردد ، اطلاعات قبلي مي رود ، براي باز كردن فايل از تابع ()fopen استفاده مي گردد . |
||
|
+
نوشته شده در چهارشنبه 12 بهمن1384ساعت 11:28 توسط لوتوس
|
|
||
|
|
|
|
|
منظور از سازمان فايل اين است كه اطلاعات در فايل چگونه ذخيره شده و سپس به چه روش هايي مورد بازيابي قرار مي گيرند . يا بعبارت ديگر قانون حاكم بر نحوه ذخيره و بازيابي داده ها و فايل را سازمان فايل گويند . حال به دو سازمان فايل پرداخته مي شود : 1 سازمان فايل ترتيبي (sequential) . 2 سازمان فايل تصادفي (random) . در سازمان فايل ترتيبي ، ركوردها به همان ترتيبي كه از ورودي خوانده ميشوند در فايل قرار مي گيرند و در هنگام بازيابي ، به همان ترتيبي كه در فايل ذخيره شده اند مورد دسترسي قرار مي گيرند . بعنوان مثال اگر صدمين ركورد فايل بخواهد مورد دسترسي قرار گيرد، بايد 99 ركورد قبل از آن از فايل خوانده شوند. فايلهاي ترتيبي معمولا" داراي يك فيلد كليد هستند . ( فيلد كليد ، فيلدي است كه بعنوان شاخص ركورد مورد استفاده قرار ميگيرد ) و بر اساس آن ، مرتب ميباشند ( شكل 1 ). بعنوان مثال در مورد دانشجويان ، شماره دانشجويي و در مورد كارمندان شماره كارمندي ، فيلد خوبي براي شاخص فرد مي باشند . شماره شناسايي نام موضوع درس نمره 12 Ahmad پاسكال 20 23 Ali پاسكال 15 34 Reza پاسكال 18 20 C Jafar 56 شكل (1) . نمونه اي از يك فايل ترتيبي در سازمان فايل تصادفي ، به هر ركورد يك شماره اختصاص مي يابد . لذا اگر فايل داراي n ركورد باشد ، ركوردها از 1تا nا شماره گذاري خواهند شد . وقتي كه ركوردي در يك فايل با سازمان تصادفي قرار گرفت ، محل آن توسط يك الگوريتم پيدا كننده آدرس ، كه با فيلد كليد ارتباط دارد مشخص مي شود . در اين صورت دو ركورد با فيلد كليد مساوي ، نمي توانند در فايل تصادفي وجود داشته باشند . در سازمان فايل تصادفي مستقيما" مي توان به هر ركورد دلخواه دسترسي پيدا كرد ( بدون اين كه ركوردهاي قبل از آن خوانده شوند ) . شكل (2) نمونه اي از يك فايل تصادفي را نمايش مي دهد . شماره ركورد شماره شناسايي نام موضوع درس نمره 13 12 Ahmad پاسكال 20 20 C Jafar 56 20 24 23 Ali پاسكال 15 31 34 Reza پاسكال 18 ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ اي از فايل تصادفي |
||
|
+
نوشته شده در چهارشنبه 12 بهمن1384ساعت 11:26 توسط لوتوس
|
|
||
|
|
|
|
|
سلام امروز ميخوام دربازه نظرات و لطف هاي بچهها بگم . جواب لطف هاشونو بدم:
۱-شادي خانم درباره هافمن خواستن كه براشون ميل زدم و كدي كه داشتم فرستادم باز هم اكه نياز به توضيح داشتن ميل بزنن. ۲- آقا ژرژ ژزف(http://www.shazdeh63.blogfa.com/) هم كه حسابي لطف كردن ان شا الله موفق باشن. ۳- سارا خانوم ما خيلي مخلصتيم. ديگه نظر نميزاري؟ ۴- عمو سعيد چشم سليقه هم به خرج داديم و الان داريم درباره جند زبان مينويسم. ۵- آقا محمد مرسي از لطفت ۶- مريم خانوم شما هم مرسي ۷- سيده جان شما هم مرسي به داداشتون هم سر زدم . ۸- sa2n مرسي كه شما هم سر زدي به سيده سلام برسون. ۹- همسفر جون( http://tekiyegah.blogfa.com/) مرسي.باز هم سوالا داشتي بپرس. ۱۰- آقا مصطفي (http://www.m-asemoni.blogfa.com/) مرسي از شعر هاي قشنگت بهمون سر نميزني ديگه دلمون براي شعرات تنگ شده. ۱۱- نرو همنفس (http://bachelor.mihanblog.com/) جوابتو برات نظر گذاشتن. ۱۲- نسترن جان مرسي(http://www.naassy.blogfa.com/) شما هم موفق باشيد ۱۳- شهرزاد خانوم چشم مثالهاي سخت تر يگم .شما بليد بقيه چي. همه كه كثل شما نيستن. بايد رعايت همه بشه. ۱۴- آسموني جان(http://www.m-asemoni.blogfa.com/) مرسي براي شعرات ديكه سر نميزني. ۱۵- چشم نرگس خانوم درباره خود برنامه نويسي هم توضيح ميدم. شما چون وسطاي كار اميد مطالب برات يكم سنگينه اما باشه درباره خود برنامه نويسي هم حتما مينويسم ۱۶- خدمت هنگامه خانوم بگم که برای گذاشتن عکس تو وبلاگتون اول باید عکسها رو روی یه سایت که کارش آپلود عکسه بزارید بعد بعد اون سایت یه آدرس به شما میده که با استفاده از اون میتونید اونو تو وبلاگتون بزارید گذاشتنش هم که سادس دکمه افزودن تصویر رو میزنید (کنتر لینکه از اونجایی که شکلکها رو میزارید ۲تا بیاین سمت چپ) بعد آدرس عکس رو میدین و براتون عکسو مینزاره تو متن. باز هم اگه سوالی داشتی بگو. در آخر از همهي دوستان عزيز تشكر ميكنم از دوستاني كه اجازه دادن بهاشون تبادل لينك كنم هم تشكر ميكنم در ضمن هر كسي دوست داشت ميتون منو بلينكه.اگه تو اين متن آدرس بعضي از دوستان رو نذاشتم معذرت ميخوا بخاطر كمبود وقت بود ان شا الله ناراحت نشن . همگي عزيزيد مرسي از همتون نظراتتون باعث دلگرمي منه. |
||
|
+
نوشته شده در یکشنبه 9 بهمن1384ساعت 13:41 توسط لوتوس
|
|
||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
در بخش اول اين مقاله به بررسي مفاهيم وچالش هاي موجود در زمينه طراحي و پياده سازي برنامه هاي کامپيوتري بمنظور استفاده در محيط اينترنت اشاره و محيط دات نت ماکروسافت از اين زاويه، مورد بررسي اوليه قرار گرفت . در بخش دوم ، به بررسي استانداردهاي کنسرسيوم وب در دات نت ، کلاس هاي XML در دات نت و امکانات امنيتي در ارتباط با XML ، خواهيم پرداخت . استانداردهاي کنسرسيوم وب در دات نت امکان استفاده از XML در محيط ها و برنامه هاي متعددي وجود دارد . تحقق خواسته فوق، بکمک استانداردهائي است که توسط کنسرسيوم وب ايجاد شده است. XML در دات نت، استانداردهاي ارائه شده توسط کنسرسيوم وب را حمايت تا زمينه ارتباط متقابل بين برنامه هاي استاندارد شده ، فراهم گردد. Xml Information set : کنسرسيوم وب مشخصاتي را بعنوان مجموعه اطلاعات مرتبط با XML ، استاندارد و ارائه نموده است .استاندارد فوق، شامل مجموعه اي از تعاريف بمنظور استفاده توسط ساير مشخصاتي است که بنوعي به اطلاعات موجود در يک سند XML مراجعه مي نمايند. يک سند XML ، حاوي تعدادي از مجموعه اطلاعات ارائه شده در استاندارد فوق است . مشخصات فوق ، اطلاعات لازم بمنظورتشريح ساختار يک سند XML را ارائه مي نمايد .يک سند XML شامل يک مجموعه اطلاعات است، اگر " خوش - شکل " بوده و محدوديت هاي تعريف شده در رابطه با Namespace را در مجموعه اطلاعات ومشخصات XML ، تامين نمايد . اغلب استانداردهاي XML کنسرسيوم وب، از تعاريف ارائه شده در مشخصه فوق ، اقتباس ( مشتق ) شده اند.براي اطلاعات تکميلي مي توان به آدرس http://www.w3.org/TR/xml-infoset مراجعه کرد . XML 1.0 Namespace . استاندارد فوق ،ضوابط لازم بمنظور ايجاد يک شي داده بصورت يک سند XML ، را تعريف مي نمايد . مشخصات فوق همچنين ،ساختار فيزيکي و منطقي يک سند XML و ساير خصايص مربوطه را تعريف مي نمايد. براي اطلاعات تکميلي مي توان به آدرس http://www.w3.org/Tr/REC-xml مراجعه استفاده کرد.namespace ها درXML يک namespace را تعريف و نحوه استفاده از namespace در زمان ايجاد يک گرامر XML را که شامل المان ها و خصلت هائي است، مشخص مي نمايد . براي اطلاعات تکميلي مي توان به آدرس http://www.w3.org/TR/REC-xml-names مراجعه کرد . XML Path Language ( XPath) 1.0 : استاندارد XPath ، گرامر و سمنتيک مورد نياز براي آدرس دهي بخش هاي متفاوت يک سند XML را مشخص مي نمايد. XPath ، همچنين شامل امکانات پايه براي انجام عمليات در رابطه با رشته ها ، اعداد و منطق است . براي مشاهده اطلاعات تکميلي مي توان به آدرس http://www.w3.org/TR/XPath مراجعه کرد . XSL Transformation (XSLT) 1.0 : استاندارد XSLT ، گرامر و سمنتيک XSLT را تعريف و زباني براي تبديل اسناد XML به فرمت هاي ديگر است . تبديل مورد نظر( بيان شده ) در XSLT يک Style Sheet ناميده مي شود . براي مشاهده اطلاعات تکميلي مي توان به آدرس http://www.w3.org/TR/XSLT مراجعه کرد . Document Object Model )DOM) : استاندارد DOM سطح يک و دو، اينترفيس لازم را بمنظور دستيابي و انجام عملياتي نظير: بهنگام سازي Style ،محتويات و ساختار يک سند از طريق برنامه نويسي ، فراهم مي نمايد . براي مشاهده اطلاعات تکميلي مي توان به آدرس http://www.w3.org/DOM مراجعه کرد . XML Schema Definition Language )XSD) : استاندارد XSD ، روشي براي تشريح ساختار ، محتويات و سمنتيک يک سند XML است . Schema امکان استفاده از واژه هاي مشترک را فراهم مي نمايد . براي مشاهده اطلاعات تکميلي مي توان به آدرس http://www.w3.org/XML/Schema مراجعه کرد . جدول زير نسخه هاي پياده سازي شده هر يک از استانداردهاي فوق را در دات نت نشان مي دهد :
دات نت با ارائه namespace و کلاس هاي پايه از استانداردهاي ارائه شده توسط کنسرسيوم وب، حمايت مي نمايد . جدول زير نسخه هاي پياده سازي شده استانداردهاي کنسرسيوم وب، در دات نت را نشان مي دهد .
مروري بر کلاس هاي XML در دات نت کلاس هاي پايه تجريدي در دات نت ، اساس مبادله اطلاعات مي باشند . جدول زير کلاس هاي پايه در فريمورک دات نت را نشان مي دهد :
مقايسه بين MSXML 4.0 و دات نت ماکروسافت دو روش متفاوت بمنظور کار با XML ، در اختيار برنامه نويسان قرار داده است : MSXML، که در ابتدا پارسر XML ناميده مي شد. کلاس هاي XML فريمورک دات نت MSXML 4.0 ، با پارسر MSXML جايگزين شده است . عملکرد MSXML 4.0 در اغلب موارد مشابه کلاس هاي فريمورک دات نت است . تفاوت عمده در نحوه استفاده از عناصر است . در MSXML بمنظور ارائه امکانات از اشياء COM)Componenet Object Model) استفاده شده ( ازManaged code استفاده نمي گردد ) و داراي امکانات از قبل ساخته اي براي SAX)Simple API for XML) است . MSXML 4.0 ، شامل سرويس هاي زير است : DOM XSD XPath 1.0 XSLT 1.0 SAX ( يک مدل برنامه نويسي و مشابه با DOM است ) Schema Object Model)SOM) ، شامل امکانات API اضافه ، بمنظور دستيابي به سندهاي XML Schema از طريق برنامه نويسي است . کلاس هاي XML فريمورک دات نت ، عمليات مشابهي را نظير MSXML 4.0 انجام مي دهند. طراحي کلاس هاي فوق بگونه اي است که امکان استفاده از آنان در يک محيط مديريت يافته، خصوصا" سرويس هاي وب XML ،وجود دارد . جدول زير ويژگي هر يک را نشان مي دهد :
XML و امنيت در دات نت XML ،مهمترين امکان ذخيره سازي داده ها و انتقال اطلاعات د ر فريمورک دات نت محسوب مي گردد. بنابراين تمام ملاحظات امنيتي در فريمورک دات نت، به رويکردهاي امنيتي XML مربوط مي گردد . دستيابي به سرويس هاي وب XML مي تواند محدود به سرويس گيرندگان تائيد شده و مجاز باشد( مشابه دستيابي کاربران مجاز به يک وب سايت ) . مدل مبتني بر شي XML براي رمزنگاري اشياء کلاس SecurityElement ، مدل XML لازم بمنظور رمزکردن اشياء را ارائه مي نمايد. کلاس فوق ، بمنظور استفاده همراه يک سيستم ايمني در نظرگرفته شده است و امکان استفاده از آن بعنوان يک کلاس شي XML عمومي وجود نخواهد داشت . XML signature . کنسرسيوم وب در حال پياده سازي مشخصه اي براي امضاء ديجيتالي مبتني بر XML است . System.Security.Cryphtography.xml ،مدلي مبتني بر XML براي استفاده از سيستم امنيتي فريمورک دات نت بوده که از امضاهاي XML حمايت مي نمايد. مدل فوق اين امکان را به اشياء XML خواهد داد که از طريق يک امضاء ديجيتالي تاييد گردند . رمزنگاري باعث حفاظت اطلاعات در مقابل نمايش و يا تغييرات شده وبدين ترتيب يک کانال ايمن ارتباطي ايجاد خواهد شد . رمزنگاري سرويس هاي وب XML بمنظور انتقال . برنامه هاي مبتني بر دات نت از پروتکل SOAP ، بمنظور ارتباط با سرويس هاي وب XML استفاده مي نمايند( فرمت اوليه پيام ها ) . کتابخانه کلاس فريمورک دات نت ، ضمائم SOAP را بمنظور اجراء ، همراه با يک متد سرويس وب XML ، ارائه مي نمايد . namespace ، شامل کلاس هائي است که پروتکل هاي مورد نياز براي انتقال داده ها را فراهم مي نمايد . ارسال مدارک تائيد شده .در موارديکه يک سند XML ايمن شده باشد ،بدون ارسال مدارک لازم، امکان دستيابي و استفاده از آن وجود نخواهد داشت. کلاس XmlTextReader ،امکان ارسال مدارک را از طريق استفاده از کلاس CredentialCache موجود در System.Net فراهم مي نمايد . |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
+
نوشته شده در شنبه 8 بهمن1384ساعت 23:54 توسط لوتوس
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
XML ، يکي از مهمترين دستاوردهاي بشريت در عرصه نرم افزارطي ساليان اخير است که بدون شک بيشترين تاثير را در ارتباط با طراحي و پياده سازي برنامه هاي کامپيوتري خصوصا" در اينترنت، بدنبال داشته و خواهد داشت . XML ، يکي از استانداردهاي ارائه شده توسط کنسرسيوم وب است که زمينه استفاده از آن براي تمامي توليدکنندگان نرم افزار، فراهم شده است . XML ، بهمراه خود مجموعه اي از تکنولوژي هاي ديگر را ايجاد نموده است، بطوريکه امروزه از آن بعنوان يک خانواده بزرگ ياد مي گردد (XSLT , XSD ,DOM , XPath ,...) . بديهي است توجه به استانداردهاي فوق براي توليدکنندگان نرم افزار بسيار حايز اهميت بوده و در اين راستا ،شرکت هاي عظيم نرم افزاري بدنبال ارائه بستر مناسب براي طراحي و پياده سازي نرم افزار بر اساس واقعيت هاي موجود، خصوصا" پديده شگرف اينترنت مي باشند . ماکروسافت، بعنوان يکي از شرکت هاي عظيم نرم افزاري ،پروژه دات نت را مطرح و در نهايت آن را در اختيار علاقه مندان قرار داده است . XML ، در دات نت داراي نقشي بسيار مهم و محوري بوده و لازم است با جايگاه آن بصورت اصولي آشنا شويم . در اين مقاله، به بررسي جايگاه XML در دات نت پرداخته مي گردد . مقدمه XML ، يک تکنولوژي استاندارد ايده آل براي برنامه هائي است که بر روي بستر اينترنت اجراء مي گردند. ماکروسافت در پروژه دات نت ،از استادنداردهاي کنسرسيوم وب پيروي و نسخه هاي اختصاصي خود را طراحي و پياده سازي نموده است. بدين ترتيب (با توجه به تبعيت ماکروسافت از استانداردهاي کنسرسيوم وب)، مي توان اين اطمينان را بدست آورد که نرم افزارهاي توليد شده در دات نت ، قابليت ارتباط با ساير برنامه هاي توليد شده مبتني بر استانداردهاي کنسرسيوم وب را بخوبي دارا مي باشند . در محيط اينترنت، داده ها مي توانند از منابع متفاوت و به اشکال گوناگون دريافت گردند . سرويس هاي وب XML و ساير برنامه هائي که با استفاده از دات نت پياده سازي مي گردند ، مسائل و مشکلات مربوط به انجام عمليات بر روي داده هائي با فرمت هاي متفاوت و از منابع گوناگون ، را برطرف مي نمايد. سرويس هاي وب XML ساختار و بدنه دات نت، محيطي مناسب براي ايجاد سرويس هاي وب XML است . کاربران قادر به فراخواني سرويس ها بکمک پروتکل هاي استاندارد شده اي نظير : SOAP ، UDDI و XML مي باشند. سرويس هاي وب XML ، با استفاده از کلاس ها و Namespace هائي که توسط کنسرسيوم وب استاندارد شده اند، ايجاد مي گردند. سرويس هاي وب XML ، روشي مطلوب بمنظور اشتراک ، سازماندهي و انجام عمليات متفاوت در رابطه با داده ها مي باشند . محيط ( پلات فرم ) دات نت محيط دات نت، شامل مجموعه اي از محصولات است که بر اساس XML و ساير استانداردهاي اينترنت،ايجاد شده اند .محيط فوق، براي هر يک از جنبه هاي مرتبط با پياده سازي، مديريت ، استفاده ، سرويس هاي وب XML ، امکانات و راهکارهاي مناسبي را ارائه داده است . سرويس هاي وب XML ، اين امکان را به برنامه ها خواهند داد تا قادر به اشتراک اطلاعات از طريق اينترنت صرفنظر از سيستم عامل و زبان برنامه نويسي مربوطه باشند. با استفاده از XML در دات نت ، مي توان اغلب مشکلات مربوط به پياده سازي نرم افزار بر روي اينترنت را که در حال حاضر با آن مواجه هستيم ، برطرف کرد. XML ، يک راه حل جامع براي تشريح و مبادله داده هاي ساختيافته را ارائه مي نمايد . چالش هاي موجود در زمينه بکارگيري برنامه ها در اينترنت گسترش فعاليت هاي تجاري بر روي اينترنت باعث حضور شرکت هاي متعدد بهمراه سيستم هاي گوناگون، در کنار يکديگر شده است . با اينکه ايده انجام فعاليت هاي تجاري بر روي اينترنت نسبتا" جديد است ولي اغلب شرکت ها و سازمان ها ، زمان و هزينه زيادي را صرف اين نوع فعاليت ها و تعامل اطلاعاتي مربوطه ، مي نمايند . ارتباط داده ها با سيستم هاي موجود ، يکي از بزرگترين مسائل برنامه نويسان است( خصوصا" در موارديکه داده ها از مراکز و شعب متفاوت يک شرکت دريافت و مي بايست به سيستم هاي اصلي تغذيه گردند ) . يکپارچگي بين برنامه هاي مختلف دستيابي به داده ها ي مشترک بين شرکت هاي متعدد ، توسط برنامه هاي متفاوت موجود بر روي سيستم هاي عامل گوناگون ، به يک ضرورت مهم تبديل شده است . بمنظور مبادله اطلاعات بين برنامه هاي متقاضي ، مي بايست در مرحله اول داده ها، ساختيافته بوده تا زمينه استفاده از آنان فراهم گردد.برخي از داده ها در سيستم هاي هاي سلسه مراتبي، شامل سندهاي XML ، برخي ديگر در بانک هاي اطلاعاتي رابطه اي، نظير SQL Server و برخي ديگر، بصورت غيرساختيافته و در فايل هائي تخت (Flat) ذخيره شده اند . ترجمه بين فرمت هاي داده متفاوت يکي از بزرگترين مشکلات موجود در بکارگيري فراگير و يکپارچه برنامه هاي کامپيوتري خصوصا" بر روي بستر اينترنت ، استفاده از داده ها با فرمت هاي متفاوت، توسط اين نوع از برنامه ها است . اين مشکلات شامل موارد زير است : فرمت هاي متفاوت XML . فايل هاي XML مي توانند از گرامرهاي متفاوتي استفاده نمايند . مثلا" گرامري، صرفا" از المان ها استفاده نموده و در گرامري ديگر ، از المان ها بهمراه خصلت هاي مربوطه استفاده مي گردد . شرکت ها و موسسات تجاري براي غلبه بر اين نوع مشکل تبديل داده ،مي توانند از تمپليت هاي استاندارد شده استفاده نمايند. توليد XML از داده هائي با فرمت ديگر . داده ها ي موجود در هر سازمان با فرمت هاي متفاوتي نظير: EDIFACT ,ANSI ,X12 , XML , فايل هاي CSV)Comma Separated value) ، فايل هاي Tab -Separated و موارد ديگر، ذخيره شده اند. در اين راستا ، مي توان ساختاري استاندارد براي داده ها ايجاد تا زمينه استفاده از آنان براي ساير برنامه ها فراهم گردد . معتبر سازي ساختار داده ها . يکي از مزاياي مهم استفاده از XML در برنامه ها ، ارائه روشي مطلوب بمنظور اشتراک اطلاعات است . با توجه به دريافت داده ها از منابع متفاوت، مي بايست از روشي بمنظور اطمينان از صحت و اعتبار داده ها استفاده گردد .بدين منظور و جهت غلبه بر مشکل فوق، مي توان از ابزارهاي معتبر سازي نظير Schema که در بين تمام برنامه ها و نوع داده ها استاندارد است، استفاده گردد. جستجو و بازيابي اطلاعات پس از دريافت داده ها از منابع متفاوت و با فرمت ها ي گوناگون ، مي بايست قادر به يافتن اقلام اطلاعاتي مورد نياز برنامه هاي با صراحت و بسرعت باشيم . خواسته فوق مي تواند مشکلات خاص خود را بدنبال داشته باشد جستجو براي يک آيتم خاص در داده ها : برنامه ها از داده ها ئي با فرمت متفاوت و ساختاري گوناگون استفاده مي نمايند. برخي از داده ها در ساختارهاي سلسله مراتبي، برخي ديگر در ساختارهاي رابطه اي و برخي ديگر داراي ساختاري خاص نبوده و صرفا" بصورت متن ذخيره مي گردند. بدين منظور لازم است از روشي بمنظور حرکت در طول ساختار استفاده تا به نتايج مطلوب بمنظور بازيابي يک آيتم اطلاعاتي بدرستي و بسرعت دست پيدا کرد . خلاصه سازي، ترکيب و همبستگي . پس از يافتن اطلاعات مورد نياز، مي خواهيم بر روي آنان عمليات متفاوتي را انجام دهيم . مثلا" ممکن است، قصد تنظيم يک گزارش خاص در رابطه با ميزان فروش ماهانه، وجود داشته باشد. در اين راستا مي توان، داده هاي دريافتي از منابع متفاوت را با يکديگر ترکيب و آنها را با يک فرمت خاص ذخيره و در ادامه پردازش هاي لازم را انجام داد . طراحي دات نت بر اساس استفاده از تکنولوژي محوري XML پايه گذاري شده است . با استفاده از XML ، مي توان عمليات فيلترسازي داده ها را بمنظور کاهش حجم اطلاعاتي انجام و بدين ترتيب صرفا" با داده هائي که به فعاليت مرتبط مي باشند، درگير خواهيم شد . پردازش ( عمليات ) بر روي داده ها بمنظور انجام عمليات بر روي داده ها، مي بايست يک ساختار، بافتار(Context) لازم را ارائه نمايد . پس از انجام عمليات بر روي داده ها ، مي بايست از ساختاري بمنظور نمايش نتايج استفاده گردد.در اين رابطه موارد زير مورد توجه خواهد بود : تبديل داده از XML به فرمت ديگر .در صورتيکه المان ها و خصلت هاي برنامه اي که با آن کار مي شود متفاوت از ساختار XML مربوط به داده هائي باشد که از آن بعنوان منبع تامين اطلاعات ، استفاده مي گردد، مي بايست از روشي براي تبديل داده از يک گرامر XML به شکل ديگر، استفاده گردد. در صورتيکه با يک برنامه وب کار مي شود، مي بايست داده هاي ساختيافته در اسناد XML به اسناد Html بمنظور نمايش بر روي وب سايت ، تبديل گردند. تغيير ساختار يک سند . در برخي موارد لازم است به يک سند XML المان و يا خصلتي ، اضافه و يا حذف گردد . بدين ترتيب در ساختار سند موجود تغييراتي بوجود مي آيد. استانداردهاي کنسرسيوم وب در دات نت امکان استفاده از XML در محيط ها و برنامه هاي متعددي وجود دارد . تحقق خواسته فوق، بکمک استانداردهائي است که توسط کنسرسيوم وب ايجاد شده است. XML در دات نت، استانداردهاي ارائه شده توسط کنسرسيوم وب را حمايت تا زمينه ارتباط متقابل بين برنامه هاي استاندارد شده ، فراهم گردد. در بخش دوم اين مقاله ، به بررسي استانداردهاي کنسرسيوم وب در دات نت ، کلاس هاي XML در دات نت و امکانات امنيتي در ارتباط با XML ، خواهيم پرداخت . |
||
|
+
نوشته شده در شنبه 8 بهمن1384ساعت 23:51 توسط لوتوس
|
|
||
|
|
|
|
|
در يك برنامه جاوا ، متغير ، اساسي ترين واحد ذخيره سازي است . يك متغير به وسيله تركيبي از يك شناسه ، يك نوع و يك مقدار ده اوليه اختياري تعريف خواهد شد . علاوه بر اين ، كليه متغيرها داراي يك قلمرو هستند كه رويت پذيري آنها را تعريف مي كند و يك زمان حيات نيز دارند. متعاقبا" اين اجزائ را مورد بررسي قرار مي دهيم . اعلان يك متغير Declaring a variable در جاوا كليه متغيرها قبل از استفاده بايد اعلان شوند . شكل اصلي اعلان متغير بقرار زير مي باشد : type identifier [=value] [/identifier[=value]...]; مقدار شناسه مقدار شناسه نوع نوع (type) يكي از انواع اتمي جاوا يا نام يك كلاس يا رابط است . ( انواع كلاس و رابط بعدا" بررسي خواهد شد . ) شناسه نام متغير است . مي توانيد با گذاشتن يك علامت تساوي و يك مقدار ، متغير را مقدار دهي اوليه نماييد . در ذهن بسپاريد كه عبارت مقدار دهي اوليه بايد منتج به يك مقدار از همان نوعي ( يا سازگار با آن نوع ) كه براي متغير مشخص شده ، گردد . براي اعلان بيش از يك نوع مشخص شده ، از فهرست كاماهاي (') جدا كننده استفاده نماييد . در زير مثالهايي از اعلان متغير از انواع گوناگون را مشاهده مي كنيد . دقت كنيد كه برخي از آنها شامل يك مقدار دهي اوليه هستند . + int a/ b/ c; // declares three ints/ a/ b/ and c. را مشخص نمايد . بسياري از خوانندگان بياد مي آورند زماني را كه FORTRAN كليه شناسه هاي از Iتا Nا را پيش تعريف نمود تا از نوع INTEGER باشند ، در حاليكه ساير شناسه ها از نوع REAL بودند . جاوا به هر يك از شناسه هاي متناسب شكل گرفته امكان اختيار هر نوع اعلان شده را داده است . مقدار دهي اوليه پويا Dynamic intialization اگر چه مثالهاي قبلي از ثابت ها بعنوان مقدار ده اوليه استفاده كرده اند اما جاوا امكان مقداردهي اوليه بصورت پويا را نيز فراهم آورده است . اين موضوع با استفاده از هر عبارتي كه در زمان اعلان متغير باشد ، انجام مي گيرد . بعنوان مثال ، در زير برنامه كوتاهي را مشاهده مي كنيد كه طول ضلع يك مثلث قائم الزاويه را با داشتن طول دو ضلع مقابل محاسبه مي كند : + // Demonstrate dynamic initialization. ثابت ها مقدار دهي اوليه شده اند . اما متغير C بصورت پويا و بر حسب طول اضلاع مثلث قائم الزاويه ( بنابر قانون فيثاغورث ) مقدار دهي اوليه مي شود . اين برنامه از يكي از روشهاي توكار جاوا يعني ()sqrt كه عضوي از كلاس Math بوده و ريشه دوم آرگومانهاي خود را محاسبه ميكند استفاده كرده است . نكته كليدي اينجا است كه عبارت مقدار دهي اوليه ممكن است از هر يك از اجزائ معتبر در زمان مقدار دهي اوليه ، شامل فراخواني روشها ، ساير متغيرها يا الفاظ استفاده نمايد . قلمرو زمان حيات متغيرها تابحال كليه متغيرهاي استفاده شده ، در زمان شروع روش ()main اعلان مي شدند. اما جاوا همچنين به متغيرها امكان مي دهد تا درون يك بلوك نيز اعلام شوند . همانطوريكه قبلا" توضيح داديم ، يك بلوك با يك ابرو باز و يك ابرو بسته محصور مي شود : يك بلوك تعريف كننده يك قلمرو است . بدين ترتيب هر بار كه يك بلوك جديد را شروع ميكنيد ، يك قلمرو جديد نيز بوجود مي آوريد . همانطوريكه احتمالا" از تجربيات برنامه نويسي قبلي بياد داريد ، يك قلمرو (scope) تعيين كننده آن است كه چه اشيائي براي ساير بخشهاي برنامه قابل رويت هستند . اين قلمرو همچنين زمان حيات (lifetime) آن اشيائ را تعيين مي كند . اكثر زبانهاي كامپيوتري دو طبقه بندي از قلمروها را تعريف مي كنند : سراسري (global) و محلي (local) . اما اين قلمروهاي سنتي بخوبي با مدل موكد شي ئ گرايي جاوا مطابقت ندارند . اگر چه در جاوا هم مي توان مقاديري را بعنوان قلمرو سراسري ايجاد نمود ، اما اين فقط يك نوع استثنائ است و عموميت ندارد . در جاوا قلمرو اصلي همانهايي هستند كه توسط يك كلاس يا يك روش تعريف مي شوند . حتي همين تمايز نيز تا حدي ساختگي و مصنوعي است . اما از آنجاييكه قلمرو كلاس داراي مشخصات و خصلتهاي منحصر بفردي است كه قابل استفاده در قلمرو تعريف شده توسط روش نيست ، اين تمايز تا حدي محسوس خواهد بود . بخاطر تفاوتهاي موجود ، بحث قلمرو كلاس ( و متغيرهاي اعلان شده داخل آن ) اين مبحث بتعوق افتاده است . در حال حاضر فقط قلمروهاي تعريف شده توسط يك روش يا داخل يك روش را بررسي مي كنيم . قلمرو تعريف شده توسط يك روش با يك ابروي باز شروع مي شود. اما اگر آن روش داراي پارامترهايي باشد ، آنها نيز داخل قلمرو روش گنجانده خواهند شد . بعدا" نگاه دقيقتري به پارامترها خواهيم داشت و فعلا" كافي است بدانيم كه پارامترها مشابه هر متغير ديگري در يك روش كار مي كنند . بعنوان يك قانون عمومي ، متغيرهاي اعلان شده داخل يك قلمرو براي كدهايي كه خارج از قلمرو تعريف مي شوند ، قابل رويت نخواهند بود ( قابل دسترسي نيستند ). بدين ترتيب ، هنگاميكه يك متغير را درون يك قلمرو اعلان مي كنيد ، در حقيقت آن متغير را محلي دانسته و آن را در مقابل دستيابيها و تغييرات غير مجاز محافظت مي كنيد . در حقيقت ، قوانين قلمرو اساس كپسول سازي را فراهم مي كنند . قلمروها را مي توان بصورت تودرتو (nesting) محفوظ داشت . بعنوان مثال ، هر زمان يك بلوك كد ايجاد كنيد ، يك قلمرو جديد تودرتو ايجاد نموده ايد . هنگاميكه اين واقعه روي مي دهد ، قلمرو بيروني ، قلمرو دروني را دربرمي گيرد . اين بدان معني است كه اشيائ اعلان شده در قلمرو بيروني براي كدهاي داخل قلمرو دروني قابل رويت هستند اما عكس اين قضيه صادق نيست . اشيائاعلان شده داخل قلمرو دروني براي بيرون قلمرو قابل رويت نخواهند بود . براي درك تاثير قلمروهاي تودرتو ، برناه ريز را در نظر بگيريد : + // Demonstrate block scope. شده و براي كليه كدهاي متعاقب داخل ()main قابل دسترسي مي باشد . داخل بلوك if متغير y اعلان شده است . از آنجاييكه يك بلوك معرف يك قلمرو است ، y فقط براي ساير كدهاي داخل بلوك خود قابل رويت است . اين دليل آن است كه خارج بلوك مربوطه ، خط y=100 در خارج توضيح داده شده است . اگر نشانه توضيح راهنمايي را تغيير مكان دهيد ، يك خطاي زمان كامپايل (compile-time error) اتفاق مي افتد چون y براي بيرون از بلوك خود قابل رويت نيست . داخل بلوك if متغير x قابل استفاده است زيرا كدهاي داخل يك بلوك ( منظور يك قلمرو تودرتو شده است ) به متغيرهاي اعلان شده در يك قلمرو دربرگيرنده دسترسي دارند . داخل يك بلوك ، در هر لحظه اي مي توان متغيرها را اعلان نمود ، اما فقط زماني معتبر مي شوند كه اعلان شده باشند . بدين ترتيب اگر يك متغير را در ابتداي يك روش اعلان مي كنيد، براي كليه كدهاي داخل آن روش قابل دسترس خواهد بود. بالعكس اگر يك متغير را در انتهاي يك بلوك اعلان كنيد ، هيچ فايده اي ندارد چون هيچيك از كدها به آن دسترسي ندارند . بعنوان مثال اين قطعه از برنامه غير معتبر است چون نمي توان از count قبل از اعلان آن استفاده نمود : + // This fragment is wrong! ايجاد مي شوند كه قلمرو آن ها وارد شده باشد ، و زماني خراب مي شوند كه قلمرو آنها ترك شده باشد . يعني يك متغير هربار كه خارج از قلمروش برود ، ديگر مقدار خود را نگهداري نخواهد كرد . بنابراين ، متغيرهاي اعلان شده داخل يك روش مقادير خود را بين فراخواني هاي آن روش نگهداري نمي كنند . همچنين يك متغير اعلان شده داخل يك بلوك ، وقتي كه بلوك ترك شده باشد ، مقدار خود را از دست خواهد داد . بنابراين ، زمان حيات (lifetime) يك متغير محدود به قلمرو آن مي باشد . اگر اعلان يك متغير شامل مقدار دهي اوليه آن باشد ، آنگاه هر زمان كه به بلوك مربوطه وارد شويم ، آن متغير مجددا" مقدار دهي اوليه خواهد شد . بعنوان مثال برنامه زير را در نظر بگيريد : + // Demonstrate lifetime of a variable. y is- :1 همواره بطور مكرر مقدار اوليه 1- را اختيار مي كند . اگر چه بلافاصله به اين متغير مقدار 100 نسبت داده مي شود، اما هر بار نيز مقدار خود را از دست ميدهد. و بالاخره آخرين نكته : اگر چه ميتوان بلوكها را تودرتو نمود، اما نميتوانيد متغيري را اعلان كنيد كه اسم آن مشابه اسم متغيري در قلمرو بيروني باشد. از اين نظر جاوا با زبانهاي Cو C++و متفاوت است . در زير مثالي را مشاهده مي كنيد كه در آن تلاش شده تا دو متغير جدا از هم با اسم اعلان شوند . در جاوا اينكار مجاز نيست . در Cو C++و اين امر مجاز بوده و دو bar كاملا" جدا خواهند ماند . + // This program will not compile اگر تجربه قبلي برنامه نويسي داشته ايد ، پس مي دانيد كه كاملا" طبيعي است كه مقداري از يك نوع را به متغيري از نوع ديگر نسبت دهيم . اگر اين دو نوع سازگار باشند ، آنگاه جاوا بطور خودكار اين تبديل (conversion) را انجام مي دهد . بعنوان مثال ، همواره امكان دارد كه مقدار int را به يك متغير long نسبت داد . اما همه انواع با يكديگر سازگاري ندارند ، بنابراين هر گونه تبديل انواع مجاز نخواهد بود . بعنوان نمونه ، هيچ تبديلي از doubleبه byte تعريف نشده است . خوشبختانه ، امكان انجام تبديلات بين انواع غير سازگار هم وجود دارد . براي انجام اينكار ، بايد از تبديل cast استفاده كنيد كه امكان يك تبديل صريح بين انواع غير سازگار را بوجود مي آورد . اجازه دهيد تا نگاه دقيقتري به تبديل خودكار انواع و تبديل cast داشته باشيم . تبديل خودكار در جاوا Java's Automatic conyersions هنگاميكه يك نوع داده به يك متغير از نوع ديگر نسبت داده مي شود ، اگر دو شرط زير فراهم باشد ، يك تبديل خودكار نوع انجام خواهد شد : ؤ دو نوع با يكديگر سازگار باشند . ؤ نوع مقصد بزرگتر از نوع منبع باشد . هنگاميكه اين دو شرط برقرار باشد ، يك تبديل پهن كننده (widening) اتفاق مي افتد . براي مثال نوع int همواره باندازه كافي بزرگ است تا كليه مقادير معتبر byte را دربرگيرد، بنابراين نيازي به دستور صريح تبديل cast وجود ندارد. در تبديلات پهن كننده ، انواع رقمي شامل انواع عدد صحيح و عدد اعشاري با هر يك از انواع سازگاري دارند . اما انواع رقمي با انواع charو booleanو سازگار نيستند . همچنين انواع charو booleanو با يكديگر سازگار نيستند . همانطوريكه قبلا" ذكر شد ، جاوا هنگام ذخيره سازي يك ثابت عدد صحيح لفظي (Literal integer constant) به متغيرهاي از انواع byte، short،و longو ، يك تبديل خودكار نوع را انجام مي دهد . تبديل غير خودكار انواع ناسازگار اگر چه تبديلات خودكار انواع بسيار سودمند هستند ، اما جوابگوي همه نيازها نيستند . بعنوان مثال ، ممكن است بخواهيد يك مقدار int را به يك متغير byte نسبت دهيد. اين تبديل بطور خودكار انجام نمي گيرد، زيرا يك byteاز intز كوچكتر است .اين نوع خاص از تبديلات را گاهي تبديل باريك كننده (narrowing conversions) مي نامند ، زيرا بطور صريح مقدار را آنقدر باريك تر و كم عرض تر مي كنيد تا با نوع هدف سازگاري يابد . براي ايجاد يك تبديل بين دو نوع ناسازگار ، بايد از cast استفاده نماييد . cast يك تبديل نوع كاملا" صريح است . شكل عمومي آن بقرار زير مي باشد : ( target - type )value نوع نوع مقصد يا هدف در اينجا نوع هدف ، همان نوعي است كه مايليم مقدار مشخص شده را به آن تبديل كنيم . بعنوان مثال ، قطعه زير از يك برنامه تبديل غير خودكار از intبه byte را اجرا مي كند . اگر مقدار integer بزرگتر از دامنه يك byte باشد ، اين مقدار به مدول ( باقيمانده تقسيم يك integer بر دامنه ) byte كاهش خواهد يافت . + int a; + byte b; + //... + b =( byte )a; هر گاه كه يك مقدار اعشاري به يك عدد صحيح نسبت داده شود ، شكل ديگري از تبديل اتفاق مي افتد : بريدن ، truncation . همانطوريكه مي دانيد ، اعداد صحيح داراي قسمت اعشاري نيستند . بنابراين هنگاميكه يك مقدار اعشاري به يك نوع عدد صحيح نسبت داده مي شود ، جزئ اعشاري از بين خواهد رفت ( بريده خواهد شد ) . بعنوان مثال ، اگر مقدار 1.23 را به يك عدد صحيح نسبت دهيم ، مقدار حاصله فقط عدد 1 مي باشد . مقدار 0.23 بريده (truncated) خواهد شد . البته اگر اندازه اجزائ عدد كلي آنچنان بزرگ باشد كه در نوع عدد صحيح مقصد نگنجد ، آنگاه مقدار فوق به مدول دامنه نوع هدف كاهش خواهد يافت . برنامه زير نشان دهنده برخي از تبديلات انواع است كه مستلزم تبديل cast مي باشند : + // Demonstrate casts. Conversion of int to byte. تبديل cast به يك byte منتسب مي شود ، نتيجه برابر باقيمانده تقسيم 257 بر 256 ( دامنه byte ) يعني عدد 1 است . هنگاميكه d به يك int تبديل مي شود ، بخش خواهند رفت . هنگاميكه d به يك byte تبديل مي شود ، بخش |
||
|
+
نوشته شده در شنبه 8 بهمن1384ساعت 23:49 توسط لوتوس
|
|
||
|
|
|
|
|
داده ها ممكن است در فايل به دو صورت ذخيره شوند كه عبارتند از : 1) اسكي يا متن 2 text باينري (binary) . اين دو روش ذخيره شدن داده ها ، در موارد زير با يكديگر تفاوت دارند : 1 تعيين انتهاي خط . 2 تعيين انتهاي فايل . 3 نحوه ذخيره شدن اعدد بر روي ديسك . در فايل text اعداد بصورت رشته اي از كاراكترها ذخيره مي شوند ولي در فايل باينري اعداد به همان صورتي كه در حافظه قرار مي گيرند بر روي ديسك ذخيره مي گردند . بعنوان مثال ، در فايل text عدد 526 سه بايت را اشغال مي كند. زيرا هر رقم آن ، بصورت يك كاراكتر در نظر گرفته مي شود . ولي در فايل باينري اين عدد در 2 بايت ذخيره مي گردد ( چون عدد 526 يك عدد صحيح است و اعداد صحيح در دو بايت ذخيره مي شوند ) ( شكل 1 ) . در فايل text ، كاراكتري كه پايان خط را مشخص مي كند ، در حين ذخيره شدن بر روي ديسك بايد به كاراكترهاي CR/LF، line feed،و carriage returnو تبديل شود و در حين خوانده شدن عكس اين عمل بايد صورت گيرد . يعني كاراكترهاي CR/LF بايد به كاراكتر تعيين كننده پايان خط تبديل شوند . بديهي است كه اين تبديلات مستلزم صرف وقت است ، لذا دسترسي به اطلاعات موجود در فايل هاي text كندتر از فايل هاي باينري است . ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ ؤؤؤؤؤؤؤؤؤؤؤؤؤ | 999 | | '9' | '9' | '9' | ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ | 132.844 || '1' | '3' | '2' | '.' | '8' | '4' | '4' اعداد در فايل text اعداد در حافظه شكل (1) . مقايسه ذخيره شدن اطلاعات در فايل text و حافظه اختلاف ديگر فايل هاي text و باينري در تشخيص انتهاي فايل است . درهر دو روش ذخيره فايل ها ، طول فايل توسط سيستم نگهداري مي شود و انتهاي فايل با توجه به اين طول مشخص مي گردد . در حالت text كاراكتر 1A ( در مبناي 16 ) و يا 26 ( در مبناي 10 ) مشخص كننده انتهاي فايل است . ( اين كاراكتر با فشار دادن كليد CTL به همراه كليد Z توليد ميشود ). در حين خواندن داده ها از روي فايل text ، وقتي كنترل به اين كاراكتر رسيد بيانگر اين است كه داده هاي موجود درفايل تمام شده اند. در فايل باينري ممكن است عدد 1A ( در مبناي 16 ) و يا 26 ( در مبناي 10 ) جزئي از اطلاعات بوده ، بيانگر انتهاي فايل نباشد . لذا نحوه تشخيص انتهاي فايل در text متفاوت است . |
||
|
+
نوشته شده در شنبه 8 بهمن1384ساعت 23:46 توسط لوتوس
|
|
||
|
|
|
|
|
داده هاي مورد نياز برنامه هايي كه تاكنون نوشته شده اند در متغيرهاي معمولي آرايه ها و ساختمان ها ذخيره و مورد پردازش قرار گرفته اند . متغيرهاي معمولي آرايه ها و ساختمان ها ، همگي در حافظه RAM قرار دارند . لذا پس از قطع جريان برق ( و يا خاموش شدن كامپيوتر ) و يا خروج از برنامه ، داده هايي كه در آنها ذخيره شده اند از بين مي روند و براي استفاده مجدد از آنها ، بايد مجددا" وارد گردند كه قطعا"اين كار مقرون به صرفه نيست .زيرا نه تنها مستلزم صرف وقت زيادي است بلكه حوصله انجام كار را نيز از برنامه نويس سلب مي نمايد . براي رفع اين مشكل نوعي ساختمان داده ديگر به نام فايل مورد استفاده قرار مي گيرد . اين نوع ساختمان داده بر روي حافظه جانبي مثل ديسك ، نوار و غيره تشكيل مي گردند . چون اطلاعات موجود در روي حافظه جانبي با قطع جريان برق ، قطع اجراي برنامه و يا دلايلي از اين قبيل از بين نميروند، به دفعات زيادي مورد استفاده قرار ميگيرند. هر فايل شامل مجموعه اي از داده هاي مرتبط به هم است . مانند داده هاي مربوط به كليه دانشجويان يك دانشگاه ، داده هاي مربوط به هر يك از اجزاي فايل ، يك ركورد نام دارد . به عنوان مثال ، در يك دانشگاه داده هاي مربوط به هر دانشجو تشكيل يك ركورد را مي دهند . لذا مي توان گفت كه هر فايل ، مجموعه اي از چند ركورد است . اگر باز هم دقيق تر به فايل دانشجويان دانشگاه پرداخته شود، مشاهده مي گردد كه هر دانشجو تشكيل يك ركورد را مي دهند . لذا مي توان گفت كه هر فايل مجموعه اي از چند ركورد است . اگر باز هم دقيق تر به فايل دانشجويان دانشگاه پرداخته شود ، مشاهده مي گردد كه هر دانشجو ممكن است چند قلم داده داشته باشد. مثل نام دانشجو ، تعداد واحدهايي كه گذرانده ، نمره هر درس و ... . به هر يك از اجزاي يك ركورد ، فيلد گفته مي شود ، لذا مي توان گفت كه هر ركورد مجموعه اي از چند فيلد است . در زبان C فايل داده ، مي تواند هر دستگاهي مثل : صفحه نمايش ، صفحه كليد چاپگر ، ترمينال ديسك ، نوار و غيره باشد . داده ها ممكن است به 4 روش در فايل ذخيره شده و سپس مورد بازيابي قرار گيرند: 1 داده ها، كاراكتر به كاراكتر در فايل نوشته شده و سپس كاراكتر به كاراكتر از فايل خوانده شوند . 2 داده ها بصورت رشته اي از كاراكترها، در فايل نوشته شده وسپس بصورت رشته اي از كاراكترها مورد دسترسي قرار گيرند . 3 داده ها درحين نوشتن بر روي فايل ، با فرمت خاصي نوشته شده و سپس با همان فرمت خوانده شوند ( مثل توابع ()printf و ()scanf در ورودي خروجي معمولي ) . 4 داده ها به شكل ساختمان ( ركورد ) در روي فايل نوشته شده و سپس به صورت ساختمان از فايل خوانده شوند . صي در زبان C منظور شده اند . |
||
|
+
نوشته شده در شنبه 8 بهمن1384ساعت 23:45 توسط لوتوس
|
|
||
|
|
|
|
|
نوع داده شمارشي ، اين امكان را فراهم مي كند كه بتوان عناصر يك مجموعه متناهي را نامگذاري يا شماره گذاري كرده وسپس متغيرهايي را تعريف نمود تا مقادير آن مجموعه را بپذيرند . اين مجموعه با شناسه هايي معرفي مي شود كه به ثابت هاي شمارشي معروفند . نوع هاي شمارشي بصورت زير تعريف مي شوند : { نام نوع شمارشي enum / عنصر اول / عنصر دوم / عنصر سوم . . . عنصر n ام } ; نام نوع شمارشي همانند يك عنصر معمولي نامگذاري مي شود . عناصر نوع شمارشي شناسه هايي هستند كه اجزاي آن را مشخص كرده و با كاما از يكديگر جدا مي شوند . تعريف متغيرهاي از نوع شمارشي همانند تعريف متغيرهاي نوع ساختمان انجام مي شوند . مجموعه دستورات زير را در نظر بگيريد : enum color {( 1) مجموعه دستورات (1) و (2) معادل يكديگرند. در مجموعه دستورات (1) ضمن تعريف نوع شمارشي color دو متغير color1و color2و از اين نوع متغير مي شوند و در مجموعه دستورات (2) پس از تعريف نوع شمارشي color ، با استفاده از دستور enum دو متغير color1و color2و از اين نوع تعيين مي شوند. متغيرهاي color1و color2و فقط مي توانند مقادير red، yellow،و brownو را بپذيرند . مجموعه دستورات زير در مورد نوع هاي شمارشي فوق معتبرند : color1=red ; عناصر نوع شمارشي يك مقدار عددي صحيح ، نسبت داده مي شود : به اولين عنصر ، مقدار صفر ، دومين عنصر مقدار 1 و به n امين عنصر ، مقدار n 1 نسبت داده مي شود . مگر اين كه برنامه نويس اين مقادير را تغيير دهد . به عنوان مثال ، دستور زير را در نظر بگيريد : enum sample {a/b=5/c/d} ; در دستور فوق مقدار صفر به a ، مقدار 5به b ، مقدار 6به c و مقدار 7به d نسبت داده مي شود . مثال : برنامه اي كه با استفاده از نوع هاي شمارشي دستمزد هفته اي كارمندان موسسه اي را محاسبه مي كند . #include "stdio.h" |
||
|
+
نوشته شده در سه شنبه 4 بهمن1384ساعت 23:52 توسط لوتوس
|
|
||
|
|
|
|
|
دستور typedef براي تعويض نام نوع موجود استفاده مي شود . بدين معني كه با استفاده از اين دستور مي توان براي نوع هاي ابتدايي مثل intو charو و ... و همچنين نوع هاي تعريف شده در برنامه ، اسم ديگري انتخاب نمود . اين دستور به دو دليل اهميت دارد : 1 موجب ميشود تا مساله قابل حمل بودن زبان C قوت بيشتري پيدا كند.يعني اگر برنامه اي را در يك ماشين نوشته و بخواهيم آن را در ماشين ديگري اجرا كنيم چنانچه اين دو ماشين با يكديگر مطابقت نداشته باشند كافي است دستور typedef طوري عوض شود كه اين مشكل را حل نمايد . 2 موجب مي شود تا براي نوع هاي داده طولاني ، اسم ساده تري انتخاب گردد . دستور typedef بصورت زير بكار مي رود : <نوع موجود> <اسم جديد>typedef نوع موجود ، يكي از انواع معتبر در زبان C است . اسم جديد، نامي است كه نوع موجود ، در برنامه باشد به اين نام خوانده شود . دستور زير را در نظر بگيريد : unsigned int var1/ var2; اين دستور موجب ميشود تا متغيرهاي var1و var2و از نوع " صحيح مثبت " انتخاب شوند . با استفاده از دستور typedef براي unsigned int به طريق زير اسم جديدي انتخاب مي كنيم : typedef unsigned int SUBINT ; دستور فوق موجب مي شود تا بتوان بجاي عبارت unsigned intازSUBINTز استفاده كرد . دستور زير را ملاحظه نماييد : SUBINT var1/var2 ; با دستور فوق ، متغيرهاي var1و var2و از نوع SUBINT انتخاب مي شوند ، كه همان unsigned int است . دستور typedef در مورد آرايه ها كاربرد جالبي دارد . مجموعه دستورات زير را در نظر بگيريد : typedef char STRING[50] ; STRING s1/s2 ; مجموعه دستورات فوق موجب مي شوند تا متغيرهاي s1و s2و از نوع كاراكتري و به طول 50 بايت تعريف گردند. بعبارت ديگر، اين مجموعه دستورات با دستور زير معادل است : char s1[50] /s2[50]; براي آشنايي بيشتر با چگونگي معرفي آرايه ها توسط دستور typedef به مثال 1 توجه نماييد : مثال 1: main)( ساختمان و همچنين دسترسي به اجزاي آن به سهولت انجام شود . براي آشنايي با چگونگي عمل دستور typedef در مورد ساختمان ها به مثال 2 مراجعه نماييد . مثال 2: #include "stdio.h" |
||
|
+
نوشته شده در سه شنبه 4 بهمن1384ساعت 23:50 توسط لوتوس
|
|
||
|
|
|
|
|
بنام خدا براي طراحي يك Data Provider براي ADO .NET يقينا بايد از كلاسهاي معروف داده پردازي يعني : Connection, Command, DataReader, DataAdapter استفاده كرد . اسمبلي System.Data.dll حاوي فضاهاي اسمي ( NameSpace ) مناسب براي طراحي جزئيات يك custom data provider ميباشد . با ذكر مقدماتي در باب استفاده از Data Provider ها براي برنامه هاي ويندوز به نحوه عملكرد يك Data Provider خواهيم پرداخت و آنگاه با تشريح جزئيات و نقش موثر هر يك از كلاسهاي دسترسي و پردازش داده دات نت يعني Connection, Command, DataReader, DataAdapter به نحوه تركيب خصوصيات مورد نظر طراح Data Provider با امكانات موجود و چگونگي خصوصي سازي توابع عنصري اين كلاسها براي دسترسي به منبع داده خواهيم پرداخت . براي سالهاي متمادي استفاده از ODBC به عنوان يك راه حل استاندارد دسترسي به داده بهترين گزينه گسترش دهندگان نرم افزارهاي داده پرداز بود . ODBC با استفاده از روشي مقدماتي با عنوان one-to-one mapping درخواستهاي مبتني بر SQL نرم افزار را به روشهاي داخلي دسترسي به داده بانك مورد نظر تبديل ميكرد و باز با رعايت استاندارد SQL پاسخ مورد نظر ( يا نشانه اي بر صحت يا بطلان روند مورد انتظار توسط دستور دهنده ) را به نرم افزار باز ميگرداند . در واقع ODBC پلي ارتباطي به گذرگاه هاي ورود و خروج داده ( Gateway ) يك بانك داده و صادر كننده دستورات SQL بود . به عنوان مثال ODBC با اطلاع از فرمت مورد قبول ورودي و خروجي بانك اسكوئل سرور مايكروسافت و گذرگاهش با عنوان SQL Server tabular data stream كه به TDS شهرت دارد درخواستهاي نرم افزار را به "مدير بانك" تحويل داده و جوابهاي مطلوب را باز ميگرداند . همينطور در رابطه با گذرگاه استاندارد داده بانك اوراكل ( Oracle Call Interface ) كه به OCI شهرت دارد . عموما رابط هاي ODBC به عنوان يك پل يا مترجم بين SQL و بانك توسط همان شركت توسعه دهنده بانك گسترش داده مي شدند . ODBC تنها محدود به دسترسي به RDBMS ها نيست . ODBC با قرار گرفتن بر فراز رابطهاي COM موجود براي برقراري ارتباط با يك منبع داده مديريت نشده مثل Excel ميتوانست از اطلاعات موجود در آنها نيز استفاده كند ! وظيفه اصلي استاندارد OLE DB توليد ساختاري يكتا "براي تبعيت" بود كه گسترش دهندگان منابع داده اي مثل Lotus يا Word با رعايت آن و توليد ابزارهاي مبتني بر COM امكان دسترسي به اين منابع را به توليد كنندگان نرم افزارهاي داده پرداز بدهند . ( قرار گرفتن بر فراز رابطهاي COM حاصل ترجمه عبارت COM Wrapper است - اينپرايز ) اكنون دات نت در قالب اسمبلي System.Data.dll فضاهاي نامي مفيدي را ارائه ميكند كه هر كدام توسط كلاسهاي حوزه خود كليه وظايف فوق الذكر را در يك قالب معين مجتمع ( encapsulate ) ميكنند و برنامه نويس بدون درگيري با مشكلات نصب و راه اندازي Driver هاي ODBC يا استفاده از رابط صحيح COM براي يك موجوديت حاوي داده ( Data-awar Object ، به نظر ميرسد منظور محصول نرم افزاري خاصي است كه بگونه اي خاص نوعي از داده را نگه داري و مديريت ميكند و با ارائه رابط هائي خاص اجازه دسترسي و خودكار سازي مديريت اين داده ها را مجاز ميداند - اينپرايز ) يك راه حل جامع ، يكتا ، سهل الوصول ، سهل الاستفاده ( easy to use رو چي بايد ترجمه كنم ؟ - اينپرايز ) را به توسعه دهنده دات نت ارائه ميكند . با استفاده از اسمبلي هاي جامع دات نت و كلاسهاي ADO .NET ديگر درگير نصب و پيكره بندي فيزيكي (!) مسيرهاي عبور داده از منبع تا برنامه تان نيستيد . همچنين دات نت همكنون ( با تقليدي كثيف از بورلند - اينپرايز :-) ) مفهوم DataSet را ارائه كرده است كه مفهومي جديد (!) براي ظرف نگهداري و مديريت داده هاي بدون اتصال به منبع ميباشد . ( disconnected object model ) چرا بايد يك فراهم كننده داده ( Data Provider ) طراحي كنم و دلائل استفاده از آن چيست ؟ در صورتيكه منبعي حاوي داده داريد كه بناست پايه طراحي سيستم هاي نرم افزاري گوناگوني قرار بگيرد براي خروج داده از منبع به سيستمهاي مذكور چه فكري كرده ايد ؟ آيا تصور ميكنيد بايد سورس نرم افزار مديريت داده و فرمت فايلهاي ذخيره كننده داده را بايد در تابلو اعلانات شركت نصب كنيد تا تمام برنامه نويسان حال و احتمالا آينده شركت از جزئيات آن اطلاع كسب كرده و آنگاه نرم افزاري براي دسترسي به داده ها طراحي كنند ؟ آيا تصور كرده ايد همه برنامه نويسان شما آنقدر دقيق هستند كه راهنماي 300 صفحه اي شما كه خوشبختانه بصورت PDF طراحي شده (!) را مطالعه كنند و بدون هيچ خطائي روش مورد علاقه شان را براي دستيابي به داده هاي شما "اختراع" كنند ؟ آيا فكر ميكنيد ... يقينا بعد از اندكي تفكر به اين نتيجه خواهيد رسيد كه يك منبع داده بدون يك سلسله رابطهاي استاندارد براي دسترسي به آن مفهومي ندارد ! رابط هاي يكتاي شما بايد همانطور كه به يك برنامه نويس ويندوز امكان ميدهد بانك را جستجو ( Search ) كند و نتايج را استخراج كند بايد امكانات مناسبي را براي طراحان وب سايت شركت در نظر بگيرد تا آنان نيز بدون در گير شدن در جزئيات طراحي نرم افزار و ... فقط با استفاده از يك يا چند دستور و انتخاب كتابخانه مناسب براي روشهاي دسترسي به بانك شما بتوانند صفحات وب ، گزارشهاي گرافيكي و چارتهاي سازماني را براحتي استخراج كنند ! ورود به مبحث ، قبل از دات نت برنامه نويسان محيط ويندوز ، خصوصا برنامه نويسان Visual C++® 6.0 با استفاده از كلاسهاي نرم افزاري خاصي ( هم بصورت ATL و صرفا براي ويژوال سي و هم بصورت COM و با رعايت ATL بدون وابستگي به MFC - اينپرايز ) ميتوانستند فراهم كننده هاي داده خودشان را با رعايت قالب OLE DB طراحي كنند و اين رابط ها را در اختيار برنامه نويسانشان قرار دهند تا روند دستيابي به منبع داده سازمان استاندارد شود . آنها ساختار ( Struct ) اي با عنوان WIN32_FIND_DATA در اختيار داشتند كه حاوي اطلاعات دقيقي از محل فايلها و دايركتوري هاي نگهداري داده ، ساختار و فرمت فايلهاي ذخيره كننده داده و ... بود و با استفاده از آن Data Provider هاي خودشان را طراحي ميكردند كه به اين روند معروف ، DirProv گفته ميشد ! اكنون دات نت در قالب كلاسهاي خود چيزي مشابه همين عمل را با عنوان جديد managed dirprov انجام ميدهد . كليات طراحي يك ديتا پرووايدر Connection : كلاس حياتي اين روند ، كلاس Connection است . ايجاد و مديريت "برقراري رابطه" با منبع داده به عهده اين كلاس است . Command : كلاسي كه وظيه "ارسال و دريافت" دستورات " استاندارد" به منبع فراهم شده را بر عهده دارد . اين دستورات ميتوانند ( بنا به طراحي كلاس كه عموما اين روزها مبتني بر SQL است - اينپرايز ) INSERT, UPDATE, DELETE باشند يا حتي دستوراتي چون SELECT كه داراي پاسخ هستند ! ( پس شما فقط در كلاس command با اسكوئل سر و كار داريد ! - اينپرايز ) DataReader : اين كلاس كليه وظايف "پردازش خروجي " مرحله قبل را به عهده دارد . DataAdapter : اين كلاس " محفظه نگهداري داده" كلاس DataReader را با داده هاي استخراج شده از بانك پر ميكند ! ( پس وظايف پردازشي مثل اديت ، سرچ و ... به عهده ديتا ريدر و وظيفه گرفتن داده از خروجي و پر كردن ديتا ريدر با فرمت مناسب و احتمالا قرار دادن فيلتر هاي خاص مثل محدوديت ارسال شبكه اي و ... بر عهده ديتا ادپتر است ! - اينپرايز ) شرح وظايف هر كلاس و نحوه طراحي و پياده سازي ( Implementing ) يك نسخه خصوصي براي نيل به هدف : الف) Connection Class اين كلاس يك رابط ( Interface ) قابل پياده سازي دارد به نام IDbConnection با شش تابع عنصري بري باز و بسته كردن يك "ارتباط" با داده ها يا تغيير منبع داده و امثالهم . پياده سازي Trasaction ها در همين مرحله صورت ميگيرد ! رابط IDbTransaction بعد از صدا زدن متد BeginTransaction بوجود مي آيد و وظايف يك تراكنش را به عهده ميگيرد ! ConnectionString و ConnectionTimeout دو خصوصيت مهم اين كلاس هستند كه ميتوانند نقاط خوبي براي اضافه كردن جزئيات مورد نظر هنگام پياده سازي مجدد كلاس باشند . ب) Command Class اين كلاس يك رابط به نام IDbCommand معرفي ميكند كه ابزار استفاده كننده از داده هاست براي ارسال دستورات . متد ها و خصوصيتهاي نسبتا زياد اين رابط به شما امكنا مديريت مناسب ارسال دستور و دريافت جواب را ميدهد . بنا به اينكه منبع داده هاي شما يك RDBMS مثل اوراكل است يا يك منبع ساده داده مثل يك فايل پارادوكس از امكانات مناسبي براي مديريت ارسال و دريافت برخورداريد . به عنوان مثال اگر داده هاي شما در فايلهاي ساده اي در يك دايركتوري واحد ذخيره ميشوند ميتوانيد در پياده سازي خود از اين كلاس خصوصيات مربوط به SQL را حذف كنيد و صرفا نام دايركتوري حاوي داده را به عنوان CommandText از كاربر بخواهيد ! ج) DataReader Class اين كلاس با ارائه دو رابط به نامهاي IDataReader و IDataRecord به كاربر امكان مشاهده داده ها ، جستجو و حتي كسب اطلاع در مورد محتواي ظرف داده توسط metadata ي موجود براي هر resultset را ميدهد . د) DataAdapter Class IDataAdapter و IDbDataAdapter توسط اين كلاس ايجاد ميشوند و وظيفه قالب بندي و انتقال داده هاي توليد شده توسط Command به DataReader را به عهده دارند . هر كدام از گسترش دهندگان منبع داده ( مثل اوراكل يا مايكروسافت ) با عنايت به استاندارد ADO .NET فراهم كننده داده هايشان را توليد و توزيع نموده اند و برنامه نويس با استفاده از رابط آنها و استفاده از اسمبلي و كلاسهاي مناسب به عنوان پايه نرم افزار ميتواند از طريق دات نت به داده ها دست يابد و آسانترين روند توزيع نرم افزار پردازش داده را تجربه كند و طراحان منبع داده ها كسب دانشي كه چند سطري از آن را فوقا" مشاهده كرديد ميتوانند Data Provider هاي اختصاصي خود را براي سازگاري با دات نت گسترش دهند . نحوه استفاده از Data Provider ها و برقراري ارتباط با منبع داده مبحثي جداگانه و مفصل است كه توصيه ميكنم قبل از پرداختن به آن مطالعات مقدماتي حول آن در MSDN داشته باشيد . اطلاعات فوق هر چند كمكي به طراحي و پياده سازي يك Data Provider نميكند اما به شما به عنوان يك توسعه گر نرم افزار كمك ميكند ديد بهتري نسبت به آنچه اتفاق مي افتد داشته باشيد ! موفق و مويد و سر بلند باشيد . |
||
|
+
نوشته شده در سه شنبه 4 بهمن1384ساعت 23:48 توسط لوتوس
|
|
||
|
|
|
|
|
در اين مقاله كوتاه با بخشي از توانائي هاي ويژوال سي دات نت آشنا خواهيد شد . با توسعه مجموعه دات نت و ويژوال استوديو دات نت تحول بزرگي در عرصه برنامه نويسي ( فعلا ) ويندوز پديد آمده است . آنچه كه اين روزها بر سر زبانهاست تنها بخشي از توانائي هائيست كه دات نت در اختيار گسترش دهندگان نرم افزار قرار ميدهد . ( برنامه نويسان ويژوال بيسيك كه قبلا از نعمت توانائي طراحي برنامه هاي سرويس - چند ريسماني و مد كنسول محروم بودند اين حقيقت را بهتر از ديگران درك ميكنند !!! ) زبان برنامه نويسي در عالم دات نت تنها يك معنا دارد و آن چيزي نيست جز : Syntax ! كلاسهاي واحد و محيط توسعه قدرتمند و قابل گسترش دات نت يكي از بزرگترين تحولاتيست كه در عالم نرم افزار تا كنون رخ داده است . اين تغيير تاثيرات شگرفي بر ويژوال سي برجاي گذارده كه معدودي از آنها ذيلا معرفي ميشود . هر چند برنامه نويسان ويژوال سي همچنان ميتوانند از MFC و حتي ATL براي توسعه نرم افزار استفاده كنند ( كه اين خود بزرگترين امتياز براي اين محيط محسوب ميشود . برنامه نويسان ويژوال سي مثل برنامه نويسان وي بي لازم نيست لباس جديد و رسمي بپوشند (!) و خود را برنامه نويس معرفي كنند !!! ) اما با باز كردن پروژه هاي قديمي خود در محيط ويژوال استوديو دات نت و دادن پاسخ مثبت به يك سوال و به تبع آن توليد يك فايل sln . توسط محيط توسعه ميتوانند از امكانات جديد و فدرتمند دات نت استفاده كنند و لزومي به تغيير هيچكدام از جزئيات برنامه نيست ! ديگر اثري از ClassWizard نميبينيد ! مايكروسافت با تقليدي (!) هوشمندانه از محيطهاي توسعه شركت اينپرايز اكنون به توسعه دهندگانش اين امكان را ميدهد كه در قالبي سهل و البته عاقلانه تر به گسترش نرم افزار هاي مبتني بر رخداد ( event-Driven ) بپردازند . در صورتيكه تمايل داريد همچنان از قابليتهاي ميانبر كيبورد نسخه هاي قديمي ويژوال سي و محيط تسوعه نرم آن به جاي محيط جديد استفاده كنيد كافيست از منوي Help گزينه Show Start Page را انتخاب كرده و با دستكاري كردن My Profile در انتهاي صفحه خود را به عنوان Visual C++ Developer معرفي كنيد و بس !! بزرگترين تغيير از دست رفتن محيط يكدست توسعه رابط كاربري است !!! ( بهتر است بگوئيم غم انگيز ترين تغيير !!! ) . برنامه نويسان ويژوال سي ديگر مثل گذشته هاي دور و دوست داشتني (!) امكان توليد برنامه هاي GUI را با آن قالب سابق ندارند . هر چند مايكروسافت براي اين برخورد خود تفاصيل زيادي آورده است ( ر.ك ام اس دي ان ) اما با تقليدي ديگر ( و هوشمندانه تر از مورد قبل ! ) سيستم ثبت اطلاعات موقعيتي GUI را از اينپرايز قرض گرفته و توسعه دهنده برنامه مبتني بر ويژوال سي ميتواند مولفه هاي ظاهري برنامه خود را در محيطهاي سي شارپ يا وي بي طراحي كرده و مشخصات ضبط شده آن را براي پياده سازي به محيط ويژوال سي وارد كند . در پايان - هر چند بي ربط - چند سطري هم در مورد تفاوتهاي ويژوال سي و سي شارپ بخوانيد : الف )سي شارپ ( برادر كوچكتر دلفي !!! ) براي تفكيك subnamespace از Namespace ايضا تفكيك Class از Namespace و همچنين دسترسي به متدها و اعضاي يك كلاس از نقطه ( Dot ) استفاده ميكند در حاليكه ويژوال سي همچنان از :: و <- مثل گذشته استفاده مينمايد . ب) سي شارپ ( برادر كوچكتر دلفي !!! ) بعد از استفاده از New يك نمونه از شي توليد شده را بر ميگرداند در حاليكه ويژوال سي تنها يك اشاره گر به موقعيت شي را برخواهد گرداند . ج)براي نوشتن برنامه هاي #C نيازي به ورود دستي منبع توابع به پروژه را نداريد و ميتوانيد از طريق منو هاي موجود اين كار را انجام دهيد در حاليكه در محيط ويژوال سي مجبوريد از Using# استفاده كرده و آدرس منبع ( مثلا System.dll ) را وارد كنيد . ( نگران نباشيد !!! اينبار مايكروسافت مشتريانش را شگفت زده كرده است !!! از طريق راهنماي برخط محيط ميتوانيد بفهميد كه كدام كلاس در كدام اسمبلي و محدوده وجود دارد و در كدام فايل ! ) د) Null در سي شارپ با حروف تمام كوچك و در ويژوال سي با حروف تمام بزرگ نوشته ميشود ! ه) سي شارپ pre-processor ندارد ! و) سي شارپ : كد: this.button1.Click += new System.EventHandler(this.button1_Click); ( تعجب نكنيد ! اين اصلا دلفي نيست ! اين سي شارپ است ... Hello world !!!! ) ويژوال سي : كد: button1->Click += new System::EventHandler(this, &Form1::button1_Click); اميد است اين سطوري اطلاعات مفيد ( هر چند اندك ) درباره محيط جديد توسعه نرم افزار مايكروسافت به شما داده باشد ( ... و اي كاش مايكروسافت در حركتي جوانمردانه (!) نام محصول جديد خود يعني سي شارپ را * مايكروسافت دلفي * ميگذاشت !!! ) موفق و سلامت و جوانمرد (!) باشيد ! |
||
|
+
نوشته شده در سه شنبه 4 بهمن1384ساعت 23:46 توسط لوتوس
|
|
||
|
|
|
|
|
سلام خدمت دوستان گرامي به خاطر اينكه يه تحولي تو وبلاگ بوجود بياد درباره NET. ميخوام بنويسم اميدوارم خوشتون بياد بي معرفتانظر نميديد |
||
|
+
نوشته شده در سه شنبه 4 بهمن1384ساعت 23:43 توسط لوتوس
|
|
||
|
|
|
|
|
سلام به دوستان خوبم
شرمنده که این دفه یکم طول کشید فصل اتحانات بود دیگه بچه ها یه تغییراتی در قالب ویلاگ دادم درباره اون هم نظر بدید در ضمن هر کس از دوستان مه وبلاگ داره و دوست داره به هم بلینکیم حتماْ بگه خوش باشید بچه ها منتظر نظرات گهر بار شما هستم |
||
|
+
نوشته شده در سه شنبه 4 بهمن1384ساعت 14:24 توسط لوتوس
|
|
||