Grundkurs Programmieren in Java

Grundkurs Programmieren in Java

von: Dietmar Ratz, Jens Scheffler, Dietmar Seese et al.

Carl Hanser Fachbuchverlag, 2011

ISBN: 9783446428355

Sprache: Deutsch

722 Seiten, Download: 4125 KB

 
Format:  PDF, auch als Online-Lesen

geeignet für: Apple iPad, Android Tablet PC's Online-Lesen PC, MAC, Laptop


 

eBook anfordern

Mehr zum Inhalt

Grundkurs Programmieren in Java



  Inhaltsverzeichnis 6  
  Vorwort 18  
  1 Einleitung 20  
     1.1 Java – mehr als nur kalter Kaffee? 20  
     1.2 Java für Anfänger – das Konzept dieses Buches 21  
     1.3 Zusatzmaterial und Kontakt zu den Autoren 23  
     1.4 Verwendete Schreibweisen 23  
  2 Einige Grundbegriffe aus der Welt des Programmierens 24  
     2.1 Computer, Software, Informatik und das Internet 24  
     2.2 Was heißt Programmieren? 27  
  Teil I: Einstieg in das Programmierenin Java 30  
     3 Aller Anfang ist schwer 32  
        3.1 Mein erstes Programm 32  
        3.2 Formeln, Ausdrücke und Anweisungen 33  
        3.3 Zahlenbeispiele 34  
        3.4 Verwendung von Variablen 35  
        3.5 ”Auf den Schirm!“ 35  
        3.6 Das Programmgerüst 36  
        3.7 Eingeben, übersetzen und ausführen 38  
        3.8 Übungsaufgaben 39  
     4 Grundlagen der Programmierung in Java 40  
        4.1 Grundelemente eines Java-Programms 40  
           4.1.1 Kommentare 42  
           4.1.2 Bezeichner und Namen 44  
           4.1.3 Literale 45  
           4.1.4 Reservierte Wörter, Schlüsselwörter 45  
           4.1.5 Trennzeichen 46  
           4.1.6 Interpunktionszeichen 47  
           4.1.7 Operatorsymbole 47  
           4.1.8 import-Anweisungen 48  
           4.1.9 Zusammenfassung 49  
           4.1.10 Übungsaufgaben 49  
        4.2 Erste Schritte in Java 50  
           4.2.1 Grundstruktur eines Java-Programms 51  
           4.2.2 Ausgaben auf der Konsole 52  
           4.2.3 Eingaben von der Konsole 53  
           4.2.4 Schöner programmieren in Java 54  
           4.2.5 Zusammenfassung 55  
           4.2.6 Übungsaufgaben 55  
        4.3 Einfache Datentypen 56  
           4.3.1 Ganzzahlige Datentypen 56  
           4.3.2 Gleitkommatypen 1  
           4.3.3 Der Datentyp char für Zeichen 60  
           4.3.4 Zeichenketten 61  
           4.3.5 Der Datentyp boolean für Wahrheitswerte 61  
           4.3.6 Implizite und explizite Typumwandlungen 61  
           4.3.7 Zusammenfassung 63  
           4.3.8 Übungsaufgaben 63  
        4.4 Der Umgang mit einfachen Datentypen 64  
           4.4.1 Variablen 64  
           4.4.2 Operatoren und Ausdrücke 68  
           4.4.3 Allgemeine Ausdrücke 78  
           4.4.4 Ein- und Ausgabe 79  
           4.4.5 Zusammenfassung 82  
           4.4.6 Übungsaufgaben 82  
        4.5 Anweisungen und Ablaufsteuerung 85  
           4.5.1 Anweisungen 86  
           4.5.2 Blöcke und ihre Struktur 86  
           4.5.3 Entscheidungsanweisung 87  
           4.5.4 Wiederholungsanweisungen, Schleifen 90  
           4.5.5 Sprungbefehle und markierte Anweisungen 94  
           4.5.6 Zusammenfassung 96  
           4.5.7 Übungsaufgaben 96  
     5 Referenzdatentypen 106  
        5.1 Felder 108  
           5.1.1 Was sind Felder? 110  
           5.1.2 Deklaration, Erzeugung und Initialisierung von Feldern 111  
           5.1.3 Felder unbekannter Länge 114  
           5.1.4 Referenzen 116  
           5.1.5 Ein besserer Terminkalender 120  
           5.1.6 Mehrdimensionale Felder 122  
           5.1.7 Mehrdimensionale Felder unterschiedlicher Länge 125  
           5.1.8 Vorsicht, Falle: Kopieren von mehrdimensionalen Feldern 127  
           5.1.9 Vereinfachte for-Schleifen-Notation 128  
           5.1.10 Zusammenfassung 130  
           5.1.11 Übungsaufgaben 130  
        5.2 Klassen 133  
           5.2.1 Was sind Klassen? 134  
           5.2.2 Deklaration und Instantiierung von Klassen 135  
           5.2.3 Komponentenzugriff bei Objekten 136  
           5.2.4 Ein erstes Adressbuch 137  
           5.2.5 Klassen als Referenzdatentyp 139  
           5.2.6 Felder von Klassen 1  
           5.2.7 Vorsicht, Falle: Kopieren von geschachtelten Referenzdatentypen 145  
           5.2.8 Auslagern von Klassen 146  
           5.2.9 Zusammenfassung 148  
           5.2.10 Übungsaufgaben 148  
     6 Methoden, Unterprogramme 1  
        6.1 Methoden 1  
           6.1.1 Was sind Methoden? 1  
           6.1.2 Deklaration von Methoden 152  
           6.1.3 Parameterübergabe und Ergebnisrückgabe 1  
           6.1.4 Aufruf von Methoden 155  
           6.1.5 Überladen von Methoden 156  
           6.1.6 Variable Argument-Anzahl bei Methoden 158  
           6.1.7 Vorsicht, Falle: Referenzen als Parameter 159  
           6.1.8 Sichtbarkeit und Verdecken von Variablen 161  
           6.1.9 Zusammenfassung 163  
           6.1.10 Übungsaufgaben 163  
        6.2 Rekursiv definierte Methoden 164  
           6.2.1 Motivation 164  
           6.2.2 Gute und schlechte Beispiele für rekursive Methoden 166  
           6.2.3 Zusammenfassung 169  
        6.3 Die Methode main 169  
           6.3.1 Kommandozeilenparameter 170  
           6.3.2 Anwendung der vereinfachten for-Schleifen-Notation 171  
           6.3.3 Zusammenfassung 172  
           6.3.4 Übungsaufgaben 172  
        6.4 Methoden aus anderen Klassen aufrufen 174  
           6.4.1 Klassenmethoden 174  
           6.4.2 Die Methoden der Klasse java.lang.Math 175  
           6.4.3 Statischer Import 176  
        6.5 Methoden von Objekten aufrufen 177  
           6.5.1 Instanzmethoden 177  
           6.5.2 Die Methoden der Klasse java.lang.String 178  
        6.6 Übungsaufgaben 181  
  Teil II: Objektorientiertes.Programmieren in Java 186  
     7 Die objektorientiertePhilosophie 188  
        7.1 Die Welt, in der wir leben 188  
        7.2 Programmierparadigmen – Objektorientierung im Vergleich 189  
        7.3 Die vier Grundpfeiler objektorientierter Programmierung 191  
           7.3.1 Generalisierung 191  
           7.3.2 Vererbung 193  
           7.3.3 Kapselung 196  
           7.3.4 Polymorphismus 197  
           7.3.5 Weitere wichtige Grundbegriffe 198  
        7.4 Modellbildung – von der realen Welt in den Computer 199  
           7.4.1 Grafisches Modellieren mit UML 199  
           7.4.2 Entwurfsmuster 200  
        7.5 Zusammenfassung 201  
        7.6 Übungsaufgaben 202  
     8 Der grundlegende Umgang mit Klassen 204  
        8.1 Vom Referenzdatentyp zur Objektorientierung 204  
        8.2 Instanzmethoden 206  
           8.2.1 Zugriffsrechte 206  
           8.2.2 Was sind Instanzmethoden? 207  
           8.2.3 Instanzmethoden zur Validierung von Eingaben 210  
           8.2.4 Instanzmethoden als erweiterte Funktionalit¨at 211  
        8.3 Statische Komponenten einer Klasse 212  
           8.3.1 Klassenvariablen und -methoden 213  
           8.3.2 Klassenkonstanten 215  
        8.4 Instantiierung und Initialisierung 216  
           8.4.1 Konstruktoren 216  
           8.4.2 Überladen von Konstruktoren 218  
           8.4.3 Der statische Initialisierer 220  
           8.4.4 Der Mechanismus der Objekterzeugung 223  
        8.5 Zusammenfassung 227  
        8.6 Übungsaufgaben 228  
     9 Vererbung und Polymorphismus – der fortgeschrittene Umgang mit Klassen in Java 248  
        9.1 Wozu braucht man Vererbung? 248  
           9.1.1 Aufgabenstellung 248  
           9.1.2 Analyse des Problems 249  
           9.1.3 Ein erster Ansatz 249  
           9.1.4 Eine Klasse für sich 250  
           9.1.5 Stärken der Vererbung 251  
           9.1.6 Vererbung verhindern durch final 254  
           9.1.7 Übungsaufgaben 255  
        9.2 Die super-Referenz 256  
        9.3 Überschreiben von Methoden und Variablen 258  
           9.3.1 Dynamisches Binden 258  
           9.3.2 Überschreiben von Methoden verhindern durch final 1  
        9.4 Die Klasse java.lang.Object 261  
        9.5 Übungsaufgaben 264  
        9.6 Abstrakte Klassen und Interfaces 264  
        9.7 Übungsaufgaben 268  
        9.8 Weiteres zum Thema Objektorientierung 273  
           9.8.1 Erstellen von Paketen 273  
           9.8.2 Zugriffsrechte 274  
           9.8.3 Innere Klassen 275  
           9.8.4 Anonyme Klassen 281  
        9.9 Zusammenfassung 283  
        9.10 Übungsaufgaben 283  
     10 Exceptions und Errors 294  
        10.1 Eine Einführung in Exceptions 295  
           10.1.1 Was ist eine Exception? 295  
           10.1.2 Übungsaufgaben 297  
           10.1.3 Abfangen von Exceptions 297  
           10.1.4 Ein Anwendungsbeispiel 298  
           10.1.5 Die RuntimeException 301  
           10.1.6 Übungsaufgaben 302  
        10.2 Exceptions für Fortgeschrittene 304  
           10.2.1 Definieren eigener Exceptions 304  
           10.2.2 Übungsaufgaben 306  
           10.2.3 Vererbung und Exceptions 306  
           10.2.4 Vorsicht, Falle! 310  
           10.2.5 Der finally-Block 312  
           10.2.6 Die Klassen Throwable und Error 316  
           10.2.7 Zusammenfassung 318  
           10.2.8 Übungsaufgaben 318  
        10.3 Assertions 319  
           10.3.1 Zusicherungen im Programmcode 319  
           10.3.2 Compilieren des Programmcodes 320  
           10.3.3 Ausführen des Programmcodes 321  
           10.3.4 Zusammenfassung 321  
     11 Fortgeschrittene objektorientierte Programmierung 322  
        11.1 Aufzählungstypen 323  
           11.1.1 Deklaration eines Aufzählungstyps 323  
           11.1.2 Instanzmethoden der enum-Objekte 324  
           11.1.3 Selbstdefinierte Instanzmethoden für enum-Objekte 324  
           11.1.4 Übungsaufgaben 326  
        11.2 Generische Datentypen 328  
           11.2.1 Generizität in alten Java-Versionen 328  
           11.2.2 Generizität ab Java 5.0 331  
           11.2.3 Einschränkungen der Typ-Parameter 333  
           11.2.4 Wildcards 335  
           11.2.5 Bounded Wildcards 336  
           11.2.6 Generische Methoden 338  
           11.2.7 Ausblick 340  
           11.2.8 Übungsaufgaben 340  
        11.3 Sortieren von Feldern und das Interface Comparable 345  
     12 Einige wichtige Hilfsklassen 348  
        12.1 Die Klasse StringBuffer 348  
           12.1.1 Arbeiten mit String-Objekten 348  
           12.1.2 Arbeiten mit StringBuffer-Objekten 351  
           12.1.3 Übungsaufgaben 353  
        12.2 Die Wrapper-Klassen (Hüll-Klassen) 354  
           12.2.1 Arbeiten mit ”eingepackten“ Daten 354  
           12.2.2 Aufbau der Wrapper-Klassen 355  
           12.2.3 Ein Anwendungsbeispiel 358  
           12.2.4 Automatische Typwandlung für die Wrapper-Klassen 359  
           12.2.5 Übungsaufgaben 361  
        12.3 Die Klassen BigInteger und BigDecimal 362  
           12.3.1 Arbeiten mit langen Ganzzahlen 362  
           12.3.2 Aufbau der Klasse BigInteger 364  
           12.3.3 Übungsaufgaben 366  
           12.3.4 Arbeiten mit langen Gleitkommazahlen 366  
           12.3.5 Aufbau der Klasse BigDecimal 369  
           12.3.6 Viele Stellen von Nullstellen gefällig? 372  
           12.3.7 Übungsaufgaben 373  
        12.4 Die Klasse DecimalFormat 374  
           12.4.1 Standard-Ausgaben in Java 374  
           12.4.2 Arbeiten mit Format-Objekten 375  
           12.4.3 Vereinfachte formatierte Ausgabe 377  
           12.4.4 Übungsaufgaben 378  
        12.5 Die Klassen Date und Calendar 378  
           12.5.1 Arbeiten mit ”Zeitpunkten“ 379  
           12.5.2 Auf die Plätze, fertig, los! 380  
           12.5.3 Spezielle Calendar-Klassen 381  
           12.5.4 Noch einmal: Zeitmessung 383  
           12.5.5 Übungsaufgaben 385  
        12.6 Die Klassen SimpleDateFormat und DateFormat 385  
           12.6.1 Arbeiten mit Format-Objekten für Datum/Zeit-Angaben 385  
           12.6.2 Übungsaufgaben 390  
        12.7 Die Collection-Klassen 390  
           12.7.1 ”Sammlungen“ von Objekten – Der Aufbau des Interface Collection 390  
           12.7.2 ”Sammlungen“ durchgehen – Der Aufbau des Interface Iterator 393  
           12.7.3 Mengen 394  
           12.7.4 Listen 398  
           12.7.5 Übungsaufgaben 404  
        12.8 Die Klasse StringTokenizer 405  
           12.8.1 Übungsaufgaben 407  
  Teil III: Grafische Oberflächen in Java 408  
     13 Aufbau grafischer Oberflächen in Frames – von AWT nachSwing 410  
        13.1 Grundsätzliches zum Aufbau grafischer Oberflächen 410  
        13.2 Ein einfaches Beispiel mit dem AWT 412  
        13.3 Let’s swing now! 414  
        13.4 Etwas ”Fill-in“ gefällig? 416  
        13.5 Die AWT- und Swing-Klassenbibliothek im Überblick 418  
        13.6 Übungsaufgaben 420  
     14 Swing-Komponenten 422  
        14.1 Die abstrakte Klasse Component 422  
        14.2 Die Klasse Container 423  
        14.3 Die abstrakte Klasse JComponent 424  
        14.4 Layout-Manager, Farben und Schriften 425  
           14.4.1 Die Klasse Color 426  
           14.4.2 Die Klasse Font 428  
           14.4.3 Layout-Manager 429  
        14.5 Einige Grundkomponenten 435  
           14.5.1 Die Klasse JLabel 437  
           14.5.2 Die abstrakte Klasse AbstractButton 437  
           14.5.3 Die Klasse JButton 439  
           14.5.4 Die Klasse JToggleButton 440  
           14.5.5 Die Klasse JCheckBox 441  
           14.5.6 Die Klassen JRadioButton und ButtonGroup 442  
           14.5.7 Die Klasse JComboBox 444  
           14.5.8 Die Klasse JList 447  
           14.5.9 Die abstrakte Klasse JTextComponent 450  
           14.5.10 Die Klassen JTextField und JPasswordField 451  
           14.5.11 Die Klasse JTextArea 453  
           14.5.12 Die Klasse JScrollPane 455  
           14.5.13 Die Klasse JPanel 457  
        14.6 Spezielle Container, Menüs und Toolbars 459  
           14.6.1 Die Klasse JFrame 459  
           14.6.2 Die Klasse JWindow 460  
           14.6.3 Die Klasse JDialog 460  
           14.6.4 Die Klasse JMenuBar 464  
           14.6.5 Die Klasse JToolBar 466  
        14.7 Übungsaufgaben 469  
     15 Ereignisverarbeitung 472  
        15.1 Zwei einfache Beispiele 473  
           15.1.1 Zufällige Grautöne als Hintergrund 473  
           15.1.2 Ein interaktiver Bilderrahmen 476  
        15.2 Programmiervarianten für die Ereignisverarbeitung 480  
           15.2.1 Innere Klasse als Listener-Klasse 480  
           15.2.2 Anonyme Klasse als Listener-Klasse 480  
           15.2.3 Container-Klasse als Listener-Klasse 481  
           15.2.4 Separate Klasse als Listener-Klasse 482  
        15.3 Event-Klassen und -Quellen 484  
        15.4 Listener-Interfaces und Adapter-Klassen 488  
        15.5 Listener-Registrierung bei den Event-Quellen 493  
        15.6 Auf die Plätze, fertig, los! 497  
        15.7 Übungsaufgaben 501  
     16 Einige Ergänzungen zu Swing-Komponenten 506  
        16.1 Zeichnen in Swing-Komponenten 506  
           16.1.1 Grafische Darstellung von Komponenten 506  
           16.1.2 Das Grafik-Koordinatensystem 507  
           16.1.3 Die abstrakte Klasse Graphics 508  
           16.1.4 Ein einfaches Zeichenprogramm 511  
           16.1.5 Layoutveränderungen und der Einsatz von revalidate 513  
        16.2 Noch mehr Swing gefällig? 516  
        16.3 Übungsaufgaben 517  
     17 Applets 520  
        17.1 Erstellen und Ausführen von Applets 520  
           17.1.1 Vom Frame zum Applet am Beispiel 520  
           17.1.2 Applet in HTML-Datei einbetten 522  
           17.1.3 Applet über HTML-Datei ausführen 524  
        17.2 Die Methoden der Klasse JApplet 525  
        17.3 Zwei Beispiele 527  
           17.3.1 Auf die Plätze, fertig, los! 528  
           17.3.2 Punkte verbinden im Applet 531  
        17.4 Details zur HTML-Einbettung 532  
           17.4.1 Der Applet-Tag 532  
           17.4.2 Die Methode showDocument 535  
        17.5 Sicherheitseinschränkungen bei Applets 537  
        17.6 Übungsaufgaben 541  
  Teil IV: Threads, Datenströme und Netzwerk-Anwendungen 544  
     18 Parallele Programmierung mit Threads 546  
        18.1 Ein einfaches Beispiel 546  
        18.2 Threads in Java 548  
           18.2.1 Die Klasse Thread 549  
           18.2.2 Das Interface Runnable 553  
           18.2.3 Threads vorzeitig beenden 555  
        18.3 Wissenswertes über Threads 557  
           18.3.1 Lebenszyklus eines Threads 557  
           18.3.2 Thread-Scheduling 559  
           18.3.3 Dämon-Threads und Thread-Gruppen 559  
        18.4 Thread-Synchronisation und -Kommunikation 560  
           18.4.1 Das Leser/Schreiber-Problem 561  
           18.4.2 Das Erzeuger/Verbraucher-Problem 565  
        18.5 Threads in Frames und Applets 572  
           18.5.1 Auf die Plätze, fertig, los! 572  
           18.5.2 Spielereien 576  
           18.5.3 Swing-Komponenten sind nicht Thread-sicher 578  
        18.6 Übungsaufgaben 579  
     19 Ein- und Ausgabe über Streams 582  
        19.1 Grundsätzliches zu Streams in Java 583  
        19.2 Dateien und Verzeichnisse – Die Klasse File 583  
        19.3 Ein- und Ausgabe über Character-Streams 586  
           19.3.1 Einfache Reader- und Writer-Klassen 587  
           19.3.2 Gepufferte Reader- und Writer-Klassen 590  
           19.3.3 Die Klasse StreamTokenizer 592  
           19.3.4 Die Klasse PrintWriter 593  
           19.3.5 Die Klassen IOTools und Scanner 595  
        19.4 Ein- und Ausgabe über Byte-Streams 597  
           19.4.1 Einige InputStream- und OutputStream-Klassen 598  
           19.4.2 Die Serialisierung und Deserialisierung von Objekten 600  
           19.4.3 Die Klasse PrintStream 602  
        19.5 Einige abschließende Bemerkungen 603  
        19.6 Übungsaufgaben 604  
     20 Client/Server-Programmierung in Netzwerken 606  
        20.1 Wissenswertes über Netzwerk-Kommunikation 607  
           20.1.1 Protokolle 607  
           20.1.2 IP-Adressen 609  
           20.1.3 Ports und Sockets 610  
        20.2 Client/Server-Programmierung 611  
           20.2.1 Die Klassen ServerSocket und Socket 612  
           20.2.2 Ein einfacher Server 614  
           20.2.3 Ein einfacher Client 617  
           20.2.4 Ein Server für mehrere Clients 618  
           20.2.5 Ein Mehrzweck-Client 621  
        20.3 Wissenswertes über URLs 624  
           20.3.1 Client/Server-Kommunikation über URLs 624  
           20.3.2 Netzwerkverbindungen in Applets 625  
        20.4 Übungsaufgaben 626  
  Teil V: Aktuelles, Ausblick und Anhang 630  
     21 Neuerungen in Java 7 632  
        21.1 Spracherweiterungen 632  
           21.1.1 Elementare Datentypen und Anweisungen 632  
           21.1.2 Verkürzte Notation bei generischen Datentypen 637  
           21.1.3 Ausnahmebehandlung 641  
        21.2 Erweiterungen der Klassenbibliothek 647  
           21.2.1 Dateien und Verzeichnisse 647  
           21.2.2 Grafische Oberflächen 651  
     22 Blick über den Tellerrand 654  
        22.1 Der Vorhang fällt 654  
        22.2 A fool with a tool . . . 655  
        22.3 Alles umsonst? 656  
        22.4 Und fachlich? 657  
        22.5 Zu guter Letzt . . . 659  
     Anhang A: Der Weg zum guten Programmierer . . . 660  
        A.1 Die goldenen Regeln der Code-Formatierung 661  
        A.2 Die goldenen Regeln der Namensgebung 664  
        A.3 Zusammenfassung 666  
     Anhang B: Die Klasse IOTools – Tastatureingaben in Java 668  
        B.1 Kurzbeschreibung 668  
        B.2 Anwendung der IOTools-Methoden 669  
     Anhang C: Der Umgang mit der API-Spezifikation 672  
        C.1 Der Aufbau der API-Spezifikation 672  
        C.2 Der praktische Einsatz der API-Spezifikation 673  
     Anhang D: Glossar 678  
  Literaturverzeichnis 692  
  Stichwortverzeichnis 696  

Kategorien

Service

Info/Kontakt