Anggota Berbentuk Ekspresi
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 14 dari 70.
Member berbentuk ekspresi menyediakan sintaks ringkas untuk member yang hanya berisi satu ekspresi. Alih-alih menulis isi method atau property lengkap dengan kurung kurawal, kamu menggunakan sintaks panah =>.
Untuk method yang mengembalikan satu ekspresi, kamu bisa mengganti seluruh isi:
// method tradisional
public int Add(int a, int b)
{
return a + b;
}
// method dengan isi berupa ekspresi
public int Add(int a, int b) => a + b;Sintaks ini juga berfungsi untuk property hanya-baca, yang sudah kamu lihat sekilas:
public class Circle
{
public double Radius { get; set; }
public double Area => Math.PI * Radius * Radius;
public double Circumference => 2 * Math.PI * Radius;
}Kamu juga dapat menggunakan badan ekspresi untuk getter dan setter property secara terpisah:
private string name;
public string Name
{
get => name;
set => name = value.Trim();
}Bahkan konstruktor dapat menggunakan sintaks ini jika hanya berisi satu pernyataan:
public class Person
{
public string Name { get; }
public Person(string name) => Name = name;
}Member dengan isi berupa ekspresi membuat kodemu lebih mudah dibaca saat logikanya sederhana. Gunakan untuk operasi sederhana, tetapi tetap gunakan isi tradisional saat kamu memerlukan beberapa pernyataan atau logika yang kompleks.
Tantangan
MudahMari kita buat kalkulator harga produk yang menunjukkan keunggulan anggota berbentuk ekspresi untuk menulis kode yang rapi dan ringkas.
Kamu akan membuat dua file untuk menata kodemu:
Product.cs: Definisikan classProductdi namespaceStore. Class ini harus menunjukkan berbagai anggota berbentuk ekspresi:- Property yang diimplementasikan otomatis, yaitu
Name(string) danBasePrice(decimal) - Konstruktor berbentuk ekspresi yang menetapkan kedua property
- Property hanya-baca berbentuk ekspresi
TaxAmountyang menghitung 10% dari harga dasar - Property hanya-baca berbentuk ekspresi
TotalPriceyang mengembalikan harga dasar ditambah jumlah pajak - Method berbentuk ekspresi
GetDiscount(decimal percentage)yang mengembalikan jumlah diskon (harga dasar dikalikan persentase lalu dibagi 100) - Method berbentuk ekspresi
GetFinalPrice(decimal discountPercentage)yang mengembalikan harga total dikurangi diskon
- Property yang diimplementasikan otomatis, yaitu
Program.cs: Di file utamamu, buatProductmenggunakan nilai input, lalu tampilkan rincian harganya.
Kamu akan menerima tiga input:
- Nama produk
- Harga dasar
- Persentase diskon yang akan diterapkan
Cetak rincian harga dalam format ini:
Product: {Name}
Base Price: {BasePrice}
Tax (10%): {TaxAmount}
Total Price: {TotalPrice}
Discount ({percentage}%): {discountAmount}
Final Price: {finalPrice}Misalnya, jika inputnya adalah Laptop, 1000, dan 15, outputnya harus seperti ini:
Product: Laptop
Base Price: 1000.00
Tax (10%): 100.00
Total Price: 1100.00
Discount (15%): 150.00
Final Price: 950.00Format setiap nilai uang hingga tepat dua angka desimal, misalnya value.ToString("F2") atau $"{value:F2}". Ketentuan ini berlaku sama untuk harga dasar, pajak, total, diskon, dan harga akhir.
Ingat untuk menggunakan sintaks panah => untuk semua anggota yang berisi satu ekspresi. Ini membuat kodemu tetap rapi dan mudah dibaca!
Coba sendiri
using System;
using Store;
class Program
{
public static void Main(string[] args)
{
// Baca input
string name = Console.ReadLine();
decimal basePrice = Convert.ToDecimal(Console.ReadLine());
decimal discountPercentage = Convert.ToDecimal(Console.ReadLine());
// Buat object Product menggunakan nilai input
Product product = new Product(name, basePrice);
// Hitung jumlah diskon menggunakan method GetDiscount
decimal discountAmount = product.GetDiscount(discountPercentage);
// Hitung harga akhir menggunakan method GetFinalPrice
decimal finalPrice = product.GetFinalPrice(discountPercentage);
// Tampilkan rincian harga dalam format yang diminta:
Console.WriteLine($"Product: {product.Name}");
Console.WriteLine($"Base Price: {product.BasePrice:F2}");
Console.WriteLine($"Tax (10%): {product.TaxAmount:F2}");
Console.WriteLine($"Total Price: {product.TotalPrice:F2}");
Console.WriteLine($"Discount ({discountPercentage}%): {discountAmount:F2}");
Console.WriteLine($"Final Price: {finalPrice:F2}");
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalNamespace & DirektifPengantar class & objectKata Kunci 'this'Method dan ParameterField vs PropertyKonstruktorInisialisasi objectRingkasan: Kalkulator Sederhana4Pewarisan
Sintaks Dasar Pewarisan (:)Kata Kunci 'base'Kata Kunci Virtual & OverrideClass SealedBase Class 'object'Rangkuman: Hierarki Karyawan7Fitur Lanjutan
Overloading OperatorIndexer (this[])Penimpaan ToString()Extension methodRingkasan: Custom list2Property & Anggota Statis
Property yang Diimplementasikan OtomatisProperty Hanya Baca dan Hanya TulisField dan method StatisClass StatisAnggota Berbentuk Ekspresi5Polimorfisme & Antarmuka
Polimorfisme saat kompilasi vs runtimeAntarmuka vs kelas abstrakBeberapa antarmukaAntarmuka eksplisitUpcasting & DowncastingRingkasan, Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi daripada PewarisanGenerics (class dan method)Delegate dan EventAtribut dan ReflectionIDisposable dan Pernyataan usingDasar-Dasar Dependency Injection11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola CompositeLatihan sendiri: Compiler C# online