Menu
CoddyTech

Getter method

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan Lua di Coddy. Pelajaran 13 dari 70.

Kamu sudah belajar menyimpan data dalam variabel instans seperti self.health atau self.items. Meskipun kamu bisa mengakses field ini secara langsung dari luar object, ada cara yang lebih rapi: menggunakan method getter.

Getter (juga disebut method accessor) adalah method sederhana yang mengembalikan nilai internal. Alih-alih mengakses player.health secara langsung, kamu memanggil player:getHealth():

local Player = {}
Player.__index = Player

function Player:new(name)
    local instance = {}
    setmetatable(instance, self)
    instance.name = name
    instance.health = 100
    return instance
end

function Player:getHealth()
    return self.health
end

function Player:getName()
    return self.name
end

Mengapa perlu method tambahan? Getter menyediakan titik akses terkontrol ke datamu.

Saat ini, :getHealth() hanya mengembalikan nilai. Namun nanti, kamu mungkin ingin menambahkan logika: mungkin mengembalikan "Critical" jika health turun di bawah 10, atau mencatat setiap kali health diperiksa.

Dengan getter, kamu bisa membuat perubahan ini tanpa mengubah kode apa pun yang menggunakan object tersebut.

local hero = Player:new("Luna")
print(hero:getHealth())  -- output: 100
print(hero:getName())    -- output: Luna

Pola ini menciptakan batas yang jelas antara struktur internal object dan cara kode lain berinteraksi dengannya. Kode di luar object meminta data melalui method, bukan mengakses field object secara langsung.

challenge icon

Tantangan

Mudah

Mari buat class Player yang menggunakan method getter untuk mengakses data internalnya. Alih-alih mengakses field pemain secara langsung, kamu akan membuat method yang memberikan akses terkontrol ke informasi pemain.

Kamu akan menyusun kodemu dalam dua file:

  • Player.lua: Definisikan class Player dengan pola prototipe standar. Constructor harus menerima nama dan menginisialisasi health ke 100. Tambahkan tiga method getter:
    • :getName() mengembalikan nama pemain
    • :getHealth() mengembalikan health pemain saat ini
    • :getStatus() mengembalikan string berformat yang menggabungkan kedua informasi tersebut
  • main.lua: Muat module Player dan buat sebuah instance pemain. Gunakan method getter untuk menampilkan informasi pemain: akses semuanya melalui method, bukan dengan membaca field secara langsung.

Method :getStatus() harus mengembalikan string dengan format persis seperti ini:

[name] has [health] HP

Kamu akan menerima satu input: nama pemain.

Di file utama, buat pemain dengan nama yang diberikan, lalu cetak tiga baris menggunakan method getter:

  1. Nama pemain (menggunakan :getName())
  2. Health pemain (menggunakan :getHealth())
  3. Status lengkap pemain (menggunakan :getStatus())

Contohnya, jika input-nya adalah Luna, output-nya akan seperti ini:

Luna
100
Luna has 100 HP

Coba sendiri

-- Muat module Player dengan require
local Player = require('Player')

-- Baca input
local name = io.read()

-- TODO: Buat instance pemain dengan nama yang diberikan

-- TODO: Cetak nama pemain menggunakan :getName()

-- TODO: Cetak kesehatan pemain menggunakan :getHealth()

-- TODO: Cetak status pemain menggunakan :getStatus()
quiz iconUji dirimu

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

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler Lua online