PDA

View Full Version : مبتدی: تعریف اشیا



leilast
دوشنبه 02 مرداد 1396, 11:51 صبح
سلام
من مدتی هست که کد ننوشتم و مباحث شی ء گرایی رو فراموش کردم. الان یک کد خیلی ساده برای شروع نوشتم اما موقع اجرا چیزی اجرا نمیشه.
میشه بگید اشکال کجاس؟
ublic Class library Private Name_Book As String
Private Subject_book As String
Private Id_book As Integer
Private Count As Integer = 5
Private Capacity As Integer
Public Sub Insert()
Count += 1
If Capacity > 10 Then
Label1.Text = "full"
Count -= 1
Else
Label1.Text = "insert is done"
Label2.Text = Count
End If
End Sub
Public Sub library_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub BtnInsert_Click(sender As Object, e As EventArgs) Handles BtnInsert.Click
Dim libr As New library
libr.Insert()
End Sub
End Class

peyman_Esi
دوشنبه 02 مرداد 1396, 12:52 عصر
میشه لطفا اروری که میده را بنویسی

leilast
دوشنبه 02 مرداد 1396, 14:05 عصر
اروری نمیده ولی InsertBottunرو که میزنم هیچ اتفاقی نمیفته. در واقع متد insert اصلا اجرا نمی شه.

leilast
دوشنبه 02 مرداد 1396, 17:16 عصر
من کمی کدم رو ویرایش کردم اما باز هم چیزی اجرا نشد
می خواستم اگر ممکنه پیشنهادی بدید تا من از این مرحله رد شم.
اگر نمونه کد کوچک دارین که واضح باشه من خودم متوجه بشم هم خوبه.
اینم کد اصلاح شده

Public Class Library
Private Name_Book As String
Private Subject_book As String
Private Id_book As Integer
Private Count As Integer = 5
Public Event Full()
Public Property Capacity() As Integer
Get
Return Capacity
End Get
Set(value As Integer)
If value = Count Then RaiseEvent Full()
Label1.Text = "full"
End Set
End Property
Public Sub Insert()
While Count < 10
Count += 1
TextBox1.Text = "insert is done"
End While
End Sub
Public Sub Library_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim Capacity As Integer = 10
End Sub
Private Sub BtnInsert_Click(sender As Object, e As EventArgs) Handles BtnInsert.Click
Dim libr As New Library
libr.Insert()
End Sub
End Class

محمد آشتیانی
دوشنبه 02 مرداد 1396, 21:50 عصر
سلام
پروژتون رو ضمیمه کنید لطفا

leilast
سه شنبه 03 مرداد 1396, 09:39 صبح
متاسفانه چند بار تلاش کردم اما پروژه ضمبمه نمیشه چون حجمش زیاده.
من با ویژوال استودیو ۲۰۱۷ نوشتم.
امکانش هست ایمیلتون رو بدید تا براتون بفرستم.

محمد آشتیانی
سه شنبه 03 مرداد 1396, 23:11 عصر
سلام
اول اینکه کلاس Library رو در یک کلاس مجزا بسازید و نه در کلاس فرم


Public Class Library

Public Property Capacity() As Integer
Private Property Count as Integer = 5

Public Function Insert() As string


count += 1


If count > Capacity Then
Return "Full"
Else
Return "Insert is done"
End If


End Function


End Class


در مرحله بعد ، طبیعیه وقتی شما در رویداد کلیک باتن یک instance از کلاس می سازید ، شمارنده شما مقدارش با هر کلیک اضافه نمیشه ، بنابراین instance کلاس library باید در سطح فرم باشه و با هرکلیک متد insert فراخوانی بشه صرفا (مثال زیر)


Public Class Form1


Private libraryClass As New Library


Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
libraryClass.Capacity = 10
End Sub


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Label1.Text = libraryClass.Insert()
End Sub


End Class



نیازی به فرستادن پروژه نیست.