הגדרת מחלקות
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Swift של Coddy. שיעור 2 מתוך 57.
מחלקה מתארת סוג של אובייקט: את הנתונים שכל אובייקט מכיל ואת הדברים שהוא יכול לעשות. class Dog { ... } מגדירה את הטיפוס, ו-Dog() יוצרת אובייקט מהטיפוס הזה, שנקרא גם מופע:
class Dog {
var name = "Rex"
var age = 3
}
let dog = Dog()
print(dog.name)
print(dog.age)פלט:
Rex
3המשתנים בתוך מחלקה הם המאפיינים שלה. לכל מופע יש עותק משלו, שקוראים ומשנים באמצעות נקודה:
class Dog {
var name = "Rex"
var age = 3
}
let first = Dog()
let second = Dog()
second.name = "Bella"
print(first.name)
print(second.name)פלט:
Rex
Bellaפונקציה בתוך מחלקה היא מתודה. מתודה יכולה לקרוא את המאפיינים של המופע שעליו היא נקראת ולשנות אותם:
class Counter {
var count = 0
func increment() {
count += 1
}
func report() -> String {
"count is \(count)"
}
}
let clicks = Counter()
clicks.increment()
clicks.increment()
print(clicks.report())פלט:
count is 2שמות טיפוסים נכתבים ב־UpperCamelCase (BankAccount); מאפיינים ומתודות נכתבים ב־lowerCamelCase (balance, deposit()). הצבת הנתונים והפונקציות שפועלות עליהם בתוך טיפוס אחד היא הרעיון המרכזי של תכנות מונחה עצמים: קוד שמשתמש ב־Counter קורא ל־increment() ולעולם אינו צריך לדעת איך הספירה מאוחסנת.
class BankAccount {
var balance = 0
func deposit(_ amount: Int) {
balance += amount
}
}אתגר
קלהשלימו את המתודה describe() של המחלקה Pet. היא מחזירה משפט אחד שנבנה מהמאפיינים: חיית מחמד בשם Rex, מסוג dog, בת 3 מחזירה את Rex is a 3 year old dog.
הקוד שסופק יוצר Pet, מגדיר את המאפיינים שלה מתוך הקלט (שם, מין, גיל) ומדפיס את התוצאה של describe().
הקוד שלכם יופיע ב-Pet.swift. הקובץ main.swift מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.
נסו בעצמכם
// קוד הקלט/פלט שסופק: יש להשאיר אותו כפי שהוא
var input: [String] = []
while let line = readLine() { input.append(line) }
let pet = Pet()
pet.name = input[0]
pet.species = input[1]
pet.age = Int(input[2])!
print(pet.describe())
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
תרגלו בעצמכם: Swift אונליין