Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Mari 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 class ServerConfig di namespace Settings untuk mengelola konfigurasi server. Class ini harus memiliki:
    • Property hanya-baca ServerName (hanya dapat diatur di constructor)
    • Property hanya-baca Port dengan setter privat (diatur melalui constructor)
    • Property hanya-tulis ApiKey yang menyimpan kunci rahasia secara internal
    • Method ValidateApiKey(string key) yang mengembalikan true jika kunci yang diberikan cocok dengan kunci yang disimpan
    • Constructor yang menerima nama server dan port
  • Program.cs: Di file utama, buat object ServerConfig menggunakan 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: True

Coba 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}
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler C# online