Programare pe Obiecte în Ruby: Clase, initialize, @variabile și attr_accessor în Ruby

Ghid complet pentru OOP în Ruby: declararea claselor cu class, constructorul initialize, încapsularea variabilelor de instanță @ și generarea getter/setter cu attr_accessor.

Sintaxă
class Utilizator; attr_accessor :nume; def initialize(nume); @nume = nume; end; end

Ruby este un limbaj orientat pe obiecte pur: nu există date care să nu fie obiecte. În Ruby, starea internă a unui obiect este complet privată prin variabilele de instanță prefixate cu @, accesul din exterior realizându-se exclusiv prin metode (getters și setters).

Definirea clasei ContClient cu attr_accessor și validare
class ContClient
  # Generează automat metodele getter și setter pentru atribute:
  attr_accessor :nume, :email
  # Generează doar getter (read-only):
  attr_reader :id, :sold

  # Constructorul apelat automat de ContClient.new:
  def initialize(id, nume, email, sold_initial = 0)
    @id = id
    @nume = nume
    @email = email
    @sold = sold_initial
  end

  # Metodă publică de afaceri:
  def alimenteaza(suma)
    raise ArgumentError, "Suma trebuie să fie pozitivă!" if suma <= 0
    @sold += suma
    puts "[Cont #{@id}] S-au adăugat #{suma} lei. Sold nou: #{@sold} lei."
  end

  # Reprezentare personalizată a obiectului în consolă:
  def to_s
    "Client: #{@nume} (Email: #{@email}, Sold: #{@sold} RON)"
  end
end

# Instanțierea obiectului:
client1 = ContClient.new(501, "Dan Teodorescu", "dan@companie.ro", 1200)
client1.alimenteaza(300)
puts client1
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Programare pe Obiecte în Ruby: Clase, initialize, @variabile și attr_accessor

Ai o nelămurire despre utilizarea comenzii Programare pe Obiecte în Ruby: Clase, initialize, @variabile și attr_accessor sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.