Upload
ava-morrison
View
27
Download
3
Embed Size (px)
DESCRIPTION
מחלקות classes. תזכורת - Structure. סינטקס: Structure שם המבנה משתנה 1 משתנה 2 ... End Structure. דוגמא: Structure Oved Dim name As String Dim maskoret As Integer End Structure. מתאים כאשר רוצים לאגוד ביחד מספר משתנים שיש ביניהם קשר. - PowerPoint PPT Presentation
Citation preview
מחלקותclasses
Structureתזכורת - :סינטקס
Structure שם המבנה
1משתנה
2משתנה
...End Structure
:דוגמאStructure Oved Dim name As String Dim maskoret As Integer End Structure
מתאים כאשר רוצים לאגוד ביחד מספר משתנים שיש ביניהם קשר
ואם רוצים להוסיף יכולת לבצע "פעילויות" שקשורות למבנה?
class מחלקה
מחלקה משמשת לאיגוד קבוצה של משתנים ופעולות •)הנקראות מתודות(
למחלקה יש אוסף של משתנים•
המתודות של המחלקה פועלות על המשתנים של •המחלקה
(constructor )בנאימתודה מיוחדת הנקראת •מגדירה מה קורה כאשר נוצר אוביקט חדש של המחלקה–
גישה לחלקי המחלקה
Privateהמשתנים מוגדרים כפרטיים •רק מתודות של המחלקה יכולות להשתמש בהם–המתודות מכירות את כל המשתנים של המחלקה–
Publicהמתודות מוגדרות כפומביות •אפשר להשתמש במתודות מחוץ למחלקה–
מתודות
תכונות
main
מחלקה
class של מחלקה סינטקס Public Class שם המחלקה
Private 1משתנה
Private 2משתנה
...Public Sub New()Public Function 1 כותרת הפונקציה …..Public Function2 כותרת הפונקציה…..…Public Sub 1 כותרת הפונקציה …..Public Sub 2כותרת הפונקציה ….…
End Class
עובד כמחלקה Public Class Oved Private name As String Private maskoret As Integer
Public Sub New() name = "noName" maskoret = 0 End Sub
Public Function GetName() As String Return name End Function
Public Sub SetName(ByVal str As String) name = str End Sub
End Class
"Mainשימוש במחלקה "עובד" מתוך "
Sub Main() Dim ov As New Oved()
Console.WriteLine("The oveds name is " & ov.GetName) ov.SetName("Ariella") Console.WriteLine("The oveds name is " & ov.GetName)
'ov.name = "Ariella" DOES NOT WORK!!! WHY?
End Sub
מבני הנתוניםStack, queue, linked list
כמחלקות
)מחסנית(Stackתזכורת –LIFOשימוש ב•
–LIFO (Last In, First Out) lists. בסוףאפשר להוסיף רק –
הרשימה•PUSH
הרשימהמסוףאפשר להוריד רק –•POP
להמציא מחדש את הגלגל – ראינו קודם
)שימוש בפונקציות(Module Module1
Function Count(ByVal list As ArrayList) As Integer Return list.Count() End Function
Sub Push(ByVal val As Object, ByRef list As ArrayList) list.Add(val) End Sub
Function Pop(ByVal list As ArrayList) As Object Dim obj As Object = list.Item(list.Count - 1) list.RemoveAt(list.Count - 1) Return obj End Function
Function Peek(ByVal list As ArrayList) As Object Return list.Item(list.Count - 1) End Function…
… Sub Main() Dim test As New ArrayList()
Dim i As Integer For i = 0 To 4 Push(i, test) Next Console.WriteLine(Count(test)) For i = 0 To test.Count - 1 Dim num As Integer = Pop(test) Console.WriteLine(num) Next
End Sub
End Module
להמציא מחדש את הגלגלעם מחלקות
Public Class CStack Private index As Integer Private list As New ArrayList()
Public Sub New() index = -1 End Sub
Public Function Count() As Integer Return list.Count() End Function
Public Sub Push(ByVal val As Object) list.Add(val) index += 1 End Sub
Public Function Pop() As Object Dim obj As Object = list.Item(index) list.RemoveAt(index) index -= 1 Return obj End Function
Public Function Peek() As Object Return list.Item(index) End Function End Class
MAINשימוש ב(Stack ADT)אותו דבר כמו שימוש ב
Sub Main() Dim test As New CStack() Dim i As Integer For i = 1 To 5 test.Push(i) Next Console.WriteLine(test.Count) For i = 1 To test.Count Dim num As Integer = test.Pop() Console.WriteLine(num) Next End Sub
)תור(Queueתזכורת
FIFOשימוש ב•–FIFO (First In, First Out) lists. הרשימהבסוףאפשר להוסיף רק –
•Enqueue
הרשימהמהתחלתאפשר להוריד רק –•Dequeue
?QUEUEתרגיל: איך בונים Public Class CQueue Private list As New ArrayList()
Public Function Count() As Integer???
End Function Public Sub Enqueue(ByVal val As Object) ??? End Sub
Public Function Dequeue() As Object ??? End Function
Public Function Peek() As Object ??? End Function
End Class
פתרון אפשריPublic Class CQueue Private list As New ArrayList()
Public Sub New() End Sub Public Function Count() As Integer Return list.Count() End Function Public Sub Enqueue(ByVal val As Object) list.Add(val) End Sub Public Function Dequeue() As Object Dim obj As Object = list.Item(0) list.RemoveAt(0) Return obj End Function Public Function Peek() As Object Return list.Item(0) End Function End Class