require 'traits'
#
# getters and setters can be defined separately 
#
class C
  has_r :r
end
class D
  has_w :w
end

#
# defining a reader trait still defines __public__ query and __private__ writer
# methods
#
class C
  def using_private_writer_and_query
    p r?
    self.r = 42
    p r
  end
end
C::new.using_private_writer_and_query

#
# defining a writer trait still defines __private__ query and __private__ reader
# methods
#
class D
  def using_private_reader
    p w?
    self.w = 'forty-two' 
    p w
  end
end
D::new.using_private_reader
