Objects and Classes
Class Basics
A Ruby class defines how new objects are initialized and what instance methods they can run.
class
A class is a blueprint for objects that carry data and behavior together.
Class Basics
class_basics.rb
Replay: real traced execution (multi-file project)
class Ticket
def initialize(name)
@name = name
end
def label
"Ticket for #{@name}"
end
end
name = "Ruby"
ticket = Ticket.new(name)
puts ticket.label
class Ticket
def initialize(name)
@name = name
end
def label
"Ticket for #{@name}"
end
end
name = "Ada"
ticket = Ticket.new(name)
puts ticket.label
class Ticket
def initialize(name)
@name = name
end
def label
"Ticket for #{@name}"
end
end
name = "Matz"
ticket = Ticket.new(name)
puts ticket.label
name ← Ruby
11name→ Ruby = "Ruby" #@name="Ada", "Matz"12ticket = Ticket.new(nameRuby)@name ← Ruby
1class Ticket2 def initialize(nameRuby)3 @name→ Ruby = nameRuby4 endticket ← ⟨Ticket A @name="Ruby"⟩
11name = "Ruby" #@name="Ada", "Matz"12ticket→ ⟨Ticket A @name="Ruby"⟩ = Ticket.new(nameRuby)1314puts ticket.labelTicket for Rubydef label
6def label7 "Ticket for #{@nameRuby}"8endputs ticket.label
14puts ticket.labelTicket for RubyoutputTicket for Ruby
name ← Ada
11name→ Ada = "Ada"12ticket = Ticket.new(nameAda)@name ← Ada
1class Ticket2 def initialize(nameAda)3 @name→ Ada = nameAda4 endticket ← ⟨Ticket A @name="Ada"⟩
11name = "Ada"12ticket→ ⟨Ticket A @name="Ada"⟩ = Ticket.new(nameAda)1314puts ticket.labelTicket for Adadef label
6def label7 "Ticket for #{@nameAda}"8endputs ticket.label
14puts ticket.labelTicket for AdaoutputTicket for Ada
name ← Matz
11name→ Matz = "Matz"12ticket = Ticket.new(nameMatz)@name ← Matz
1class Ticket2 def initialize(nameMatz)3 @name→ Matz = nameMatz4 endticket ← ⟨Ticket A @name="Matz"⟩
11name = "Matz"12ticket→ ⟨Ticket A @name="Matz"⟩ = Ticket.new(nameMatz)1314puts ticket.labelTicket for Matzdef label
6def label7 "Ticket for #{@nameMatz}"8endputs ticket.label
14puts ticket.labelTicket for MatzoutputTicket for Matz
Follow the Object
namestarts asRuby.Ticket.new(name)creates oneTicketobject.initializestoresRubyin@name.ticket.labelreads that instance variable.- The program prints
Ticket for Ruby. | step | value | | --- | --- | | constructor input | Ruby | | stored@name| Ruby | |labelresult | Ticket for Ruby |
Exercise: class_basics.rb
Reproduce Ticket for Ruby, then use the pinned name variants Ada and Matz to predict Ticket for Ada and Ticket for Matz.