15
תתתתתתclasses

מחלקות classes

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

Page 1: מחלקות classes

מחלקותclasses

Page 2: מחלקות classes

Structureתזכורת - :סינטקס

Structure שם המבנה

1משתנה

2משתנה

...End Structure

:דוגמאStructure Oved Dim name As String Dim maskoret As Integer End Structure

מתאים כאשר רוצים לאגוד ביחד מספר משתנים שיש ביניהם קשר

ואם רוצים להוסיף יכולת לבצע "פעילויות" שקשורות למבנה?

Page 3: מחלקות classes

class מחלקה

מחלקה משמשת לאיגוד קבוצה של משתנים ופעולות •)הנקראות מתודות(

למחלקה יש אוסף של משתנים•

המתודות של המחלקה פועלות על המשתנים של •המחלקה

(constructor )בנאימתודה מיוחדת הנקראת •מגדירה מה קורה כאשר נוצר אוביקט חדש של המחלקה–

Page 4: מחלקות classes

גישה לחלקי המחלקה

Privateהמשתנים מוגדרים כפרטיים •רק מתודות של המחלקה יכולות להשתמש בהם–המתודות מכירות את כל המשתנים של המחלקה–

Publicהמתודות מוגדרות כפומביות •אפשר להשתמש במתודות מחוץ למחלקה–

מתודות

תכונות

main

מחלקה

Page 5: מחלקות classes

class של מחלקה סינטקס Public Class שם המחלקה

Private 1משתנה

Private 2משתנה

...Public Sub New()Public Function 1 כותרת הפונקציה …..Public Function2 כותרת הפונקציה…..…Public Sub 1 כותרת הפונקציה …..Public Sub 2כותרת הפונקציה ….…

End Class

Page 6: מחלקות classes

עובד כמחלקה 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

Page 7: מחלקות classes

"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

Page 8: מחלקות classes

מבני הנתוניםStack, queue, linked list

כמחלקות

Page 9: מחלקות classes

)מחסנית(Stackתזכורת –LIFOשימוש ב•

–LIFO (Last In, First Out) lists. בסוףאפשר להוסיף רק –

הרשימה•PUSH

הרשימהמסוףאפשר להוריד רק –•POP

Page 10: מחלקות classes

להמציא מחדש את הגלגל – ראינו קודם

)שימוש בפונקציות(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

Page 11: מחלקות classes

להמציא מחדש את הגלגלעם מחלקות

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

Page 12: מחלקות classes

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

Page 13: מחלקות classes

)תור(Queueתזכורת

FIFOשימוש ב•–FIFO (First In, First Out) lists. הרשימהבסוףאפשר להוסיף רק –

•Enqueue

הרשימהמהתחלתאפשר להוריד רק –•Dequeue

Page 14: מחלקות classes

?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

Page 15: מחלקות classes

פתרון אפשרי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