Pemrograman Berorientasi Objek (OOP) adalah paradigma pemrograman berdasarkan objek sebagai konsep sentral. Dalam OOP, kode diformat berdasarkan fungsionalitas, memungkinkan pemeliharaan kode, abstraksi, dapat digunakan kembali, efisiensi, dan banyak fungsi pada objek.

Objek memiliki atribut (variabel) yang mendefinisikan karakteristiknya, properti, dan metode (fungsi) yang mendefinisikan tindakan (prosedur) dan perilaku objek.

Pemrograman berorientasi objek di Go berbeda dari bahasa lain. Konsep Berorientasi Objek diimplementasikan di Go menggunakan struct, antarmuka, dan tipe khusus.

Menyesuaikan Jenis di Go

Jenis kustom memudahkan untuk mengelompokkan dan mengidentifikasi kode serupa untuk digunakan kembali.

Kode untuk mendeklarasikan tipe kustom adalah:

Tipe tipeNama tipe data 

Saat membuat jenis khusus dan menetapkan variabel, Anda dapat memeriksa jenisnya menggunakan mencerminkan. Jenis() yang menerima variabel dan mengembalikan tipe variabel.

impor("fmt"
"mencerminkan")
Tipe dua ke dalam
instagram viewer
// membuat tipe "dua"
var nomor dua // variabel bertipe "dua"
fmt. Println (mencerminkan. TypeOf (angka))

​​​

Itu nomor variabel adalah jenis dua yang merupakan bilangan bulat. Anda dapat melangkah lebih jauh untuk membuat lebih banyak jenis kustom.

Membuat Struct di Go

Structs (struktur) adalah cetak biru untuk pemrograman berorientasi objek di Go. Struct adalah kumpulan bidang yang ditentukan pengguna.

Sebuah struct dapat berisi berbagai tipe data, termasuk tipe dan metode gabungan.

Anda dapat membuat struct menggunakan sintaks ini:

Tipe Nama Struktur struktur {
// beberapa kode
}

Secara konvensional, nama struct biasanya dikapitalisasi dan ditutup unta agar mudah dibaca.

Tipe struct mengambil nama field dan tipe data. Struct dapat menerima tipe data Go apa pun, termasuk tipe kustom.

Tipe Pengguna struktur {
bidang1 rangkaian
bidang2 ke dalam
peta lapangan peta[rangkaian]ke dalam
}

Anda dapat membuat instance tipe struct dengan menetapkan struct sebagai variabel.

contoh := Pengguna{
// beberapa kode
}

Instance struct dapat diisi dengan bidang pada instantiasi seperti yang didefinisikan pada inisialisasi atau disetel ke nol.

contoh := Pengguna{
bidang1: "a rangkaian bidang",
bidang2: 10,
peta lapangan: peta[rangkaian]ke dalam{},
}

Mengakses Elemen Struktur

Anda dapat mengakses bidang instance struct menggunakan notasi titik ke bidang.

fmt. Println("Mengakses bidang nilai", instance.field2)

Ini mengeluarkan bidang2 dari instance struct yang dibuat.

Menetapkan Metode ke Struct

Fungsi (metode) ditugaskan ke tipe struct dengan menentukan nama penerima dan nama struct sebelum nama fungsi seperti yang ditunjukkan pada sintaks di bawah ini.

fungsi(Nama Struktur penerima)namafungsi() {
// beberapa kode
}

Metode namafungsi hanya dapat digunakan pada tipe struct yang ditentukan.

Menerapkan Warisan di Go

Warisan adalah kemampuan objek dan tipe untuk mengakses dan menggunakan metode dan atribut objek lain. Go tidak memiliki Inheritance sebagai fitur, tetapi Anda dapat menggunakan komposisi. Di Go, komposisi memerlukan mengacu pada superstruct (struct yang akan diwariskan) dalam substruct dengan memberikan nama superstruct untuk substruct.

Menggunakan contoh struct di atas:

Tipe Pengguna struktur {
bidang1 rangkaian
bidang2 ke dalam
peta lapangan peta[rangkaian]ke dalam
}
Tipe Pengguna2 struktur {
Pengguna
}

Dengan melewati Pengguna nama struktur ke dalam Pengguna2 struktur, itu Pengguna2 struct dapat mengakses semua metode dan atribut dari Pengguna struct pada instantiation kecuali teknik abstraksi yang digunakan.

anak := Pengguna2{
Pengguna{
bidang1: "sayang",
bidang2: 0,
peta lapangan: nol,
},
}
fmt. Println (son.field2)

Itu putra variabel di atas adalah instantiasi dari Pengguna2 struktur. Seperti yang terlihat pada contoh, putra variabel dapat mengakses dan membuat instance nilai dari tipe Pengguna dan menggunakannya.

Enkapsulasi Bidang Jenis di Go

Enkapsulasi, juga dikenal sebagai "penyembunyian informasi," adalah teknik menggabungkan metode dan atribut suatu objek ke dalam unit untuk membatasi penggunaan dan akses kecuali yang ditentukan (mengaktifkan hak baca/tulis).

Enkapsulasi diimplementasikan di Go menggunakan pengidentifikasi yang diekspor dan tidak diekspor dalam paket.

Pengenal yang Diekspor (Baca dan Tulis)

Pengidentifikasi yang diekspor diekspor dari paket yang ditentukan dan akses ke program lain. Kapitalisasi pengidentifikasi bidang mengekspor bidang fo.

Tipe Pengguna struktur {
bidang1 rangkaian
bidang2 ke dalam
Peta Lapangan peta[rangkaian]ke dalam
}
Tipe Pengguna2 struktur {
Pengguna
}

Pengenal yang Tidak Diekspor (Hanya Baca)

Pengidentifikasi yang tidak diekspor tidak diekspor dari paket yang ditentukan dan biasanya menggunakan huruf kecil.

Tipe Pengguna struktur {
bidang1 rangkaian
bidang2 ke dalam
peta lapangan peta[rangkaian]ke dalam
}
Tipe Pengguna2 struktur {
Pengguna
}

Konsep pengidentifikasi yang diekspor dan tidak diekspor juga berlaku untuk metode suatu objek.

Polimorfisme di Go

Polimorfisme adalah teknik yang digunakan untuk memberikan bentuk yang berbeda pada objek untuk fleksibilitas.

Go mengimplementasikan polimorfisme menggunakan antarmuka. Antarmuka adalah tipe khusus yang digunakan untuk mendefinisikan tanda tangan metode.

Mendeklarasikan Antarmuka

Mendeklarasikan antarmuka mirip dengan mendeklarasikan struct. Namun, antarmuka dideklarasikan menggunakan antarmuka kata kunci.

Tipe Nama Antarmuka antarmuka{
//beberapa metode
}

Deklarasi antarmuka berisi metode yang akan diimplementasikan oleh tipe struct.

Menerapkan Antarmuka dalam Struktur

Tipe yang mengimplementasikan antarmuka harus dideklarasikan setelah metode dari tipe mengimplementasikan antarmuka.

// Antarmuka
Tipe Warna antarmuka{
Cat() rangkaian
}
// Mendeklarasikan struct
Tipe Hijau struktur {
// beberapa kode khusus struct
}
Tipe Biru struktur {
// beberapa kode tertentu
}

Cuplikan kode di atas memiliki Warna antarmuka dideklarasikan dengan a Cat metode yang akan dilaksanakan oleh Hijau dan Biru jenis struktur.

Antarmuka diimplementasikan dengan menetapkan metode ke tipe struct dan kemudian memberi nama metode dengan metode antarmuka yang akan diimplementasikan.

fungsi(g Hijau)Cat()rangkaian {
kembali "cat hijau"
}
fungsi(b Biru)Cat()rangkaian {
kembali "cat biru"
}

Metode Paint diimplementasikan oleh tipe Green dan Blue yang sekarang dapat memanggil dan menggunakan Cat metode.

sikat := Hijau{}
fmt. Println (kuas. Cat())

"Dicat hijau" dicetak pada konsol yang memvalidasi bahwa antarmuka berhasil diterapkan.

Mengabstraksi Bidang di Go

Abstraksi adalah proses menyembunyikan metode dan atribut yang tidak penting dari suatu tipe, membuatnya lebih mudah untuk mengamankan bagian program dari penggunaan yang tidak wajar dan tidak disengaja.

Go tidak menerapkan abstraksi langsung; namun, Anda dapat bekerja dengan cara kami melalui penerapan abstraksi menggunakan antarmuka.

// manusia bisa berlari
Tipe Manusia antarmuka {
Lari() rangkaian
}
// Anak laki-laki adalah manusia dengan kaki
Tipe Anak laki-laki struktur {
Kaki rangkaian
}
// metode pada anak laki-laki mengimplementasikan metode run dari antarmuka Manusia
fungsi(h Laki-laki)Lari()rangkaian {
kembali h. Kaki
}

Kode di atas membuat Manusia antarmuka dengan Lari antarmuka yang mengembalikan string. Itu Anak laki-laki jenis mengimplementasikan Lari metode Manusia interface dan mengembalikan string pada instantiasi.

Salah satu cara untuk mengimplementasikan abstraksi adalah dengan membuat sebuah struct mewarisi antarmuka yang metodenya akan diabstraksikan. Ada banyak pendekatan lain, tetapi ini yang paling mudah.

Tipe Orang struktur {
Nama rangkaian
Usia ke dalam
Status Manusia
}
fungsiutama() {
person1 := &Laki-laki{Kaki: "dua kaki"}
orang2 := &Orang{ // contoh seseorang
Nama: "amin",
Usia: 19,
Status: orang1,
}
fmt. Println (orang. Status.run())
}

Itu Orang struct mewarisi Manusia antarmuka dan dapat mengakses semua metodenya menggunakan variabel Status mewarisi antarmuka.

Pada instantiasi dengan referensi (menggunakan pointer), instance dari Orang struktur orang2 referensi sebuah contoh dari Anak laki-laki struktur orang1 dan mendapatkan akses ke metode.

Dengan cara ini, Anda dapat menentukan metode spesifik yang akan diterapkan oleh tipe.

Pemrograman OOP vs Fungsional

Pemrograman berorientasi objek adalah paradigma penting karena memberi Anda lebih banyak kendali atas program Anda dan mendorong penggunaan kembali kode dengan cara yang tidak dilakukan pemrograman fungsional.

Ini tidak membuat pemrograman fungsional menjadi pilihan yang buruk, karena pemrograman fungsional dapat membantu dan lebih baik untuk beberapa kasus penggunaan.

Apa itu Pemrograman Berorientasi Objek? Dasar-dasar Dijelaskan dalam Istilah Awam

Baca Selanjutnya

MembagikanMenciakMembagikanSurel

Topik-topik yang berkaitan

  • Pemrograman
  • Pemrograman berorientasi objek

Tentang Penulis

Ukeje Chukwuemeriwo Kebaikan (2 Artikel Diterbitkan)

Goodness adalah seorang penulis teknis, pengembang backend, dan analis data, menyederhanakan berbagai topik teknologi saat ia menjelajahi bidang yang menarik ini.

More From Ukeje Chukwuemeriwo Kebaikan

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan