مقدمة عن VB.NET

ما هو VB.NET؟

VB.NET (Visual Basic .NET) هي لغة برمجة كائنية التوجه من Microsoft، جزء من منصة .NET Framework.

مميزات VB.NET:
  • لغة بسيطة وسهلة التعلم
  • مثالية لتطوير تطبيقات Windows
  • دعم كامل للبرمجة الكائنية
  • تكامل مع Visual Studio
  • مكتبة .NET Framework غنية
مجالات الاستخدام:
  • تطبيقات Windows Desktop
  • تطبيقات قواعد البيانات
  • تطبيقات الويب (ASP.NET)
  • خدمات الويب

بيئة التطوير Visual Studio

تثبيت Visual Studio:

  1. قم بتحميل Visual Studio من موقع Microsoft
  2. اختر "Desktop development with .NET"
  3. ثبت Visual Studio
إنشاء مشروع جديد:
  1. File → New → Project
  2. اختر "Windows Forms App (.NET Framework)"
  3. أدخل اسم المشروع
  4. اضغط OK

أول برنامج VB.NET

برنامج Console بسيط:

Module Program
    Sub Main()
        Console.WriteLine("مرحباً بكم في VB.NET!")
        Console.WriteLine("هذا أول برنامج لي")
        Console.ReadKey()
    End Sub
End Module
برنامج Windows Forms:
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Text = "أول برنامج"
        MessageBox.Show("مرحباً!")
    End Sub
End Class

المتغيرات وأنواع البيانات

أنواع البيانات:

' أنواع البيانات الأساسية
Dim name As String = "أحمد"
Dim age As Integer = 25
Dim salary As Double = 5000.50
Dim isActive As Boolean = True
Dim grade As Char = "A"

' أنواع أخرى
Dim price As Decimal = 99.99D
Dim date1 As Date = #2024-01-15#
Dim number As Long = 1234567890L
تعريف المتغيرات:
' تعريف مباشر
Dim x As Integer = 10

' تعريف بدون قيمة
Dim y As Integer
y = 20

' تعريف متعدد
Dim a, b, c As Integer
a = 1
b = 2
c = 3

المعاملات والتعبيرات

المعاملات الحسابية:

Dim a As Integer = 10
Dim b As Integer = 3

Dim sum As Integer = a + b      ' 13
Dim diff As Integer = a - b     ' 7
Dim prod As Integer = a * b     ' 30
Dim quot As Double = a / b      ' 3.333...
Dim modu As Integer = a Mod b   ' 1
Dim power As Double = a ^ 2    ' 100
المعاملات المنطقية:
Dim x As Boolean = True
Dim y As Boolean = False

Dim result1 As Boolean = x And y   ' False
Dim result2 As Boolean = x Or y    ' True
Dim result3 As Boolean = Not x     ' False

عبارات الشرط If-Then

If-Then بسيط:

Dim age As Integer = 20

If age >= 18 Then
    Console.WriteLine("يمكنك التصويت")
End If
If-Then-Else:
If age >= 18 Then
    Console.WriteLine("يمكنك التصويت")
Else
    Console.WriteLine("لا يمكنك التصويت")
End If
If-Then-ElseIf:
Dim score As Integer = 85

If score >= 90 Then
    Console.WriteLine("ممتاز")
ElseIf score >= 80 Then
    Console.WriteLine("جيد جداً")
ElseIf score >= 70 Then
    Console.WriteLine("جيد")
Else
    Console.WriteLine("يحتاج تحسين")
End If

Select Case

Select Case:

Dim day As Integer = 3

Select Case day
    Case 1
        Console.WriteLine("الاثنين")
    Case 2
        Console.WriteLine("الثلاثاء")
    Case 3
        Console.WriteLine("الأربعاء")
    Case Else
        Console.WriteLine("يوم آخر")
End Select

حلقة For

For Loop:

' حلقة For بسيطة
For i As Integer = 1 To 10
    Console.WriteLine(i)
Next

' حلقة For مع Step
For i As Integer = 1 To 10 Step 2
    Console.WriteLine(i)
Next

' حلقة For عكسية
For i As Integer = 10 To 1 Step -1
    Console.WriteLine(i)
Next

حلقة While و Do Loop

While Loop:

Dim i As Integer = 1
While i <= 10
    Console.WriteLine(i)
    i += 1
End While
Do Loop:
' Do While
Dim i As Integer = 1
Do While i <= 10
    Console.WriteLine(i)
    i += 1
Loop

' Do Until
Dim j As Integer = 1
Do Until j > 10
    Console.WriteLine(j)
    j += 1
Loop

المصفوفات

مصفوفة بسيطة:

' تعريف مصفوفة
Dim numbers(4) As Integer
numbers(0) = 10
numbers(1) = 20
numbers(2) = 30

' تعريف مع القيم
Dim names() As String = {"أحمد", "محمد", "علي"}

' مصفوفة متعددة الأبعاد
Dim matrix(2, 2) As Integer
matrix(0, 0) = 1
matrix(0, 1) = 2

الدوال (Sub و Function)

Sub Procedure:

Sub Greet(name As String)
    Console.WriteLine("مرحباً " & name)
End Sub

' استدعاء
Greet("أحمد")
Function:
Function Add(a As Integer, b As Integer) As Integer
    Return a + b
End Function

' استدعاء
Dim result As Integer = Add(5, 3)

النماذج (Forms)

إنشاء Form:

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Text = "نموذج جديد"
        Me.Size = New Size(400, 300)
        Me.StartPosition = FormStartPosition.CenterScreen
    End Sub
End Class

عناصر التحكم الأساسية

Button و Label و TextBox:

' Button
Button1.Text = "اضغط هنا"
Button1.Size = New Size(100, 30)

' Label
Label1.Text = "النص هنا"
Label1.ForeColor = Color.Blue

' TextBox
TextBox1.Text = "أدخل النص"
TextBox1.Multiline = True

الأحداث (Events)

معالجة الأحداث:

Private Sub Button1_Click(sender As Object, e As EventArgs) _
    Handles Button1.Click
    Label1.Text = "تم الضغط!"
End Sub

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) _
    Handles TextBox1.TextChanged
    Label1.Text = TextBox1.Text
End Sub

MessageBox و InputBox

MessageBox:

' MessageBox بسيط
MessageBox.Show("مرحباً!")

' MessageBox مع عنوان
MessageBox.Show("هل تريد المتابعة؟", "تأكيد", MessageBoxButtons.YesNo)

' MessageBox مع أيقونة
MessageBox.Show("خطأ!", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
InputBox:
Dim name As String = InputBox("أدخل اسمك:", "إدخال")
If name <> "" Then
    Label1.Text = "مرحباً " & name
End If

البرمجة الكائنية - المقدمة

مفاهيم OOP:

  • Class: قالب لإنشاء الكائنات
  • Object: مثال من الكلاس
  • Encapsulation: إخفاء البيانات
  • Inheritance: الوراثة
  • Polymorphism: تعدد الأشكال

Classes و Objects

تعريف Class:

Public Class Person
    Public Property Name As String
    Public Property Age As Integer
    
    Public Sub Display()
        Console.WriteLine(Name & " - " & Age)
    End Sub
End Class

' استخدام
Dim person As New Person()
person.Name = "أحمد"
person.Age = 25
person.Display()

Constructors

Constructor:

Public Class Person
    Public Property Name As String
    Public Property Age As Integer
    
    Public Sub New(name As String, age As Integer)
        Me.Name = name
        Me.Age = age
    End Sub
End Class

' استخدام
Dim person As New Person("أحمد", 25)

Properties

Properties:

Public Class Person
    Private _name As String
    
    Public Property Name As String
        Get
            Return _name
        End Get
        Set(value As String)
            _name = value
        End Set
    End Property
End Class

Inheritance

الوراثة:

Public Class Animal
    Public Sub Eat()
        Console.WriteLine("الحيوان يأكل")
    End Sub
End Class

Public Class Dog
    Inherits Animal
    
    Public Sub Bark()
        Console.WriteLine("الكلب ينبح")
    End Sub
End Class

' استخدام
Dim dog As New Dog()
dog.Eat()   ' من Animal
dog.Bark()  ' من Dog

Polymorphism

تعدد الأشكال:

Public Class Shape
    Public Overridable Sub Draw()
        Console.WriteLine("رسم شكل")
    End Sub
End Class

Public Class Circle
    Inherits Shape
    
    Public Overrides Sub Draw()
        Console.WriteLine("رسم دائرة")
    End Sub
End Class

التعامل مع الملفات

قراءة وكتابة الملفات:

Imports System.IO

' الكتابة
Using writer As New StreamWriter("data.txt")
    writer.WriteLine("مرحباً بالعالم")
End Using

' القراءة
Using reader As New StreamReader("data.txt")
    Dim line As String = reader.ReadLine()
    Console.WriteLine(line)
End Using

Exception Handling

Try-Catch:

Try
    Dim result As Integer = 10 / 0
Catch ex As DivideByZeroException
    MessageBox.Show("خطأ: القسمة على صفر!")
Catch ex As Exception
    MessageBox.Show("خطأ: " & ex.Message)
Finally
    Console.WriteLine("تم التنفيذ")
End Try

قواعد البيانات - ADO.NET

الاتصال بقاعدة البيانات:

Imports System.Data.SqlClient

Dim connectionString As String = "Server=localhost;Database=mydb;Integrated Security=True"

Using connection As New SqlConnection(connectionString)
    connection.Open()
    Dim command As New SqlCommand("SELECT * FROM Users", connection)
    Dim reader As SqlDataReader = command.ExecuteReader()
    
    While reader.Read()
        Console.WriteLine(reader("Name"))
    End While
End Using

DataGridView

عرض البيانات:

Dim adapter As New SqlDataAdapter("SELECT * FROM Users", connection)
Dim table As New DataTable()
adapter.Fill(table)
DataGridView1.DataSource = table

LINQ

LINQ to Objects:

Dim numbers() As Integer = {1, 2, 3, 4, 5}

Dim evenNumbers = From n In numbers
                  Where n Mod 2 = 0
                  Select n

For Each num In evenNumbers
    Console.WriteLine(num)
Next

مشروع متوسط

نظام إدارة طلاب:

Public Class Student
    Public Property Name As String
    Public Property Age As Integer
    Public Property Grade As Double
End Class

Public Class StudentManager
    Private students As New List(Of Student)
    
    Public Sub AddStudent(name As String, age As Integer, grade As Double)
        Dim student As New Student()
        student.Name = name
        student.Age = age
        student.Grade = grade
        students.Add(student)
    End Sub
    
    Public Function GetStudents() As List(Of Student)
        Return students
    End Function
End Class

Best Practices

أفضل الممارسات:

  • استخدم Option Explicit On
  • استخدم أسماء متغيرات واضحة
  • استخدم Try-Catch للتعامل مع الأخطاء
  • استخدم Using للتعامل مع الموارد
  • نظم الكود في Classes
  • استخدم Comments للتوضيح

نشر التطبيقات

نشر التطبيق:

  1. Build → Publish
  2. اختر موقع النشر
  3. اختر طريقة النشر
  4. اضغط Publish

مشروع تطبيقي كامل

نظام إدارة مكتبة:

' Form مع DataGridView و Buttons
Public Class LibraryForm
    Private Sub LoadBooks()
        ' كود تحميل الكتب من قاعدة البيانات
    End Sub
    
    Private Sub AddBook()
        ' كود إضافة كتاب جديد
    End Sub
    
    Private Sub DeleteBook()
        ' كود حذف كتاب
    End Sub
End Class