Ullenboom | Java ist auch eine Insel | E-Book | sack.de
E-Book

E-Book, Deutsch, 1223 Seiten

Reihe: Rheinwerk Computing

Ullenboom Java ist auch eine Insel

Einführung, Ausbildung, Praxis
17. Auflage 2023
ISBN: 978-3-8362-9546-8
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection

Einführung, Ausbildung, Praxis

E-Book, Deutsch, 1223 Seiten

Reihe: Rheinwerk Computing

ISBN: 978-3-8362-9546-8
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection



Die 'Insel' ist die erste Wahl, wenn es um aktuelles und praktisches Java-Wissen geht. Java-Einsteiger, Studierende und Umsteigerinnen profitieren von diesem Lehrwerk. Neben der Behandlung der Sprachgrundlagen von Java gibt es kompakte Einführungen in Spezialthemen. So erfahren Sie einiges über Threads, Algorithmen, GUIs, Dateien und Datenströme. Dieses Buch ist das Standardwerk für die Java-Programmierung. Es liegt aktuell in der 17. Auflage vor.

Aus dem Inhalt:

  • Imperative Sprachkonzepte
  • Klassen und Objekte
  • Ausnahmebehandlung
  • Generics
  • Lambda-Ausdrücke und funktionale Programmierung
  • Die Klassenbibliothek
  • Nebenläufige Programmierung
  • Einführung in Datenstrukturen, GUI-Entwicklung, Dateien usw.


Christian Ullenboom, Dipl.-Informatiker, ist zertifizierter Java-Programmierer und seit 1997 Trainer und Berater für Java-Technologien und objektorientierte Analyse und Design. Seit Jahren teilt er sein Wissen mit unzähligen Besuchern seiner Website, wo er Fragen beantwortet, Inhalte bereitstellt und diskutiert. Seine Sympathie gilt Java Performance Tuning und den sinnlichen Freuden des Lebens.
Ullenboom Java ist auch eine Insel jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


Materialien zum Buch ... 31  Vorwort ... 33  1.  Java ist auch eine Sprache ... 49  1.1 ... Historischer Hintergrund ... 50  1.2 ... Warum Java populär ist -- die zentralen Eigenschaften ... 52  1.3 ... Java im Vergleich zu anderen Sprachen * ... 63  1.4 ... Weiterentwicklung und Verluste ... 66  1.5 ... Java-Plattformen: Java SE, Jakarta EE, Java ME, Java Card ... 70  1.6 ... Java SE-Implementierungen ... 74  1.7 ... JDK installieren ... 77  1.8 ... Das erste Programm compilieren und testen ... 79  1.9 ... Entwicklungsumgebungen ... 83  1.10 ... Zum Weiterlesen ... 89  2.  Imperative Sprachkonzepte ... 91  2.1 ... Elemente der Programmiersprache Java ... 91  2.2 ... Von der Klasse zur Anweisung ... 99  2.3 ... Datentypen, Typisierung, Variablen und Zuweisungen ... 111  2.4 ... Ausdrücke, Operanden und Operatoren ... 127  2.5 ... Bedingte Anweisungen oder Fallunterscheidungen ... 151  2.6 ... Immer das Gleiche mit den Schleifen ... 170  2.7 ... Methoden einer Klasse ... 188  2.8 ... Zum Weiterlesen ... 212  3.  Klassen und Objekte ... 213  3.1 ... Objektorientierte Programmierung (OOP) ... 213  3.2 ... Eigenschaften einer Klasse ... 215  3.3 ... Natürlich modellieren mit der UML (Unified Modeling Language) * ... 217  3.4 ... Neue Objekte erzeugen ... 219  3.5 ... ZZZZZnake ... 231  3.6 ... Pakete schnüren, Importe und Compilationseinheiten ... 233  3.7 ... Mit Referenzen arbeiten, Vielfalt, Identität, Gleichwertigkeit ... 241  3.8 ... Zum Weiterlesen ... 253  4.  Arrays und ihre Anwendungen ... 255  4.1 ... Einfache Feldarbeit ... 255  4.2 ... Die erweiterte for-Schleife ... 267  4.3 ... Methode mit variabler Argumentanzahl (Varargs) ... 271  4.4 ... Mehrdimensionale Arrays * ... 273  4.5 ... Bibliotheksunterstützung von Arrays ... 279  4.6 ... Die Klasse Arrays zum Vergleichen, Füllen, Suchen und Sortieren nutzen ... 282  4.7 ... Der Einstiegspunkt für das Laufzeitsystem: main(...) ... 295  4.8 ... Zum Weiterlesen ... 298  5.  Der Umgang mit Zeichen und Zeichenketten ... 299  5.1 ... Von ASCII über ISO-8859-1 zu Unicode ... 299  5.2 ... Datentypen für Zeichen und Zeichenfolgen ... 307  5.3 ... Die Character-Klasse ... 308  5.4 ... Zeichenfolgen ... 313  5.5 ... Die Klasse String und ihre Methoden ... 315  5.6 ... Veränderbare Zeichenketten mit StringBuilder und StringBuffer ... 348  5.7 ... CharSequence als Basistyp ... 357  5.8 ... Konvertieren zwischen Primitiven und Strings ... 360  5.9 ... Strings zusammenhängen (konkatenieren) ... 368  5.10 ... Zerlegen von Zeichenketten ... 370  5.11 ... Ausgaben formatieren ... 375  5.12 ... Zum Weiterlesen ... 381  6.  Eigene Klassen schreiben ... 383  6.1 ... Eigene Klassen mit Eigenschaften deklarieren ... 383  6.2 ... Privatsphäre und Sichtbarkeit ... 394  6.3 ... Eine für alle -- statische Methoden und Klassenvariablen ... 405  6.4 ... Konstanten und Aufzählungen ... 412  6.5 ... Objekte anlegen und zerstören ... 420  6.6 ... Klassen- und Objektinitialisierung * ... 434  6.7 ... Zum Weiterlesen ... 443  7.  Objektorientierte Beziehungsfragen ... 445  7.1 ... Assoziationen zwischen Objekten ... 445  7.2 ... Vererbung ... 455  7.3 ... Typen in Hierarchien ... 465  7.4 ... Methoden überschreiben ... 479  7.5 ... Drum prüfe, wer sich dynamisch bindet ... 485  7.6 ... Finale Klassen und finale Methoden ... 488  7.7 ... Abstrakte Klassen und abstrakte Methoden ... 490  7.8 ... Weiteres zum Überschreiben und dynamischen Binden ... 499  7.9 ... Zum Weiterlesen und Programmieraufgabe ... 505  8.  Records, Schnittstellen, Aufzählungen, versiegelte Klassen ... 507  8.1 ... Records ... 507  8.2 ... Schnittstellen ... 518  8.3 ... Aufzählungstypen ... 550  8.4 ... Versiegelte Klassen und Schnittstellen ... 560  8.5 ... Zum Weiterlesen ... 568  9.  Ausnahmen müssen sein ... 569  9.1 ... Problembereiche einzäunen ... 570  9.2 ... Ausnahmen mit throws nach oben reichen ... 579  9.3 ... Die Klassenhierarchie der Ausnahmen ... 580  9.4 ... Abschlussbehandlung mit finally ... 590  9.5 ... Auslösen eigener Exceptions ... 595  9.6 ... try mit Ressourcen (automatisches Ressourcen-Management) ... 611  9.7 ... Besonderheiten bei der Ausnahmebehandlung * ... 621  9.8 ... Harte Fehler -- Error * ... 627  9.9 ... Assertions * ... 627  9.10 ... Zum Weiterlesen ... 630

10.  Geschachtelte Typen ... 631  10.1 ... Geschachtelte Klassen, Schnittstellen und Aufzählungen ... 631  10.2 ... Statische geschachtelte Typen ... 633  10.3 ... Nichtstatische geschachtelte Typen ... 635  10.4 ... Lokale Klassen ... 638  10.5 ... Anonyme innere Klassen ... 639  10.6 ... Vermischtes ... 644  10.7 ... Zum Weiterlesen ... 648

11.  Besondere Typen der Java SE ... 649  11.1 ... Object ist die Mutter aller Klassen ... 650  11.2 ... Schwache Referenzen und Cleaner ... 672  11.3 ... Die Utility-Klasse java.util.Objects ... 673  11.4 ... Vergleichen von Objekten und Ordnung herstellen ... 677  11.5 ... Wrapper-Klassen und Autoboxing ... 686  11.6 ... Iterator, Iterable * ... 706  11.7 ... Annotationen in der Java SE ... 714  11.8 ... Zum Weiterlesen ... 719

12.  Generics ... 721  12.1 ... Einführung in Java Generics ... 721  12.2 ... Umsetzen der Generics, Typlöschung und Raw-Types ... 737  12.3 ... Die Typen über Bounds einschränken ... 745  12.4 ... Typparameter in der throws-Klausel * ... 748  12.5 ... Generics und Vererbung, Invarianz ... 752  12.6 ... Konsequenzen der Typlöschung: Typ-Token, Arrays und Brücken * ... 766  12.7 ... Zum Weiterlesen ... 775

13.  Lambda-Ausdrücke und funktionale Programmierung ... 777  13.1 ... Funktionale Schnittstellen und Lambda-Ausdrücke ... 777  13.2 ... Methodenreferenz ... 801  13.3 ... Konstruktorreferenz ... 805  13.4 ... Funktionale Programmierung ... 809  13.5 ... Funktionale Schnittstellen aus dem java.util.function-Paket ... 818  13.6 ... Optional ist keine Nullnummer ... 832  13.7 ... Was ist jetzt so funktional? ... 843  13.8 ... Zum Weiterlesen ... 845

14.  Architektur, Design und angewandte Objektorientierung ... 847  14.1 ... SOLIDe Modellierung ... 847  14.2 ... Architektur, Design und Implementierung ... 851  14.3 ... Design-Patterns (Entwurfsmuster) ... 852  14.4 ... Zum Weiterlesen ... 859

15.  Java Platform Module System ... 861  15.1 ... Klassenlader (Class Loader) und Modul-/Klassenpfad ... 861  15.2 ... Module im JPMS einbinden ... 867  15.3 ... Eigene Module entwickeln ... 873  15.4 ... Zum Weiterlesen ... 881

16.  Die Klassenbibliothek ... 883  16.1 ... Die Java-Klassenphilosophie ... 883  16.2 ... Einfache Zeitmessung und Profiling * ... 890  16.3 ... Die Klasse Class ... 891  16.4 ... Die Utility-Klassen System und Properties ... 894  16.5 ... Sprachen der Länder ... 902  16.6 ... Wichtige Datum-Klassen im Überblick ... 906  16.7 ... Date-Time-API ... 909  16.8 ... Logging mit Java ... 914  16.9 ... Maven: Build-Management und Abhängigkeiten auflösen ... 917  16.10 ... Zum Weiterlesen ... 919

17.  Einführung in die nebenläufige Programmierung ... 921  17.1 ... Nebenläufigkeit und Parallelität ... 921  17.2 ... Existierende Threads und neue Threads erzeugen ... 925  17.3 ... Thread-Eigenschaften und Zustände ... 931  17.4 ... Der Ausführer (Executor) kommt ... 943  17.5 ... Zum Weiterlesen ... 958

18.  Einführung in Datenstrukturen und Algorithmen ... 959  18.1 ... Listen ... 959  18.2 ... Mengen (Sets) ... 977  18.3 ... Assoziative Speicher ... 987  18.4 ... Ausgewählte Basistypen ... 994  18.5 ... Java-Stream-API ... 994  18.6 ... Einen Stream erzeugen ... 997  18.7 ... Terminale Operationen ... 1001  18.8 ... Intermediäre Operationen ... 1012  18.9 ... Zum Weiterlesen ... 1019

19.  Einführung in grafische Oberflächen ... 1021  19.1 ... GUI-Frameworks ... 1021  19.2 ... Deklarative und programmierte Oberflächen ... 1025  19.3 ... GUI-Builder ... 1026  19.4 ... Mit dem Eclipse WindowBuilder zur ersten Swing-Oberfläche ... 1027  19.5 ... Grundlegendes zum Zeichnen ... 1039  19.6 ... Zum Weiterlesen ... 1045

20.  Einführung in Dateien und Datenströme ... 1047  20.1 ... Alte und neue Welt in java.io und java.nio ... 1047  20.2 ... Dateisysteme und Pfade ... 1048  20.3 ... Dateien mit wahlfreiem Zugriff ... 1058  20.4 ... Basisklassen für die Ein-/Ausgabe ... 1064  20.5 ... Lesen aus Dateien und Schreiben in Dateien ... 1076  20.6 ... Zum Weiterlesen ... 1082

21.  Einführung ins Datenbankmanagement mit JDBC ... 1083  21.1 ... Relationale Datenbanken und Java-Zugriffe ... 1083  21.2 ... Eine Beispielabfrage ... 1086  21.3 ... Zum Weiterlesen ... 1088

22.  Bits und Bytes, Mathematisches und Geld ... 1089  22.1 ... Bits und Bytes ... 1089  22.2 ... Fließkomma-Arithmetik in Java ... 1104  22.3 ... Die Eigenschaften der Klasse Math ... 1110  22.4 ... Genauigkeit, Wertebereich eines Typs und Überlaufkontrolle * ... 1121  22.5 ... Zufallszahlen: Random, ThreadLocalRandom und SecureRandom ... 1127  22.6 ... Große Zahlen * ... 1131  22.7 ... Geld und Währung ... 1144  22.8 ... Zum Weiterlesen ... 1146

23.  Testen mit JUnit ... 1147  23.1 ... Softwaretests ... 1147  23.2 ... Das Test-Framework JUnit ... 1148  23.3 ... Java-Assertions-Bibliotheken und AssertJ ... 1161  23.4 ... Aufbau größerer Testfälle ... 1163  23.5 ... Wie gutes Design das Testen ermöglicht ... 1165  23.6 ... Dummy, Fake, Stub und Mock ... 1167  23.7 ... JUnit-Erweiterungen, Testzusätze ... 1169  23.8 ... Zum Weiterlesen ... 1170

24.  Die Werkzeuge des JDK ... 1171  24.1 ... Übersicht ... 1171  24.2 ... Java-Quellen übersetzen ... 1172  24.3 ... Die Java-Laufzeitumgebung ... 1173  24.4 ... Dokumentationskommentare mit Javadoc ... 1176  24.5 ... Das Archivformat JAR ... 1186  24.6 ... Zum Weiterlesen ... 1188  Anhang ... 1171  A ... Java SE-Module und Paketübersicht ... 1189  Index ... 1207


Vorwort


»Mancher glaubt, schon darum höflich zu sein, weil er sich überhaupt noch der Worte und nicht der Fäuste bedient.«
– Friedrich Hebbel (1813–1863)

Am Anfang war das Wort. Viel später, am 23. Mai 1995, stellten auf der SunWorld in San Francisco der Chef des damaligen Science Office von Sun Microsystems, John Gage, und Netscape-Mitbegründer Marc Andreessen die neue Programmiersprache Java und deren Integration in den Webbrowser Netscape vor. Damit begann der Siegeszug einer Sprache, die uns elegante Wege eröffnet, plattformunabhängig zu programmieren und objektorientiert unsere Gedanken auszudrücken. Die Möglichkeiten der Sprache und Bibliotheken sind an sich nichts Neues, aber so gut verpackt, dass Java angenehm und flüssig zu programmieren ist und Java heute zu den populärsten Programmiersprachen auf unserem Planeten zählt. Dieses Buch beschäftigt sich in 24 Kapiteln mit der Java-Technologie und intensiv mit der Programmiersprache Java. Wichtige Themen sind objektorientierte Programmierung, Design von Klassen und der Aufbau der Java-Standardbibliotheken.

Über dieses Buch


Die Zielgruppe


Die Kapitel dieses Buches sind für Einsteiger in die Programmiersprache Java wie auch für Fortgeschrittene konzipiert. Grundlegende Kenntnisse in einer strukturierten Programmiersprache wie C, Python oder JavaScript und Wissen über objektorientierte Programmierung sind hilfreich, weil das Buch nicht explizit auf eine Rechnerarchitektur eingeht oder auf die Frage, was Programmieren eigentlich ist. Wer also schon in einer beliebigen Sprache programmiert hat, der liegt mit diesem Buch genau richtig!

Was dieses Buch nicht ist


Dieses Buch darf nicht als Programmierbuch für Anfänger verstanden werden. Wer noch nie programmiert hat und mit dem Wort »Übersetzen« in erster Linie »Dolmetschen« verbindet, der sollte besser ein anderes Tutorial bevorzugen oder parallel lesen. Viele Bereiche aus dem Leben eines Industrieprogrammierers behandelt die »Insel« bis zu einer allgemein verständlichen Tiefe, doch sie ersetzt nicht die Java Language Specification (JLS: https://docs.oracle. com/javase/specs).

Die Java-Technologien sind in den letzten Jahren explodiert, sodass die anfängliche Überschaubarkeit einer starken Spezialisierung gewichen ist. Heute ist es kaum mehr möglich, alles in einem Buch zu behandeln, und das möchte ich mit der »Insel« auch auf keinen Fall. Ein Buch, das sich speziell mit der grafischen Oberfläche JavaFX oder Swing beschäftigt – beides Teile von Standard-Java –, ist genauso umfangreich wie die jetzige »Insel«. Nicht anders verhält es sich mit den anderen Spezialthemen, wie etwa objektorientierter Analyse/Design, UML, paralleler oder verteilter Programmierung, Enterprise JavaBeans, Datenbankanbindung, OR-Mapping, Webservices, dynamischen Webseiten und vielen anderen Themen. Hier muss ein Spezialbuch die Neugier befriedigen.

Die »Insel« trainiert die Syntax der Programmiersprache, den Umgang mit den wichtigen Standardbibliotheken, Entwicklungstools und Entwicklungsumgebungen, objektorientierte Analyse und Design, Entwurfsmuster und Programmkonventionen. Sie hilft aber weniger, am Abend auf der Party die netten Mädels und coolen IT-Geeks zu beeindrucken und mit nach Hause zu nehmen. Sorry.

Mein Leben und Java – oder warum es noch ein Java-Buch gibt


Meine Beschäftigung mit Java begann vor über 20 Jahren und hängt mit einer universitären Pflichtveranstaltung zusammen. In unserer Projektgruppe befassten wir uns 1997 mit einer objektorientierten Dialogspezifikation. Ein Zustandsautomat musste programmiert werden, und die Frage nach der Programmiersprache stand an. Da ich den Seminarteilnehmern Java vorstellen wollte, arbeitete ich einen Foliensatz für den Vortrag aus. Parallel zu den Folien erwartete der Professor eine Ausarbeitung in Form einer Seminararbeit. Die Beschäftigung mit Java machte mir Spaß und war etwas ganz anderes, als ich bis dahin gewohnt war. Vor Java hatte ich rund zehn Jahre in Assembler kodiert, später dann mit den Hochsprachen Pascal und C, vorwiegend Compiler. Ich probierte aus, schrieb meine Erfahrungen auf und lernte dabei Java und die Bibliotheken kennen. Die Arbeit wuchs mit meinen Erfahrungen. Während der Projektgruppe sprach mich ein Kommilitone an, ob ich nicht Lust hätte, als Referent eine Java-Weiterbildung zu geben. Lust hatte ich – aber keine Unterlagen. So schrieb ich weiter, um für den Kurs Schulungsunterlagen zu haben. Als der Professor am Ende der Projektgruppe nach der Seminararbeit fragte, war die Vorform der »Insel« schon so umfangreich, dass die vorliegende Einleitung mehr oder weniger zur Seminararbeit wurde.

Das war 1997, und natürlich hätte ich mit dem Schreiben sofort aufhören können, nachdem ich die Seminararbeit abgegeben hatte. Doch bis heute macht mir Java immer noch viel Spaß, und ich freue mich auf jede neue Version. Und mit meinem Optimismus bin ich nicht allein: Die Prognosen für Java stehen ungebrochen gut, weil der Einsatz von Java mittlerweile so gefestigt ist wie der von COBOL bei Banken und Versicherungen. Daher wird immer wieder davon gesprochen, Java sei das neue COBOL.

Nach rund zwei Jahrzehnten sehe ich die »Insel« heute als ein sehr facettenreiches Java-Buch für die ambitionierten Entwickler an, die hinter die Kulissen schauen wollen. Der Detailgrad der »Insel« wird von keinem anderen (mir bekannten) deutsch- oder englischsprachigen Grundlagenbuch erreicht.[ 1 ] Die Erweiterung der »Insel« macht mir Spaß, auch wenn viele Themen kaum in einem normalen Java-Kurs angesprochen werden.

Software und Versionen


Als Grundlage für dieses Buch dient die Java Platform Standard Edition (Java SE) in der Version 21 in der freien Implementierung OpenJDK, wobei JDK für Java Development Kit steht. Das JDK besteht im Wesentlichen aus einem Compiler und einer Laufzeitumgebung (JVM) und ist für die Plattformen Windows, macOS, Linux und Solaris erhältlich.

Eine grafische Entwicklungsoberfläche (IDE) ist kein Teil des JDK. Zwar verlasse ich mich ungern auf einen Hersteller, weil die Hersteller unterschiedliche Entwicklergruppen ansprechen, doch stellt die Insel die Entwicklungsumgebung IntelliJ etwas genauer vor. Die Beispielprogramme lassen sich grundsätzlich mit beliebigen anderen Entwicklungsumgebungen oder Texteditoren – wie Visual Studio Code oder vi – eingeben und auf der Kommandozeile übersetzen. Reine Texteditoren sind in der Entwicklung allerdings nicht mehr zeitgemäß, sodass ein grafischer Kommandozeilenaufsatz die Programmerstellung vereinfacht.

Welche Java-Version verwenden wir?


Seit Oracle (damals noch von Sun geführt) die Programmiersprache Java 1995 mit Version 1.0 vorstellte, hat sich die Versionsspirale unaufhaltsam gedreht. Mittlerweile gibt es halbjährlich (im März und September) eine neue Version. Für manche Java-Versionen bieten die Hersteller einen längeren Zeitraum der Unterstützung, diese Versionen werden Long-Term-Support-Release (LTS) genannt.

Besonders für Java-Buch-Autoren stellt sich die Frage, auf welcher Java-Version ihr Text aufbauen muss und welche Bibliotheken sie beschreiben sollen. Ich beschreibe immer die Möglichkeiten der letzten Oracle-LTS-Version, was zur Drucklegung Java 21 war. Für die Didaktik der objektorientierten Programmierung ist die Versionsfrage glücklicherweise unerheblich.

Das Buch in der Lehre einsetzen


Die »Insel« eignet sich ideal zum Selbststudium. Das erste Kapitel dient zum Warmwerden. Wer auf dem Rechner noch keine Entwicklungsumgebung installiert hat, der sollte zuerst ein JDK installieren. Weil das JDK nur Kommandozeilentools installiert, sollte jeder Entwickler eine grafische IDE (Integrated Development Environment) installieren, da eine IDE die Entwicklung von Java-Programmen deutlich komfortabler macht. Eine IDE bietet gegenüber der rohen Kommandozeile einige Vorteile:

  • Das Editieren, Compilieren und Laufenlassen eines Java-Programms sind schnell und einfach über einen Tastendruck oder Mausklick möglich.

  • Ein Editor sollte die Syntax von Java farbig hervorheben (Syntax-Highlighting).

  • Eine kontextsensitive Hilfe zeigt bei Methoden die Parameter an, und gleichzeitig verweist sie auf die API-Dokumentation.

  • Weitere Vorteile wie GUI-Builder, Projektmanagement und Debuggen kommen dazu, spielen in diesem Buch aber keine Rolle.

In der Softwareentwicklung ist die Dokumentation der API-Schnittstellen unerlässlich. Sie ist von der Entwicklungsumgebung aus in der Regel über einen Tastendruck einsehbar oder online zu finden. Unter welcher URL sie verfügbar ist, erklärt ebenfalls Kapitel 1.

Richtig los geht es mit Kapitel 2, und von da an geht es didaktisch Schritt für Schritt weiter. Wer Kenntnisse in JavaScript, C, C# oder C++ hat, kann Kapitel 2 locker überfliegen. Wer schon in C#/C++ objektorientiert programmiert hat, kann...


Ullenboom, Christian
Christian Ullenboom, Dipl.-Informatiker, ist zertifizierter Java-Programmierer und seit 1997 Trainer und Berater für Java-Technologien und objektorientierte Analyse und Design. Seit Jahren teilt er sein Wissen mit unzähligen Besuchern seiner Website, wo er Fragen beantwortet, Inhalte bereitstellt und diskutiert. Seine Sympathie gilt Java Performance Tuning und den sinnlichen Freuden des Lebens.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.