[Ruby] Zusammenfassung der Klassendefinitionen. Beherrsche die Grundlagen.

[Ruby] Zusammenfassung der Klassendefinitionen. Beherrsche die Grundlagen.

Zusammenfassung der Inhalte zur Definition der Ruby-Klasse.

Inhaltsverzeichnis

  1. [Klassendefinition](# Klassendefinition)
  2. [Definition der Instanzvariablen (attr_accessor :)](# Definition der Instanzvariablen attr_accessor-)
  3. [Instanz erstellen (.neu)](#Instanz neu erstellen)
  4. [Wert in Instanzvariable setzen](# Wert in Instanzvariable setzen)
  5. [Instanzmethode (in der Klasse definierte Methode)](# in der Klasse definierte Instanzmethodenmethode)
  6. Instanzmethode aufrufen
  7. [Instanzvariablen in Instanzmethoden verwenden (self)](#Instanzvariablen in Instanzmethoden verwenden)
  8. [Verwenden Sie die if-Anweisung in der Instanzmethode](#Verwenden Sie die if-Anweisung in der Instanzmethode)
  9. [Methode initialisieren](# Methode initialisieren)
  10. [Geteilte Datei (erforderlich "")](# Geteilte Datei erforderlich-)
  11. [Mehrere Instanzen mit jeder Methode einzeln extrahieren](# Mehrere Instanzen mit jeder Methode einzeln extrahieren)
  12. [Indexnummer zum Element hinzufügen](# Indexnummer hinzufügen)
  13. [Eingabewert empfangen (gets.chomp)](# Eingabewert erhalten getschomp)
  14. [String in Zahl umwandeln (.to_i)](# String in Zahl umwandeln in_i umwandeln)
  15. [Vererbung (<)](# Vererbung)
  16. [Aufteilung der Vererbungsdatei](# Aufteilung der Vererbungsdatei)
  17. Instanzvariable hinzufügen (# Instanzvariable hinzufügen)
  18. [Instanzmethode hinzufügen](# Instanzmethode hinzufügen)
  19. Override (#override)
  20. [Aufrufen doppelter Methoden in der übergeordneten Klasse (super)](# Aufrufen doppelter Methoden in der übergeordneten Klasse super)
  21. [Standardmäßig bereitgestellte Ladeklassen](# Standardmäßig bereitgestellte Ladeklassen)
  22. Datumsklasse
  23. Datumsklasseninstanzmethode
  24. [Überprüfen Sie, ob es sich um einen bestimmten Tag handelt](#Überprüfen Sie, ob es sich um einen bestimmten Tag handelt)
  25. [Klassenmethode der Date-Klasse](Klassenmethode der # date-Klasse)
  26. [Überprüfen Sie das heutige Datum (.today)](#Überprüfen Sie das heutige Datum heute)
  27. [Instanzmethode und Klassenmethode](# Instanzmethode und Klassenmethode)
  28. Klassenmethoden erstellen und aufrufen (# Klassenmethoden erstellen und aufrufen)

Klassendefinition

python


Klasse Klassenname

end

└ Der Klassenname wird am Anfang großgeschrieben └ Kein ":" am Ende der ersten Zeile erforderlich └ "Ende" ist am Ende des Satzes erforderlich

Definition der Instanzvariablen (attr_accessor :)

Eine Variable, die Werte speichert, die für jede Instanz eindeutig sind.

attr_accessor: Name der Instanzvariablen └ Leerzeichen unmittelbar nach attr_accessor └ Symbol (: Wert) nach dem Leerzeichen └ Kein Leerzeichen zwischen ":" und "Wert"

Über das Rubinsymbol

Definition von Instanzvariablen


class Product
  attr_accessor :name
  attr_accessor :price
end

Definieren Sie die Instanzvariablen "Name" und "Preis".

Instanz erstellen (.neu)

Klassenname.neu

python


class Product
  attr_accessor :name
  attr_accessor :price
end

#Instanzgenerierung
product1 = Product.new

Geben Sie einen Wert in die Instanzvariable ein

Instanzname. Name der Instanzvariablen = Wert

python


class Product
  attr_accessor :name
  attr_accessor :price
end

#Instanzgenerierung
product1 = Product.new

#Legen Sie den Wert in der Instanzvariablen fest
product1.name = "iphone"
product1.price = 100000


puts product1.name
puts product1.price

#Ausgabe
iphone
100000

Setzen Sie das iPhone auf den Namen der Instanz mit dem Namen product1. Preis auf 100000 einstellen.

Instanzmethode (in der Klasse definierte Methode)

Die Methoden in der Klasse werden als Instanzmethoden bezeichnet.

python


Klasse Klassenname
def Methodenname(Argumentname)
wird bearbeitet
  end
end

Aufruf der Instanzmethode

Instanzname.methodenname

Entspricht dem Aufruf einer Instanzvariablen.

python


class Product
  attr_accessor :name
  attr_accessor :price

  def create
    return "Instanz erstellt(return)"
  end
end

#Instanzgenerierung
product1 = Product.new

#Instanzmethodenaufruf
puts product1.create


#Ausgabe
Instanz erstellt(return)

Verwenden Sie Instanzvariablen in Instanzmethoden

self. instance variable name

python


class Product
  attr_accessor :name
  attr_accessor :price

  def create
    puts "Der Produktname lautet#{self.name}ist"
    puts "der Preis ist#{self.price}ist"
  end
end

#Instanzgenerierung
product1 = Product.new

#Legen Sie den Wert in der Instanzvariablen fest
product1.name = "iphone"
product1.price = 100000

#Ausführung der Instanzmethode
product1.create


#Ausgabe
Der Produktname lautet iphone
Der Preis beträgt 100000

Verwenden Sie die if-Anweisung in der Instanzmethode

python


class Product
  attr_accessor :name
  attr_accessor :price

  #10% RABATT-Methode für Bestellungen ab 10
  def get_total_price(count)
    total_price = self.price * count
    if count >=10
      total_price *= 0.9
    end
    return total_price
  end
end

#Instanzgenerierung
product1 = Product.new

#Legen Sie den Wert in der Instanzvariablen fest
product1.name = "iphone"
product1.price = 100000

#Ausführung der Instanzmethode
puts product1.get_total_price(10)

#Ausgabe
900000

Methode initialisieren

Eine Funktion, die beim Erstellen einer Instanz automatisch ausgeführt wird. (Konstruktor wie Python)

Übergeben Sie Argumente beim Erstellen einer Instanz und legen Sie Instanzvariablen fest.

python


Klasse Klassenname
  def initialize(Argumentname)
wird bearbeitet
  end
end

#Instanzgenerierung
Instanzname=Name der Klasse.new(Streit)

▼ Legen Sie Instanzvariablen mit der Initialisierungsmethode fest

Beispiel ①


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name,price)
    self.name = name
    self.price = price
 end
 
 def info
   return "Produktname:#{self.name},Preis:#{self.price}"
 end

end

#Instanzgenerierung
product1 = Product.new("iphone", 100000)

puts product1.info

#Ausgabe
Produktname: iPhone, Preis: 100000

▼ Verwenden Sie Schlüsselwortargumente

Beispiel ② (Schlüsselwortargument)


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "Produktname:#{self.name},Preis:#{self.price}"
 end
end

#Instanzgenerierung
product1 = Product.new(name:"iphone", price:100000)

puts product1.info


#Ausgabe
Produktname: iPhone, Preis: 100000

Dateisplit (erforderlich "")

require" ./ Dateiname " ` └ Keine Erweiterung ".rb" erforderlich

▼ Lesen Sie "product.rb", das die Klassendefinition am Anfang von "index.rb" beschreibt.

product.rb


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "Produktname:#{self.name},Preis:#{self.price}"
 end
end

index.rb


#Datei lesen
require "./product"

#Instanziieren Sie mit der Klasse der gelesenen Datei
product1 = Product.new(name:"iphone", price:100000)
puts product1.info

#Ausgabe
Produktname: iPhone, Preis: 100000

Extrahieren Sie mit jeder Methode mehrere Instanzen einzeln

product.rb


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "Produktname:#{self.name},Preis:#{self.price}"
 end
end

index.rb


#Datei lesen
require "./product"

#Instanziieren Sie mit der Klasse der gelesenen Datei
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)

#Speichern Sie Instanzen in einem Array
products = [product1,product2, product3, product4]

#Extrahieren Sie Instanzen nacheinander mit jeder Methode
products.each do |product|
  #Führen Sie die Infomethode für jede Instanz aus
  puts product.info


#Ausgabe
Produktname: iphone6s, Preis: 60000
Produktname: iphone8, Preis: 80000
Produktname: iphoneX, Preis: 100000
Produktname: iphone11Pro, Preis: 120.000

Indexnummer hinzufügen

index.rb


#Datei lesen
require "./product"

#Instanziieren Sie mit der Klasse der gelesenen Datei
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)

#Speichern Sie Instanzen in einem Array
products = [product1,product2, product3, product4]

#Definieren Sie Variablen für Indexnummern
index = 0

#Extrahieren Sie Instanzen nacheinander mit jeder Methode
products.each do |product|
  #Führen Sie die Infomethode für jede Instanz aus
  puts "#{index}. #{product.info}"
  index += 1

#Ausgabe
0.Produktname: iphone6s, Preis: 60000
1.Produktname: iphone8, Preis: 80000
2.Produktname: iphoneX, Preis: 100000
3.Produktname: iphone11Pro, Preis: 120.000

Eingabewerte empfangen (gets.chomp)

Variablenname = gets.chomp

Speichert den eingegebenen Inhalt, bevor die Eingabetaste gedrückt wird, in einer Variablen. * Als Zeichenkette gespeichert

Konvertieren Sie Zeichenfolgen in Zahlen (.to_i)

Da die von gets.chomp empfangenen Informationen eine Zeichenfolge sind, werden sie in einen numerischen Wert konvertiert. Variablenname = gets.chomp.to_i

Eingangsdaten empfangen


puts "Bitte geben Sie einen Spitznamen ein"
name = gets.chomp.to_i

puts "Bitte geben sie ihr alter ein"
age = gets.chomp.to_i

future_age = age+30

puts "#{name}30 Jahre später#{future_age}ist"

Eingabewert und Instanz empfangen

Erhalten Sie die Instanzindexnummer und die Bestellmenge.

--Wählen Sie die Instanz aus, die dem empfangenen Eingabewert entspricht.

▼ Klassendefinierte Datei

product.rb


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "Produktname:#{self.name},Preis:#{self.price}"
 end
end

index.rb


#Datei lesen
require "./product"

#Instanziieren Sie mit der Klasse der gelesenen Datei
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)

#Speichern Sie Instanzen in einem Array
products = [product1,product2, product3, product4]

#Definieren Sie Variablen für Indexnummern
index = 0

#Extrahieren Sie Instanzen nacheinander mit jeder Methode
products.each do |product|
  #Führen Sie die Infomethode für jede Instanz aus
  puts "#{index}. #{product.info}"
  index += 1

#Erhalten Sie die Artikelnummer
puts "Bitte geben Sie die Artikelnummer ein"
order = gets.chomp.to_i

selected_product = products[order]

#Erhalten Sie die Anzahl der Bestellungen
puts "Das ausgewählte Produkt ist#{selected_product.name}ist"
puts "Wie viele Stücke möchten Sie bestellen?"
count = gets.chomp.to_i

#Berechnung des Gesamtbetrags
total_price = selected_product.price * gets.chomp.to_i * 1.1

puts "Der Gesamtbetrag beträgt#{total_price}ist"

Vererbung (<)

Erben Sie die Instanzvariablen und Instanzmethoden der übergeordneten Klasse.

class child class name <Name der übergeordneten Klasse └ Großbuchstaben am Anfang └ Endgültiges Ende erforderlich └ Die übergeordnete Klasse befindet sich oben (oder liest eine andere Datei ein).

Erbe


require "./Dateiname der übergeordneten Klasse"

Klasse Name der untergeordneten Klasse<Name der übergeordneten Klasse

end 

Aufteilung der Vererbungsdatei

Dateien werden grob in vier Typen eingeteilt. Klammern sind Beispiele für Dateinamen.

--Datei, die die übergeordnete Klasse definiert (Name der übergeordneten Klasse.py) --Datei, die die untergeordnete Klasse definiert (untergeordneter Klassenname.py) --Datei zur Instanziierung (data.py)

Für jede untergeordnete Klasse wird eine Datei erstellt, die untergeordnete Klassen definiert. (Abhängig von der Menge des Codes kann es in einer Datei kombiniert werden.)

Instanzvariable hinzufügen

Definieren Sie einfach eine neue Instanzvariable in der geerbten Klasse.

attr_accessor: Name der Instanzvariablen

product.rb


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "Produktname:#{self.name},Preis:#{self.price}"
 end
end

▼ Erstellen Sie eine Telefonklasse durch Vererbung. Instanzvariablengewicht hinzugefügt.

phone.rb


require "./product"

class Phone < Product
   attr_accessor :weight
end

▼ Setzen Sie den Wert auf die Instanz, die von der untergeordneten Klasse Telefon generiert wurde

index.rb


require "./phone"

#Instanzgenerierung
phone1 = Phone.new(name: "iphone11", price: "120000")

#Setzen Sie den Wert auf die hinzugefügte Instanzvariable
phone1.weight = "194g"

puts phone1.weight

#Ausgabe
194g

Instanzmethode hinzufügen

Definieren Sie einfach eine neue Instanzmethode in der geerbten Klasse.

▼ Dem obigen phone.rb wurde eine Methode hinzugefügt. self. instance name └ Aufrufen von Instanzvariablen innerhalb einer Klasse

phone.rb


require "./product"

class Phone < Product
   attr_accessor :weight

   def set_property
      return "#{self.name}Wiegt#{self.weight}ist"
   end     
end

▼ Zusätzliche Methoden aufrufen

index.rb


require "./phone"

#Instanzgenerierung
phone1 = Phone.new(name: "iphone11", price: "120000")

#Setzen Sie den Wert auf die hinzugefügte Instanzvariable
phone1.weight = "194g"

#Rufen Sie die hinzugefügte Methode auf
puts phone1.set_property

#Ausgabe
iphone11 wiegt 194g

überschreiben

Instanzvariablen / -methoden überschreiben. (Wenn es bereits in der übergeordneten Klasse definiert ist, wird es überschrieben.)

product.rb


class Product
  attr_accessor :name
  attr_accessor :price

 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "Produktname:#{self.name},Preis:#{self.price}"
 end
end

▼ Überschreiben Sie die Info-Methode der übergeordneten Klasse

phone.rb


require "./product"

class Phone < Product
   attr_accessor :weight

   #überschreiben
   def info
      return "Produktname:#{self.name},Preis:#{self.price}Kreis, Gewicht:#{self.weight}"
   end     
end

▼ Aufrufen der überschriebenen Methode

index.rb


require "./phone"

#Instanzgenerierung
phone1 = Phone.new(name: "iphone11", price: "120000")

#Setzen Sie den Wert auf die hinzugefügte Instanzvariable
phone1.weight = "194g"

#Rufen Sie die hinzugefügte Methode auf
puts phone1.info

#Ausgabe
Produktname: iphone11, Preis: 120.000 Yen, Gewicht: 194 g

Doppelter Methodenaufruf in der übergeordneten Klasse (super)

Rufen Sie eine Methode auf, die bereits bei der Initialisierung definiert wurde. super (Argument: Variable der übergeordneten Klasse)

▼ Elternklasse

product.rb


class Product
  attr_accessor :name
  attr_accessor :price

#Wo mit Override anrufen
 def initialize(name:,price:)
    self.name = name
    self.price = price
 end
 
 def info
   return "Produktname:#{self.name},Preis:#{self.price}"
 end
end

phone.rb


require "./product"

class Phone < Product
   attr_accessor :weight

   #Initialisierung überschreiben (vorhandenes Teil aufrufen)
   def initialize(name:, price:, weight:)
      super(name: name, price: price)      
      self.weight = weight
   end

   #überschreiben
   def info
      return "Produktname:#{self.name},Preis:#{self.price}Kreis, Gewicht:#{self.weight}"
   end     
end

Laden der standardmäßig bereitgestellten Klassen

erfordern" Klassennamen " └ Anders als beim Lesen einer Datei (erfordern "./Dateiname")

Datumsklasse

Eine der in Ruby standardmäßig definierten Klassen. ▼ Ladeklasse require "date"

▼ Datumsinstanzgenerierung Variable = Date.new (JJJJ, M, T)

▼ Ausgabe yyyy-mm-dd

python


require "date"

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

#Ausgabe
2020-05-30

Datumsklasseninstanzmethode

Überprüfen Sie, ob es der angegebene Tag ist

Überprüfen Sie, ob es der angegebene Tag ist → Als boolescher Wert zurückgeben. Instanzname.Tag?

python


require "date"

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

#Ausgabe
false
True

Klassenmethode der Datumsklasse

Überprüfen Sie das heutige Datum (.today)

Date.today

python


require "date"

date1 = Date.today
puts date1

#Ausgabe
2020-05-31

Instanzmethode und Klassenmethode

** Bei Verwendung von Klassenmethoden **

Beispiel: Finden Sie das heutige Datum. Date.today

Klassenmethoden erstellen und aufrufen

Sie können Ihre eigenen Klassenmethoden erstellen. def class name.method name

** ▼ Klassenmethode, um zu überprüfen, ob das heutige Datum Montag ist **

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 "Produktname:#{self.name},Preis:#{self.price}"
 end

#Klassenmethode definieren
 def Product.is_today_off
   today = Date.today
   if today.monday
     "Heute ist ein regelmäßiger Feiertag" 
   else
     self.info
end

▼ Verwenden Sie die definierte Klassenmethode

index.rb


require "./product"

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

#Aufrufen einer Klassenmethode
Product.is_today_off

Recommended Posts

[Ruby] Zusammenfassung der Klassendefinitionen. Beherrsche die Grundlagen.
[Ruby] Klassenverschachtelung, Vererbung und die Grundlagen des Selbst
Grundlagen von Ruby
Docker-Überwachung - Erläuterung der Grundlagen der Grundlagen
[GCD] Grundlagen der DispatchQueue-Klasse
Zusammenfassung der Grundlagen der Java-Sprache
Zusammenfassung der Java Math Klasse
[Zusammenfassung der technischen Bücher] Zusammenfassung der Lektüre "Lernen Sie Docker aus den Grundlagen"
Über das Verhalten von Ruby Hash # ==
Über die Grundlagen der Android-Entwicklung
Die Grundlagen von SpringBoot + MyBatis + MySQL
[Ruby] Grundlagen zu Datum, Uhrzeit und Datumszeit
Verschiedene Methoden der String-Klasse
Grundlagen von Ruby ~ Rückblick auf schwer verständliche ~
Grundlagen von Ruby 2 ~ Rückblick auf schwer verständliche ~
[Ruby] Zeigt den Inhalt von Variablen an
[Herausforderung CircleCI von 0] Lernen Sie die Grundlagen von CircleCI
Verstehen Sie die Grundlagen von Android Audio Record
Ruby-Grundlagen
[Ruby] Von den Grundlagen bis zur Injektionsmethode
Jetzt habe ich die Grundlagen von RecyclerView zusammengefasst
Zusammenfassung der Hashes und Symbole in Ruby
[Einführung in Ruby] Über die Rolle von true und break in der while-Anweisung
[Tag: 5] Ich habe die Grundlagen von Java zusammengefasst
[Ruby] Schneiden Sie den Inhalt von Twitter-Anzeigen ab
Rückblick auf die Grundlagen von Java
Benennen und rufen Sie in Ruby übergeordnete Klassenmethoden explizit auf
So finden Sie die Ursache des Ruby-Fehlers
Was ist JSP? ~ Lassen Sie uns die Grundlagen von JSP kennen !! ~
[Ruby on Rails] Bis zur Einführung von RSpec
[Ruby] Grundkenntnisse über Klasseninstanzvariablen usw.
[Löschen Sie den ersten Buchstaben der Zeichenfolge] Ruby
Ich habe die Grundlagen der Zeicheneingabe verstanden
Empfehlung der Serviceklasse in Ruby on Rails
Die Geschichte der Einführung der Ajax-Kommunikation in Ruby
Verwalten Sie die Version von Ruby selbst mit rbenv
Ruby on Rails ~ Grundlagen von MVC und Router ~
[Ruby] Code zur Anzeige des Tages
Informationen zu next () und nextLine () der Scannerklasse
Erster Touch der Files-Klasse (oder Java 8)
Ich habe die Anzahl der Taxis mit Ruby überprüft
[Ruby-Grundlagen] Verwendung der Slice-Methode
Zusammenfassung der Ruby-Syntax
[Ruby] Grundlegende Codeliste. Behalten Sie die Grundlagen mit Beispielen
[Für Anfänger] DI ~ Die Grundlagen von DI und DI im Frühjahr ~
[Für Anfänger] Verstehen Sie schnell die Grundlagen von Java 8 Lambda