# Domanda sulle classi

**URL:** <https://www.ruby-forum.com/t/domanda-sulle-classi/150823>\
**Category:** IT\
**Created:** [October 13, 2008, 8:31pm UTC](https://www.ruby-forum.com/t/domanda-sulle-classi/150823 "2008-10-13T20:31:33Z")\
**Posts on this page:** 3\
**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:** [October 13, 2008, 8:31pm UTC](https://www.ruby-forum.com/t/domanda-sulle-classi/150823/1 "2008-10-13T20:31:33Z")

</div>

Salve a tutti!  
Vi scrivo il codice che ho preso dal libro Programming Ruby - The  
Pragmatic Programmers guide - 2nd,studiando il capitolo OBJECTS AND  
ATTRIBUTES.

… Inizio codice  
class Song

# Inizializzazione

def initialize (name,artist,duration)  
@name = name  
@artist = artist  
@duration = duration

# @name si chiama VARIABILE DI ISTANZA

end

# Fine inizializzazione

# Inizio blocco definizione dei metodi

def mostra  
“Song: #@name – #@artist – (#@duration)”  
end

end

# Costruzione dell’oggetto

# Definiamo una nuova classe figlia della precedente

class KaraokeSong \< Song  
def initialize (name,artist,duration,lyrics)  
@lyrics = lyrics  
end  
def mostra  
super + " [#@lyrics]"  
end  
end  
song = Song.new(“Non c’e’”,“Pausini”,“180”)  
puts song.mostra  
puts “…”  
kara = KaraokeSong.new(“pippo”,“pluto”,“100”,“1234567”)  
puts kara.mostra  
kara1 = KaraokeSong.new(“Azzurro”,“Celentano”,“200”,“Azzurro…il cielo  
e’…”)  
puts kara1.mostra  
…Fine codice  
Contrariamente a quello che mostra il libro,mandando in esecuzione il  
programmino ottengo questo:

Song: Non c’e’ – Pausini – (180)  
…  
Song: – – () [1234567]  
Song: – – () [Azzurro…il cielo e’…]

Domandona… 🙂  
Perche’ stampa solamente la parte finale e non stampa i campi name  
,artist e duration?  
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:** [October 13, 2008, 9:55pm UTC](https://www.ruby-forum.com/t/domanda-sulle-classi/150823/2 "2008-10-13T21:55:12Z")

</div>

Ciao  
…  
class KaraokeSong \< Song  
def initialize (name,artist,duration,lyrics)  
super (name,artist,duration)  
@lyrics = lyrics  
end  
…

devi chiamare super nel costruttore di KaraokeSong altrimenti non ti  
inizializza gli attributi ereditati da Song.

---

<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:** [October 13, 2008, 10:56pm UTC](https://www.ruby-forum.com/t/domanda-sulle-classi/150823/3 "2008-10-13T22:56:25Z")

</div>

Pierpaolo S. wrote:

> Ciao  
> …  
> class KaraokeSong \< Song  
> def initialize (name,artist,duration,lyrics)  
> super (name,artist,duration)  
> @lyrics = lyrics  
> end  
> …
> 
> devi chiamare super nel costruttore di KaraokeSong altrimenti non ti  
> inizializza gli attributi ereditati da Song.

Adesso con il pezzo di codice cosi’ modificato:  
---------------------- INIZIO  
class KaraokeSong \< Song  
def initialize (name,artist,duration,lyrics)  
super(name,artist,duration)  
@lyrics = lyrics  
end  
def mostra  
super + " [#@lyrics]"  
end  
end  
--------------------------- FINE  
funziona tutto.  
Grazie per l’aiuto e la spiegazione!!!
