Kursus Pengembangan Python Lanjutan
Bab
>
Tingkat
Kelas Lanjutan
Kelebihan Beban Operator
Tujuan
Hitung seberapa banyak anggur yang sedang diklarifikasi dengan menggunakan vektor dan Operator Overloading.
Setelah anggur diperas, anggur tersebut perlu disaring dan diklarifikasi, ada beberapa barel yang sedang disaring dan semuanya perlu dibilas. Penting untuk menghitung jumlah anggur yang diproduksi agar barel-barel dapat ditutup rapat dan didiamkan untuk proses penuaan.
Untuk melakukan ini, Anda perlu membuat vektor dan menjumlahkannya, vektor ini mirip dengan daftar (list) namun tidak sefleksibel tetapi lebih efisien dalam penggunaan memori. Vektor biasanya digunakan untuk mengelola koordinat, dalam kasus ini kita akan menggunakannya seperti variabel yang menyimpan lebih dari satu nilai. Penjumlahan vektor dilakukan dengan menggunakan Operator Overloading yang memperluas fungsionalitas objek kelas sehingga dapat menggunakan operator seperti pada nilai biasa.
Untuk memulai, berjalanlah dan kumpulkan kaleng air logam yang terletak di bagian atas ruangan, kaleng-kaleng ini akan digunakan untuk membantu membilas anggur yang sedang disaring di dalam barel. Setelah dikumpulkan, berjalanlah ke tanda X gelap di atas karpet merah, hadapkan ke barel dan mulailah membuat vektor dari isi setiap barel.
Tanda X diatur dalam set tiga (3) untuk setiap karpet berwarna, yaitu tanda X emas, tanda X terang, dan tanda X gelap. Pada semua tanda X gelap dan terang, gunakan fungsi water() untuk membantu membilas barel. Juga pada semua tanda X gelap dan terang, gunakan fungsi read() untuk mengidentifikasi berapa banyak anggur yang sedang diproses dalam kolom barel tersebut. Pada tanda X emas, Anda menggunakan fungsi write() untuk mencatat jumlah totalnya.
Di editor kode terdapat kelas bernama vector, kelas ini digunakan agar Anda tidak hanya bisa membuat sebuah vektor tetapi juga menjumlahkannya. Buat objek vector untuk menyimpan data yang diidentifikasi pada tanda X terang dan gelap, misalnya, pada karpet red anggur merah sedang disaring:
# Create object using data from dark X mark red_wine_dark = vector(345, 272) # Create object using data from light X mark red_wine_light = vector(248, 432) # Add together vectors for totals red_wine_total = red_wine_dark + red_wine_light
Dalam sebuah vektor, posisi pertama disebut x dan posisi kedua adalah y, dengan rumus seperti ini: object_name = vector(x,y). Ini relevan untuk mengisi vektor dengan informasi yang diperoleh dari fungsi read().
Pada tanda X emas, gunakan fungsi write() untuk mencatat total setiap set vektor, misalnya, dalam kasus tanda X pada karpet merah ditulis seperti ini:
await player.write( "There is a total of %s pounds on the left barrels and %s pounds on the right barrels" % (red_wine_total.x, red_wine_total.y)
Ingat untuk menambahkan .x dan .y di akhir total untuk mengidentifikasi nilai masing-masing vektor.
Untuk setiap set karpet berwarna terdapat jenis anggur yang berbeda yang sedang disaring. Pada karpet red yang disebutkan sebelumnya, red_wine disaring; pada karpet yellow, sparkling_wine disaring; pada karpet green, white_wine disaring; dan pada karpet orange, orange_wine disaring.
Setelah semua tanda X terang dan gelap telah dibilas dengan fungsi water() dan semua tanda pada tanda X emas telah dicatat jumlah totalnya, Anda telah menyelesaikan level.