GNU/Linux >> Belajar Linux >  >> Linux

Cara:Pemrograman Berorientasi Objek – Lebih Banyak dengan Kelas dan Objek

Bonus Putaran

Selamat datang kembali di Pengantar Pemrograman Berorientasi Objek! Mungkin akan lebih tepat untuk mengatakan, "Selamat datang di Putaran Bonus Pengenalan Pemrograman Berorientasi Objek kami!". Artikel ini dan artikel berikutnya adalah untuk Anda yang ingin belajar lebih banyak tentang beberapa dasar Orientasi Objek dan yang menikmati beberapa konten bonus!

Untuk meninjau, jika Anda telah mengikuti beberapa dari lima artikel pertama dalam seri ini, maka Anda telah mempelajari beberapa hal:

  • Bagaimana abstraksi membantu menyederhanakan tugas pemrograman.
  • Dasar-dasar kelas, metode, dan properti orientasi objek.
  • Dasar-dasar bekerja dengan variabel dan tipe serta memanipulasi data tersebut.
  • Cara menangani kontrol aliran dengan for dan while loop.
  • Cara menggabungkan semua ini untuk membuat program sederhana.

Artikel ini dan artikel berikutnya akan mengambil apa yang telah Anda pelajari dari pendahuluan itu dan menunjukkan lebih banyak tentang bagaimana Anda dapat menggunakan beberapa prinsip orientasi objek (sering disingkat OO) untuk membuat kode yang efisien dan terorganisir dengan baik. Kami akan memulai dengan program baru yang memungkinkan kami meninjau beberapa konsep dasar dan mengarah ke beberapa konsep baru, seperti konstruktor dan warisan .

Sekali lagi, kami akan memprogram dalam C# menggunakan Microsoft Visual Studio. Jika Anda ingin mengikuti (dan belum melakukannya), Anda dapat menemukan penyiapannya di sini.

Jika Anda mengikuti penyiapan dalam artikel itu hingga bagian “Di Balik Terpal”, Anda akan berada tepat di tempat kami akan memulai. Satu-satunya hal yang akan saya lakukan secara berbeda dari artikel itu adalah bahwa saya tidak akan menggunakan nama proyek default "ConsoleApplication1". Sebagai gantinya, saya akan menyebut proyek saya “PettingZoo” (dalam satu kata) karena kami akan membangun kebun binatang sebagai contoh program kami.

Catatan:Orientasi objek tersedia dalam banyak bahasa dan platform, dan konsepnya sangat mirip. Saya telah memilih C# karena mudah untuk memulai dan semua sumber daya yang Anda butuhkan gratis. Anda mungkin memiliki bahasa dan platform lain yang ingin Anda gunakan, dan itu juga bagus. Kami di sini untuk mempelajari orientasi objek, bukan bahasa atau implementasi apa pun secara khusus.

.

Pengaturan Awal

Sebelum kita mulai, verifikasi bahwa Anda memiliki aplikasi konsol yang dibuat di Visual Studio. Seharusnya terlihat seperti Gambar 1.

Gambar 1:Pengaturan Awal Program PettingZoo

Dengan aplikasi konsol ini tersedia di Visual Studio, kita dapat mulai membuat kelas pertama kita. Di C#, ada beberapa cara untuk membuat kelas. Dalam beberapa bahasa, seperti Java, Anda perlu membuat kelas dengan cara tertentu menggunakan nama file dan pola folder tertentu, tetapi C# hanya peduli bahwa kita mengatakan bahwa sesuatu adalah kelas.

Perhatikan bahwa bahkan dalam aplikasi konsol default, Anda sudah memiliki satu kelas yang disebut Program . Menggunakan kata kunci class diikuti dengan nama kelas adalah bagaimana Anda mendefinisikan kelas di C#.

Untuk pendekatan kami, kami akan membuat file kode baru untuk menampung kelas kami. Klik kanan pada node PettingZoo di panel Solution Explorer, lalu klik Add->Class, seperti yang ditunjukkan pada Gambar 2.

Gambar 2:Menambahkan Kelas dengan Solution Explorer

Pada kotak dialog yang terbuka, temukan elemen Kode baik dengan mencari atau menavigasi, dan panggil file kelas Anda seperti Animals.cs, seperti yang ditunjukkan pada Gambar 3.

Gambar 3:Menambahkan Kotak Dialog File Kelas

Anda sekarang harus mendapatkan file kelas baru yang dibuat oleh Visual Studio yang berisi sesuatu seperti ini:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PettingZoo
{
    class Animals
    {
    }
}

Perhatikan bahwa secara default Visual Studio membuat file kelas dan definisi kelas di dalam berdasarkan nama file yang Anda pilih. Dalam beberapa bahasa-seperti Java-struktur ini adalah persyaratan, tetapi dalam C#, itu tidak begitu ketat. Kami akan mengubah nama kelas dalam beberapa saat, tetapi biarkan saja untuk saat ini.

Dalam file Visual Studio yang baru saja dibuat, Anda akan melihat sejumlah using pernyataan serta namespace blok kode. Baris-baris ini tidak penting bagi kelas kita, tetapi–jika Anda penasaran–ruang nama di C# adalah cara untuk mengatur nama dalam proyek Anda. Anda dapat memiliki beberapa kelas dengan nama yang sama, misalnya, diatur dalam ruang nama yang berbeda.

Selama Anda bekerja di dalam satu namespace, menangani kelas cukup mudah. Tetapi jika Anda perlu mengatur proyek Anda ke dalam divisi yang lebih kompleks, Anda mungkin perlu menggunakan ruang nama yang berbeda, dalam hal ini using pernyataan memungkinkan Anda membuat pintasan ke ruang nama tersebut.

.

Kelas dan Objek

File yang Anda miliki sekarang berisi kelas premade dengan nama berdasarkan nama file yang Anda pilih. Kami tidak akan memiliki Animals kelas, jadi mari kita ubah itu menjadi sesuatu yang lain. Di kebun binatang, kita membutuhkan anjing, tentu saja, jadi ubah nama kelas dari Animals ke Dog :

class Dog
{
}

Perhatikan perubahan dari Animals (jamak) menjadi Dog (tunggal). Nanti kita buat class lain yang bernama Animal , jadi berhati-hatilah saat membaca kode yang bernuansa seperti itu.

Sebelum kita mulai menambahkan konten apa pun ke kelas, mari kita periksa perbedaan antara kelas dan objek. Ingat bahwa kelas adalah template untuk bagaimana objek seharusnya. Analogi yang sederhana dan tidak terlalu akurat adalah analogi resep dan kue.

(Bagian ini adalah ulasan kelas dan objek yang diadaptasi dari penjelasan yang disajikan dalam artikel terkait di atas. Jika Anda ingin melewatkan penyegaran ini dan langsung ke pemrograman, langsung ke bagian berikutnya! Jika tidak, nikmati kue!)

Resepnya memberi tahu Anda cara membuat kue dan karenanya–dalam istilah OO–kelas . Kue adalah hasil dari eksekusi resep dan–sekali lagi, dalam istilah OO–adalah objek . Istilah lain yang sering digunakan adalah instance , untuk menunjukkan bahwa kue tersebut adalah turunan dari eksekusi resep.

Seperti halnya kue dan resep, setiap kue adalah kue yang unik. Apa yang Anda lakukan pada satu kue tidak memengaruhi kue lainnya. Menempatkan frosting pada satu cupcake tidak berarti semua cupcake sekarang memiliki frosting. Demikian pula, jika Anda makan satu cupcake, Anda masih memiliki sisanya.

Namun, memiliki resep dan mengetahuinya menghasilkan kue tidak cukup. Anda juga membutuhkan dapur untuk memanggang kue. Dalam istilah OO, ini adalah program tempat Anda membuat objek, dan dalam kasus kami, itu akan menjadi file Program.cs utama.

.

Kembali ke PettingZoo

Mari kita gunakan kelas baru kita untuk membuat Dog jadi buka file Program.cs dan tambahkan baris berikut di dalam static void main blok kode:

Dog myDog = new Dog();

Baris ini akan membuat Dog baru objek dari Dog class dan simpan di myDog variabel. Biarkan saya membagi baris ini menjadi tiga bagian sehingga saya dapat menjelaskan apa yang terjadi.

[1]Dog [2]myDog = [3]new Dog();

Elemen pertama [1], Dog , adalah jenis variabel yang ingin kita buat. Dalam bahasa yang diketik secara statis seperti C# dan Java, kita perlu mendeklarasikan tipe variabel apa sebelum kita dapat menetapkan nilai padanya. Bahasa yang diketik secara dinamis, seperti JavaScript atau Perl, tidak memerlukan ini dan menempatkan tanggung jawab untuk melacak jenis data apa yang ada dalam variabel pada pengembang.

Elemen kedua [2], myDog , adalah nama variabel yang kita gunakan untuk mengakses objek. Ini belum tentu nama anjing yang kami buat melainkan apa yang kami gunakan untuk merujuk contoh khusus dari Dog kelas.

Catatan:Untuk mengetahui lebih lanjut tentang variabel dan tipe data seperti string, lihat pengantar artikel pemrograman kami tentang variabel dan tipe.

.
Akhirnya, elemen ketiga [3], new Dog() , memberi tahu kami bahwa kami ingin membuat–atau membuat instance –sebuah objek baru berdasarkan Dog kelas. Perhatikan bahwa ada tanda kurung setelah nama kelas, yang berarti ini sebenarnya adalah metode . Kita akan kembali ke metode ini, yang merupakan metode khusus yang disebut konstruktor (kita akan membahas konstruktor lebih dalam di artikel berikutnya yang ditautkan di bawah).

Dengan program kami sekarang membuat objek baru dari Dog kelas yang disimpannya di myDog variabel, kita dapat mulai mengakses properti dan metode objek kita. Kecuali, tentu saja, bahwa kelas kita benar-benar kosong dan tanpa konten! Mari kita perbaiki.
.

Properti dan Metode

Mari kembali ke file Animals.cs kita, di mana Dog our kita kelas memiliki nama tetapi tidak ada yang lain. Namun, semua yang kita masukkan ke dalam blok kode ini akan menjadi bagian dari definisi kelas. Ingat, kelas memiliki properti dan metode yang mendefinisikan, masing-masing, apa itu objek dan apa yang bisa dilakukannya.

Mari kita buat properti dan metode, lalu kita akan membahas apa yang dilakukan masing-masing. Di dalam tanda kurung kurawal blok kode Anda, {} , tambahkan dua baris berikut:

string Name;
void Speak() { Console.WriteLine("Woof"); }

Baris pertama (string Name; ) adalah properti atau bidang . Dalam orientasi objek, properti mendefinisikan apa itu sesuatu. Dalam kasus kami, kami ingin anjing kami memiliki nama, jadi kami telah membuat properti string untuk menampung nama anjing.

Ingat bahwa orientasi objek berusaha membuat representasi terprogram dari objek nyata. Tentu saja, nama saja tidak membuat seekor anjing, tetapi OO tidak berusaha untuk menduplikasi semua properti dari setiap objek, hanya yang kita butuhkan. Kami akan menambahkan lebih banyak properti nanti.

Baris kedua adalah metode definisi (atau tanda tangan metode ) dan sedikit lebih kompleks, jadi, seperti sebelumnya, izinkan saya memecahnya sedikit dan menunjukkan kepada Anda apa yang dilakukan setiap elemen.

[1]void [2]Speak() [3]{ Console.WriteLine("Woof"); }

Elemen [1], void , adalah pengembalian jenis metode, atau jenis output yang akan dihasilkan metode saat dieksekusi. Dalam bahasa yang diketik secara statis seperti C# dan Java, selain mendeklarasikan tipe variabel, kita harus selalu mendeklarasikan tipe data yang kita kembalikan dari metode. Bahasa yang diketik secara dinamis menyerahkan tanggung jawab untuk menentukan apa yang keluar dari suatu metode kepada pengembang.

Dalam kasus kami, setidaknya pada awalnya, kami hanya ingin anjing mengatakan "Guk" ketika kami memintanya untuk berbicara, jadi kami tidak perlu mengembalikan apa pun. Ini akan berubah nanti, ketika kita membahas warisan di artikel berikutnya.

Namun, meskipun kami tidak ingin mengembalikan nilai spesifik apa pun, kami masih perlu menjelaskannya secara eksplisit dalam program. Untuk melakukannya, kita dapat mendeklarasikan bahwa metode mengembalikan void value, yang dalam bahasa C# dan bahasa serupa berarti kami tidak mengembalikan apa pun.

Elemen [2], Speak() , adalah nama metode, dan itulah yang kita gunakan untuk memanggil atau menjalankan metode. Perhatikan bahwa metode, seperti properti, adalah milik objek.

Elemen [3], blok kode , adalah kode yang akan dijalankan program saat kita memanggil metode. Anda mungkin juga melihat blok kode semacam ini yang juga disebut badan metode . Saat ini, di dalam blok kode ini, kami hanya akan memberi tahu konsol untuk menulis baris yang berisi “Woof”.
.

Menjadikan Metode Anda Publik

Sekarang kita memiliki metode, kita dapat memanggil atau menjalankannya dari program kita dan membuat anjing menggonggong. Namun, ada masalah yang memberi saya peluang besar untuk meninjau konsep kunci orientasi objek lainnya.

Biasanya, untuk mengakses properti dan metode suatu objek, pertama-tama Anda akan menulis nama variabel yang menyimpan objek Anda dan kemudian nama properti atau metode Anda. Misalnya, untuk mendapatkan nilai Name string properti, Anda dapat menulis:

string dogName = myDog.Name;

Untuk menjalankan metode Speak(), Anda dapat menulis:

myDog.Speak();

Namun, jika Anda melakukan ini di Program.cs, Anda akan mendapatkan pesan kesalahan seperti yang ditunjukkan pada Gambar 4.

Gambar 4:Kesalahan Tingkat Perlindungan

Kesalahan, menyatakan "'PettingZoo.Dog.Speak()' tidak dapat diakses karena tingkat perlindungannya" terjadi karena konsep kunci dalam OO yang disebut abstraksi .

Singkatnya, abstraksi menghilangkan detail tentang cara kerja sesuatu ketika kita tidak perlu mengetahui detail itu. Dalam program kami, kami hanya perlu mengetahui bahwa anjing tersebut dapat berbicara, tetapi tidak terlalu peduli dengan cara ia melakukannya.

Abstraksi sebaliknya memungkinkan perancang kelas untuk datang dengan titik akses ke dalam kelas di mana mereka dapat bekerja dengan objek. Banyak bahasa mengaktifkan akses ini melalui pengubah akses .

C#, secara default, menyembunyikan properti dan metode dari luar kelas. Namun, kebijakan tentang pemisahan semacam ini berbeda dalam bahasa lain, dan beberapa bahasa seperti JavaScript bahkan tidak menawarkan tingkat perlindungan ini.

Namun, prinsipnya tetap bahwa Anda mempublikasikan apa yang Anda ingin semua orang gunakan dan menyembunyikan sisanya. Membuat bagian publik, setidaknya dalam C#, berarti menambahkan kata kunci public di depan properti dan metode yang Anda ingin seseorang akses. Jadi, jika Anda memperbarui Dog kelas untuk menambahkan public di depan void Speak() baris di Animals.cs, coretan merah hilang di Program.cs, seperti yang ditunjukkan pada Gambar 5.

Gambar 5:Deklarasi Metode Publik

Sebagai bonus tambahan, saat Anda membuat metode Anda menjadi publik, Visual Studio akan menambahkan metode ke opsi yang tersedia melalui sistem pelengkapan otomatis IntelliSense. Saat Anda mengetik myDog dan tekan titik, Anda mendapatkan daftar semua properti publik dan metode objek itu, seperti yang ditunjukkan pada Gambar 6.

Gambar 6:Pelengkapan Otomatis Intellisense Visual Studio dengan Metode Publik Baru Kami

Editor kode lain memiliki sistem pelengkapan otomatis yang serupa. Pelengkapan otomatis ini adalah salah satu manfaat utama editor ini untuk programmer:Anda akan belajar menyukai fitur-fitur ini saat Anda berkembang sebagai programmer!

.
Sekarang kita telah memperbaiki semua kesalahan, kita seharusnya dapat menjalankan program kita dan melihat bahwa anjing menggonggong. Anda dapat menempatkan breakpoint di Program.cs Anda dengan mengklik di margin kiri atau menempatkan kursor Anda di braket setelah myDog.Speak() dan menekan F9. Kemudian, tekan F5 untuk menjalankan program. Anda akan melihat konsol muncul, dan output dari gonggongan anjing Anda akan muncul, seperti yang ditunjukkan pada Gambar 7.

Gambar 7:Anjing Kami Berbicara!

Tentu saja, sekarang kita dapat membuat serasah anjing dengan membuat banyak variabel dan membuat instance objek ke dalamnya. Anda dapat mencoba sesuatu seperti Gambar 8, misalnya:

Gambar 8:Dua Anjing Berbicara

Punya hasil serupa? Hebat, tepuk punggung Anda, tetapi hanya sekali, karena kami masih memiliki lebih banyak pekerjaan yang harus dilakukan. Lagi pula, kami telah menjanjikan bahwa orientasi objek memungkinkan kami membuat objek unik, dan yang telah kami lakukan hanyalah membuat dua "anjing" yang identik. Selanjutnya, kami akan menunjukkan cara menggunakan konstruktor untuk membuat objek yang terpisah dan unik.
.
.


Linux
  1. Flatpak di Linux:Apa Itu dan Bagaimana Menginstal Aplikasi dengannya

  2. Cara Mengatur LogAnalyzer dengan Rsyslog dan MySQL

  3. Menghapus file dengan rm menggunakan find dan xargs

  1. Cara memprogram dengan Bash:Sintaks dan alat

  2. permintaan dan balasan arp menggunakan pemrograman soket c

  3. Bagaimana cara mengisi file dengan FF menggunakan dd?

  1. Cara Mengumpulkan Metrik Sistem dan Aplikasi menggunakan Metricbeat

  2. Cara Mengecualikan File dan Direktori dengan Rsync

  3. Cara Sinkronisasi File Dan Direktori Menggunakan Zaloha.sh