/ / Cách triển khai khái niệm lập trình hướng đối tượng trong Go

Cách triển khai khái niệm lập trình hướng đối tượng trong Go

Lập trình hướng đối tượng (OOP) là một mô hình lập trình dựa trên các đối tượng làm khái niệm trung tâm. Trong OOP, mã được định dạng dựa trên chức năng, cho phép bảo trì mã, trừu tượng hóa, khả năng tái sử dụng, hiệu quả và nhiều chức năng trên đối tượng.

Đối tượng có các thuộc tính (biến) xác định các đặc điểm, thuộc tính và phương thức (hàm) xác định các hành động (thủ tục) và hành vi của đối tượng.

Lập trình hướng đối tượng trong Go khác với các ngôn ngữ khác. Các khái niệm hướng đối tượng được triển khai trong Go bằng cách sử dụng cấu trúc, giao diện và các kiểu tùy chỉnh.


Tùy chỉnh các loại trong Go

Các loại tùy chỉnh giúp dễ dàng nhóm và xác định mã tương tự để sử dụng lại.

Mã để khai báo các loại tùy chỉnh là:

type typeName dataType 

Khi tạo loại tùy chỉnh và chỉ định một biến, bạn có thể kiểm tra loại bằng cách sử dụng phản ánh.TypeOf () nhận vào một biến và trả về kiểu của biến.

import( "fmt"
"reflect")
type two int
var number two
fmt.Println(reflect.TypeOf(number))

LÀM VIDEO TRONG NGÀY

​​​

Các con số biến là một loại hai là một số nguyên. Bạn có thể đi xa hơn để tạo thêm loại tùy chỉnh.

Tạo cấu trúc trong Go

Structs (cấu trúc) là bản thiết kế cho lập trình hướng đối tượng trong Go. Cấu trúc là tập hợp các trường do người dùng xác định.

Một cấu trúc có thể chứa nhiều kiểu dữ liệu khác nhau, bao gồm cả kiểu phức hợp và phương thức.

Bạn có thể tạo một cấu trúc bằng cú pháp sau:

type StructName struct {
}

Thông thường, tên cấu trúc thường được viết hoa và viết hoa camel để dễ đọc.

Kiểu cấu trúc lấy tên trường và kiểu dữ liệu. Các cấu trúc có thể nhận bất kỳ loại dữ liệu Go nào, bao gồm cả các loại tùy chỉnh.

type User struct {
field1 string
field2 int
fieldMap map[string]int
}

Bạn có thể khởi tạo một kiểu cấu trúc bằng cách gán cấu trúc dưới dạng một biến.

instance := User{
}

Cá thể cấu trúc có thể được điền với các trường trên phần khởi tạo như được xác định lúc khởi tạo hoặc được đặt thành null.

instance := User{
field1: "a string field",
field2: 10,
fieldMap: map[string]int{},
}

Truy cập các phần tử cấu trúc

Bạn có thể truy cập các trường của một cá thể cấu trúc bằng cách sử dụng ký hiệu dấu chấm cho trường.

fmt.Println("Accessing a field of value", instance.field2)

Điều này xuất ra field2 của cá thể cấu trúc được khởi tạo.

Gán phương thức cho cấu trúc

Các hàm (phương thức) được gán cho các kiểu cấu trúc bằng cách chỉ định tên bộ thu và tên cấu trúc trước tên hàm như trong cú pháp dưới đây.

func (receiver StructName) functionName() {
}

Phương pháp Tên chức năng chỉ có thể được sử dụng trên loại cấu trúc được chỉ định.


Triển khai Kế thừa trong Go

Tính kế thừa là khả năng của các đối tượng và kiểu truy cập và sử dụng các phương thức và thuộc tính của các đối tượng khác. Go không có Tính năng thừa kế, nhưng bạn có thể sử dụng các tác phẩm sáng tác. Trong Go, thành phần yêu cầu tham chiếu đến một cấu trúc thượng tầng (cấu trúc được kế thừa) trong một cấu trúc con bằng cách cung cấp tên của cấu trúc thượng tầng cho cấu trúc con.

Sử dụng ví dụ về cấu trúc ở trên:

type User struct {
field1 string
field2 int
fieldMap map[string]int
}
type User2 struct {
User
}

Bằng cách vượt qua Người dùng tên cấu trúc thành Người dùng2 struct, the Người dùng2 struct có thể truy cập tất cả các phương thức và thuộc tính của Người dùng cấu trúc trên khởi tạo ngoại trừ các kỹ thuật trừu tượng được sử dụng.

son := User2{
User{
field1: "baby",
field2: 0,
fieldMap: nil,
},
}
fmt.Println(son.field2)


Các Con trai biến ở trên là phần khởi tạo của Người dùng2 cấu trúc. Như đã thấy trong ví dụ, Con trai biến có thể truy cập và khởi tạo các giá trị của kiểu Người dùng và sử dụng chúng.

Đóng gói các trường loại trong Go

Đóng gói, còn được gọi là “ẩn thông tin”, là một kỹ thuật gói các phương thức và thuộc tính của một đối tượng thành các đơn vị để hạn chế việc sử dụng và truy cập ngoại trừ được chỉ định (cho phép đặc quyền đọc / ghi).

Quá trình đóng gói được thực hiện trong Go bằng cách sử dụng các mã định danh đã xuất và chưa được xuất trong các gói.

Số nhận dạng đã xuất (Đọc và Ghi)

Các số nhận dạng đã xuất được xuất từ ​​các gói đã xác định của chúng và quyền truy cập vào các chương trình khác. Viết hoa số nhận dạng trường sẽ xuất trường fo.

type User struct {
Field1 string
Field2 int
FieldMap map[string]int
}
type User2 struct {
User
}


Số nhận dạng chưa được báo cáo (Chỉ đọc)

Các số nhận dạng chưa được báo cáo không được xuất từ ​​gói đã xác định và được viết thường theo quy ước.

type User struct {
field1 string
field2 int
fieldMap map[string]int
}
type User2 struct {
User
}

Khái niệm về số nhận dạng được xuất và chưa được xuất cũng áp dụng cho các phương thức của một đối tượng.

Đa hình trong cờ vây

Đa hình là một kỹ thuật được sử dụng để cung cấp các hình thức khác nhau cho một đối tượng để tạo sự linh hoạt.

Go triển khai tính đa hình bằng cách sử dụng các giao diện. Giao diện là các kiểu tùy chỉnh được sử dụng để xác định chữ ký phương thức.

Khai báo giao diện

Khai báo interface tương tự như khai báo cấu trúc. Tuy nhiên, các giao diện được khai báo bằng cách sử dụng giao diện từ khóa.

type InterfaceName interface{
}

Khai báo giao diện chứa các phương thức được thực hiện bởi các kiểu cấu trúc.

Triển khai giao diện trong cấu trúc

Các kiểu triển khai giao diện phải được khai báo sau đó các phương thức của kiểu thực hiện giao diện.


type Color interface{
Paint() string
}
type Green struct {
}
type Blue struct {
}

Đoạn mã trên có một Màu sắc giao diện được khai báo với Sơn phương pháp được thực hiện bởi Màu xanh láMàu xanh da trời các loại cấu trúc.

Các giao diện được thực hiện bằng cách gán các phương thức cho các kiểu cấu trúc và sau đó đặt tên cho phương thức theo phương thức giao diện được thực hiện.

func (g Green) Paint() string {
return "painted green"
}
func (b Blue) Paint() string {
return "painted blue"
}

Phương thức Paint được thực hiện bởi các loại Green và Blue, hiện có thể gọi và sử dụng Sơn phương pháp.

brush := Green{}
fmt.Println(brush.Paint())

“Màu xanh lá cây sơn” được in trên bảng điều khiển xác thực rằng giao diện đã được triển khai thành công.

Các trường trừu tượng trong Go

Trừu tượng hóa là quá trình ẩn các phương thức và thuộc tính không quan trọng của một kiểu, giúp dễ dàng bảo mật các phần của chương trình khỏi việc sử dụng bất thường, ngoài ý muốn.

Go không có tính trừu tượng được triển khai ngay lập tức; tuy nhiên, bạn có thể làm việc theo cách của chúng tôi thông qua việc triển khai tính trừu tượng bằng cách sử dụng các giao diện.


type Human interface {
run() string
}
type Boy struct {
Legs string
}
func (h Boy) run() string {
return h.Legs
}

Đoạn mã trên tạo ra một Nhân loại giao diện với một chạy giao diện trả về một chuỗi. Các Cậu bé loại thực hiện chạy phương pháp của Nhân loại giao diện và trả về một chuỗi khi khởi tạo.

Một trong những cách để thực hiện trừu tượng hóa là làm cho một cấu trúc kế thừa giao diện mà các phương thức của nó sẽ được trừu tượng hóa. Có nhiều cách tiếp cận khác, nhưng đây là cách dễ nhất.

type Person struct {
Name string
Age int
Status Human
}
func main() {
person1 := &Boy{Legs: "two legs"}
person2 := &Person{
Name: "amina",
Age: 19,
Status: person1,
}
fmt.Println(person.Status.run())
}

Các Người struct kế thừa Nhân loại giao diện và có thể truy cập tất cả các phương thức của nó bằng cách sử dụng biến Tình trạng kế thừa giao diện.

Khi khởi tạo bằng tham chiếu (sử dụng con trỏ), phiên bản của Người cấu trúc Person2 tham chiếu đến một trường hợp của Cậu bé cấu trúc Person1 và có quyền truy cập vào các phương pháp.

Bằng cách này, bạn có thể chỉ định các phương pháp cụ thể được thực hiện theo kiểu.

OOP so với lập trình chức năng

Lập trình hướng đối tượng là một mô hình quan trọng vì nó cho phép bạn kiểm soát chương trình của mình nhiều hơn và khuyến khích sử dụng lại mã theo những cách mà lập trình chức năng không làm.

Điều này không làm cho lập trình chức năng trở thành một lựa chọn tồi, vì lập trình chức năng có thể hữu ích và tốt hơn cho một số trường hợp sử dụng.


lập trình hướng đối tượng bên trong

Lập trình hướng đối tượng là gì? Những điều cơ bản được giải thích trong các điều khoản của Cư sĩ

Đọc tiếp


Giới thiệu về tác giả

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *