Menu
Coddy logo textTech

Definir clases

Parte de la sección Programación orientada a objetos del Journey de Ruby de Coddy. Lección 2 de 57.

Una clase describe un tipo de objeto: lo que sabe y lo que puede hacer. class Dog ... end declara la clase, y Dog.new crea un objeto de esa clase, una instancia. Un método definido con def dentro de la clase puede invocarse en cada instancia:

class Dog
  def speak
    "Woof"
  end
end

rex = Dog.new
puts rex.speak
puts rex.class

Salida:

Woof
Dog

new crea el objeto y después llama a su método initialize con los argumentos que proporcionaste a new. initialize configura el objeto, normalmente almacenando los argumentos en variables de instancia, cuyos nombres comienzan con @:

class Dog
  def initialize(name)
    @name = name
  end

  def speak
    "#{@name} says Woof"
  end
end

puts Dog.new("Rex").speak
puts Dog.new("Bella").speak

Salida:

Rex says Woof
Bella says Woof

Los métodos reciben argumentos como cualquier método de Ruby y devuelven el valor de su última expresión. Cada llamada a new crea un objeto independiente:

class Calculator
  def add(a, b)
    a + b
  end

  def average(numbers)
    numbers.sum.to_f / numbers.size
  end
end

calc = Calculator.new
puts calc.add(2, 3)
puts calc.average([1, 2, 3, 6])

Salida:

5
3.0

Los nombres de las clases son constantes escritas en CamelCase (BankAccount); los nombres de los métodos y las variables usan snake_case (deposit_money). new comprueba sus argumentos con respecto a initialize, por lo que la falta de un argumento genera ArgumentError:

class Point
  def initialize(x, y)
    @x = x
    @y = y
  end
end

begin
  Point.new(1)
rescue ArgumentError => e
  puts e.message
end

Salida:

wrong number of arguments (given 1, expected 2)
challenge icon

Desafío

Fácil

Completa la clase Formatter. Su método title(text) devuelve el texto con cada palabra en mayúscula inicial (the hobbit da como resultado The Hobbit), slug(text) devuelve las palabras en minúsculas unidas por - (the-hobbit), y initials(text) devuelve la primera letra de cada palabra en mayúscula (TH).

El código proporcionado crea un Formatter y, para cada línea de entrada, imprime los tres resultados en líneas separadas.

Tu código va en formatter.rb. main.rb contiene el código proporcionado de entrada/salida y no se puede editar.

REQUIRED OUTPUT FORMAT: [Your translated content here]

Pruébalo tú mismo

require_relative 'formatter'

# Código de entrada/salida suministrado: mantenlo como está
input = []
while (line = gets)
  input << line.chomp
end
formatter = Formatter.new
input.each do |line|
  puts formatter.title(line)
  puts formatter.slug(line)
  puts formatter.initials(line)
end
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación orientada a objetos

Practica por tu cuenta: Compilador de Ruby online