Lade Inhalt...

Warenkorb. Programmieren in Java

Ausarbeitung 2016 22 Seiten

Informatik - Programmierung

Leseprobe

Inhaltsverzeichnis

Einführung

Allgemeines

Klassen
Allgemeines
Artikel
Warenkorb
Main

Fazit

Ausblick

Quellen
Webseiten
Bücher

Abbildungsverzeichnis

Anhang
Klasse Warenkorb
Klasse Artikel
Klasse Main
Klasse WarenkorbException

Einführung

Online-Shopping liegt im Trend. Einer BITKOM-Studie von 2012 zufolge kaufen neun von zehn Internetnutzern Waren und Dienstleistungen im Internet. Dabei lockt neben der großen Auswahl vor allem die bequeme Möglichkeit, jederzeit von zu Hause aus auf Einkaufstour zu gehen.

Dieser Aspekt stellt gerade den Online-Handel immer wieder vor Herausforderungen, denn nicht nur das Angebot muss für den Nutzer attraktiv sein, sondern auch die Komponenten des Shops wie der Warenkorb und die Bezahlfunktionen. Neben der Sicherheit sind hier auch die Funktionen ein zentrales Thema. Warenkorb-Abbrüche gehören zu den Online Shops wie hohe Retoure-Quoten. Ein Grund dafür sind nicht zuletzt fehlende Funktionalitäten und Benutzerunfreundlichkeit.

Doch grundlegend für einen Online-Shop ist natürlich erst einmal, dass es einen Warenkorb gibt. Der Warenkorb gilt seit jeher als die kritische Stelle im Online-Bestellprozess und ist die Instanz, die es zu überwinden gilt, um erfolgreich im Online-Handel zu sein.

Dieses Assignment soll nun eine Warenkorb-Variante auf Basis von Java beschreiben, in der die grundlegendsten Warenkorbfunktionen enthalten sind. Folgende Aufgabenstellung liegt dieser Arbeit zugrunde:

Entwickeln Sie eine Klasse Warenkorb und eine Klasse Artikel. In der Klasse Warenkorb sollen die gewählten Artikel gespeichert werden Es sollen Methoden zum Erstellen des Warenkorbs, zur Ausgabe der Artikel, zum Hinzufügen und Löschen von Artikel sowie zum Berechnen des Gesamtpreises aller Artikel zur Verfügung stehen. Auch möchte man eine Methode zur Angabe der Gesamtanzahl der Artikel in einem Warenkorb.

In der Klasse Artikel werden die Eigenschaften der Artikel, wie Artikelnummer, Beschreibung, Nettopreis und Steuersatz vermerkt. Es gibt Methoden zum Anlegen von Artikel sowie zum Auslesen und zur Änderungen einzelner wesentlicher Attribute. Stellen Sie für diese Problemstellung nur die wirklich wichtigen Methoden zum Auslesen und Ändern der Attribute zur Verfügung. (Information Hidding).

In einem Mainprogramm soll dann beispielhaft für mehrere Anwender jeweils ein Warenkorb erstellt werden, der nach und nach mit Artikel gefüllt wird. Am Schluss erfolgt für jeden Anwender eine Ausgabe der Artikel, die im Warenkorb gespeichert sind. Am Ende dieser Ausgabe erfolgt die Angabe des Netto- sowie des Bruttogesamtpreises für diesen Warenkorb. Zur Beschreibung der Klassen sollen UML-Diagramme verwendet werden. Diskutieren Sie auch kritisch die Umsetzung der Fragestellung.

Die Entscheidung, Java für die Programmierung zu verwenden, wurde aufgrund der Aufgabenstellung und des Moduls vorgegeben. Jedoch soll im Kapitel Allgemeines auch dargestellt werden, warum die Verwendung von Java in diesem Fall sinnvoll ist.

Auf Basis der Aufgabenstellung werden vier Klassen in der Programmiersprache Java erstellt, die die angegebenen Funktionen enthalten. Die Klassen Warenkorb, Artikel und Main sind dabei die geforderten Klassen. Des Weiteren wird es noch die Klasse WarenkorbException geben, um eventuelle Fehler anzuzeigen.

Diese Klassen und deren Programmierung werden in eigenen Unterkapiteln im Kapitel Klassen erläutert. Wichtig hierbei ist, dass die jeweiligen Klassen lediglich die Funktionalitäten liefern. Die Integration in eine Webansicht bzw. ein Frontend ist nicht Bestandteil dieser Arbeit.

Weiterhin wurde entschieden als Grundlage des Warenkorbes eine Datenbank anzubinden. Genutzt wird hierbei eine MySQL-Datenbank.

Ziel dieses Assignments ist es, die Funktionalitäten eines Warenkorbes mittels Java zu programmieren und die Umsetzung kritisch zu beleuchten. Eine Bewertung der Programmierung erfolgt im Kapitel Fazit.

Das Kapitel Ausblick soll noch Erweiterungsmöglichkeiten der Programmierung aufzeigen. Im Anhang dieses Assignments befindet sich der Quellcode der beschriebenen Klassen. Die Programmierung der Klassen erfolgte mit NetBeans IDE 8.0.2.

Allgemeines

Die Programmierung eines Warenkorbes ist mit verschiedenen Programmierung- oder Skriptsprachen möglich. Gerade für den Webbereich werden häufig PHP oder Java benutzt. Nun muss man sich überlegen, welche Programmiersprache für die eigene Programmierung sinnvoll ist.

PHP heute die am weitesten verbreitete Technik für Web-Anwendungen. Gerade in der Lamp- Kombination (Linux, Apache, MySQL und PHP) kommt die Skriptsprache auf vielen Web-Servern zum Einsatz. Das liegt sicher zu einem Großteil an dem geringen Entwicklungsaufwand für PHP- Anwendungen. Die Wartungsfreundlichkeit eines Programms geht mit der Unterstützung von gutem Design und guter Lesbarkeit einher. PHP teilweise schlecht lesbar und kann zu uneinheitlichen Programmen führen. Außerdem ist PHP wenig robust. Das bedeutet, dass eine Web-Anwendung eine Vielzahl von Anfragen gleichzeitig beantworten muss ohne dabei hängen zu bleiben. Die schwache Typisierung der Sprache ist Teil des Konzepts, aber eben auch Fehlerquelle. Es ist ein prinzipieller Unterschied, ob Fehler zur Laufzeit oder zur Entwicklungszeit auftreten und gefunden werden können. Tatsache ist, das PHP ein Auffinden von Fehlern zur Entwicklungszeit nicht so gut unterstützt wie es beispielsweise strikt typisierte Compiler-Sprachen erlauben.

Java-Anwendungen zeichnen sich dadurch aus, dass sie geradezu beliebig erweiterbar sind. Die Dokumentation der Bibliotheken ist oft sehr gut und es gibt eine Reihe an professioneller Literatur, die beim Entwickeln hilfreich ist.

Java gehört zu den am besten lesbaren Programmiersprachen. Durch die objektorientierte Programmierung mit der sehr guten Modularisierung ist es leicht, wartungsfreundliche Web- Anwendungen zu entwickeln. Die leichte Erweiterbarkeit von Java-Anwendungen führt jedoch schnell zu extrem komplexen Programmen mit unangemessen hohen Wartungsaufwänden.

Java ist eine Compiler-Sprache und gilt daher als verhältnismäßig robust wegen der bekannten Typsicherheit, des Exception-Handling-Konzepts und der ausgereiften Laufzeitumgebungen. Außerdem ist es bei gutem Design sehr schnell und liegt fast im Bereich von nativen C-Programmen.

Die positiven Aspekte sind ein guter Grund, sich bei der Programmierung eines Warenkorbes für Java zu entscheiden.

Klassen

Allgemeines

Die Basis für die Nutzung der Java-Klassen ist eine Datenbank. Genutzt wurde hier eine MySQL- Datenbank mit dem Namen Warenkorb. Mittels des folgenden SQL-Statements wurde die Tabelle Artikel angelegt:

CREATE TABLE ARTIKEL (

a_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

a_warenkorb_id INTEGER UNSIGNED NULL,

a_bezeichnung VARCHAR(128) NULL,

a_beschreibung VARCHAR(128)NOT NULL,

a_preis FLOAT NULL,

a_steuersatz FLOAT NULL,

a_anzahl INTEGER UNSIGNED NULL, PRIMARY KEY(a_id)

);

Die Datentypen für die Felder der Tabelle wurden als Grundlage für die Datentypen der Variablen bei der Programmierung genutzt.

Als Verbindung zwischen der Datenbank und der Java-Applikation wird ein JDBC-Treiber benötigt. Dieser wird später in der Klasse Main angesprochen, um die Datenbankverbindung herzustellen.

Um die Klassen Warenkorb und Artikel zu erstellen, wurde sich das Klassendiagramm in Abb. 1 überlegt.

Abbildung in dieser Leseprobe nicht enthalten

Abb. 1 Klassendiagramm

Dabei wurde zwischen den beiden Klassen die Assoziation Aggregation gewählt.

„Eine Aggregation ist eine Assoziation, erweitert um den semantisch unverbindlichen Kommentar, dass die beteiligten Klassen keine gleichwertige Beziehung führen, sondern eine "Teil von"-Beziehung darstellen. Eine Aggregation soll beschreiben, wie sich etwas Ganzes aus seinen Teilen logisch zusammensetzt.

Eine Aggregation wird wie eine Assoziation als Linie zwischen zwei Klassen dargestellt und zusätzlich mit einer kleinen Raute versehen. Die Raute steht auf der Seite des Aggregats, also des Ganzen. Sie symbolisiert gewissermaßen das Behälterobjekt, in dem die Einzelteile gesammelt sind. ImÜbrigen gelten alle Notationskonventionen der Assoziation.“ 6

In diesem Fall bedeutet die Aggregation, dass der Artikel einen Teil des Warenkorbs darstellt. Im weiteren Verlauf sollen nun die Klassen näher erklärt werden.

Artikel

Für die Artikel wurde eine eigene Klasse erstellt. Es handelt sich dabei um eine einfache Datenhaltungsklasse. Sie enthält zum einen Attribute entsprechend den Spalten der Datenbanktabelle und zum anderen die dazugehörigen get- und set-Methoden (siehe Abb. 2).

Abbildung in dieser Leseprobe nicht enthalten

Abb. 2: Aufbau der Klasse Artikel

Die Klasse Artikel enthält die Variablen id, bezeichnung, beschreibung, preis, steuersatz und anzahl. Sie ist um weitere Variablen erweiterbar. Es wurde sich hier nur auf die geforderten beschränkt.

Die set- und get-Methoden dienen zum Setzen (set) und zum Auslesen (get) eines Attributes. Ein anderer Begriff ist getter- bzw. setter-Methoden. Eine Methode, bei der ein Rückgabedatentyp angegeben ist, muss zwingend einen Wert diesen Typs über das Schlüsselwort return zurückgeben. Für die Methode get bedeutet das, dass sie zum Beispiel bei public String getBezeichnung() eine Variable vom Datentyp String zurückgeben muss in diesem Fall bezeichnung.

Weiterhin enthält die Klasse Artikel die Definitionen für die Eingaben der Artikeleigenschaften. So wird festgelegt, was Pflichtfelder sind und welche Felder leer sein dürfen. Außerdem werden die Exceptions definiert für den Fall, dass eine Eingabe fehlerhaft ist. So dürfen beispielsweise für den Preis und für den Steuersatz keine negativen Werte eingegeben werden. Geschieht dies doch, so erfolgt eine Fehlermeldung, die darauf hinweist, dass dies keine korrekte Eingabe darstellt.

Am Ende der Klasse Artikel wurde die Annotation @Override eingefügt. „Mit diesem Typ kann eine Methode gekennzeichnet werden, die die Methode ihrer Oberklasseüberschreibt. Der Compiler stellt dann sicher, dass die Oberklasse diese Methode enthält und gibt einen Fehler aus, wenn dies nicht der Fall ist.“ 5 Innerhalb dieser Annotation wurde die Klasse StringBuilder verwendet. Zeichenketten, die in String-Objekten gespeichert sind, haben die Eigenschaft, dass sich ihr Inhalt nicht mehr verändert lässt. StringBuilder verhält sich da anders, denn hier lassen sich Veränderungen vornehmen. Die Veränderungen betreffen anschließend das StringBuilder-Objekt selbst und es wird kein neu erzeugtes Objekt als Ergebnis geliefert wie zum Beispiel beim Plus-Operator und der concat()Methode bei herkömmlichen String-Objekten.

Da die Artikel-Variablen so definiert wurden, dass Leereingaben derzeit nicht möglich sind, wurden Default-Werte am Anfang der Klasse vergeben. Eine Fehlermeldung aufgrund eines leeren Eintrags kann somit nur entstehen, wenn der Default-Wert mit einem leeren Eintrag überschrieben wird.

Die Klasse Artikel konnte somit laut Aufgabenstellung mit einer verhältnismäßig einfachen Variante umgesetzt werden.

Warenkorb

Die Klasse Warenkorb soll laut Aufgabenstellung verschiedene Funktionalitäten bereitstellen (siehe Abb. 3):

-Speicherung der gewählten Artikel
-Methoden zum Erstellen des Warenkorbs
-Methoden zum Hinzufügen und Löschen von Artikel
-Methoden zum Berechnen des Gesamtpreises aller Artikel
-Methode zur Angabe der Gesamtanzahl der Artikel in einem Warenkorb.

Die gewünschten Funktionalitäten wurden programmiert und können im Sourcecode in der Anlage unter dem Punkt Warenkorb gesichtet werden.

Abbildung in dieser Leseprobe nicht enthalten

Abb. 3: Aufbau der Klasse Warenkorb

Der Konstruktor Warenkorb instanziiert den Warenkorb und enthält neben der Referenz auf die MySQL-Datenbankverbindung auch die Warenkorb-ID als Parameter. „Konstruktoren sind spezielle methodenähnliche Klassenstrukturen, die den Namen ihrer Klasse tragen und beim Erzeugen von Objekten der Klasseüber das Schlüsselwort new aufgerufen werden.“ 2

Des Weiteren enthält die Klasse verschiedene Methoden wie laden(), speichern(), einfuegen() und loeschen(). Diese Methoden benötigen als Basis immer eine Datenbankverbindung, um die Daten aus der Datenbank laden zu können oder diese in die Datenbank zu speichern.

Über die Methode einfuegen() kann einer Liste ein Artikel hinzugefügt werden. Dabei wird die übergebene Artikelinstanz in die Liste eingetragen. Eine Speicherung in die Datenbank erfolgt bei dieser Methode nicht. Daher werden die Artikel auch nur mit id=0 eingefügt, da die eigentliche ID erst durch das Speichern vergeben wird.

Die Methode laden() nutzt die Warenkorb-ID und liest alle Datensätze mit der entsprechenden ID aus der Datenbank aus. Zu Beginn wird über liste.clear(); die Liste mit den Datensätzen geleert. Danach werden mit den ausgelesenen Datensätzen Artikel-Instanzen erstellt und in die leere Liste eingefügt.

Um alle in der Liste vorhandenen Artikel in die Datenbank zu speichern, wird die Methode speichern() genutzt. In dieser Methode erfolgt keine Dublettenprüfung, das heißt es können auch schon Artikel in der Datenbank als Datensatz vorhanden sein. Mit dem Speichern in die Datenbank erhält jeder Artikel mit id=0 eine automatisch generierte ID, da es sich in diesem Fall immer um einen neuen Artikel handelt. Sollte der Artikel bereits eine ID besitzen, werden eventuelle Änderungen in die Datenbank übernommen.

Für das Einfügen und das Aktualisieren von Datensätzen in der Datenbank wurden zwei Hilfsmethoden geschrieben. Hilfsmethode 1 behandelt das Einfügen von Datensätzen neuer Artikel. Sie enthält unter anderem das SQL-Statement für die Datenbank zum Einfügen von Datensätzen und eine Fehlerbehandlung.

[...]

Details

Seiten
22
Jahr
2016
ISBN (eBook)
9783668258228
ISBN (Buch)
9783668258235
Dateigröße
532 KB
Sprache
Deutsch
Katalognummer
v335764
Institution / Hochschule
AKAD University, ehem. AKAD Fachhochschule Stuttgart
Note
2,3
Schlagworte
Java Java programmieren Warenkorb Warenkorb funktion

Autor

Zurück

Titel: Warenkorb. Programmieren in Java