Showing posts with label java. Show all posts
Showing posts with label java. Show all posts

Saturday, January 9, 2010

Java Schulung Kapselung

Kapselung

Kapselung

Kapselung bedeutet, daß auf alle nicht exportierten Eigenschaften eines Objekts von außen nicht direkt zugegriffen werden kann.

• Wird die konkrete Repräsentation des Zustands verborgen, spricht man auch vom Geheimnisprinzip (Information Hiding, nach [Parnas72]).

• Kapselung heißt auch, daß die Signatur und das abstrakte Verhalten einer Operation bekannt ist, die Implementation aber verborgen bleibt.

Nicht alle oo Programmiersprachen realisieren die Kapselung von Zustand und Implementationen geeignet.

Java Schulung: Abstrakte Datentypen

Abstrakte Datentypen

• Klassen sind die logische Erweiterung des Konzepts des ADT.

• In prozeduralen Sprachen werden ADT's durch Records (Pascal),

Structs (C), Common-Blöcke (Fortran) oder Copy-Strecken

(Cobol/PL1) realisiert.

• Dies sind jedoch lediglich reine Datencontainer.

• In der Objektorientierung werden diese ADT's um die Deklaration der

möglichen, erlaubten Manipulationen erweitert.

Klasse Daten + Methoden

• Ein Objekt ist eine Instanz einer Klasse

– Der entsprechende Speicherplatz für die Daten ist alloziiert und die

Methoden können auf diese zugreifen

Java Schulung: Agenda: Java Grundlagen

Agenda: Java Grundlagen

• Java Syntax

• Java Datentypen

• Kontrollstrukturen

• Klassen und Objekte

• Überschreiben/Überladen von Methoden

• Sichtbarkeit

• Behandlung von Ausnahmen (Exceptions)

• Die wichtigsten Java Pakete

Tuesday, December 15, 2009

QuickSort in Java mit Interfaces

interface SortObject


{ public int compare (SortObject o);

}

Wie man sieht wird der Funktionskörper von compare durch ein Semikolon ; ersetzt. Man kann nun eine beliebige Klasse sortierbar machen, wenn man compare implementiert. Wir wollen als Beispiel wieder double-Werte sortieren. Dazu schreiben wir eine neue Klasse SortDouble.



class SortDouble implements SortObject

{ private double X;

public SortDouble (double x)

{ X=x;

}

public double getValue ()

{ return X;

}

public int compare (SortObject o)

{ SortDouble s=(SortDouble)o;

if (X

else if (X==s.X) return 0;

else return 1;

}

}

Diese Klasse kann einen double-Wert aufnehmen und implementiert die compare-Methode. Nun folgt das Hauptprogramm, das eine statische Funktion Sorter.sort() aufruft. Die Klasse Sorter enthält eine entsprechende Routine, die den Quicksort-Algorithmus implementiert. Diese Methode bekommt ein Array aus Instanzen von SortObject übergeben. Da SortDouble dieses Interface implementiert, geht auch ein Array aus SortDouble.



public class Test

{ public static void main (String args[])

{ int i,n=1000;



// Get an array of random numbers:

SortDouble x[]=new SortDouble[n];

for (i=0; i



// Sort it:

Sorter.sort(x);



// Test, if the order is correct:

for (i=1; i

if (x[i].getValue()

System.out.println("Fehler beim Sortieren");

}

}

Die Methode Sorter.sort weiß nun nichts von double-Werten, sondern benutzt nur compare aus dem Interface SortObject.



class Sorter

{ static public void sort (SortObject v[])

{ QuickSort(v,0,v.length-1);

}



static private void QuickSort

(SortObject a[], int lo0, int hi0)

{ int lo=lo0;

int hi=hi0;

SortObject mid;



if (hi0>lo0)

{ mid = a[(lo0+hi0)/2];

while(lo<=hi)

{ while((lo

++lo;

while((hi>lo0) && (a[hi].compare(mid)>0))

--hi;

if(lo<=hi)

{ swap(a,lo,hi);

++lo;

--hi;

}

}

if(lo0

if(lo

}

}



static private void swap (SortObject a[], int i, int j)

{ SortObject T;

T=a[i];

a[i]=a[j];

a[j]=T;

}

}


Java interfaces

Interfaces
In C++ kann eine Klasse Kind von zwei Eltern sein. Dieses Konzept der mehrfachen Vererbung wurde in Java nicht übernommen, da es zu viele Schwierigkeiten mit sich bringt.

Statt dessen kann eine Klasse von einer Vaterklasse und mehreren Interface-Klassen erben. Ein Interface ist wie eine Klasse, nur dass alle Methoden keinen Funktionskörper haben. Sie werden sozusagen nur abstrakt deklariert. Ein Interface dient also nur dazu anzugeben, dass eine Klasse gewisse Methoden implementiert. Wenn eine Klasse ein Interface erbt, sagt man, es implementiert das Interface. Ein Interface hat keine Eigenschaften (Variablen).

Ein Interface ist ein Versprechen, dass gewisse Methoden implementiert sind.

Natürlich muss jede Klasse, die das Interface implementiert, dessen Methoden auch tatsächlich definieren, sont meldet der Compiler einen Fehler.

Grundkonzepte der Sprache JAVA

Grundkonzepte der Sprache


Der Entwurf der Programmiersprache Java strebte im Wesentlichen fünf Ziele an:

Sie soll eine einfache objektorientierte, verteilte und vertraute Programmiersprache sein.
Sie soll robust und sicher sein.
Sie soll architekturneutral und portabel sein.
Sie soll sehr leistungsfähig sein.
Sie soll interpretierbar, parallelisierbar und dynamisch sein.
diese Ziele wurden sie erreicht?

Java: Einfach


Java ist im Vergleich zu anderen objektorientierten Programmiersprachen wie C++ der COBOL einfach, da es einen reduzierten Sprachumfang besitzt und beispielsweise Operator Overloading, Pointer, Mehrfachvererbung nicht unterstützt.

Java: Objektorient


Java gehört zu den objektorientierten Programmiersprachen.andere auch

Java: Verteilt


Javas Klassenbibliothek bietet eine Reihe einfacher Möglichkeiten für Netzwerkkommunikation, von TCP/IP-Protokollen über Remote Method Invocation zu Webservices. andere auch

Java: Vertraut


Wegen der syntaktischen Nähe zu C++, der ursprünglichen Ähnlichkeit der Klassenbibliothek zu Smalltalk-Klassenbibliotheken und der Verwendung von Entwurfsmustern in der Klassenbibliothek zeigt Java für den erfahrenen Programmierer keine unerwarteten Effekte. klar, alles abgeschrieben

Java: Robust


Viele der Designentscheidungen bei der Definition von Java reduzieren die Wahrscheinlichkeit ungewollter Systemfehler: Zu nennen sind die starke Typisierung, Garbage Collection, Referenzen statt Pointer, Exception Handling. wie in anderen sprachen auch

Java: Sicher


Dafür stehen Konzepte wie der Code-Verifier, der sicherstellt, dass die JVM keinen ungültigen Bytecode ausführen kann, der Class-Loadern, der die sichere Zuführung von Klasseninformationen zur JVM steuert und Security-Manager, die sicherstellen, dass nur Zugriff auf Programmobjekte erlaubt wird, für die entsprechende Rechte vorhanden sind.

Java: Architekturneutral


Java wurde so entwickelt, dass dieselbe Version eines Programms prinzipiell auf jeder beliebigen Computerhardware läuft, unabhängig von ihrem Prozessor oder anderen Hardwarebestandteilen.

Java: Portabel


Zusätzlich zur Architekturneutralität ist Java auch portabel. Das heißt, dass primitive Datentypen sowohl in ihrer Größe und internen Darstellung als auch in ihrem arithmetischen Verhalten standardisiert sind. Beispielsweise ist ein float immer ein IEEE 754 Float von 32 Bit. Dasselbe gilt auch für die Klassenbibliothek, die beispielsweise unabhängig vom Betriebssystem dasselbe GUI erzeugen kann.

Java: Leistungsfähig


Java ist insbesondere auf Grund der dynamischen Optimierungen der Virtual Machine eine der effizientesten Programmiersprachen und liefert ähnliche Geschwindigkeiten wie C++ oder C# Programme.

Java: Interpretiert


Java ist eine interpretierte Sprache. Die Java Virtual Machine interpretiert Java-Bytecode. Das macht die Ausführung etwas langsamer - aber sicher.

Java: Parallel


Java unterstützt Multithreading, also den parallelen Ablauf von eigenständigen Programmmabschnitten. Dazu bietet die Sprache selbst die Keywords synchronized und volatile – Konstrukte, die das „Monitor & Condition Variable Paradigma“ von C.A.R. Hoare unterstützen. Die Klassenbibliothek enthält weitere Unterstützungen für parallele Programmierung mit Threads.

Java: Dynamisch


Java ist so aufgebaut, dass es sich an dynamisch ändernde Rahmenbedingungen anpassen lässt. Da die Module erst zur Laufzeit gelinkt werden, können beispielsweise Teile der Software (etwa Bibliotheken) neu ausgeliefert werden, ohne die restlichen Programmteile anpassen zu müssen. Interfaces können als Basis für die Kommunikation zwischen zwei Modulen eingesetzt werden, die eigentliche Implementierung kann aber dynamisch und beispielsweise auch während der Laufzeit geändert werden.

Java ist eine objektorientierte Programmiersprache

Java ist eine objektorientierte Programmiersprache und eingetragenes Warenzeichen der Firma Sun Microsystems. Sie ist ein Bestandteil der Java-Technologie.

Java-Programme werden in Bytecode übersetzt und dann in einer speziellen Umgebung ausgeführt, die als Java-Laufzeitumgebung oder Java-Plattform bezeichnet wird. Deren wichtigster Bestandteil ist die Java Virtual Machine (Java-VM), die die Programme ausführt, indem sie den Bytecode interpretiert und bei Bedarf kompiliert (Hotspot-Optimierung).

Java-Programme sind plattformunabhängig, das heißt sie laufen in aller Regel ohne weitere Anpassungen auf verschiedenen Computern und Betriebssystemen, für die eine Java-VM existiert. Sun selbst bietet Java-VMs für die Betriebssysteme Linux, Solaris und Windows an. Andere Hersteller lassen ihre Java-VM für ihre Plattform zertifizieren, zum Beispiel die Firma Apple für Mac OS X.

Von Portierung spricht man bei Java in der Regel, wenn Quelltext oder Bytecode auf den Stand einer anderen Java-Version angepasst werden soll. Meistens sind Java-Programme nur für bestimmte Java-Versionen getestet oder zertifiziert.
 
Blogverzeichnis - Blog Verzeichnis bloggerei.de Blog Suche