Domanda da neofita sulle classi

Salve a tutti!
Vi espongo brevemente il mio problema allegando del codice

class Song
def initialize (nome,artista,durata)
@nome=nome
@artista=artista
@durata=durata
end
e questo funziona perfettamente se scrivo
asong = Song.new(“partiro”,“bocelli”,120)

Adesso creo una sottoclasse
class anonima<Song
end
Questa eredita le caratteristiche della superclasse.
Adesso arriva la domanda… :slight_smile:
Dato che l’ho chiamata “anonima” e’ una canzone che non possiede un
autore.
Come faccio a dire alla classe anonima<Song che non deve accettare il
valore corrispondente al nome dell’autore?

Spero di essere stato chiaro!
Per chi non l’avesse capito sto’ iniziando adesso…:slight_smile:
Grazie per le eventuali risposte

Giacomo G. wrote:

2008/9/13 Giovanni C. [email protected]:

asong = Song.new(“partiro”,“bocelli”,120)

Ridefinendo il costruttore in questione magari?
Qualcosa tipo:
class Foo
def initialize(gh1, gh2)
@gh1,@gh2 = gh1,gh2
end

Grazie per la risposta. Allora io ho fatto cosi:

class Song
def initialize (titolo,artista)
@titolo,@artista=titolo,artista
end

Creiamo un nuovo metodo. Il metodo ordina

def ordina
“Canzone: #{@titolo} – cantata da:#{@artista}”
end

end
asong = Song.new(“Partiro”,“Bocelli”)
puts asong.ordina

Definisco una SOTTOCLASSE di Song

class Anonima<Song
def initialize (nome)
@titolo=nome
end
def ordina
“Canzone: #{@titolo} – cantata da:Artista sconosciuto”
end
end
bsong = Anonima.new(“arrivero’”)
puts bsong.ordina

E ottengo:
Canzone: partiro – cantata da:bocelli
Canzone: arrivero’ – cantata da:Artista sconosciuto

Quello che cercavo
Grazie per il prezioso aiuto!!!

A questo punto mi da’ errore:
…\Meus
documentos\NetBeansProjects\Primeiro_projeto\app\controllers\prova_classe01.rb:37:in
`initialize’: wrong number of arguments (2 for 1) (ArgumentError)

2008/9/13 Giovanni C. [email protected]:

asong = Song.new(“partiro”,“bocelli”,120)

Spero di essere stato chiaro!
Per chi non l’avesse capito sto’ iniziando adesso…:slight_smile:
Grazie per le eventuali risposte

Ridefinendo il costruttore in questione magari?
Qualcosa tipo:
class Foo
def initialize(gh1, gh2)
@gh1,@gh2 = gh1,gh2
end

def asd
    puts @gh1
end

end

class Bar < Foo
def initialize(gh1)
@gh1 = gh1
end
end

b = Bar.new(“puppa”)
b.asd


E ottengo:
Canzone: partiro – cantata da:bocelli
Canzone: arrivero’ – cantata da:Artista sconosciuto

Quello che cercavo
Grazie per il prezioso aiuto!!!

A questo punto mi da’ errore:
…\Meus
documentos\NetBeansProjects\Primeiro_projeto\app\controllers\prova_classe01.rb:37:in
`initialize’: wrong number of arguments (2 for 1) (ArgumentError)

Non mi da’ nessun errore…scusa…non ho pulito bene…:slight_smile: Grazie di
nuovo