Menu
Coddy logo textTech

Rückblick – Wallet-Mathematik

Teil des Abschnitts Object Oriented Programming der Lua-Journey von Coddy — Lektion 30 von 70.

challenge icon

Aufgabe

Einfach

Lassen Sie uns eine Wallet-Klasse erstellen, die die Fähigkeiten zum Überladen von Operatoren zusammenführt, die Sie in diesem Kapitel gelernt haben. Ihre Brieftasche wird einen Geldbetrag speichern und zwei Schlüsseloperationen unterstützen: das Kombinieren von Brieftaschen mit + und das Vergleichen von Brieftaschen mit <code>< und .

Sie werden Ihren Code auf zwei Dateien verteilen:

  • Wallet.lua: Definieren Sie Ihre Wallet-Klasse mit einem amount-Feld, das angibt, wie viel Geld sie enthält. Fügen Sie einen :new(amount)-Konstruktor hinzu und implementieren Sie zwei Metamethoden:
    • __add: Das Addieren von zwei Brieftaschen erstellt eine neue Brieftasche, die die kombinierte Summe enthält
    • __lt: Das Vergleichen von Brieftaschen bestimmt, welche weniger Geld enthält
  • main.lua: Binden Sie Ihr Wallet-Modul ein, erstellen Sie Wallet-Instanzen und demonstrieren Sie das Zusammenwirken beider Operationen.

Sie erhalten drei Eingaben:

  1. Betrag in der ersten Brieftasche
  2. Betrag in der zweiten Brieftasche
  3. Betrag in der dritten Brieftasche

Erstellen Sie in Ihrer Hauptdatei drei Brieftaschen mit den angegebenen Beträgen. Dann:

  1. Addieren Sie die erste und die zweite Brieftasche, um eine kombinierte Brieftasche zu erstellen
  2. Geben Sie den Betrag der kombinierten Brieftasche aus
  3. Vergleichen Sie die kombinierte Brieftasche mit der dritten Brieftasche unter Verwendung von <code>< und geben Sie das Ergebnis aus (true oder false)
  4. Vergleichen Sie die kombinierte Brieftasche mit der dritten Brieftasche unter Verwendung von und geben Sie das Ergebnis aus (true oder false)

Wenn die Eingaben beispielsweise 50, 30 und 100 sind, sollte die Ausgabe wie folgt aussehen:

80
true
false

Die erste Brieftasche (50) plus die zweite Brieftasche (30) ergibt eine kombinierte Brieftasche mit 80. Da 80 kleiner als 100 ist, ist der erste Vergleich true. Da 80 nicht größer als 100 ist, ist der zweite Vergleich false.

Probier es selbst

local Wallet = require('Wallet')

-- Eingabe lesen
local amount1 = tonumber(io.read())
local amount2 = tonumber(io.read())
local amount3 = tonumber(io.read())

-- TODO: Erstelle drei Wallets mit den angegebenen Beträgen

-- TODO: Addiere das erste und das zweite Wallet, um ein kombiniertes Wallet zu erstellen

-- TODO: Gib den Betrag des kombinierten Wallets aus

-- TODO: Vergleiche das kombinierte Wallet mit dem dritten Wallet mittels < und gib das Ergebnis aus

-- TODO: Vergleiche das kombinierte Wallet mit dem dritten Wallet mittels > und gib das Ergebnis aus

Alle Lektionen in Object Oriented Programming