Lớp và đối tượng trong Swift
1. Class đầu tiên của bạn
Swift là một ngôn ngữ kế thừa ngôn ngữ C và Objective-C, nó vừa là một ngôn ngữ hướng thủ tục, vừa là một ngôn ngữ hướng đối tượng. Lớp (Class) chính là một khái niệm của các ngôn ngữ lập trình hướng đối tượng. Lớp có các thuộc tính và các phương thức, về bản chất phương thức (method) được hiểu là một hàm của lớp. Từ một lớp bạn có thể tạo ra các đối tượng.
Swift sử dụng từ khóa class để khai báo một lớp.
Tạo một file nguồn Rectangle.swift:
Rectangle.swift
import Foundation
class Rectangle {
// width property
var width: Int = 5;
// height property
var height: Int = 10;
// Constructor mặc định (Không tham số)
// (Được sử dụng để tạo ra đối tượng)
init() {
}
// Một Constructor có 2 tham số.
// (Được sử dụng để tạo ra đối tượng)
// self.width trỏ tới thuộc tính (property) width của lớp.
init (width: Int, height: Int) {
self.width = width
self.height = height
}
// Phương thức dùng để tính diện tích hình chữ nhật.
func getArea() -> Int {
var area = self.width * self.height
return area
}
}
Đoạn code sử dụng lớp Rectangle để tạo ra các đối tượng.
RectangleTest.swift
import Foundation
func test_rectangle() {
print("Create a Rectangle rec1");
// Tạo một đối tượng Rectangle
// thông qua Constructor mặc định: init()
var rec1 = Rectangle()
// In ra width, height.
print("rec1.width = \(rec1.width)")
print("rec1.height = \(rec1.height)")
// Gọi phương thức để tính diện tích.
var area1 = rec1.getArea()
print("area1 = \(area1)")
print("---------")
print("Create a Rectangle rec2");
// Tạo đối tượng Rectangle
// thông qua Constructor có 2 tham số: init(Int,Int)
var rec2 = Rectangle(width: 10, height: 15)
// In ra width, height.
print("rec2.width = \(rec2.width)")
print("rec2.height = \(rec2.height)")
// Gọi phương thức để tính diện tích.
var area2 = rec2.getArea()
print("area2 = \(area2)")
}
Sửa file main.swift để test ví dụ:
main.swift
import Foundation
test_rectangle()
Chạy ví dụ:
Create a Rectangle rec1
rec1.width = 5
rec1.height = 10
area1 = 50
----------
Create a Rectangle rec2
rec2.width = 10
rec3.height = 15
area2 = 150
Bây giờ bạn cần xem các giải thích về lớp, nó vô cùng quan trọng.
Điều gì xẩy ra khi bạn tạo một đối tượng theo phương thức tạo đối tượng mặc định (default constructor)?
Tạo đối tượng Rectangle bằng phương thức tạo đối tượng 2 tham số.
2. Quy tắc gọi Constructor
Quy tắc Swift 2.1 gọi hàm (function), phương thức (method), và phương thức khởi tạo (constructor):
- Tham số đầu tiên truyền cho hàm (hoặc phương thức) không yêu cầu nhãn tham số (Label)
- Các tham số khác truyền cho hàm (hoặc phương thức) yêu cầu phải có nhãn tham số.
- Tất cả các tham số truyền vào cho Constructor yêu cầu phải có nhãn tham số (Label)
3. Toán tử so sánh đối tượng
Trong Swift, khi bạn tạo một đối tượng thông qua phương thức khởi tạo (Constructor) sẽ có một thực thể thực sự được tạo ra nằm trên bộ nhớ, nó có một địa chỉ xác định.
Một phép toán gán đối tượng AA bởi một đối tượng BB không tạo ra thêm thực thể trên bộ nhớ, nó chỉ là trỏ địa chỉ của AA tới địa chỉ của BB.
Một phép toán gán đối tượng AA bởi một đối tượng BB không tạo ra thêm thực thể trên bộ nhớ, nó chỉ là trỏ địa chỉ của AA tới địa chỉ của BB.
Toán tử === dùng để so sánh địa chỉ 2 đối tượng trỏ đến, nó trả về true nếu cả 2 đối tượng cùng trỏ tới cùng một địa chỉ trên bộ nhớ. Toán tử !== cũng sử dụng để so sánh 2 địa chỉ của 2 đối tượng trỏ đến, nó trả về true nếu 2 đối tượng trỏ tới 2 địa chỉ khác nhau.
IdentifyOperator.swift
import Foundation
func identifyOperator() {
// Tạo đối tượng: r1
var r1 = Rectangle(width: 20,height: 10)
// Tạo đối tượng: r2
var r2 = Rectangle(width: 20,height: 10)
var r3 = r1
var b12:Bool = r1 === r2
var b13:Bool = r1 === r3
print("r1 === r2 ? \(b12)") // false
print("r1 === r3 ? \(b13)") // true
var bb12: Bool = r1 !== r2
var bb13: Bool = r1 !== r3
print("r1 !== r2 ? \(b12)") // true
print("r1 !== r3 ? \(b13)") // false
}
Chạy ví dụ:
r1 === r2 ? false
r1 === r3 ? true
r1 !== r2 ? false
r1 !== r3 ? true
Các hướng dẫn lập trình Swift
- Cài đặt Mac OS X 10.11 El Capitan trong VMWare
- Cài đặt XCode
- Hướng dẫn lập trình Swift cho người mới bắt đầu
- Hướng dẫn và ví dụ Swift Function
- Hướng dẫn và ví dụ Swift Closure
- Lớp và đối tượng trong Swift
- Hướng dẫn và ví dụ Swift Enum
- Hướng dẫn và ví dụ Swift Struct
- Lập trình theo nhóm sử dụng XCode và SVN
Show More