[Ruby] Résumé des définitions de classe. Maîtrisez les bases.

[Ruby] Résumé des définitions de classe. Maîtrisez les bases.

Résumé du contenu lié à la définition de la classe ruby.

table des matières

  1. [Définition de classe](# définition de classe)
  2. [Définition de la variable d'instance (attr_accessor :)](# Définition de la variable d'instance attr_accessor-)
  3. [Créer une instance (.new)](#Create Instance new)
  4. [Mettre la valeur dans la variable d'instance](#Put la valeur dans la variable d'instance)
  5. [Méthode d'instance (méthode définie dans la classe)](# méthode de méthode d'instance définie dans la classe)
  6. [Méthode d'instance d'appel](méthode d'instance #Call)
  7. [Utiliser les variables d'instance dans les méthodes d'instance (self)](#Utiliser les variables d'instance dans les méthodes d'instance)
  8. [Utiliser l'instruction if dans la méthode d'instance](#Utiliser l'instruction if dans la méthode d'instance)
  9. [méthode initialize](méthode #initialize)
  10. [Split File (require "")](# Split File require-)
  11. [Extraire plusieurs instances individuellement avec chaque méthode](# Extraire plusieurs instances individuellement avec chaque méthode)
  12. [Ajouter un numéro d'index à l'élément](# Ajouter un numéro d'index)
  13. [Recevoir la valeur d'entrée (gets.chomp)](#Recevoir la valeur d'entrée getschomp)
  14. [Convertir la chaîne en nombre (.to_i)](#Convertir la chaîne en nombre en_i)
  15. Héritage (<)
  16. [Division du fichier d'héritage](# Division du fichier d'héritage)
  17. Ajouter une variable d'instance (#Add Instance Variable)
  18. [Add Instance Method](#Add Instance Method)
  19. Remplacer (#override)
  20. [Appel des méthodes dupliquées dans la classe parent (super)](#Appel des méthodes dupliquées dans la classe parent super)
  21. [Charger les classes fournies par défaut](#Load classes fournies par défaut)
  22. [Classe de date](classe #date)
  23. [Méthode d'instance de classe Date](méthode d'instance de classe #date)
  24. [Vérifiez si c'est un jour désigné](#Vérifiez s'il s'agit d'un jour désigné)
  25. [Méthode de classe de la classe Date](méthode de classe de la classe #date)
  26. [Vérifiez la date d'aujourd'hui (.today)](#Check la date d'aujourd'hui aujourd'hui)
  27. [Méthode d'instance et méthode de classe](# Méthode d'instance et méthode de classe)
  28. Créer et appeler des méthodes de classe (#Créer et appeler des méthodes de classe)

Définition de classe

python


classe nom de classe

end

└ Le nom de la classe est en majuscule au début └ Pas besoin de ":" à la fin de la première ligne └ "fin" est obligatoire à la fin de la phrase

Définition de la variable d'instance (attr_accessor :)

Une variable qui stocke des valeurs uniques à chaque instance.

ʻAttr_accessor: nom de la variable d'instance ` └ Espace immédiatement après attr_accessor └ Symbole (: valeur) après l'espace └ Pas d'espace entre ":" et "value"

À propos du symbole rubis

Définition des variables d'instance


class Product
  attr_accessor :name
  attr_accessor :price
end

Définissez les variables d'instance "nom" et "prix".

Créer une instance (.new)

Nom de classe.new

python


class Product
  attr_accessor :name
  attr_accessor :price
end

#Génération d'instance
product1 = Product.new

Mettez une valeur dans la variable d'instance

"Nom de l'instance. Nom de la variable d'instance = valeur"

python


class Product
  attr_accessor :name
  attr_accessor :price
end

#Génération d'instance
product1 = Product.new

#Définissez la valeur dans la variable d'instance
product1.name = "iphone"
product1.price = 100000


puts product1.name
puts product1.price

#production
iphone
100000

Définissez iphone sur le nom de l'instance appelée product1. Fixez le prix à 100000.

Méthode d'instance (méthode définie dans la classe)

Les méthodes de la classe sont appelées méthodes d'instance.

python


nom de classe de classe
nom de la méthode def(Nom de l'argument)
En traitement
  end
end

Invocation de la méthode d'instance

ʻInstance name.method name`

Identique à l'appel d'une variable d'instance.

python


class Product
  attr_accessor :name
  attr_accessor :price

  def create
    return "Créé une instance(return)"
  end
end

#Génération d'instance
product1 = Product.new

#Appel de méthode d'instance
puts product1.create


#production
Créé une instance(return)

Utiliser des variables d'instance dans les méthodes d'instance

nom de la variable d'instance self

python


class Product
  attr_accessor :name
  attr_accessor :price

  def create
    puts "Le nom du produit est#{self.name}est"
    puts "le prix est#{self.price}est"
  end
end

#Génération d'instance
product1 = Product.new

#Définissez la valeur dans la variable d'instance
product1.name = "iphone"
product1.price = 100000

#Exécution de la méthode d'instance
product1.create


#production
Le nom du produit est iphone
Le prix est 100000

Utiliser l'instruction if dans la méthode d'instance

python


class Product
  attr_accessor :name
  attr_accessor :price

  #Méthode de 10% de réduction pour les commandes de 10 ou plus
  def get_total_price(count)
    total_price = self.price * count
    if count >=10
      total_price *= 0.9
    end
    return total_price
  end
end

#Génération d'instance
product1 = Product.new

#Définissez la valeur dans la variable d'instance
product1.name = "iphone"
product1.price = 100000

#Exécution de la méthode d'instance
puts product1.get_total_price(10)

#production
900000

méthode d'initialisation

Une fonction qui est automatiquement exécutée lorsqu'une instance est créée. (Constructeur tel que python)

Passez des arguments lors de la création d'une instance et définissez des variables d'instance.

python


nom de classe de classe
  def initialize(Nom de l'argument)
En traitement
  end
end

#Génération d'instance
Nom de l'instance=nom de la classe.new(argument)

▼ Définir les variables d'instance avec la méthode initialize

Exemple ①


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name,price)
    self.name = name
    self.price = price
 end
 
 def info
   return "nom du produit:#{self.name},prix:#{self.price}"
 end

end

#Génération d'instance
product1 = Product.new("iphone", 100000)

puts product1.info

#production
Nom du produit: iphone, prix: 100000

▼ Utiliser des arguments de mots-clés

Exemple ② (argument mot-clé)


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "nom du produit:#{self.name},prix:#{self.price}"
 end
end

#Génération d'instance
product1 = Product.new(name:"iphone", price:100000)

puts product1.info


#production
Nom du produit: iphone, prix: 100000

Division de fichier (nécessite "")

requiert" ./ nom de fichier " ` └ Pas besoin d'extension ".rb"

▼ Lisez "product.rb" qui décrit la définition de classe au début de "index.rb".

product.rb


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "nom du produit:#{self.name},prix:#{self.price}"
 end
end

index.rb


#Lecture de fichiers
require "./product"

#Instancier avec la classe du fichier lu
product1 = Product.new(name:"iphone", price:100000)
puts product1.info

#production
Nom du produit: iphone, prix: 100000

Extraire plusieurs instances individuellement avec chaque méthode

--Split la définition de classe et l'instanciation en fichiers. --Créez plusieurs instances et stockez-les dans un tableau.

product.rb


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "nom du produit:#{self.name},prix:#{self.price}"
 end
end

index.rb


#Lecture de fichiers
require "./product"

#Instancier avec la classe du fichier lu
product1 = Product.new(name:"iphone6s", price:60000)
product2 = Product.new(name:"iphone8", price:80000)
product3 = Product.new(name:"iphoneX", price:100000)
product4 = Product.new(name:"iphone11pro", price:120000)

#Stocker les instances dans un tableau
products = [product1,product2, product3, product4]

#Extraire les instances une par une avec chaque méthode
products.each do |product|
  #Exécuter la méthode d'information sur chaque instance
  puts product.info


#production
Nom du produit: iphone6s, Prix: 60000
Nom du produit: iphone8, prix: 80000
Nom du produit: iphoneX, prix: 100000
Nom du produit: iphone11Pro, Prix: 120,000

Ajouter un numéro d'index

--Combinez chaque méthode avec une variable qui s'incrémente de 1.

index.rb


#Lecture de fichiers
require "./product"

#Instancier avec la classe du fichier lu
product1 = Product.new(name:"iphone6s", price:60000)
product2 = Product.new(name:"iphone8", price:80000)
product3 = Product.new(name:"iphoneX", price:100000)
product4 = Product.new(name:"iphone11pro", price:120000)

#Stocker les instances dans un tableau
products = [product1,product2, product3, product4]

#Définir des variables pour les numéros d'index
index = 0

#Extraire les instances une par une avec chaque méthode
products.each do |product|
  #Exécuter la méthode d'information sur chaque instance
  puts "#{index}. #{product.info}"
  index += 1

#production
0.Nom du produit: iphone6s, Prix: 60000
1.Nom du produit: iphone8, prix: 80000
2.Nom du produit: iphoneX, prix: 100000
3.Nom du produit: iphone11Pro, Prix: 120,000

Réception des valeurs d'entrée (gets.chomp)

Nom de la variable = gets.chomp

Stocke le contenu saisi avant d'appuyer sur la touche Entrée dans une variable. * Stocké sous forme de chaîne de caractères

Convertir des chaînes en nombres (.to_i)

Étant donné que les informations reçues par gets.chomp sont une chaîne de caractères, elles sont converties en valeur numérique. Nom de la variable = gets.chomp.to_i

Recevoir les données d'entrée


puts "Veuillez saisir un pseudo"
name = gets.chomp.to_i

puts "Veuillez entrer votre âge"
age = gets.chomp.to_i

future_age = age+30

puts "#{name}30 ans plus tard#{future_age}est"

Recevoir la valeur d'entrée et l'instance

Recevez le numéro d'index de l'instance et la quantité commandée.

--Sélectionnez l'instance qui correspond à la valeur d'entrée reçue. --Recevoir la quantité commandée et renvoyer le montant total.

▼ Fichier défini par classe

product.rb


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "nom du produit:#{self.name},prix:#{self.price}"
 end
end

index.rb


#Lecture de fichier
require "./product"

#Instancier avec la classe du fichier lu
product1 = Product.new(name:"iphone6s", price:60000)
product2 = Product.new(name:"iphone8", price:80000)
product3 = Product.new(name:"iphoneX", price:100000)
product4 = Product.new(name:"iphone11pro", price:120000)

#Stocker les instances dans un tableau
products = [product1,product2, product3, product4]

#Définir des variables pour les numéros d'index
index = 0

#Extraire les instances une par une avec chaque méthode
products.each do |product|
  #Exécuter la méthode d'information sur chaque instance
  puts "#{index}. #{product.info}"
  index += 1

#Recevoir le numéro d'article
puts "Veuillez saisir le numéro d'article"
order = gets.chomp.to_i

selected_product = products[order]

#Recevoir le nombre de commandes
puts "Le produit sélectionné est#{selected_product.name}est"
puts "Combien de pièces souhaitez-vous commander?"
count = gets.chomp.to_i

#Calcul du montant total
total_price = selected_product.price * gets.chomp.to_i * 1.1

puts "Le montant total est#{total_price}est"

Héritage (<)

Hérite des variables d'instance et des méthodes d'instance de la classe parent.

classe Nom de la classe enfant <Nom de la classe parent └ Lettres majuscules au début └Enfin, fin requis └ La classe parent est en haut (ou lue dans un autre fichier)

Héritage


require "./Nom du fichier de classe parent"

classe Nom de classe enfant<Nom de la classe parent

end 

Division du fichier d'héritage

Les fichiers sont à peu près classés en quatre types. Les parenthèses sont des exemples de noms de fichiers.

--Fichier qui définit la classe parent (nom de la classe parent.py) --Fichier qui définit la classe enfant (nom de classe enfant.py) --Fichier d'instanciation (data.py) --Fichier de sortie (index.py)

Un fichier qui définit les classes enfants est créé pour chaque classe enfant. (Selon la quantité de code, il peut être combiné en un seul fichier)

Ajouter une variable d'instance

Définissez simplement une nouvelle variable d'instance dans la classe héritée.

ʻAttr_accessor: nom de la variable d'instance `

product.rb


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "nom du produit:#{self.name},prix:#{self.price}"
 end
end

▼ Créer une classe Phone par héritage. Ajout du poids variable de l'instance.

phone.rb


require "./product"

class Phone < Product
   attr_accessor :weight
end

▼ Définissez la valeur sur l'instance générée par la classe enfant Phone

index.rb


require "./phone"

#Génération d'instance
phone1 = Phone.new(name: "iphone11", price: "120000")

#Définissez la valeur sur la variable d'instance ajoutée
phone1.weight = "194g"

puts phone1.weight

#production
194g

Ajouter une méthode d'instance

Définissez simplement une nouvelle méthode d'instance dans la classe héritée.

▼ Ajout d'une méthode au phone.rb ci-dessus. nom de l'instance de soi └ Appel de variables d'instance au sein d'une classe

phone.rb


require "./product"

class Phone < Product
   attr_accessor :weight

   def set_property
      return "#{self.name}Pèse#{self.weight}est"
   end     
end

▼ Appel de méthodes supplémentaires

index.rb


require "./phone"

#Génération d'instance
phone1 = Phone.new(name: "iphone11", price: "120000")

#Définissez la valeur sur la variable d'instance ajoutée
phone1.weight = "194g"

#Appelez la méthode ajoutée
puts phone1.set_property

#production
iphone11 pèse 194g

passer outre

Écraser les variables / méthodes d'instance. (S'il est déjà défini dans la classe parent, il sera remplacé)

product.rb


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "nom du produit:#{self.name},prix:#{self.price}"
 end
end

▼ Remplacer la méthode info de la classe parent

phone.rb


require "./product"

class Phone < Product
   attr_accessor :weight

   #passer outre
   def info
      return "nom du produit:#{self.name},prix:#{self.price}Cercle, poids:#{self.weight}"
   end     
end

▼ Appel de la méthode remplacée

index.rb


require "./phone"

#Génération d'instance
phone1 = Phone.new(name: "iphone11", price: "120000")

#Définissez la valeur sur la variable d'instance ajoutée
phone1.weight = "194g"

#Appelez la méthode ajoutée
puts phone1.info

#production
Nom du produit: iphone11, prix: 120000 yens, poids: 194g

Invocation de méthode en double dans la classe parent (super)

Appelez une méthode qui a déjà été définie dans initialize. super (argument: variable de la classe parent)

▼ Classe des parents

product.rb


class Product
  attr_accessor :name
  attr_accessor :price

#Où appeler avec priorité
 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "nom du produit:#{self.name},prix:#{self.price}"
 end
end

phone.rb


require "./product"

class Phone < Product
   attr_accessor :weight

   #Remplacer l'initialisation (appeler la pièce existante)
   def initialize(name:, price:, weight:)
      super(name: name, price: price)      
      self.weight = weight
   end

   #passer outre
   def info
      return "nom du produit:#{self.name},prix:#{self.price}Cercle, poids:#{self.weight}"
   end     
end

Chargement des classes fournies par défaut

nécessite" nom de classe " └ Différent de la lecture d'un fichier (nécessite "./filename")

Classe de date

Une des classes définies par défaut dans Ruby. ▼ Classe de chargement require "date"

▼ Génération d'instance de date Variable = Date.new (aaaa, m, j)

▼ Sortie yyyy-mm-dd

python


require "date"

yesterday = Date.new(2020, 5, 30)
puts yesterday

#production
2020-05-30

Méthode d'instance de classe Date

Vérifiez si c'est le jour spécifié

Vérifier s'il s'agit du jour spécifié → Renvoyer sous forme de valeur booléenne. ʻInstance name.day? `

python


require "date"

yesterday = Date.new(2020, 5, 30)
puts yesterday.monday?
puts yesterday.saturday?

#production
false
True

Méthode de classe de la classe Date

Vérifiez la date du jour (.aujourd'hui)

Date.today

python


require "date"

date1 = Date.today
puts date1

#production
2020-05-31

Méthode d'instance et méthode de classe

** Lors de l'utilisation de méthodes de classe ** -Les résultats de sortie qui ne dépendent pas de l'instance.

Exemple: recherchez la date du jour. Date.today

Créer et appeler des méthodes de classe

Vous pouvez créer vos propres méthodes de classe. def class name.method name

** ▼ Méthode de classe pour vérifier si la date d'aujourd'hui est le lundi **

--Lire la classe Date --Définir une méthode de classe

product.rb


require "date"

class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "nom du produit:#{self.name},prix:#{self.price}"
 end

#Définir la méthode de classe
 def Product.is_today_off
   today = Date.today
   if today.monday
     "Aujourd'hui est un jour férié régulier" 
   else
     self.info
end

▼ Utilisez la méthode de classe définie

index.rb


require "./product"

product1 = Product.new(name: "iphone11", price: "120000")

#Appel d'une méthode de classe
Product.is_today_off

Recommended Posts

[Ruby] Résumé des définitions de classe. Maîtrisez les bases.
[Ruby] Imbrication de classes, héritage et principes de base de soi
Bases de Ruby
Surveillance Docker-expliquant les bases des bases-
[GCD] Principes de base de la classe DispatchQueue
Résumé des bases du langage Java
Résumé de la classe Java Math
[Résumé des livres techniques] Résumé de la lecture "Apprendre Docker à partir des bases"
À propos du comportement de ruby Hash # ==
À propos des bases du développement Android
Les bases de SpringBoot + MyBatis + MySQL
[Ruby] Informations de base sur les classes Date, Heure et DateHeure
Diverses méthodes de la classe String
Bases de Ruby ~ Revue de difficile à comprendre ~
Bases de Ruby 2 ~ Revue des points difficiles ~
[Ruby] Afficher le contenu des variables
[Challenge CircleCI from 0] Apprenez les bases de CircleCI
Comprendre les bases de l'enregistrement audio Android
Bases de Ruby
[Ruby] Des bases à la méthode inject
Maintenant, j'ai résumé les bases de RecyclerView
Résumé des hachages et symboles dans Ruby
[Introduction à Ruby] À propos du rôle de true et break in the while statement
[jour: 5] J'ai résumé les bases de Java
[Ruby] Coupez le contenu des publicités Twitter
Retour sur les bases de Java
Nommer et appeler explicitement des méthodes de classe parent dans Ruby
Comment trouver la cause de l'erreur Ruby
Qu'est-ce que JSP? ~ Connaissons les bases de JSP !! ~
[Ruby on Rails] Jusqu'à l'introduction de RSpec
[Ruby] Connaissance de base des variables d'instance de classe, etc.
[Supprimer la première lettre de la chaîne de caractères] Ruby
J'ai compris les bases de la saisie de caractères
Recommandation de classe de service dans Ruby on Rails
L'histoire de l'introduction de la communication Ajax à Ruby
Gérez la version de Ruby elle-même avec rbenv
Ruby on Rails ~ Principes de base de MVC et du routeur ~
[Ruby] Code pour afficher le jour
À propos de next () et nextLine () de la classe Scanner
Première touche de la classe Files (ou Java 8)
J'ai vérifié le nombre de taxis avec Ruby
[Introduction à Ruby] Comment utiliser la méthode slice
Résumé de la syntaxe Ruby
[Ruby] Liste de codes de base. Gardez les bases avec des exemples
[Pour les débutants] DI ~ Les bases de DI et DI au printemps ~
[Pour les débutants] Comprendre rapidement les bases de Java 8 lambda