Property Hanya Baca dan Hanya Tulis
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 11 dari 70.
Terkadang kamu memerlukan property yang hanya bisa dibaca atau hanya bisa ditulis. Kamu bisa mengaturnya dengan menggunakan private pada accessor tertentu.
property hanya-baca memiliki getter publik, tetapi setter privat (atau tidak memiliki setter sama sekali):
public class User
{
public string Username { get; private set; }
public User(string username)
{
Username = username;
}
}Kode eksternal dapat membaca Username, tetapi hanya class itu sendiri yang dapat mengubahnya. Ini berguna untuk nilai yang seharusnya ditetapkan sekali saat konstruksi.
Property khusus tulis memiliki setter publik, tetapi getter privat:
public class Account
{
public string Password { private get; set; }
public bool ValidatePassword(string input)
{
return input == Password;
}
}Properti hanya-tulis jarang digunakan, tetapi berguna untuk data sensitif seperti kata sandi, saat kamu ingin menerima input tanpa mengungkapkan nilai yang tersimpan.
Kamu juga dapat membuat property yang benar-benar hanya bisa dibaca dengan getter saja:
public class Circle
{
public double Radius { get; }
public double Area => Math.PI * Radius * Radius;
public Circle(double radius)
{
Radius = radius;
}
}Property yang hanya memiliki get; hanya dapat diberi nilai di dalam constructor atau saat dideklarasikan, sehingga tidak dapat diubah setelah object dibuat.
Tantangan
MudahMari buat sistem konfigurasi yang aman untuk menunjukkan kapan kamu perlu menggunakan property hanya-baca dan hanya-tulis guna melindungi data sensitif.
Kamu akan membuat dua file untuk mengatur kodemu:
Config.cs: Definisikan classServerConfigdi namespaceSettingsuntuk mengelola konfigurasi server. Class ini harus memiliki:- Property hanya-baca
ServerName(hanya dapat diatur di constructor) - Property hanya-baca
Portdengan setter privat (diatur melalui constructor) - Property hanya-tulis
ApiKeyyang menyimpan kunci rahasia secara internal - Method
ValidateApiKey(string key)yang mengembalikantruejika kunci yang diberikan cocok dengan kunci yang disimpan - Constructor yang menerima nama server dan port
- Property hanya-baca
Program.cs: Di file utama, buat objectServerConfigmenggunakan nilai input, atur API key, lalu validasi dengan kunci pengujian.
Kamu akan menerima empat input:
- Nama server
- Nomor port
- API key yang akan disimpan
- API key yang akan divalidasi
Cetak detail server dan hasil validasi dengan format ini:
Server: {ServerName}, Port: {Port}
API Key Valid: {True/False}Contohnya, jika inputnya adalah MainServer, 8080, secret123, dan secret123, outputnya harus seperti ini:
Server: MainServer, Port: 8080
API Key Valid: TrueCoba sendiri
using System;
using Settings;
class Program
{
public static void Main(string[] args)
{
// Baca input
string serverName = Console.ReadLine();
int port = Convert.ToInt32(Console.ReadLine());
string apiKeyToStore = Console.ReadLine();
string apiKeyToValidate = Console.ReadLine();
// TODO: Buat object ServerConfig dengan serverName dan port
// TODO: Atur kunci API menggunakan property yang hanya bisa ditulis
// TODO: Validasi kunci API dan cetak hasilnya
// Format: Server: {ServerName}, Port: {Port}
// API Key Valid: {True/False}
}
}
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