Hotline: 0919 365 363; Email: daotao@r2s.edu.vn

Class trong swift – Swift Classes

Class trong swift – Swift Classes

Kiến thức hữu ích

Class trong swift – Swift Classes

Giống như các ngôn ngữ lập trình khác, class trong swift là khuôn mẫu để tạo ra đối tượng. Bên trong của một class bao gồm một hoặc nhiều thuộc tính (properties) và một hoặc nhiều phương thức.

Class trong swift được tạo ra và cho phép kế thừa. Điều này có nghĩa là tạo ra một lớp mới để thừa kế các thuộc tính và phương thức từ một lớp khác.

Class trong swift là gì ?

class trong swift

Trong Swift, một class là một kiểu dữ liệu tự định nghĩa cho phép bạn đóng gói dữ liệu và phương thức liên quan vào một đơn vị duy nhất. 

Class cung cấp một cách để tạo ra đối tượng (object) – một phiên bản cụ thể của lớp đó – và chứa các thuộc tính (properties) và phương thức (methods) để thao tác với đối tượng đó. 

Class cũng hỗ trợ các khái niệm như kế thừa (inheritance), đa hình (polymorphism) và truy cập kiểu tham chiếu (reference type). Nhờ vào class, bạn có thể xây dựng các dự án phức tạp và có cấu trúc trên nền tảng Swift.

Cú pháp

class classname {
   // Khai báo thuộc tính
   // Khai báo và định nghĩa phương thức (hàm)
}

Ví dụ của class trong swift

class Student {
   var studentID: Int = 0
   var studentName: String = ""
   var mark: Float = 0
}

Cú pháp tạo đối tượng (instance) của class trong swift

let s = Student()

Truy cập thuộc tính (Accessing Class Properties) của class trong swift

class trong swift

Thuộc tính của một class có thể được truy cập bởi cú pháp ‘.‘. Tên thuộc tính của class được phân cách bởi một dấu ‘.’ sau tên của đối tượng (instance name)

class StudentMarks {
   // Khai báo thuộc tính
   var diemToan = 8
   var diemLy = 9
   var diemHoa = 10
}

// Tạo thể hiện (object)
let sm = StudentMarks()

// Truy cập các thuộc tính của class
print("Điểm toán là \(sm.diemToan)")
print("Điểm lý là \(sm.diemLy)")
print("Điểm hoá là \(sm.diemHoa)")>

Khi chạy ứng dụng trên, chúng ta sẽ nhận được kết quả sau đây

Điểm toán là 8
Điểm lý là 9
Điểm hoá là 10

Lớp con và lớp cha (Subclass and Superclass) của class trong swift

Lớp con và lớp cha

Khi chúng ta xây dựng một lớp mới kế thừa lớp cũ đã có thì hai lớp này sẽ là lớp con và lớp cha của nhau. Ví dụ chúng ta đã có lớp Person và tạo ra một lớp Employee kế thừa lớp Person.

Trong trường hợp này Person sẽ được gọi là Superclass (lớp cha) và Employee sẽ được gọi là Subclass (lớp con). Một lớp có thể có nhiều lớp con nhưng một lớp thì chỉ được phép có một lớp cha (đơn thừa kế).

Để khai báo một lớp là con của lớp khác thì chúng ta thêm một dấu hai chấm (:). Sau đây là ví dụ

Tạo ra lớp Person

class Person {

  var id : Int = 0
  var name : String = "Gia Sư Tin Học"

  func display () {
    print("ID = \(id)")
    print("Name = \(name)")
  }
}

Tạo ra lớp Employee kế thừa lớp Person

class Employee : Person {

  var diploma : String = "Ths"

  func show () {
    print("Diploma = \(diploma)")
  }

  func displayInfo() {
    super.display()
    self.show()
  }
}

Tạo ra một thể hiện của lớp Employee

// Tạo đối tượng
let gsth = Employee()

// Gọi phương thức của lớp cha
print("Thông tin hiển thị sử phương thức của lớp Person")
gsth.display()  //inheritance from Quadruped

// Gọi phương thức của con
print("Thông tin hiển thị sử dụng phương thức của lớp Employee")

gsth.displayInfo();

Overriding method của class trong swift

Trong Swift, khi một phương thức được kế thừa từ lớp cha và phương thức này được định nghĩa lại ở lớp con thì sẽ được gọi là overriding method. Phương thức đã được định nghĩa lại phải thêm từ khoá override trong phần khai báo. Sau đây là ví dụ:

class DongVat4Chan {
  func go () {
    print("Di chuyển bằng 4 chân")
  }
}

class ConCho : DongVat4Chan {
  override func go () {
    print("Con chó đi bằng 4 chân")
  }
}

Tạo thể hiện và gọi phương thức

let pq = ConCho()
pq.go()

Phương thức khởi tạo (Initialization) của class trong swift

Tương tự như Java, phương thức khởi tạo trong Swift được sử dụng để thiết lập giá trị ban đầu cho các thuộc tính khi tạo thể hiện của class. Trong Swift để khai báo phương thức khởi tạo, chúng ta phải sử dụng từ khoá init

Phương thức khởi tạo không có tham số

Cú pháp

init() { 
  // Khởi tạo giá trị cho các thuộc tính
}

Ví dụ

class DoF {

  var nhietdo: Float

  init() {
    nhietdo = 23.0
  }
}

// Tạo thể hiện
var df = DoF()

// Hiển thị nhiệt độ
print("Nhiệt độ mặc định là \(df.nhietdo)")

Phương thức khởi tạo có tham số

Cú pháp

init (Danh sách tham số) {  
 // Khởi tạo giá trị cho các thuộc tính theo tham số
}

Ví dụ 1

class DoC {

 var nhietdo: Float

 init(nd : Float) {
    nhietdo = nd
 }

}

// Tạo đối tượng

let dc = DoC(nd : 100)
print("Độ C hiện tại là \(dc.nhietdo)")

Ví dụ 2

class MyColor {

  var redColor, greenColor, blueColor: Int

  init(redColor: Int, greenColor: Int, blueColor: Int) {
   self.redColor = redColor
   self.greenColor = greenColor
   self.blueColor = blueColor
 }
}

// Tạo đối tượng
let mc = MyColor(redColor: 255, greenColor: 255, blueColor: 255)

Gọi phương thức khởi tạo của lớp cha

Ví dụ

class NewPerson {

  var id : Int

  init(id : Int) {
    self.id = id
  }
}

class NewEmployee : NewPerson {

  var name : String

  init(id : Int, name : String) {
    self.name = name

    // Gọi phương thức khởi tạo của lớp cha
    super.init(id:id)
 }
}

let ne1 = NewEmployee(id: 7, name: "giasutinhoc.vn")
print("Mã nhân viên: \(ne1.id)")
print("Tên nhân viên: \(ne1.name)")

Kết quả hiển thị trong playground

Kết quả hiển thị trong playground

Bài tập thực hành

Tạo ra một ứng dụng sử dụng class và kế thừa để cài đặt một phần mềm. Ứng dụng bao gồm các class sau đây

Lớp Game có các thuộc tính để lưu lại thông tin của người chơi như name, age, gender, …

Lớp TestMatch kế thừa lớp Game và có hàm Float calculateIncome(String numGames) để tính thu nhập của người chơi. Giả sử ở cấp độ Test game có 5 game. Game 1 có số tiền nhận được là 100$, game 2 có số tiền nhận được là 200$, ….Hàm Float calculateBonus(String performance, String grade) để tính tiền thưởng phải dựa vào hiệu suất (performance) trong một trận đấu và hạng (grade). Hiệu suất có bao gồm good, average và best. Hạng có bao gồm A, B và C. Giả sử hiệu suất là good và hạng A vậy thì tiền thưởng là 10$, …

Lớp WorldCup kế thừa của lớp Game và cũng có hàm Float calculateIncome(String numGames) để tính thu nhập và hàm Float calculateBonus(String performance, String grade) tiền thưởng của người chơi đang ở cấp độ WorldCup. Cách tính thu nhập và tiền thưởng giống TestMatch tuy nhiên số tiền sẽ cao hơn.

Lớp Player có một hàm displayDetails(String match) để hiển thị các thông tin của người chơi. Trong hàm displayDetails(String match) sẽ gọi hàm  calculateIncome() và  calculateBonus() của lớp TestMatch hoặc lớp WorldCup dựa vào match và được chỉ định bởi người dùng.

Tổng kết

Như vậy, qua bài viết về class trong swift trên đây, R2S chúng tôi đã giúp bạn hiểu được về lớp, đối tượng, thuộc tính, kế thừa, định nghĩa lại phương thức, phương thức khởi tạo

Đừng quên bỏ lỡ bất cứ bài viết nào của chúng tôi để học thêm nhiều kiến thức hữu ích về lập trình giao diện trong lập trình swift nhé.

Hãy đến website của R2S để có thể tìm hiểu sâu hơn vào lập trình và công nghệ thông tin để có thêm nhiều kiến thức về nó hơn nha. 

Bài viết gốc được đăng tải tại giasutinhoc.vn

Alert: You are not allowed to copy content or view source !!