تمرینی جهت نوشتن یک نرم افزار چت

کد های برنامه چت

Partial Class _Default

    Inherits System.Web.UI.Page

  

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        Session("UserName") = Me.TextBox1.Text

        Me.TextBox1.Enabled = False

        Me.Button1.Enabled = False

        Me.Button2.Enabled = True

    End Sub

 

    Public Property Messages() As ArrayList

        Get

            Return Application("Messages")

        End Get

        Set(ByVal value As ArrayList)

            Application("Messages") = value

        End Set

    End Property

 

    Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click

 

        Dim mymessage As New Message(Session("UserName"), Me.TextBox2.Text, DateTime.Now)

        Me.Messages.Add(mymessage)

        Me.ShowMessages()

 

    End Sub

 

    Public Sub ShowMessages()

        Me.Label1.Text = ""

 

        If Me.Messages Is Nothing Or Me.Messages.Count = 0 Then

        Else

            For Each myMessage As Message In Me.Messages

 

                Me.Label1.Text += "<br><font color=Red>[" + myMessage.Sender + "]:</font>" + myMessage.body + " @<Font size=1>" + myMessage.SendDate.TimeOfDay.ToString + "</font>"

 

            Next

        End If

    End Sub

 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

 

    End Sub

End Class

کد های کلاس Message.vb

Imports Microsoft.VisualBasic

 

Public Class Message

    Public Sender As String

    Public body As String

    Public SendDate As DateTime

    Public Sub New(ByVal t As String, ByVal b As String, ByVal d As DateTime)

        Me.Sender = t

        Me.body = b

        Me.SendDate = d

    End Sub

    Public Sub New()

    End Sub

End Class

آموزش ASP.NET - جلسه هشتم 25/5/86

- کنترل link button : همانند کنترل button است و با این تفاوت که در زمان اجرا شکلی شبیه <a … > دارد . ( شکلش شبیه به یک hyper link است  )

- کنترل Image button : شبیه کنترل button است . با این تفاوت که پس از اجرا شدن به tag ی به نام  img  تبدیل می شود.

- کنترل hyper link : این کنترل یک لینک سروری می باشد . و دارای خصوصیتی به نام navigation URL است که آدرس لینک را دریافت می کند .

- کنترل drop downlist :  این کنترل جهت نمایش مجموعه اطلاعات برای نمایش کاربر است و کاربر می تواند یکی از موارد انتخاب کند .

          یکی از تفاوت های این کنترل با سایر کنترل ها ، وجود خصوصیتی به نام data source است .

آرایه ها :

          آرایه به چندین مقدار مشخص که از یک نوع داده ای می باشند و در قالب یک متغیر ارائه می گردند ، گفته می شود . مقادیر مختلف یک آرایه از طریق index آرایه قابل دسترسی است .

          آرایه ها می توانند یک بعدی ، دو بعدی و ... n  بعدی باشند .

* روش ایجاد آرایه :

فرم کلی یک آرایه بصورت زیر است :

Dim  نام آرایه     (تعداد عناصر)   as   نوع داده ای

1- ابتدا یک کنترل از نوع lable می سازیم .

2-  و در تابع page – load آرایه را ایجاد می کنیم . مثال :

Pubic  dim  numbers (10)  as  integer

          numbers (0) = 0

numbers (1) = 1

numbers (2) = 2

numbers (9) =9

3- دکمه ای ایجاد می کنیم و در رویداد کلیک آن دستورات زیر را وارد می کنیم . می خواهیم هر بار دکمه را زدیم به طور تصادفی یکی از خانه های آرایه انتخاب شود و نمایش داده شود .

Dim  rnd  as  new  random

Me.lable.text = numbers ( rnd.next(0 , 9 ))

تذکر : شمارش ایندکس های یک آرایه از 0  شروع می شود . ( یعنی آرایه ها zero base هستند . )

مثالی از آرایه های دو بعدی :

Pubic  dim  course ( 3 , 4 ) as  string

در زمان تعریف آرایه باید طول آن را تعریف کنیم . در این مثال ، 3 نشان دهنده طول سطر و عدد 4 نشان دهنده طول ستون است . اگر در زمان کار بخواهیم طول یک آرایه تغییر دهیم ، از دستور redim  استفاده می کنیم .

در این صورت مقادیر عناصر آرایه خالی می گردنند .

مجموعه :

          مجموعه ها همانند آرایه ها هستند ، با این تفاوت که مقادیر عناصر مختلف می توانند از انواع داده ای مختلفی باشند .

روش تعریف آرایه :

Dim  نام مجموعه   as  new  arraylist

در مجموعه یک property  به نام count وجود دارد که بیانگر تعداد اعضای آن است .

و property آیتم جهت دسترسی به عناصر مجموعه به کار می رود .

تذکر : متد add یک عنصر را به آخرین شماره مجموعه اضافه می کند . اما متد insert یک عنصر را در ایندکس خالی وارد میکند.

مثال :

Public myarraylist as new arraylist

          Myarraylist.add ( " morteza " )

          Myarraylist.item( 1 )

با دستورات فوق داخل خانه های مجموعه مقدار دهی می شود .

* پیمایش در مجموعه توسط حلقه for each :

برای خواندن داده های ( رکوردهای ) موجود در یک مجموعه باید از یک حلقه استفاده نمود . مثال :

For  each  S  as  string  in  myarraylist

          Me.lable1.text.  +=  s + "<br>"

Next

توضیح : در دستور بالا ، S  یک متغیر برای حلقه پیمایش ، string  نوع داده ای  و myarraylist   نام مجموعه است .

تذکر : در کنترل drop down یک خصوصیت به نام item وجود دارد که ساختار آن یک مجموعه است . سه خصوصیت در این کنترل است که عبارتند از : select item , select index , select value  . این سه خصوصیت برای مدیریت این کنترل بکار می روند . اگر کاربر هیچ مقداری را انتخاب نکرده باشد ، مقدار select index برابر 1-  خواهد بود .

- کنترل  list box:  این کنترل مثل کنترل drop down است. با این تفاوت که کاربر می تواند بیش از یک مقدار را انتخاب کند . خصوصیتی به نام select mode دارد که تنها تفاوت آن با drop down است .

- کنترل check box :  این کنترل دارای خصوصیتی به نام checked است . که در صورت true بودن checked box تیک می خورد .

- کنترل  check box list:  این کنترل همانند list box است . با این تفاوت که آیتم های آن از جنس check box هستند. در ضمن دارای خصوصیتی به نام selected value است که بصورت آرایه تعریف شده است .

* روش های رسیدن به مقادیر در حافظه :

1- استفاده از متغیر های Shared . مثال :

Public  shared   x  as  integer

2- استفاده از کلاس session : این کلاس مقادیری را در حافظه به ازاء هر کاربر در حافظه ذخیره می کند .

آموزش ASP.NET - جلسه هشتم 24/5/86

 * کنترل چیست ؟ به ابزار آلاتی اطلاق می شود که برنامه نویس از آنها جهت تولید یک نرم افزار تحت وب و ارائه امکانات برنامه می پردازد .

 

* کنترل های .net دو دسته اند .

          1- HTML Control

          2- Server Control

 

* نگاهی به HTML Server ها : این دسته کنترل ها بیشر جهت چینش صفحه و در اصطلاح ساخت User Interface یا UI ( رابط کاربری ) بکار می روند .

* نگاهی به Server Control ها : هر کدام یک کلاس هستند ، که در صفحه در قالب یک عنصر html ارائه می شوند . با این تفاوت که دارای رویدادها ، متد ها و خصوصیات ( Property ) های خاص به خود هستند .

برای مشاهده ابزارهای قابل استفاده از در صفحات وب ، می توانید به  toolbox ی که در سمت چپ صفحه ویژوال استودیو تعبیه شده است مراجعه کنید . در قسمت Standard مربوط به toolbox ، سرور کنترل ها قرار دارند و کنترل های html در قسمت html واقع شده اند .

از آنجایی که سرور کنترل ها دارای اعضای .net هستند ، ( یعنی دارای field, property, method,… ) اگر رویداد از یک سرور کنترل صدا زده شود ، آن رویداد در سمت سرور در جایی که برنامه اجرا شده است ( یعنی IIS ) ، Handle می شود . ( یعنی عمل Post Back اتفاق می افتد . ) به اتفاق افتادن رویدادها و handles شدن آنها اصطلاحاً post back گفته می شود .

* آشنایی با سرور کنترل ها ( Server Controls ) :

همانطور که در بالا آمد ، برای استفاده از سرور کنترل ها باید آنها را از قسمت toolbox به صفحه وب ( وب فرم ) ارسال نمود.

- کنترل Label :

هدف : نمایش متن ، بصورت متن ساده یا html در یک وب فرم .

معرفی تعدادی از Property های مهم :

ID : نام مورد استفاده برای کلاس قرار گرفته در این کنترل می باشد . که برنامه نویس از طریق این نام به سایر خصوصیات آن دسترسی می یابد .

BackColor : برای تنظیم رنگ زمینه کنترل استفاده می شود . در ضمن می توان برای تغییر رنگ کنترل از دستور

Me.mylable.backcolor = ( نام رنگ )

استفاده نمود . مثلاً :

Me.mylable.backcolor = draving.color.red

Csclass : برای تنظیم نام کلاس style بکار می رود .

Border class : برای تنظیم نوع حاشیه استفاده می شود .

Border width : تنظیم ضخامت

Enabled : جنس آن از نوع بولین است ( که فعال یا غیر فعال بودن کنترل را تعیین می نماید . اگر مقدار آن false باشد ، کاربر نمی تواند تغییری در این کنترل ایجاد کند ، یا رویدادهای آن را اجرا نماید .

Font : نوع قلم را تعیین می کند .

Forecolor : رنگ متن را تعیین می کند .

Visible : در صورت false بودن کنترل را مخفی می کند.

- کنترل Textbox :

          هدف : جهت دریافت یک متن ورودی از کاربر به کار می رود .

معرفی تعدادی از Property های مهم :

          Text : جهت دریافت یک متن ساده بکار می رود .

          Max length : حداکثر طول متن را تعیین می کند .

          Text mode : دارای سه حالت تنظیم است که عبارتند از : single lineکه کادر text box را بصورت یک خطی نمایش می دهد . multi line که کادر را به صورت چند خطی نمایش می هد . password که نوشته های داخل کادر به صورت رمز نشان داده می شود .

          Read only : که جنس آن Boolean است و اگر true باشد ، متن کنترل قابل تغییر نخواهد بود .

          Auto post back در صورت true بودن این خصوصیت ، رویدادهایی که احتیاج به post back دارند ( مثل : رویداد text change ) فعال می گردند .

- کنترل Button :

          هدف : ساخت یک دکمه

معرفی تعدادی از Property های مهم :

          On click : امکان بوجود آوردن رویدادهای کلیک و مانند آن را فراهم می کند . ( مثل : submit کردن فرم ) . این خصوصیت نام تابع جاوا اسکریپتی را می گیرد که قرار است در سمت کلاینت و با کلیک کردن اتفاق بیفتد .

          رویدادها توسط یک procedure هندل می شود . این کار توسط دستور addhandle انجام می شود . اما شیوه دومی برای معرفی procedure به رویداد برای هندل کردن وجود دارد . که .net خودش از آن استفاده می کند . در این شیوه ، در زمان تعریف procedure کافی است . به صورت زیر عمل کنیم .

Public  sub  click-handler( … ) handles    رویداد.نام کلاس  ,  رویداد.نام کلاس

* تبدیل انواع داده ای :  در برخی موارد برنامه نویس مجبور می شود ، نوع داده ای مورد نظر را به یک نوع داده ای دیگر تبدیل کند . برای اینکار از دستور directcast استفاده می کنیم .

Directcast  ( نوع داده ای مبداء  ,  نوع داده ای مقصد   ) . text

                   (  sender            ,   button              )

مثال :

Me.text1.text  += directcast ( sender , button ) . text

آموزش ASP.NET - جلسه هفتم23/5/86

* مفاهیم اولیه در OOP یا Object Oriented Programming :  در برنامه نویسی شیئ گرا سه مفهوم مورد بررسی قرار می گیرد که عبارتند از :

1- Encapsulation ( کپسوله کردن ) : یعنی پیاده سازی برنامه در بخش های کوچکتر و تقسیم بندی آن به واحد های کوچک و مستقل . هدف از این کار سرعت بخشیدن به توسعه و بروزرسانی نرم افزار است .

برای کپسوله سازی در .net هیچ ابزاری در نظر گرفته نشده است . بنابراین خود برنامه نویس باید منطق برنامه را به گونه ای طراحی کند که این مفهوم در آن پیاده سازی شود .

تذکر : معمولاً برای پیاده سازی کپسوله سازی در یک نرم افزار از معماری های نرم افزارهای  موجود مانند : RUP , XP, MSF و ... استفاده می کنند .

2- Inheritance ( وراثت ) : در .net framework پیاده سازی وراثت یکی از مفاهیم بسیار شیرین و جذاب برنامه نویسی شیئ گرا است که در مورد کلاس ها اتفاق می افتد . منظور از وراثت این است که یک کلاس می تواند اعضای کلاس دیگر را به ارث ببرد . اگر کلاسی ، اعضای کلاس دیگر را به ارث ببرد ، حاوی آن اعضاء می شود .

تذکر : هر کلاس فقط و فقط از یک کلاس ارث می برد .

برای ارث بردن یک کلاس ( کلاس فرزند ) دستور زیر را در کلاس فرزند وارد می کنیم .

Inheriets  نام کلاس پدر

مثال  :  Inheriets  rectangle

 

کلاس پدر

rectangle

کلاس فرزند

tringle

 

در مثال بالا ، اگر یک مشتق از کلاس tringle در برنامه تعریف کنیم ، زمان فراخوانی متغیرها ، متغیرهای کلاس پدر نیز دیده می شوند و قابل دسترس هستند .

نکته : یک کلاس نمی تواند از بیش از یک کلاس ارث ببرد ، اما از یک کلاس می توان چند وارث منشعب نمود .

3- Polymorphism ( چند ریختی ) :

که به دو روش انجام می شود . 1-3- Interface     2-3- Inheritance  

که در این کلاس به موضوع سوم که بسیار پیچیده و مشکل است پرداخته نمی شود .

آغاز کار عملی

تولید اولین Web Application  : به طور کلی 4 دسته برنامه از اینترنت استفاده می کنند . این دسته ها عبارتند از :

1- Internet Enabled  : این برنامه ها علاوه بر انجام اهداف اختصاصی خود در برخی موارد ، مجبور به استفاده از شبکه اینترنت می شوند . مانند : آنتی ویروس ها برای update شدن .

2- Peer to Peer ها : این دسته از نرم افزار ها از طریق همتای خود در آن سوی شبکه اینترنت به تبادل اطلاعات می پردازند . (مثل بازی های اینترنتی )

3- Web Service ها : در حقیقت به ارائه متدها و کلاس ها از طریق شبکه اینترنت برای استفاده در پروژه های دیگر ایجاد می شوند .

4- Web Application ها :  در حقیقت یک نرم افزار که بصورت کلاینت و سرور تولید شده می باشد .

Respond

به شکل زیر توجه کنید :

 

Server

 

 

Web Application

Internet

Client

 

 

Browser

Request

Respond

 

 

 

 

 

 

 

 

 


در سمت کلاینت نرم افزاری بنام Browser نتایج برنامه مورد نظر را نمایش می دهد . نرم افزار .net framework برای تولید یک نرم افزار تحت وب ناچار است از عناصر HTML استفاده کند .

* چرا برای تولید یک  Web Application از .net استفاده می کنیم ؟

1- برنامه های تحت وب تولید شده توسط .net کامپایل می شوند . این در حالی است که سایر زبان های تحت وب بصورت open source ارائه می گردند . بنابراین سرعت و امنیت .net نسبت به سایر زبان ها بیشتر است .

          2- استفاده از کلیه امکانات ارائه شده در .net framework

          3- استفاده از نرم افزار قدرتمند VS برای تولید برنامه های تحت وب

          4- جامعیت با ADO.net

* مراحل ایجاد یک پروژه Web Application :

1- اجرای نرم افزار VS

2- ایجاد یک صفحه وب از مسیر

File  >   new  >  web site  >  asp.net  web site

 

* اجزای تشکیل دهنده یک Application Web :

1- Content : مجموعه فایل هایی که به عنوان محتوای سایت ما به کاربر نمایش داده می شوند ( جنس فایل ها ) این فایل ها با پسوندهای  .aspx  ,  .jpg  ,  .gif ,…  در پروژه ایجاد می شوند .

2- Program logic : مجموعه فایل هایی که حاوی دستورات .net مانند : متد ، کلاس ها و غیره می باشند و با پسوند .vb در پروژه ذخیره می گردند .

3- Configuration : تنظیمات عمومی برنامه که معمولاً در قالب XML در فایلی بنام Web.config ذخیره می شود .

4- Recorce : فایل هایی هستند که اطلاعاتی مربوط به بومی سازی در آن ها ذخیره می شود . پس از ایجاد یک برنامه Web Application به صورت پیش فرض یک وب فرم default.aspx به پروژه اضافه می شود .

* مفهوم Web form چیست ؟ در واقع میز کار برنامه نویس برای ارائه عناصر موجود در برنامه به کاربر می باشد . یک فرم ، یک صفحه html است که معادل آن یک کلاس در پروژه ایجاد شده و عناصر موجود در صفحه html توسط این کلاس کنترل می شود .

* لوازم مورد نیاز جهت ایجاد یک Web Application :

1- asp.net : بخشی از .net framework است که ابزار ایجاد یک web applica است

2- IIS

3- یک زبان برنامه نویسی از خانواده .net مانند VB.net

4- نرم افزار Visual Studio

آموزش ASP.NET - جلسه ششم 21/5/86

دسته بندی اعضای کلاس از لحاظ دسترسی به آنها در خارج از کلاس

1.     اعضای shared

2.     اعضای nonshared

اعضای nonshared اعضایی هستند که به ازاء هر instance ( مشتق ) مقداری متفاوت در خود ذخیره می کنند . اما اعضای shared ، اعضایی هستند که بدون ساخت مشتق از کلاس قابل دسترس هستند .

برای ایجاد یک عضو shared در زبان vb.net کافی است در هنگام تعریف آن عضو از کلمه shared استفاده کنیم . یعنی مثلاً بنویسیم :     public  shared …

مثال :

Public shared function area ( x as integer , y as integer ) as long

            Return   x * y

End function

 

نکته : اعضای shared  به اعضای nonshared دسترسی ندارند .

توجه : در هنگام بکار بردن اعضای shared نمی توان کلمه me. را در کنار آنها بکار برد .

تمرین : کلاسی بسازید که در آن بتوان تعداد مشتق های ایجاد شده را ذخیره کرد .

 

* آشنایی با یک عضو خاص از کلاس:

          1. Constractor : متد ç   پروسيجر

          کانستراکتور در حقیقت راه اندز کلاس است . یعنی وقتی از یک کلاس مشتق می سازیم ، این عضو از کلاس صدا زده می شود . این عضو یک پروسیجر بوده که زبان VB.net نام آن new می باشد . و به شکل زیر ایجاد می شود .

Public sub new()

            دستورات

End sub

 

اگر کانستراکتور یک کلاس دارای پارامتر باشد ، می توان مقادیری را در هنگام ایجاد مشتق از کلاس به عنوان ورودی به کلاس وارد نمود .

کانستراکتور یک عضو از کلاس است که اولاً : نام آن new است و دوماً : به صورت خودکار در هنگام ساخت مشتق از کلاس صدا زده می شود .

4. رویدادها :

دسته چهارم از اعضای کلاس رویدادها هستند . برای استفاده از این نوع اعضاء ، سه مرحله کار انجام می شود . که عبارتند از :

1-4- تعریف رویداد به عنوان عضوی از کلاس برای کار طبق الگوی زیر عمل می کنیم .

سطح دسترسی   event    نام رویداد     [(فهرست پارامترها )]

Public   event   zeronumber  ( number  as  integer  )

 

2-4- بوجود آوردن رویداد توسط خود کلاس ودر موقعیت مناسب ، برای ایجاد رویداد در موقعیت خود باید از دستور RaiseEvent استفاده کنیم .

3-4- تعریف یک متد برای handle کردن رویداد . در حقیقت این متد در هر زمانی که رویدادها اتفاق بیفتد ، فراخوانی می شود و مجموعه دستورات داخل آن اجرا می شوند . برای اینکار کافی است یک متد از جنس Sub یا پروسیجر تولید کنیم . سپس با استفاده از دستور addhandler آنرا می نویسیم .

Addhandler   نام مشتق.نام رویداد  addressof     نام متد

این متد را به عنوان handle کننده رویداد معرفی می کنیم .

4-4- nested type : هرگاه عضوی از کلاس ، یک کلاس دیگر باشد ( مانند یک جنین در داخل شکم مادر ) به آن نوع عضو ، نوع داده ای nested می گویند .

آموزش ASP.NET - جلسه پنجم 18/5/86

2- متد ها Method ) ( : متد ها به طور کلی به دو دسته تقسیم می شوند :

          1-2- روال یا پراسیجر ( Procedure )

          2-2- تابع یا فانکشن ( Function )

* روال یا procedure چیست ؟ مجموعه دستوراتی را انجام می دهد که دارای نام منحصر به فرد در کلاس است . وقتی بخواهیم مجموعه عملیاتی را چندین بار بکار ببریم کافی است این دستورات را در قالب یک روال تعریف کنیم .

الگوی ساخت روال به صورت زیر است :

سطح دسترسی    sub      نام روال [( مجموعه پارامترها یا آرگون ها )]

            دستورات

End sub

تذکر : روال مقدار برگشتی ندارد . ولی تابع مقدار برگشتی دارد .

 

مثال : یک روال بنویسید که دو مقدار را دریافت کند و با پیام مناسب آنها را به کاربر نمایش دهد .

    Public height As Integer

    Public width As Integer

Public Sub rectangle(ByVal w As Integer, ByVal h As Integer)

        Console.Write(" My width is : " + width.ToString)

        Console.Write("my height is : " + height.ToString)

    End Sub

 

* تابع یا Function ؟ توابع شبیه روال ها عمل می کنند با این تفاوت که حاوی مقدار برگشتی هستند . از آنجایی که یک تابع دارای مقدار برگشتی است ، باید این نوع مقدار برگشتی تابع تعریف شود .

الگوی کلی تابع :

سطح دسترسی  Function    نام تابع    [(مجموع پارامترها  )] as  نوع داده ای مقدار برگشتی

            دستورات

          Return مقدار برگشتی

End function

نکته : بعد از دستور retrun هر دستوری که تایپ شود تاثیری در برنامه ندارد .

 

تمرین : تابعی بنویسید که طول و عرض یک مستطیل را دریافت کند و مساحت آن را برگرداند .

    Public Function area(ByVal tool As Integer, ByVal arz As Integer)

        Dim result As Integer

        result = tool * arz

        Return result

    End Function

          اگر بخواهیم تابع را در برنامه فراخوانی کنیم باید شبیه مثال زیر عمل کنیم :

Dim masahat As New Classfanc

        Console.Write(masahat.area(5, 6))

        Console.ReadLine()

 

تمرین : در کلاسی به نام test متدی بنویسید که یک عدد را دریافت کرده و زوج یا فرد بودن آن را مشخص کند .

    Public Function zojfard(ByVal num1 As Integer)

        Dim result As String

        If num1 Mod 2 = 0 Then

            result = "zoje"

        Else

            result = "fard"

        End If

        Return result

    End Function

 

* تکنیک Over Load : در .net framwork برای تعریف متدها با تعدادی پارامترهای دلخواه شیوه جدیدی به نام over load ایجاد گردید . در این شیوه می توان یک متد را چند بار و با تعداد پارامترهای متفاوت تعریف نمود . در هنگام فراخوانی متد ، متدی اجرا می شود که تعداد پارامترهای آن مقدار دهی شده باشند .

* شرایط Over Load : وقتی می خواهیم یک متد را over load کنیم باید به نکات زیر توجه کنیم .

          1. نوع متدهای over load شده باید با هم مشترک باشد .

          2. سطح دسترسی متد ها باید با هم برابر باشد .

          3. در صورتی که متدها از جنس function باشند ، باید نوع داده ای آنها برابر باشد .

          4. پارامترهای متد ها یا باید از جنس تعداد و یا از لحاظ نوع با هم متفاوت باشند .

تذکر : کلمه me. در کلاس بیانگر خود کلاس می باشد . یعنی اگر بنویسیم me. در ادامه فهرست کلاس لیست می شود .

    Public x As String

    Public Sub showxy(ByVal x)

        Console.Write(x)

        Console.Write(Me.x)

    End Sub

 

3.خصوصیت ( Property ) : خصوصیت در حقیقت شبیه یک فیلد عمل می کند . و در خود مقداری را ذخیره می کند . با این تفاوت که در هنگام مقدار دهی و یا استفاده از مقدار آن ، برنامه نویس کنترل بیشتری دارد .

          در حقیقت خصوصیت از دو متد set و get تشکیل شده است . متد set زمانی که کاربر به خصوصیات مقدار می دهد ، صدا زده می شود . و متد get زمانی که مقدار متغیر را فرا می خوانید اجرا می شود .

الگوی ساخت یک خصوصیت :

سطح دسترسی     property      نام خصوصیت     as     نوع داده ای

            Get

            Return     مقدار خصوصیت

            End get

           

            Set ( value   as   نوع داد ه ای   )

            مقدار خصوصیت

            End set

End  property

 

مثال از کلاس property :

    Private _mywidth As Integer

    Public Property mywidth() As Integer

        Get

            Return _mywidth

        End Get

        Set(ByVal value As Integer)

            If value < 0 Then

                value += 1

            End If

            _mywidth = value

        End Set

    End Property

 

تذکر : برای جلوگیری از پیچیدگی و سردرگمی برنامه نویس ، فیلد تعریف شده برای property را با سطح دسترسی private تعریف می کنیم .

تذکر : از آنجایی که یک خصوصیت بر خلاف فیلد دارای کنترل بیشتری است ، می توانیم یک خصوصیت فقط خواندنی را تعریف کنیم . برای اینکار کافی است متد set را از خصوصیت حذف کنیم . دراین صورت باید کلمه read only را قبل از property ذکر کنیم .

مثال :

Public readonly property mywidth () as integer

آموزش ASP.NET - جلسه چهارم 17/5/86

ساختار حلقه ها :

اگر برنامه نویس بخواهد مجموعه دستوراتی را بر اساس یک شرط و یا تعداد معینی تکرار کند ، از حلقه استفاده می کند .

1. حلقه While :

این نوع حلقه تا زمانی که شرط صحیح است عمل دستورات داخل حلقه را تکرار می کند .

While ( جمله شرط )

            عبارات

          [ exit while ]

End While

تذکر : با استفاده از دستور exit while می توان بدون در نظر گرفتن شرط حلقه از آن خارج شد .

مثال : برنامه ای بنویسید که دو عدد از ورودی دریافت کند ، سپس اعداد زوج بین این دو را نمایش دهد .  (با While )

        Dim num1 As Integer

        Dim num2 As Integer

 

        Console.Write("Enter First Number : ")

        num1 = Console.ReadLine()

        Console.Write("Enter Second Number : ")

        num2 = Console.ReadLine()

 

        num1 += num1 Mod 2

 

        While (num1 <= num2)

            Console.WriteLine(num1.ToString())

            num1 += 2

        End While

 

        Console.ReadLine()

 

مثال : برنامه ای بنویسیدکه یک رشته از ورودی دریافت کند ، اگر مقدار آن برابر Exit بود برنامه را پایان دهد .

        Dim password As String = "exit"

 

        While (password <> "Exit")

            Console.Write("Enter Password : ")

            password = Console.ReadLine

        End While

 

        Console.Write("You Have Exited ... :) ")

        Console.ReadLine()

 

مثال : برنامه ای بنویسید که اعداد از 1 تا 20 را بشمارد . ( بدون نمایش روی صفحه مانیتور )

Dim counter As Integer = 0

While counter < 20

    counter += 1

    ' Insert code to use current value of counter.

End While

 

2. حلقه For … next : این حلقه برای تکرار اجرای دستورات به تعداد معینی مورد استفاده قرار می گیرد . در این حلقه ، مقدار اولیه ، مقدار پایانی و مقداری به عنوان گام یا Step حلقه مشخص می شود . و این ساختار دستورات داخل خود را به تعداد مشخص شده تکرار می کند .

فرم کلی :

For   نام شمارنده      نقطه شروع        to   نقطه پایان     step=گام حلقه

          دستورات

Next

 

نکته : روش تبدیل کردن یک عدد با یک خط دستور  به این صورت است:   num1 +=  (num1 mod 2 )

تمرین : برنامه ای بنویسید که 9 بار عبارت   Hi ASP.net را نمایش دهد .

        Dim Counter As Integer

 

        For Counter = 1 To 9 Step 1

            Console.WriteLine(Counter.ToString + " : Hi ASP.net")

        Next

        Console.ReadLine()

تمرین : برنامه ای بنویسیدکه یک عدد از ورودی دریافت کند و ... آنرا محاسبه کند .

    Sub Main()

        Dim count As Integer = 1

        Dim sum As Long = 0

        Dim num1 As Integer

 

        Console.Write("Enter a Correct Number : ")

        num1 = Console.ReadLine()

        For count = 1 To num1 Step 1

            sum = sum + count

        Next

        Console.WriteLine(sum.ToString)

        Console.ReadLine()

    End Sub

تمرین : برنامه بنویسید که یک جدول ضرب 10 در 10 را نمایش دهد .

        For i As Integer = 1 To 10

            For j As Integer = 1 To 10

                Console.Write("{0}  ", i * j)

            Next

            Console.WriteLine()

        Next

        Console.ReadLine()


 

 

مفاهیم پایه .net

از آنجایی که زبان VB.net یک زبان برنامه نویسی و قدرتمند است ، در آن از مفاهیم برنامه نویسی شیئ گرا پشتیبانی کامل شده است .

* تذکر : برنامه نویسی شیئ گرا  (Object Oriented Programming ) نوعی برنامه نویسی است که در آن با موجودیت های سیستم همانند یک شیئ رفتار می شود .

* برای پیاده سازی برنامه نویسی شیئ گرا ، ابتدا باید با مفهوم کلاس و اعضای آن آشنا شویم .

* کلاس :  کلاس ها الگوی ساخت اشیاء هستند . مثلاً : کلاس انسان را در نظر بگیرید . هر یک از شما علمای بزرگوار اسلام ، یک مشتق یا Instance از کلاس انسان هستید .

* نحوه تولید یک کلاس در VB.net : الگوی ساخت کلاس در VB.net به سبک زیر است :

سطح دسترسی

Public یا  Private     Calss    نام کلاس

            اعضای کلاس

End  Class

 

* تذکر :  برای ساخت کلاس ، توسط نرم افزار VS کافی است ، در پنجره solution explorer روی نام پروژه کلیک راست کنیم . با استفاده از گزینه add و گزینه class یک کلاس جدید را به پروژه اضافه می کنیم .

          در این صورت یک فایل مجزا به پسوند .vb برای آن کلاس ایجاد می شود .

 

 

 

 

 

 

 

یک نمونه : مثلاً ساخت یک کلاس برای تبدیل تاریخ میلادی به شمسی .

* یک کلاس شامل پنج نوع عضو می شود :

1. فیلد ( field ) : فیلد ها در کلاس بیانگر یک متغیر می باشند و در حقیقت یک مقدار را در خود ذخیره می کنند .

          1-1- نحوه تعریف کردن فیلد :

سطح دسترسی    نام فیلد        as       نوع داده ای

* تذکر : اگر سطح دسترسی یک عضو از کلاس دارای مقدار public باشد ، این عضو نتنها می تواند  در داخل کلاس مورد استفاده قرار می گیرد ، در خارج کلاس نیز می تواند قابل دسترس باشد .

          اگر بجای public ، سطح دسترسی private را قرار دهیم ، مقدار فقط داخل کلاس شناسایی می شود .

* نحوه استفاده از کلاس : برای استفاده از یک کلاس در کلاس دیگر و یا در طول برنامه ابتدا باید توسط دستور dim از آن کلاس یک مشتق ایجاد می کنیم .

توجه : کلاس ها از جنس Reference type هستند . بنابراین در هنگام تعریف مشتق باید از کلمه new استفاده کنیم .

مثلاً اگر نام کلاس را rect گذاشته باشیم ، اگر بخواهیم آنرا در برنامه فراخوانی کنیم باید دستور زیر را واردکنیم .

Dim   r1   as   new   rect

            R1.width

            R2.height

        Console.WriteLine("Rectangles width is : " + r1.width.tostring())

        Console.WriteLine("Rectangles height is : " + r1.height.tostring())

           


 

توضیح : دو مقدارwidth   و  height   مقداری هایی هستند که کلاس تعریف شده اند .

 

* نکته : شرط ضمنی : به صورت زیر در VB نوشته می شود .

Iif   (  جمله شرطی  ,  trueمقدار  , false مقدار  )

 

آموزش ASP.NET - جلسه سوم 17/5/86

ساختار حلقه ها :

اگر برنامه نویس بخواهد مجموعه دستوراتی را بر اساس یک شرط و یا تعداد معینی تکرار کند ، از حلقه استفاده می کند .

1. حلقه While :

این نوع حلقه تا زمانی که شرط صحیح است عمل دستورات داخل حلقه را تکرار می کند .

While ( جمله شرط )

          عبارات

          [ exit while ]

End While

تذکر : با استفاده از دستور exit while می توان بدون در نظر گرفتن شرط حلقه از آن خارج شد .

مثال : برنامه ای بنویسید که دو عدد از ورودی دریافت کند ، سپس اعداد زوج بین این دو را نمایش دهد .  (با While )

        Dim num1 As Integer

        Dim num2 As Integer

 

        Console.Write("Enter First Number : ")

        num1 = Console.ReadLine()

        Console.Write("Enter Second Number : ")

        num2 = Console.ReadLine()

 

        num1 += num1 Mod 2

 

        While (num1 <= num2)

            Console.WriteLine(num1.ToString())

            num1 += 2

        End While

 

        Console.ReadLine()

 

مثال : برنامه ای بنویسیدکه یک رشته از ورودی دریافت کند ، اگر مقدار آن برابر Exit بود برنامه را پایان دهد .

        Dim password As String = "exit"

 

        While (password <> "Exit")

            Console.Write("Enter Password : ")

            password = Console.ReadLine

        End While

 

        Console.Write("You Have Exited ... :) ")

        Console.ReadLine()

 

مثال : برنامه ای بنویسید که اعداد از 1 تا 20 را بشمارد . ( بدون نمایش روی صفحه مانیتور )

Dim counter As Integer = 0

While counter < 20

    counter += 1

    ' Insert code to use current value of counter.

End While

 

2. حلقه For … next : این حلقه برای تکرار اجرای دستورات به تعداد معینی مورد استفاده قرار می گیرد . در این حلقه ، مقدار اولیه ، مقدار پایانی و مقداری به عنوان گام یا Step حلقه مشخص می شود . و این ساختار دستورات داخل خود را به تعداد مشخص شده تکرار می کند .

فرم کلی :

For   نام شمارنده      نقطه شروع        to   نقطه پایان     step=گام حلقه

          دستورات

Next

 

نکته : روش تبدیل کردن یک عدد با یک خط دستور  به این صورت است:   num1 +=  (num1 mod 2 )

تمرین : برنامه ای بنویسید که 9 بار عبارت   Hi ASP.net را نمایش دهد .

        Dim Counter As Integer

 

        For Counter = 1 To 9 Step 1

            Console.WriteLine(Counter.ToString + " : Hi ASP.net")

        Next

        Console.ReadLine()

تمرین : برنامه ای بنویسیدکه یک عدد از ورودی دریافت کند و ... آنرا محاسبه کند .

    Sub Main()

        Dim count As Integer = 1

        Dim sum As Long = 0

        Dim num1 As Integer

 

        Console.Write("Enter a Correct Number : ")

        num1 = Console.ReadLine()

        For count = 1 To num1 Step 1

            sum = sum + count

        Next

        Console.WriteLine(sum.ToString)

        Console.ReadLine()

    End Sub

تمرین : برنامه بنویسید که یک جدول ضرب 10 در 10 را نمایش دهد .

        For i As Integer = 1 To 10

            For j As Integer = 1 To 10

                Console.Write("{0}  ", i * j)

            Next

            Console.WriteLine()

        Next

        Console.ReadLine()


 

مفاهیم پایه .net

از آنجایی که زبان VB.net یک زبان برنامه نویسی و قدرتمند است ، در آن از مفاهیم برنامه نویسی شیئ گرا پشتیبانی کامل شده است .

* تذکر : برنامه نویسی شیئ گرا  (Object Oriented Programming ) نوعی برنامه نویسی است که در آن با موجودیت های سیستم همانند یک شیئ رفتار می شود .

* برای پیاده سازی برنامه نویسی شیئ گرا ، ابتدا باید با مفهوم کلاس و اعضای آن آشنا شویم .

* کلاس :  کلاس ها الگوی ساخت اشیاء هستند . مثلاً : کلاس انسان را در نظر بگیرید . هر یک از شما علمای بزرگوار اسلام ، یک مشتق یا Instance از کلاس انسان هستید .

* نحوه تولید یک کلاس در VB.net : الگوی ساخت کلاس در VB.net به سبک زیر است :

سطح دسترسی

Public یا  Private     Calss    نام کلاس

          اعضای کلاس

End  Class

 

* تذکر :  برای ساخت کلاس ، توسط نرم افزار VS کافی است ، در پنجره solution explorer روی نام پروژه کلیک راست کنیم . با استفاده از گزینه add و گزینه class یک کلاس جدید را به پروژه اضافه می کنیم .

          در این صورت یک فایل مجزا به پسوند .vb برای آن کلاس ایجاد می شود .

 

 

 

 

 

 

 

یک نمونه : مثلاً ساخت یک کلاس برای تبدیل تاریخ میلادی به شمسی .

* یک کلاس شامل پنج نوع عضو می شود :

1. فیلد ( field ) : فیلد ها در کلاس بیانگر یک متغیر می باشند و در حقیقت یک مقدار را در خود ذخیره می کنند .

          1-1- نحوه تعریف کردن فیلد :

سطح دسترسی    نام فیلد        as       نوع داده ای

* تذکر : اگر سطح دسترسی یک عضو از کلاس دارای مقدار public باشد ، این عضو نتنها می تواند  در داخل کلاس مورد استفاده قرار می گیرد ، در خارج کلاس نیز می تواند قابل دسترس باشد .

          اگر بجای public ، سطح دسترسی private را قرار دهیم ، مقدار فقط داخل کلاس شناسایی می شود .

* نحوه استفاده از کلاس : برای استفاده از یک کلاس در کلاس دیگر و یا در طول برنامه ابتدا باید توسط دستور dim از آن کلاس یک مشتق ایجاد می کنیم .

توجه : کلاس ها از جنس Reference type هستند . بنابراین در هنگام تعریف مشتق باید از کلمه new استفاده کنیم .

مثلاً اگر نام کلاس را rect گذاشته باشیم ، اگر بخواهیم آنرا در برنامه فراخوانی کنیم باید دستور زیر را واردکنیم .

Dim   r1   as   new   rect

          R1.width

          R2.height

        Console.WriteLine("Rectangles width is : " + r1.width.tostring())

        Console.WriteLine("Rectangles height is : " + r1.height.tostring())

         


توضیح : دو مقدارwidth   و  height   مقداری هایی هستند که کلاس تعریف شده اند .

 

* نکته : شرط ضمنی : به صورت زیر در VB نوشته می شود .

Iif   (  جمله شرطی  ,  trueمقدار  , false مقدار  )

 

2- متد ها Method ) ( : متد ها به طور کلی به دو دسته تقسیم می شوند :

          1-2- روال یا پراسیجر ( Procedure )

          2-2- تابع یا فانکشن ( Function )

* روال یا procedure چیست ؟ مجموعه دستوراتی را انجام می دهد که دارای نام منحصر به فرد در کلاس است . وقتی بخواهیم مجموعه عملیاتی را چندین بار بکار ببریم کافی است این دستورات را در قالب یک روال تعریف کنیم .

الگوی ساخت روال به صورت زیر است :

سطح دسترسی    sub      نام روال [( مجموعه پارامترها یا آرگون ها )]

          دستورات

End sub

تذکر : روال مقدار برگشتی ندارد . ولی تابع مقدار برگشتی دارد .

 

مثال : یک روال بنویسید که دو مقدار را دریافت کند و با پیام مناسب آنها را به کاربر نمایش دهد .

    Public height As Integer

    Public width As Integer

Public Sub rectangle(ByVal w As Integer, ByVal h As Integer)

        Console.Write(" My width is : " + width.ToString)

        Console.Write("my height is : " + height.ToString)

    End Sub

 

* تابع یا Function ؟ توابع شبیه روال ها عمل می کنند با این تفاوت که حاوی مقدار برگشتی هستند . از آنجایی که یک تابع دارای مقدار برگشتی است ، باید این نوع مقدار برگشتی تابع تعریف شود .

الگوی کلی تابع :

سطح دسترسی  Function    نام تابع    [(مجموع پارامترها  )] as  نوع داده ای مقدار برگشتی

          دستورات

          Return مقدار برگشتی

End function

نکته : بعد از دستور retrun هر دستوری که تایپ شود تاثیری در برنامه ندارد .

 

تمرین : تابعی بنویسید که طول و عرض یک مستطیل را دریافت کند و مساحت آن را برگرداند .

    Public Function area(ByVal tool As Integer, ByVal arz As Integer)

        Dim result As Integer

        result = tool * arz

        Return result

    End Function

          اگر بخواهیم تابع را در برنامه فراخوانی کنیم باید شبیه مثال زیر عمل کنیم :

Dim masahat As New Classfanc

        Console.Write(masahat.area(5, 6))

        Console.ReadLine()

 

تمرین : در کلاسی به نام test متدی بنویسید که یک عدد را دریافت کرده و زوج یا فرد بودن آن را مشخص کند .

    Public Function zojfard(ByVal num1 As Integer)

        Dim result As String

        If num1 Mod 2 = 0 Then

            result = "zoje"

        Else

            result = "fard"

        End If

        Return result

    End Function

 

* تکنیک Over Load : در .net framwork برای تعریف متدها با تعدادی پارامترهای دلخواه شیوه جدیدی به نام over load ایجاد گردید . در این شیوه می توان یک متد را چند بار و با تعداد پارامترهای متفاوت تعریف نمود . در هنگام فراخوانی متد ، متدی اجرا می شود که تعداد پارامترهای آن مقدار دهی شده باشند .

* شرایط Over Load : وقتی می خواهیم یک متد را over load کنیم باید به نکات زیر توجه کنیم .

          1. نوع متدهای over load شده باید با هم مشترک باشد .

          2. سطح دسترسی متد ها باید با هم برابر باشد .

          3. در صورتی که متدها از جنس function باشند ، باید نوع داده ای آنها برابر باشد .

          4. پارامترهای متد ها یا باید از جنس تعداد و یا از لحاظ نوع با هم متفاوت باشند .

تذکر : کلمه me. در کلاس بیانگر خود کلاس می باشد . یعنی اگر بنویسیم me. در ادامه فهرست کلاس لیست می شود .

    Public x As String

    Public Sub showxy(ByVal x)

        Console.Write(x)

        Console.Write(Me.x)

    End Sub