Simulador de patos
Clase 20 de 34 • Curso de Ruby 2017
Contenido del curso
Clase 20 de 34 • Curso de Ruby 2017
Contenido del curso
Lenyn Alcantara
William Pernalete
Edwin David Sánchez Balbín
Emmanuel Franquiz
Fernando Contreras
Emmanuel Franquiz
Alfonso Candiani
Luis Maria Garcia Salado Kühl
Felipe Eduardo Galindo Hernández
Hola, dejo la mía con una diferencia:
class Pato attr_accessor :tipo def initialize (tipo) @tipo = tipo end def nadar puts 'Nadando!' end def cuack puts 'Cuack!' end def volar puts 'Volando!' end def ver puts "Hola soy un pato #{@tipo}!" end end class Mallard < Pato def initialize super('Mallard') end end class Blanco < Pato def initialize super('Blanco') end end mallard = Mallard.new blanco = Blanco.new mallard.ver blanco.ver```
mi codigo:
class Pato
def hacer_quack
puts ‘QUACKKK’
end
def presentacion puts 'hola spoy un pato' end def nadar puts 'nadando ando' end
end
class PatoMallard < Pato
def presentacion
super
puts ‘Soy de tipo Malard’
end
end
class PatoBlanco < Pato
def presentacion
super
puts ‘Soy un pato blanco’
end
end
pato = Pato.new
mallar = PatoMallard.new
blanco = PatoBlanco.new
pato.presentacion
mallar.presentacion
blanco.presentacion
Mi ejercicio resuelto
class Pato def initialize(especie) @especie = especie end def presentacion puts "Hola soy el pato #{@especie}." end def quak puts "El pato #{@especie} hace quak!." end def nada puts "El pato #{@especie} esta nadando." end def volar puts "El pato #{@especie} esta volando." end end class Mallard < Pato def initialize super('Mallard') end end class Blanco < Pato def initialize super('Blanco') end end mallard = Mallard.new blanco = Blanco.new mallard.presentacion mallard.nada mallard.quak mallard.volar puts ' ' blanco.presentacion blanco.nada blanco.quak blanco.volar
Quiero compartir mi ejercicio ya quelo hice de otra forma, quisiera saber sus opiniones.
class Patos def initialize (tipo) @tipo = tipo end def graznido puts 'Cuak' end def nadar puts 'Nada' end def volar puts "Vuelo" end def tipo puts "Este pato es de tipo #{@tipo}" end end class Propiedad < Patos def initialize super('Blanco') end def tipo super end end pato = Patos.new('Mallard') pato2 = Propiedad.new pato.tipo pato.graznido pato.volar pato.nadar pato2.tipo pato2.graznido pato2.volar pato2.nadar
Por default asumes que tendras un pato blanco al instanciar Propiedad, pero creo no es del todo correcto ya que en las clases estas definiendo que tipo de pato tendras.
Ahora como no defines que tipo de Pato es, no puedes definiar atributos o metodos especificos de su clase correspondiente.
Si, avanzando un poco más me di cuenta que pudo ser escrito de mejor forma, igual gracias por la opinion.
class Pato def sonido puts 'Quack' end def accion1 puts 'Nadan' end def accion2 puts 'Vuelan' end def mostrar # Es necesario instalar cowsay en la terminal # https://github.com/piuccio/cowsay system ("cowsay -f duck Quack") end end class Mallard < Pato def mostrar puts 'Soy un pato Mallard' super end end class Blanco < Pato def mostrar puts 'Soy un pato Blanco' super end end pato1 = Pato.new() pato2 = Mallard.new() pato3 = Blanco.new() pato1.mostrar puts '**********************' pato2.mostrar pato2.accion1```
Dejo mi ejercicio
Hola aqui dejo mi simulador de patos, en este caso yo no utilice un método constructor
class Pato def quack "quack! quack!" end def nadar "estoy nadando" end def volar "puedo volar" end def muestra_pantalla(tipo) "Soy un pato #{tipo}" end end class Mallard < Pato def muestra_pantalla(tipo) super end end class Blanco < Pato def muestra_pantalla(tipo) super end end pato_mallard = Mallard.new pato_blanco = Blanco.new puts pato_mallard.quack puts pato_mallard.muestra_pantalla('Mallard') puts pato_mallard.nadar puts pato_mallard.volar puts '----------------------' puts pato_blanco.quack puts pato_blanco.muestra_pantalla('Blanco') puts pato_blanco.nadar puts pato_blanco.volar