# Domanda da neofita sulle classi

**URL:** <https://www.ruby-forum.com/t/domanda-da-neofita-sulle-classi/148498>\
**Category:** IT\
**Created:** [September 13, 2008, 7:08pm UTC](https://www.ruby-forum.com/t/domanda-da-neofita-sulle-classi/148498 "2008-09-13T19:08:31Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![mentat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@mentat](https://www.ruby-forum.com/u/mentat)\
**Post date:** [September 13, 2008, 7:08pm UTC](https://www.ruby-forum.com/t/domanda-da-neofita-sulle-classi/148498/1 "2008-09-13T19:08:31Z")

</div>

## 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… 🙂  
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…🙂  
Grazie per le eventuali risposte

---

<div class="post-metadata">

**Author:** ![mentat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@mentat](https://www.ruby-forum.com/u/mentat)\
**Post date:** [September 13, 2008, 7:50pm UTC](https://www.ruby-forum.com/t/domanda-da-neofita-sulle-classi/148498/2 "2008-09-13T19:50:27Z")

</div>

Giacomo G. wrote:

> 2008/9/13 Giovanni C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> > 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)

---

<div class="post-metadata">

**Author:** ![mentat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@mentat](https://www.ruby-forum.com/u/mentat)\
**Post date:** [September 13, 2008, 7:16pm UTC](https://www.ruby-forum.com/t/domanda-da-neofita-sulle-classi/148498/3 "2008-09-13T19:16:41Z")

</div>

2008/9/13 Giovanni C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> asong = Song.new(“partiro”,“bocelli”,120)
> 
> Spero di essere stato chiaro!  
> Per chi non l’avesse capito sto’ iniziando adesso…🙂  
> 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

---

<div class="post-metadata">

**Author:** ![mentat](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/74df32/32.png) [@mentat](https://www.ruby-forum.com/u/mentat)\
**Post date:** [September 13, 2008, 7:52pm UTC](https://www.ruby-forum.com/t/domanda-da-neofita-sulle-classi/148498/4 "2008-09-13T19:52:57Z")

</div>

* * *

> 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…🙂 Grazie di  
nuovo
