Menu
CoddyTech

Định nghĩa lớp

Thuộc phần Lập trình hướng đối tượng trong hành trình Swift của Coddy. Bài học 2 trên 57.

Một lớp mô tả một loại đối tượng: dữ liệu mà mỗi đối tượng lưu giữ và những gì nó có thể làm. class Dog { ... } khai báo kiểu, còn Dog() tạo một đối tượng thuộc kiểu đó, cũng gọi là một instance:

class Dog {
    var name = "Rex"
    var age = 3
}

let dog = Dog()
print(dog.name)
print(dog.age)

Đầu ra:

Rex
3

Các biến bên trong một lớp là thuộc tính của lớp đó. Mỗi đối tượng có bản sao riêng, có thể đọc và thay đổi bằng dấu chấm:

class Dog {
    var name = "Rex"
    var age = 3
}

let first = Dog()
let second = Dog()
second.name = "Bella"
print(first.name)
print(second.name)

Đầu ra:

Rex
Bella

Một hàm bên trong một lớp là một phương thức (method). Phương thức có thể đọc và thay đổi các thuộc tính của instance mà nó được gọi trên đó:

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())

Đầu ra:

count is 2

Tên kiểu được viết theo dạng UpperCamelCase (BankAccount); thuộc tính và phương thức được viết theo dạng lowerCamelCase (balance, deposit()). Gộp dữ liệu và các hàm thao tác trên dữ liệu vào cùng một kiểu là ý tưởng cốt lõi của lập trình hướng đối tượng: code sử dụng Counter gọi increment() và không cần biết cách lưu số đếm.

class BankAccount {
    var balance = 0

    func deposit(_ amount: Int) {
        balance += amount
    }
}
challenge icon

Thử thách

Dễ

Hoàn thiện phương thức describe() của lớp Pet. Phương thức này trả về một câu được tạo từ các thuộc tính: thú cưng tên Rex, loài dog, tuổi 3 sẽ cho ra Rex is a 3 year old dog.

Code được cung cấp tạo một đối tượng Pet, đặt các thuộc tính của đối tượng từ đầu vào (tên, loài, tuổi) rồi in ra kết quả của describe().

Code của bạn nằm trong Pet.swift. main.swift chứa code đầu vào/đầu ra được cung cấp và không thể chỉnh sửa.

Tự làm thử

// Đoạn code đầu vào/đầu ra có sẵn: giữ nguyên
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())
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Playground Swift