OOP Kassensystem objektorientiert programmieren

Vulkano

Mitglied
Hallo Leute,

ich habe mir ein Projekt ausgedacht, welches meine Kenntnisse herausfordern soll. So möchte ich ein Kassensystem programmieren, welches verschiedene Objekte über die Artikelnummer, welches ein String ist, erkennt und dessen Eigenschaften ausgibt, bzw. den Bezahlvorgang abschließt.

Je nach Produktkategorie habe ich eine Vaterklasse erstellt, welches seine Attribute zu seinen Kindesklassen vererben soll, z.B. Produkt -> Food und Non-Food -> Getränke, Frisches, Tiefgefrorenes und Haushaltsgeräte usw.

Nun habe ich eine Liste mit verschiedenen Objekten als ArrayList() in der main-Methode erstellt, dessen Klasse ich "Supermarkt" genannt habe.

Eine weitere Klasse die "Kasse" heißt soll die Methoden enthalten, die die Artikelnummer vergleicht und dessen Produkteigenschaften ausgibt. Die Methode in der Kasse, welches ich scann() genannt habe soll jetzt die per Scanner eingelesene Artikelnummern von allen Produkten vergleichen und erkennen.

Wie kann man das am besten Umsetzten?

Schon mal vielen Dank im Voraus :)

//Vaterklasse "Produkt"

Java:
package produkt;
public class Produkt {
    private String artikelNR, name;
    private int bestand;
    private double vkp, ekp;
    public static double mwSt;
  
    public Produkt(String artikelNR, String name, int bestand, double vkp, double ekp) {
        super();
        this.artikelNR = artikelNR;
        this.name = name;
        this.bestand = bestand;
        this.vkp = vkp;
        this.ekp = ekp;
    }
    public Produkt() {
      
    }
  
    public String getArtikelNR() {
        return artikelNR;
    }
    public void setArtikelNR(String artikelNR) {
        this.artikelNR = artikelNR;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getMwSt() {
        return mwSt;
    }
    public void setMwSt(double mwSt) {
        Produkt.mwSt = 1.19;
    }
    public int getBestand() {
        return bestand;
    }
    public void setBestand(int bestand) {
        this.bestand = bestand;
    }
    public double getVkp() {
        return vkp;
    }
    public void setVkp(double vkp) {
        this.vkp = vkp;
    }
    public double getEkp() {
        return ekp;
    }
    public void setEkp(double ekp) {
        this.ekp = ekp;
    }
}


// Supermarkt Klasse

Java:
package supermarkt;
import java.time.LocalDate;
import java.util.ArrayList;
import food.Frisch;
import food.Gekühlt;
import food.Getränke;
import food.Langhaltbaren;
import food.Tiefgefroren;
import non_food.Drogerie;
import non_food.Haushalts_kl_gr_Geraete;
import kasse.Kasse;
public class Supermarkt {
    public static void main(String[] args) {
        ArrayList<Frisch> frisch = new ArrayList<>();
      
        frisch.add(new Frisch("231430", "Banane", 100, 2.39, 0.89, LocalDate.of(2018, 8, 31)));
        frisch.add(new Frisch("123314", "Avocado", 94, 2.99, 1.10, LocalDate.of(2018, 8, 31)));
      
      
        ArrayList<Gekühlt> gekühlt = new ArrayList<>();
      
        gekühlt.add(new Gekühlt("89796", "Joghurt", 200, 2.10, 0.90, LocalDate.of(2018, 9, 15)));
        gekühlt.add(new Gekühlt("87214", "Käse", 200, 2.45, 1.40, LocalDate.of(2018, 10, 05)));
      
      
        ArrayList<Tiefgefroren> gefroren = new ArrayList<>();
      
        gefroren.add(new Tiefgefroren("864123", "Lachsfilet", 80, 4.99, 1.80, LocalDate.of(2018, 8, 31)));
        gefroren.add(new Tiefgefroren("638565", "Magnum Eis", 100, 2.35, 0.99, LocalDate.of(2018, 10, 31)));
      
      
        ArrayList<Drogerie> drogerie = new ArrayList<>();
      
        drogerie.add(new Drogerie("7289174", "Zahnpasta", 200, 1.80, 0.60));
        drogerie.add(new Drogerie("7862535", "Deodorant", 180, 2.80, 0.99));
      
      
        ArrayList<Haushalts_kl_gr_Geraete> geräte = new ArrayList<>();
      
        geräte.add(new Haushalts_kl_gr_Geraete("783242", "Toaster", 150, 29.99, 9.99));
        geräte.add(new Haushalts_kl_gr_Geraete("1231784", "Kaffemaschine", 90, 79.99, 19.99));
      
      
        ArrayList<Langhaltbaren> haltbar = new ArrayList<>();
      
        haltbar.add(new Langhaltbaren("878924", "Tuhnfischdose", 200, 2.39, 0.88, LocalDate.of(2020, 5, 30)));
        haltbar.add(new Langhaltbaren("762354", "Erdnussdose", 400, 2.89, 0.99, LocalDate.of(2021, 3, 31)));
      
      
        ArrayList<Getränke> getränke = new ArrayList<>();
      
        getränke.add(new Getränke("212658", "Pepsi", 100, 1.79, 0.70, LocalDate.of(2019, 1, 31)));
        getränke.add(new Getränke("8623512", "Bananensaft", 80, 2.79, 1.00, LocalDate.of(2018, 12, 31)));
      
        Kasse kasse = new Kasse("01", 500.00);
      
        kasse.scann();
    }
}


//Kasse Klasse

Java:
package kasse;
import java.util.Scanner;
import produkt.Produkt;
public class Kasse {
    private String kassenNR;
    private double kassengeld;
    public Kasse(String kassenNR, double kassengeld) {
        super();
        this.kassenNR = kassenNR;
        this.kassengeld = kassengeld;
    }
    public String getKassenNR() {
        return kassenNR;
    }
    public void setKassenNR(String kassenNR) {
        this.kassenNR = kassenNR;
    }
    public double getKassengeld() {
        return kassengeld;
    }
    public void setKassengeld(double kassengeld) {
        this.kassengeld = kassengeld;
    }
    public void scann() {
        Scanner keyb = new Scanner(System.in);
        System.out.println("Geben Sie die Artikelnummer ein: ");
        String eingabe = keyb.nextLine();
        double kassenstand = 0;
        Produkt produkt = new Produkt() {
        };
        if (eingabe.equals(produkt.getArtikelNR())) {
            System.out.println("ArtNR: " + produkt.getArtikelNR() + "\nArtikel: " + produkt.getName() + "\nPreis: "
                    + produkt.getVkp());
            System.out.println("\nBezahlt?");
            if (eingabe.equalsIgnoreCase("Ja")) {
                kassenstand = this.kassengeld + produkt.getVkp();
            } else {
                System.out.println("Abgebrochen!");
            }
        } else {
            System.out.println("Artikel nicht gefunden!");
        }
        System.out.println("Kassenstand aktuell: ");
        System.out.println(kassenstand);
        keyb.close();
    }
}
 

Javinner

Top Contributor
...per Scanner eingelesene Artikelnummern von allen Produkten vergleichen und erkennen...
Dazu muss deine Produktklasse das Interface Comporable<T>, ergo die compareTo(Object obj) implementieren. Dann kannst du mittels equals(Object o) und hashCode(), in welcher du bestimmst, woran ein Objekt verglichen wird, vergleichen. Des weiteren könntest du die Information über ein Produkt in die toString() Methode packen.
Java:
public class Shop
{

   
    public static void main(String[] args)
    {
       Thing thing = new Thing("Sugar", 1.29, 12345456);
       System.out.println(thing);
      
       Thing another_thing = thing;
       System.out.println(another_thing.equals(thing));
      
       Thing third_thing = new Thing("Apple", 0.59, 23444435);
       System.out.println(third_thing.equals(thing));
    }
   
}
/** Output */
[Name: Sugar][Price: 1.29][ID: 12345456]
true
false
Der Aufbau ist nicht optimal. Die Klasse Kasse weiß nichts von den existierenden Arrays. Diese musst du schon noch an diese übergeben.
 

Javinner

Top Contributor
Das Interface Comporable<T> ist jedoch nur wichtig, wenn du deine Produkte sortieren willst.
Für den Vergleich ist es nicht zwingend notwendig:
Java:
public class Shop
{

    public static void main(String[] args)
    {
        Thing thing = new Thing("Sugar", 1.29, 12345456);
        System.out.println(thing);

        Thing third_thing = new Thing("Apple", 0.59, 23444435);
        System.out.println(third_thing.equals(thing));
       
       
        List<Thing> things = new ArrayList<>();
        things.add(new Thing("Water", 1.49, 123456));
        things.add(new Thing("Honey", 3.99, 123234));
        things.add(thing);
        things.add(third_thing);
       
        Scanner scanner = new Scanner(System.in);
        int id = scanner.nextInt(); //hier gab ich 123456 ein
        System.out.println(scann(things, id));
    }

    public static boolean scann(List<Thing> list, int id)
    {
        for (Thing t : list)
        {
            if (t.getId() == id)
            {
                return true;
            }
        }
        return false;
    }
/** Output */
true
}
 

thecain

Top Contributor
Ich finde Verebung hier eher unnötig. Klar, Käse ist ein Milchprodukt, aber für das Kassensytem unterscheidet sich Käse eigentlich nicht von Fleisch oder Klarsichtfolie. Ich würde eher ein Kategorieattribut führen, wenn die Angabe wichtig ist
 

Kayno

Aktives Mitglied
von was nimmst du das super ist nicht ersichtlich?


Java:
package produkt;
    public Produkt(String artikelNR, String name, int bestand, double vkp, double ekp) {
        super();
        this.artikelNR = artikelNR;
        this.name = name;
        this.bestand = bestand;
        this.vkp = vkp;
        this.ekp = ekp;
    }
 

Kayno

Aktives Mitglied
super();


Java:
package produkt;
    public Produkt(String artikelNR, String name, int bestand, double vkp, double ekp) {
        super(); //dieses super von wo erbst du das
        this.artikelNR = artikelNR;
        this.name = name;
        this.bestand = bestand;
        this.vkp = vkp;
        this.ekp = ekp;
    }
[/QUOTE]
 

Trjavnamen

Bekanntes Mitglied
Sorry im Rahmen der ordnungsgemäßen Buchung fehlt der Zeitstempel und eine Fortlaufende Buchungsnummer ein Datumabhängiger MWSt Schlüssel (weil er sich ändern kann). Und eine moderne Kasse bucht auch gleich in die Warengruppe. (benihaltet gruppenkonto(zuweisung der gruppe vererbt alle Eigenschaften und wenn es besonders intelligent ist vererbt es auch noch den Kalkulationsschlüssel)
 

Trjavnamen

Bekanntes Mitglied
Warenggruppen unterteilt in Hauptgruppe Untergruppen mit den eigenen Kalkulationsschlüssel und letzte 5 Untergruppen mit Variablen Kalkulationsschlüsse für Nachbestellung Sonderanfertigung Einzelbestellungen(kommission)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
pry bitte Hilfe beim Kreditrechner objektorientiert Java Basics - Anfänger-Themen 6
pry Kreditrechner objektorientiert Java Basics - Anfänger-Themen 7
C Klassen objektorientiert aufteilen Java Basics - Anfänger-Themen 6
W OOP Objektorientiert: Darstellung von Uhrzeiten im 24-Stunden-Format Java Basics - Anfänger-Themen 15
T Programm objektorientiert umsetzen Java Basics - Anfänger-Themen 0
G Java Objektorientiert schreiben Java Basics - Anfänger-Themen 1
D OOP JavaFX objektorientiert Java Basics - Anfänger-Themen 2
I OOP Wie kann ich diesen Code 'Objektorientiert machen' ? Java Basics - Anfänger-Themen 1
I_Oscuridad Unterschied zwischen Objektorientiert und prozedural ? Java Basics - Anfänger-Themen 8
B Programm läuft.aber objektorientiert genug? :( Java Basics - Anfänger-Themen 9
B Java Programm Objektorientiert programmieren? Java Basics - Anfänger-Themen 8
G Objektorientiert Java Basics - Anfänger-Themen 3
J objektorientiert - noch immer nicht begriffen Java Basics - Anfänger-Themen 6
A GUI bequemer programmieren? Java Basics - Anfänger-Themen 6
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
laxla123 Rechteck programmieren Java Basics - Anfänger-Themen 4
A Erste Schritte Dynamische Stempel im PDF Exchange programmieren Java Basics - Anfänger-Themen 0
D Programmieren nach UML Java Basics - Anfänger-Themen 2
Y Taschenrechner programmieren Java Basics - Anfänger-Themen 3
B Überweisung programmieren Java Basics - Anfänger-Themen 7
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
D Ampel Programmieren die jede 10 sekunden ihre farbe wechselt Java Basics - Anfänger-Themen 6
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
thor_norsk Fernseher programmieren mit Java Java Basics - Anfänger-Themen 4
M Jenga Regeln Java Programmieren Java Basics - Anfänger-Themen 1
M Ressourcensparend programmieren Java Basics - Anfänger-Themen 3
brypa Wie Programmieren lernen? Java Basics - Anfänger-Themen 15
G Spielerwechsel programmieren Java Basics - Anfänger-Themen 1
J Solitär (Brettspiel) programmieren Java Basics - Anfänger-Themen 3
H Objektorientiertes Programmieren Java Basics - Anfänger-Themen 4
K 12- Stunden Konverter Programmieren Java Basics - Anfänger-Themen 1
WAB9703-04 Programm zum automatischen Ausfüllen von Formularen programmieren Java Basics - Anfänger-Themen 3
L Zahlenspiel programmieren Java Basics - Anfänger-Themen 1
TimoN11 Automat programmieren Java Basics - Anfänger-Themen 4
G Erste Schritte Array Mittelwert Methode Programmieren Java Basics - Anfänger-Themen 5
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
N Ufospiel programmieren Java Basics - Anfänger-Themen 13
KogoroMori21 Vorbereitung auf die Programmieren Klausur vom ersten Semester Java Basics - Anfänger-Themen 4
Drinkerbell Erste Schritte Zu blöd zum Programmieren? Java Basics - Anfänger-Themen 9
G Stack programmieren Java Basics - Anfänger-Themen 6
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
G Bruchrechner programmieren Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
D Schachbrett (8x8) programmieren Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
J Hilfe beim Programmieren Java Basics - Anfänger-Themen 5
S Kreisberechnung3 Buch: Programmieren lernen mit Java von Hans-Peter Habelitz Java Basics - Anfänger-Themen 39
M Quiz in Java programmieren mit Array Java Basics - Anfänger-Themen 8
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
K Java programmieren Java Basics - Anfänger-Themen 6
V_Fynn03 Kontrolle des Quelltextes (Bank programmieren)(GUI) Java Basics - Anfänger-Themen 6
D Was tun gegen zu komplzierten Denken beim Programmieren Java Basics - Anfänger-Themen 27
V_Fynn03 Bruchrechner programmieren (2 Klassen) Java Basics - Anfänger-Themen 9
N Ticketautomat programmieren Java Basics - Anfänger-Themen 63
M Rechner programmieren Java Basics - Anfänger-Themen 3
V_Fynn03 Java Bruchrechner programmieren Java Basics - Anfänger-Themen 13
J Java Suchfunktion Programmieren Java Basics - Anfänger-Themen 1
L Erste Schritte Bin ich "zu dumm" oder nicht geeignet zum Programmieren? Java Basics - Anfänger-Themen 3
U Ist jemad gut in programmieren (JAVA) und kann mir helfen? Java Basics - Anfänger-Themen 1
H Uhr programmieren Java Basics - Anfänger-Themen 10
T Schalter programmieren Java Basics - Anfänger-Themen 17
S Ampel Programmieren Java Basics - Anfänger-Themen 5
P Erste Schritte Probleme mit dem Programmieren Java Basics - Anfänger-Themen 12
D Richtig für Programmieren an der UNI lernen Java Basics - Anfänger-Themen 8
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
D Beim Programmieren auf die Logisch einfache Lösung kommen. Java Basics - Anfänger-Themen 17
B UML Klassen Diagramm zu Java Code Programmieren und ausführen Java Basics - Anfänger-Themen 21
steven789hjk543 Kann man mit Java und Eclipse einen Virus programmieren? Java Basics - Anfänger-Themen 13
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
A Kalender programmieren, ich finde meinen Fehler nicht. Java Basics - Anfänger-Themen 9
S Erste Schritte Hilfe beim lernen von Programmieren Java Basics - Anfänger-Themen 2
V Zeichenkette programmieren Java Basics - Anfänger-Themen 20
O Fenster programmieren Java Basics - Anfänger-Themen 2
R Uebersichtlicher bzw. besser Programmieren Java Basics - Anfänger-Themen 13
N Dynamisches Programmieren/Fibonacci Java Basics - Anfänger-Themen 1
B Spielfiguren für ein Beute-Jägerspiel programmieren Java Basics - Anfänger-Themen 12
A Programmieren lernen Java Basics - Anfänger-Themen 28
F ArrayListe manuell programmieren? Java Basics - Anfänger-Themen 24
X Erste Schritte Einstieg ins Programmieren Java Java Basics - Anfänger-Themen 2
O Erste Schritte ln(1+x) Reihe Programmieren Java Basics - Anfänger-Themen 6
Ellachen55 Weihnachtsbaum in Eclipse programmieren Java Basics - Anfänger-Themen 6
L Klassen Geldrückgabe - Aufgabe Programmieren Java Basics - Anfänger-Themen 23
H Stern Dreieck (Buch: Grundkurs Programmieren) Java Basics - Anfänger-Themen 2
V Variablen Vorkommen programmieren Java Basics - Anfänger-Themen 18
S Dreieckssignal programmieren Java Basics - Anfänger-Themen 5
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
M Spiel programmieren Java Basics - Anfänger-Themen 16
A Fenster programmieren Java Basics - Anfänger-Themen 1
A Erste Schritte DoodleJump programmieren: Kollisionsabfrage Java Basics - Anfänger-Themen 4
CT9288 Kleine Simulation programmieren, denkanstöße erbeten Java Basics - Anfänger-Themen 19
H Welche IDE zum Buch "Programmieren mit Java" von Reinhard Schiedermeier des Verlags Pearson Studium Java Basics - Anfänger-Themen 19
D Könnt ihr mir helfen beim Programmieren eines Ping Pong Spieles? Java Basics - Anfänger-Themen 9
M Rekursive Methode Programmieren Java Basics - Anfänger-Themen 3
I Spielbrett programmieren: Datenstruktur Java Basics - Anfänger-Themen 3
G Rekursives Programmieren --> harmonische Reihe Java Basics - Anfänger-Themen 3
A Endlich anfangen mit Programmieren ! Java Basics - Anfänger-Themen 8
L Karawane programmieren Java Basics - Anfänger-Themen 0

Ähnliche Java Themen

Neue Themen


Oben