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.6 Mit Referenzen arbeiten ### 3.6.1 Zuweisungen bei Referenzen Eine Referenz erlaubt den Zugriff auf das referenzierte Objekt. Es kann durchaus mehrere Kopien dieser Referenz geben, die in Variablen mit unterschiedlichen Namen abgelegt sind – so wie eine Person (ein Personen-Objekt) von den Mitarbeitern als »Chefin« angesprochen wird, aber von ihrem Mann als »Schnuckiputzi«. Dies nennt sich auch Alias. Wir wollen uns dies an einem Punkt-Objekt näher ansehen, das wir unter einem alternativen Variablennamen ansprechen wollen:
    Point p = new Point();
    Point q = p;
Hier klicken, um das Bild zu vergrößern Ein Punkt-Objekt wird erzeugt und mit der Variablen p referenziert. Die zweite Zeile speichert nun dieselbe Referenz in der Variablen q. Danach verweisen p und q auf dasselbe Objekt.
Beispiel Dies hat zur Konsequenz, dass bei einer Änderung des Punkt-Objekts über die in der Variablen p gespeicherte Referenz die Änderung auch bei einem Zugriff über die Variable q beobachtet werden kann.
    Point p = new Point();
    Point q = p;
    p.x = 10;
    System.out.println( q.x );            // 10
    q.y = 5;
    System.out.println( p.y );            // 5
### 3.6.2 Methoden mit nicht-primitiven Parametern Dass sich das gleiche Objekt unter zwei Namen (über zwei verschiedene Variablen) ansprechen lässt, können wir gut bei Methoden beobachten. Eine Methode, die über den Parameter eine Objektreferenz erhält, kann auf das übergebene Objekt zugreifen. Das bedeutet: Die Methode kann dieses Objekt mit den angebotenen Methoden ändern oder auf die Attribute zugreifen. Listing 3.4 InitPoint.java
    import java.awt.*;

    public class InitPoint
    {
      static void clear( Point p )
      {
        p.setLocation( 0, 0 );
      }

      public static void main( String[] args )
      {
        Point q = new Point( 47, 11 );   // Coordinates (x=47,y=11)
        clear( q );
        System.out.println( q.x );   // 0
      }
    }
In dem Moment, in dem main() die Funktion clear() aufruft, gibt es sozusagen die Namen q und p für das Objekt, wobei nur clear() das Objekt unter p kennt und main() nicht und clear() von dem Namen q keine Ahnung hat.
Hinweis Der Name einer Parametervariablen darf durchaus mit dem Namen einer lokalen Variablen übereinstimmen, was die Semantik nicht verändert. In unserem Fall hätte clear() die Point-Variable auch q nennen können.
#### Wertübergabe und Referenzübergabe Call by Value Primitive Variablen werden immer per Wert kopiert (engl. Call by Value). Das Gleiche gilt für Referenzen. Daher hat auch die folgende Funktion keine Nebenwirkungen:
    static void clear( Point p )
    {
      p = new Point();
    }
Nach der Zuweisung referenziert die Variable p ein anderes Punkt-Objekt, und das an die Funktion übergebene Argument geht verloren. Diese Änderung wird nach außen hin nicht sichtbar, was bedeutet, dass der Aufrufer kein neues Objekt unter sich hat. #### Call by Reference gibt es in Java nicht – ein Blick auf C und C++ In C++ gibt es eine weitere Argumentübergabe, die sich Call by Reference nennt. Würde eine Funktion wie clear() mit Referenzsemantik deklariert, würde die Variable p ein Synonym darstellen, also einen anderen Namen für eine Variable – in unserem Fall q. Damit würde die Zuweisung im Rumpf den Zeiger auf ein neues Objekt legen. Die swap()-Funktion ist ein gutes Beispiel für die Nützlichkeit von Call by Reference:
    void swap( int& a, int& b )
    {
      int tmp = a;
      a = b;
      b = tmp;
    }
Zeiger und Referenzen sind in C++ etwas anderes, was Spracheinsteiger leicht irritiert. Denn in C++ und auch C hätte eine vergleichbare swap()-Funktion auch mit Zeigern implementiert werden können:
    void swap( int *a, int *b )
    {
       int tmp = *a;
       *a = *b;
       *b = tmp;
    }
Die Implementierung gibt in C(++) einen Verweis auf das Argument. ### 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