Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Angewandte Objektorientierung
8 Exceptions
9 Generics, innere Klassen
10 Die Klassenbibliothek
11 Threads und nebenläufige Programmierung
12 Datenstrukturen und Algorithmen
13 Raum und Zeit
14 Dateien und Datenströme
15 Die eXtensible Markup Language (XML)
16 Grafische Oberflächen mit Swing
17 Grafikprogrammierung
18 Netzwerkprogrammierung
19 Verteilte Programmierung mit RMI und Web–Services
20 JavaServer Pages und Servlets
21 Applets
22 Midlets und die Java ME
23 Datenbankmanagement mit JDBC
24 Reflection und Annotationen
25 Logging und Monitoring
26 Sicherheitskonzepte
27 Java Native Interface (JNI)
28 Dienstprogramme für die Java-Umgebung
Stichwort
Download: - ZIP, ca. 14,1 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Computing / <openbook> / Java-Insel | vor >>
Java ist auch eine Insel (8. Auflage) von Christian Ullenboom Programmieren mit der Java Standard Edition Version 6
Java ist auch eine Insel (8. Aufl.) 8., aktual. Auflage, geb., mit DVD 1.475 S., 49,90 Euro Galileo Computing ISBN 978-3-8362-1371-4 |
| 3 Klassen und Objekte
|  | 3.1 Objektorientierte Programmierung
|  |  | 3.1.1 Warum überhaupt OOP?
|  |  | 3.1.2 Denk ich an Java, denk ich an Wiederverwendbarkeit
|  | 3.2 Eigenschaften einer Klasse
|  |  | 3.2.1 Die Klasse Point
|  | 3.3 Die UML (Unified Modeling Language)
|  |  | 3.3.1 Hintergrund und Geschichte zur UML
|  |  | 3.3.2 Wichtige Diagrammtypen der UML
|  |  | 3.3.3 UML-Werkzeuge
|  | 3.4 Neue Objekte erzeugen
|  |  | 3.4.1 Anlegen eines Exemplars einer Klasse mit dem new-Operator
|  |  | 3.4.2 Deklarieren von Referenzvariablen
|  |  | 3.4.3 Zugriff auf Variablen und Methoden mit dem ».«
|  |  | 3.4.4 Konstruktoren nutzen
|  | 3.5 Pakete und import-Deklarationen nutzen
|  |  | 3.5.1 Volle Qualifizierung und import-Deklaration
|  |  | 3.5.2 import *
|  | 3.6 Mit Referenzen arbeiten
|  |  | 3.6.1 Zuweisungen bei Referenzen
|  |  | 3.6.2 Methoden mit nicht-primitiven Parametern
|  | 3.7 Identität und Gleichheit
|  |  | 3.7.1 Identität von Objekten
|  |  | 3.7.2 Gleichheit und die Methode equals()
|  |  | 3.7.3 Die null-Referenz
|  | 3.8 Wrapper-Klassen und Autoboxing
|  |  | 3.8.1 Erzeugen von Wrapper-Objekten
|  |  | 3.8.2 Konvertierungen in eine String-Repräsentation
|  |  | 3.8.3 Die Klasse Integer
|  |  | 3.8.4 Die Klassen Double und Float für Fließkommazahlen
|  |  | 3.8.5 Die Basisklasse Number für numerische Wrapper-Objekte
|  |  | 3.8.6 Die Boolean-Klasse
|  |  | 3.8.7 Autoboxing: Boxing und Unboxing
|  | 3.9 Compilationseinheiten und eigene Pakete schnüren
|  |  | 3.9.1 Die package-Anweisung
|  |  | 3.9.2 Importieren von Klassen mit import
|  |  | 3.9.3 Hierarchische Strukturen und das Default-Package
|  |  | 3.9.4 Paketnamen
|  |  | 3.9.5 Klassen mit gleichen Namen in unterschiedlichen Paketen
|  |  | 3.9.6 Compilationseinheit (Compilation Unit)
|  |  | 3.9.7 Statischer Import
|  |  | 3.9.8 Eine Verzeichnisstruktur für eigene Projekte
|  | 3.10 Arrays
|  |  | 3.10.1 Deklaration von Arrays
|  |  | 3.10.2 Arrays mit Inhalt
|  |  | 3.10.3 Die Länge eines Arrays über das Attribut length
|  |  | 3.10.4 Zugriff auf die Elemente über den Index
|  |  | 3.10.5 Array-Objekte mit new erzeugen
|  |  | 3.10.6 Fehler bei Arrays
|  |  | 3.10.7 Die erweiterte for-Schleife
|  |  | 3.10.8 Arrays mit nicht-primitiven Elementen
|  |  | 3.10.9 Mehrdimensionale Arrays
|  |  | 3.10.10 Vorinitialisierte Arrays
|  |  | 3.10.11 Mehrere Rückgabewerte
|  |  | 3.10.12 Methode mit variabler Argumentanzahl (Vararg)
|  |  | 3.10.13 Klonen kann sich lohnen – Arrays vermehren
|  |  | 3.10.14 Feldinhalte kopieren
|  |  | 3.10.15 Die Klasse Arrays zum Vergleichen, Füllen und Suchen
|  | 3.11 Der Einstiegspunkt für das Laufzeitsystem: main()
|  |  | 3.11.1 Kommandozeilen-Argumente verarbeiten
|  |  | 3.11.2 Der Rückgabewert von main() und System.exit()
|  | 3.12 Zum Weiterlesen
## 3.5 Pakete und import-Deklarationen nutzen Ein Paket ist eine Gruppe thematisch zusammengehöriger Typen. Pakete könnten Unterpakete besitzen, die in der Angabe durch einen Punkt getrennt werden. Die Gruppierung lässt sich sehr gut an der Java-Bibliothek beobachten, wo sich zum Beispiel eine Klasse URL und Socket im Paket java.net befinden, denn URLs und Sockets gehören eben zu Netzwerkdingen. Ein Punkt und ein Polygon, repräsentiert durch die Klassen Point und Polygon, gehören in das Paket für grafische Oberflächen, und das ist das Paket java.awt. #### Die Paketnamen java, javax und sun Sun hat für sich selbst die Hauptpaketnamen java, javax und sun reserviert, unter denen eigene Klassen und Unterpakete nicht liegen sollen. So befindet sich unser java.awt.Point in einem Sun-Paket, und das ist leicht durch den Teil java zu erkennen. Wenn jemand eigene Klassen in Pakete mit dem Präfix java setzen würde, etwa java.ui, würde er damit Verwirrung schaffen, da nicht mehr nachvollziehbar ist, ob das Paket – wie bei den Sun-Klassen – Bestandteil jeder Distribution ist. ### 3.5.1 Volle Qualifizierung und import-Deklaration Um die Klasse Point, die im Paket java.awt liegt, außerhalb des Pakets java.awt zu nutzen, muss sie dem Compiler mit der gesamten Paketangabe bekannt gemacht werden. Hierzu reicht der Klassenname allein nicht aus, denn es kann ja sein, dass der Klassenname mehrdeutig ist und eine Klassendeklaration in unterschiedlichen Paketen existiert. (In der Java-Bibliothek gibt es dazu einige Beispiele, etwa java.util.Date und java.sql.Date.) Um dem Compiler die präzise Zuordnung einer Klasse zu einem Paket zu ermöglichen, gibt es zwei Möglichkeiten: Zum einen lassen sich die Typen voll qualifizieren, wie wir das bisher getan haben. Eine alternative und praktischere Möglichkeit besteht darin, den Compiler mit einer import-Deklaration auf die Typen im Paket aufmerksam zu machen.
Listing 3.2 AwtWithoutImport.java
    class AwtWithoutImport
    {
     public static void main(String[] args)
     {
      java.awt.Point p=new java.awt.Point();
      java.awt.Polygon poly=new java.awt.Polygon();
      poly.addPoint( 10, 10 );
      poly.addPoint( 10, 20 );
      poly.addPoint( 20, 10 );

      System.out.println( p );
      System.out.println(
        poly.contains(15, 15) );
     }
    }
| Listing 3.3 AwtWithImport.java
    import java.awt.Point;
    import java.awt.Polygon;

    class AwtWithImport
    {
     public static void main(String[] args)
     {
      Point p = new Point();
      Polygon poly = new Polygon();
      poly.addPoint( 10, 10 );
      poly.addPoint( 10, 20 );
      poly.addPoint( 20, 10 );

      System.out.println( p );
      System.out.println(
        poly.contains(15, 15) );
     }
    }
Während der Quellcode auf der linken Seite die volle Qualifizierung verwendet und jeder Verweis auf einen Typ mehr Schreibarbeit kostet, ist im rechten Fall beim import nur der Klassenname genannt und die Paketangabe in ein import »ausgelagert«. Kommt der Compiler zu einer Anweisung wie Point p = new Point();, findet er die Deklaration einer Klasse Point im Paket java.awt und kennt damit die für ihn unabkömmliche absolute Qualifizierung.
Hinweis Die Typen aus java.lang sind automatisch importiert, sodass zum Beispiel ein import java.lang.String; nicht nötig ist.
### 3.5.2 import * Greift eine Java-Klasse auf mehrere andere Typen des gleichen Pakets zurück, kann die Anzahl der import-Deklarationen groß werden. In unserem Beispiel sind das mit Point und Polygon nur zwei Klassen aus java.awt, aber es lässt sich schnell ausmalen, was passiert, wenn aus dem Paket für grafische Oberflächen zusätzlich Fenster, Beschriftungen, Schaltflächen, Schieberegel und so weiter eingebunden werden. Die Lösung in diesem Fall ist ein *, welches das letzte Glied in einer import-Deklaration sein darf.
    import java.awt.*;
    import java.io.*;
Mit dieser Syntax kennt der Compiler alle Typen im Paket java.awt und java.io, sodass eine Klasse Point und Polygon genau bekannt ist, wie auch die Klasse File.
Hinweis Das * ist nur in der letzten Hierarchie erlaubt und gilt immer für alle Typen in diesem Paket. Syntaktisch falsch sind:
    import *;                     // Syntax error on token "*", Identifier expected
    import java.awt.Po*;          // Syntax error on token "*", delete this token
Eine Anweisung wie import java.*; ist zwar syntaktisch korrekt, aber dennoch ohne Wirkung, denn direkt im Paket java gibt es keine Typendeklarationen, sondern nur Unterpakete.
Das * verkürzt zwar die Anzahl der individuellen import-Deklarationen, es ist aber gut, zwei Dinge im Kopf zu behalten: Falls zwei unterschiedliche Pakete einen gleichlautenden Typ beherbergen, etwa Date in java.util und java.sql, so kommt es bei der Verwendung des Typs zu einem Übersetzungsfehler. Hier muss voll qualifiziert werden. Die Anzahl der import-Deklarationen sagt etwas über den Grad der Komplexität aus. Je mehr import-Deklarationen, desto größer die Abhängigkeiten zu anderen Klassen, was im Allgemeinen ein Alarmzeichen ist. Zwar zeigen grafische Tools die Abhängigkeiten genau an, doch ein import * kann diese erst einmal verstecken. ### Ihr Kommentar Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück | <top> | vor >>
Zum Katalog
Java ist auch eine Insel Jetzt bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Tipp
| Coding for Fun
Buchempfehlungen
| Objektorientierte Programmierung
| Einstieg in Eclipse 3.4
| Java 6 lernen mit Eclipse
| NetBeans Platform 6
| Java und XML
| Visual C# 2008
| IT-Handbuch für Fachinformatiker
| C++ von A bis Z
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

Copyright © Galileo Press 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Computing]
Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de