Ruby - Classi e oggetti

Ruby è un perfetto linguaggio di programmazione orientato agli oggetti. Le caratteristiche del linguaggio di programmazione orientato agli oggetti includono:

  • Incapsulamento dei dati
  • Astrazione dei dati
  • Polymorphism
  • Inheritance

Queste caratteristiche sono state discusse nel capitolo Object Oriented Ruby .

Un programma orientato agli oggetti coinvolge classi e oggetti. Una classe è il progetto da cui vengono creati i singoli oggetti. In termini orientati agli oggetti, diciamo che la tua bicicletta è un'istanza della classe di oggetti nota come biciclette.

Prendi l'esempio di qualsiasi veicolo. Comprende ruote, potenza e capacità del serbatoio del carburante o del gas. Queste caratteristiche formano i membri dei dati della classe Veicolo. Puoi differenziare un veicolo dall'altro con l'aiuto di queste caratteristiche.

Un veicolo può anche avere determinate funzioni, come fermarsi, guidare e accelerare. Anche queste funzioni formano i membri dati della classe Veicolo. È quindi possibile definire una classe come una combinazione di caratteristiche e funzioni.

Una classe Veicolo può essere definita come:

Class Vehicle {

   Number no_of_wheels
   Number horsepower
   Characters type_of_tank
   Number Capacity
   Function speeding {
   }
   
   Function driving {
   }
   
   Function halting {
   }
}

Assegnando valori diversi a questi membri dati, è possibile formare diverse istanze della classe Veicolo. Ad esempio, un aereo ha tre ruote, una potenza di 1.000 cavalli, carburante come tipo di serbatoio e una capacità di 100 litri. Allo stesso modo, un'auto ha quattro ruote, 200 cavalli, gas come il tipo di serbatoio e una capacità di 25 litri.

Definizione di una classe in Ruby

Per implementare la programmazione orientata agli oggetti usando Ruby, devi prima imparare come creare oggetti e classi in Ruby.

Una classe in Ruby inizia sempre con la parola chiave class seguita dal nome della classe. Il nome dovrebbe essere sempre in maiuscolo iniziale. La classe Cliente può essere visualizzata come:

class Customer
end

Si termina una classe utilizzando la parola chiave end . Tutti i membri di dati nella classe si trovano tra la definizione della classe e la parola chiave end .

Variabili in una classe Ruby

Ruby fornisce quattro tipi di variabili:

  • Local Variables- Le variabili locali sono le variabili definite in un metodo. Le variabili locali non sono disponibili al di fuori del metodo. Vedrai maggiori dettagli sul metodo nel capitolo successivo. Le variabili locali iniziano con una lettera minuscola o _.

  • Instance Variables- Le variabili di istanza sono disponibili tra i metodi per qualsiasi particolare istanza o oggetto. Ciò significa che le variabili di istanza cambiano da oggetto a oggetto. Le variabili di istanza sono precedute dal segno (@) seguito dal nome della variabile.

  • Class Variables- Le variabili di classe sono disponibili in diversi oggetti. Una variabile di classe appartiene alla classe ed è una caratteristica di una classe. Sono preceduti dal segno @@ e sono seguiti dal nome della variabile.

  • Global Variables- Le variabili di classe non sono disponibili tra le classi. Se vuoi avere una singola variabile, che è disponibile tra le classi, devi definire una variabile globale. Le variabili globali sono sempre precedute dal segno del dollaro ($).

Esempio

Utilizzando la variabile di classe @@ no_of_customers, è possibile determinare il numero di oggetti che vengono creati. Ciò consente di derivare il numero di clienti.

class Customer
   @@no_of_customers = 0
end

Creazione di oggetti in Ruby utilizzando il nuovo metodo

Gli oggetti sono istanze della classe. Ora imparerai come creare oggetti di una classe in Ruby. Puoi creare oggetti in Ruby usando il metodo new della classe.

Il metodo new è un tipo di metodo unico, predefinito nella libreria Ruby. Il nuovo metodo appartiene ai metodi della classe .

Ecco l'esempio per creare due oggetti cust1 e cust2 della classe Customer:

cust1 = Customer. new
cust2 = Customer. new

Qui, cust1 e cust2 sono i nomi di due oggetti. Scrivi il nome dell'oggetto seguito dal segno di uguale (=) dopo di che seguirà il nome della classe. Quindi seguiranno l'operatore punto e la parola chiave new .

Metodo personalizzato per creare oggetti Ruby

È possibile passare parametri al metodo new e questi parametri possono essere utilizzati per inizializzare le variabili di classe.

Quando si prevede di dichiarare il nuovo metodo con parametri, è necessario dichiarare il metodo inizializzato al momento della creazione della classe.

Il metodo initialize è un tipo speciale di metodo, che verrà eseguito quando il nuovo metodo della classe viene chiamato con parametri.

Ecco l'esempio per creare il metodo di inizializzazione:

class Customer
   @@no_of_customers = 0
   def initialize(id, name, addr)
      @cust_id = id
      @cust_name = name
      @cust_addr = addr
   end
end

In questo esempio, dichiari il metodo di inizializzazione conid, name, e addrcome variabili locali. Qui, DEF e fine vengono utilizzati per definire un metodo di Ruby initialize . Imparerai di più sui metodi nei capitoli successivi.

Nel metodo initialize , trasferisci i valori di queste variabili locali alle variabili di istanza @cust_id, @cust_name e @cust_addr. Qui le variabili locali contengono i valori che vengono passati insieme al nuovo metodo.

Ora puoi creare oggetti come segue:

cust1 = Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2 = Customer.new("2", "Poul", "New Empire road, Khandala")

Funzioni membro nella classe Ruby

In Ruby, le funzioni sono chiamate metodi. Ogni metodo in una classe inizia con la parola chiave def seguita dal nome del metodo.

Il nome del metodo è sempre preferito in lowercase letters. Si termina un metodo in Ruby utilizzando la parola chiave end .

Ecco l'esempio per definire un metodo Ruby:

class Sample
   def function
      statement 1
      statement 2
   end
end

Qui, l' istruzione 1 e l' istruzione 2 fanno parte del corpo della funzione del metodo all'interno della classe Sample. Queste affermazioni potrebbero essere qualsiasi dichiarazione Ruby valida. Ad esempio possiamo mettere un metodo put per stampare Hello Ruby come segue:

class Sample
   def hello
      puts "Hello Ruby!"
   end
end

Ora, nel seguente esempio, crea un oggetto della classe Sample e chiama il metodo hello e guarda il risultato -

#!/usr/bin/ruby

class Sample
   def hello
      puts "Hello Ruby!"
   end
end

# Now using above class to create objects
object = Sample. new
object.hello

Questo produrrà il seguente risultato:

Hello Ruby!

Case study semplice

Ecco un caso di studio se vuoi fare più pratica con la classe e gli oggetti.

Ruby Class Case Study