Zusammenfassung der Inhalte zur Definition der Ruby-Klasse.
Inhaltsverzeichnis
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
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"
Definition von Instanzvariablen
class Product
attr_accessor :name
attr_accessor :price
end
Definieren Sie die Instanzvariablen "Name" und "Preis".
Klassenname.neu
python
class Product
attr_accessor :name
attr_accessor :price
end
#Instanzgenerierung
product1 = Product.new
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.
Die Methoden in der Klasse werden als Instanzmethoden bezeichnet.
python
Klasse Klassenname
def Methodenname(Argumentname)
wird bearbeitet
end
end
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)
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
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
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)
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
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
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
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
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
Variablenname = gets.chomp
Speichert den eingegebenen Inhalt, bevor die Eingabetaste gedrückt wird, in einer Variablen. * Als Zeichenkette gespeichert
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"
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"
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
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.)
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
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
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
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
erfordern" Klassennamen "
└ Anders als beim Lesen einer Datei
(erfordern "./Dateiname")
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
Ü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
Date.today
python
require "date"
date1 = Date.today
puts date1
#Ausgabe
2020-05-31
Instanzmethode
Rufen Sie zur Instanz
--Instanzname. Methodenname
--Definition: def Methodenname
Ende am Ende des Satzes
Klassenmethode
Rufen Sie zum Unterricht
--Klassenname. Methodenname
--Definition: def class name.method name
Ende am Ende des Satzes
** Bei Verwendung von Klassenmethoden **
Beispiel: Finden Sie das heutige Datum.
Date.today
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