Ansicht von 10 Beiträgen - 1 bis 10 (von insgesamt 10)
  • Autor
    Beiträge
  • #1182
    dantez
    Teilnehmer

    Programmierung

    Formulierung eines Algorithmus zur Lösung einer klasse von Problemen in einer für Computer verständlichen Sprache

    Algorithmus:

    endlich lange Vorschrift bestehend aus einzelanweisungen zur lösung einer klasse von Problemen

    Darstellung von Algorithmen:

    Programmablauplan (PAP)
    Nassi – Schneidermann – Diagramme

    Sun – Vorgaben zu Eigenschaften:

    einfach
    Objektorientiert
    verteilt
    interpretiert
    robust
    sicher
    archiekturneutral
    portabel
    hoch-performt
    multithreadel
    dynamisch

    „Was ist Java?“

    Java ist…

    eine plattformunabhängige Programmiersprache, die ursprünglich von der Firma Sun Microsystems, entwickelt wurde. Java wird in allen IT-Bereichen von Handel, Industrie und Verwaltung eingesetzt und ist für unzählige Betriebssysteme und Plattformen, vom mobilen Telefon bis hin zur Echtzeit-Großrechneranlage kostenlos verfügbar.
    sowie natürlich die Hauptinsel Indonesiens, als auch eine kleine Insel im Pazifik, deren Hauptexportprodukt Kaffee ist
    und damit der umgangssprachliche Ausdruck für Kaffee in den USA.

    In 6 Stichpunkten:

    Java ist…

    1. einfach & klein
    Java ist für EInsteiger und Profis gleichermaßen geeignet. Einfache Fenster-Anwendungen, Browser-Applets oder komplexe Client-/Server- und Datenbank-Module lassen sich dank der klaren Spracheigenschaften und dem gegenüber C++ verbesserten objektorientierten Konzepts schnell umsetzen.

    Java kann in der Java 2 Micro Edtion (J2ME) auf sehr kleinen (mobilen) Geräten mit geringen Ressourcen wie Prozessorleistung und Speicherplatz laufen. Die „Java 2 Standard Edition“ ist die Desktop-Variante für Fenster-Applikation (Windows, Linux, Mac, Solaris, ….).
    Für mehrschichtige Client-/Server-Anwendungen wird die „Java 2 Enterprise Edition“ angeboten. Hierin finden sich auch Java Servlets und Java Server Pages für die Erstellung interaktiver Webseiten.

    2. objekt-orientiert & verteilt
    „Objekt-orientiert“ ist sicherlich eines der meist-verschlunzten Wörter („Jetzt zugreifen: objekt-orientierte Programme aus der Tube !“), das ändert jedoch nichts daran, daß es sich, aus guten Gründen, in der Software-Entwicklung durchgesetzt hat.

    Wie der Name schon sagt, konzentriert man sich bei der objekt-orientierten Programmierung auf die Erstellung sog. „Objekte“. Grob gesagt besteht ein Objekt aus Daten und Funktionen (sog. „Methoden“), die diese Daten verändern. Im Idealfall erzeugt man mit objekt-orientierter Programmierung wiederverwendbare Objekte („Klassen“). Bei fortschreitender Programmierung kann man dann auf einen immer größer werdenden Pool an schon bestehenden Objekten zurückgreifen („Klassenbibliotheken“).
    Auf entfernt liegende Objekte können Java-Programme sehr einfach über das Internet zugreifen.

    3. kompiliert & schnell
    Java-Programme werden im Gegensatz zu vielen anderen Compiler-Sprachen nicht direkt in eine für einen „echten Prozessor“ verständliche Menge an Befehlen übersetzt, sondern zunächst in den sog. „Java Bytecode“ umgewandelt.

    Dieser Bytecode ist dennoch sehr maschinennah. Erst auf der Zielmaschine wird er in einer Java Laufzeit-Umgebung ausgeführt (Java Runtime Environment, JRE).

    Die Idee mit dem Zwischenschritt ist nicht neu und wird in vielen Compilern „unbewußt“ schon lange verwendet. Viele C/C++ – und Pascal Compiler nutzen diesen Zwischenschritt intern für die Optimierung des Codes, allerdings hinterlassen sie dabei keine „Spuren“, wie er sich bei Java im Bytecode und bei Micro$ofts Java Clone (C#) „Intermediate Language“ genannt wird.

    Da bei Java für gewöhnlich zweimal kompiliert wird (einmal beim Entwickler und einmal beim Nutzer), wird dieses Prinzip Just-In-Time Compiler (JIT) genannt. Dies hat neben den genannten Vorteilen natürlich auch den Nachteil, dass Java-Programme länger zum Starten benötigen, da während der Initialisierung der Maschinen-Code erzeugt wird. Auch hier stehen jedoch für die unterschiedlichen Anwendungszwecke ebenso unterschiedliche Laufzeitumgebungen bereit (one size fits all gibt’s nicht). J2EE mit der sog. „HotSpot Performance Engine“ erlaubt den gemischten Betrieb aus interpretiertem und kompiliertem Code: Zur Laufzeit prüft die Umgebung die kritischen Stellen des Codes (die sog. „HotSpots“) und führt darauf weitere Optimierungen durch, so daß das Programm „schneller wird, je länger es anläuft.“ (natürlich nicht für ewig ;-))

    4. robust & sicher
    Die Kombination Compiler UND Laufzeitumgebung hat für Java unter einem anderen Gesichtspunkt große Vorteile: Einerseits kann der „Vor“-Compiler auf Typenfehler und dergleichen prüfen (Java ist eine typenstrenge Sprache), anderseits kann die Java-Runtime Umgebung Fehler während der Laufzeit abfangen und behandeln – ein kompiliertes Programm würde schlimmstenfalls abstürzen.

    5. plattformunabhängig & portierbar
    Hier wird ein Traum der Software-Entwickler wahr:
    Jeder kennt das Problem mit den verschiedenen Rechner- und Betriebssystemen. Auf dem einen läufts, auf dem anderen nicht und für Software-Entwickler ist das alles wirklich ein Graus! (Man stelle sich vor, es gäbe 10 verschiedene Video-Systeme..!)
    Auch hier greift das Compiler/Interpreter-Konzept: Der Compiler übersetzt das Programm in den „Bytecode“, der völlig unabhängig von irgendeinem bestehenden Prozessor ist, auf dem das Programm später vielleicht mal läuft.
    Ein- und dasselbe Java-Programm läuft ohne Änderung auf allen unterstützten Systemen!!

    6. „multithread“-fähig & dynamisch
    In einem modernen Programm passieren viele Dinge gleichzeitig. Diese Eigenschaft nennt man „multithreading“. Java unterstützt den Entwickler mit verschiedenen Funktionen beim Entwurf solcher parallel-verarbeitender Programme, so daß er sich auf seine eigentliche Aufgabe konzentrieren kann.

    Weiterhin ist Java durch verschiedene Verbesserungen „dynamischer“ als C++. Das bedeutet: Beziehungen zwischen Klassen und Objekten sind nicht für immer festgelegt. Dadurch können diese, wenn sie sich später ändern, leichter ausgetauscht werden .

    Häufige Vorurteile zu Java:

    – Java ist gleich Javascript
    – Java ist einfach zu erlernen
    – Java ist vollständig portabel
    – Java ist eine einfache Programmierumgebung
    – Java ist eine universelle Programmiersprache
    – Java ist einfach eine weitere Programmiersprache
    – Java ist eine Revolution in der Netzwerkprogrammierung

    Java Schlüsselworte:

    abstract
    assert
    boolean
    break
    byte
    case
    char
    closs
    const
    continue
    default
    do
    else
    enum
    extends
    final
    finaly
    float
    for
    goto
    if
    implements
    import
    instanceoff
    int
    interface
    long
    nativ
    new
    package
    private
    protected
    public
    return
    short
    extends
    final
    finaly
    float
    for
    goto
    if
    extends
    final
    finaly
    float
    for
    goto
    if
    implements
    import
    instanceoff
    int
    interface
    long
    nativ
    new
    package
    private
    protected
    public
    return
    short
    static
    strictfp
    super
    switch
    syncronized
    this
    throw
    throws
    transient
    try
    void
    volatile
    while

    Erstellen eines Java-Programms

    – Quelltext schreiben
    -> Erweiterung .java!!!!
    Bsp:


    public class java01
    {
    public static void main(String[ ] argunents)
    {
    System.out.println(„es geht!“);
    }

    }


    – Quelltext kompilieren
    Befehl: javac java01.java
    der Befehl javac java01.java erzeugt (wenn keine fehler im Quellcode sind) java01.class

    – Programm ausführen
    ausgeführt wird die classdatei java java01

    Entwicklungen von Java-Anwendungen mit Eclips

    – Anwendungen werden in Projekten verwaltet
    – jedes Projekt kann mehrere klassen enthalten
    – klassen inerhalb der Projekte werden in Paketen (packages) organisiert

    Struktur eines Java-Quelltextextes

    Schlüsselworte
    Whitespaces ( leerzeichen,Tab’s,Zeilenwechsel )

    Kommentare:

    Zeilenkommentar ( // Kommentar )
    mehrzeilige Kommentare ( /*Kommentar*/ )
    javadoc-Kommentare ( /** Kommentar*/ )

    Trennzeichen

    ( ) Patrameterliste in Methodendefinitionen
    legen Vorrang in Ausdrücken fest
    enhalten Ausdrücke in Kontrollanweisungen
    umschliessen von cast-typen

    { } zum definieren von codeblöcken für klassen und Methoden
    enthält Werte automatisch initialisierter Arrays

    [ ] Deklaririen Arry-Typen
    werden zur dereferenzierung von Arry-wertem benutzt

    ; beendet eine Anweisung

    , trennt aufeinander folgende bezeicner in einer deklaration
    kettet anweisungen in einer voranweisung zusammen

    . trennt packetnamen von unterpacketen und klassen
    trennt eine Variable oder Mehtode von Verweisvariabeln

    Bezeichner:
    ( Mehtodennamen, Variablennamen,………………)

    dürfen enthalten:
    Buchstaben
    Ziffern
    Unterstrich
    das $-Zeichen

    nahezu unbegrenzte länge
    alle Zeichen werden zur unterscheidung benutzt
    erste zeichen darf keine Ziffer sein

    Literale:
    konstante Werte im Programm

    Bsp.: System.out.println(„Nicht Hallo Welt!“);

    Dateitypen, Variabeln und Arrys:

    – Java ist eine streng typisierte Sprache
    – jede variable muss einem bestimmten typ zugeordnet sein
    und vor ihrer ersten Nutzung deklariert werden
    – Java unterscheidet primitive datentypen und verweis datentypen

    Primitive Datentypen:

    vier Gruppen
    ganzzahl typen
    Fließkommatypen
    Boolsche Typen
    Zeichentypen

    #2927
    dantez
    Teilnehmer

    Ganzzahltypen
    generell vorzeichenbehaftet

    Typ Speicher Wertebereich

    byte 8Bit -128…………127

    short 16Bit -32768 ……32767

    int 32Bit -2.147.483.648………….2.147.483.647

    long 64Bit -9.223.372.036.854.775.808……………..9.223.372.036.854.775.807

    Fliesskommatypen
    generell vorzeichenbehaftet

    Typ Speicher Wertebereich

    float 32Bit 3,4*10 hoch -38………3,4*10hoch38
    7-8 Stellen genau

    duble 64Bit 1,7*10hoch-308……….1,7*10hoch308
    15 Stellen genau

    ZeichenTypen

    Typ Speicher Wertebereich

    char 16 Unicode

    Boolsche Typ

    Typ Speicher Wertebereich

    boolean true bzw. false

    zu den Literaten:

    Ganzzahlliterale
    Dezimalzahlen 179
    Oktale schreibweise 077
    Hexadezimale schreibweise 0xBA

    Fließkomma-Literale
    7.39 double
    19.172f float
    314.72e -2 double in Expotentialschreibweise

    Charater-Literale
    alle Druckbaren Zeichen können direkt in hochkommata angegeben werden
    ‚a‘, ‚@‘
    Angabe auch als Escape-Sequenzen möglich
    ddd oktaler Code eines Zeichens
    uxxxx Unicode eines Zeichens
    )‘ ‚ ‚ ‚

    \
    n Zeilenwechsel
    t Tabulator
    f Form Feed (Seitenvorschub speziell für Drucker)
    r Wagenrücklauf
    b Backspace

    String-Literale
    grundsätzlich in Anführungsstricheen

    Typkonvertierungen:

    automatisch
    finden statt:
    – beide Typen kompatibel sind
    – der Zieltyp größer ist als der Quelltyp

    manuelle inkompatibler Typen (Casten)
    Bsp.: byte b;
    short s=139;
    b=(byte)s;

    Typpromotion in Ausdrücken
    – alle short- und byte-Werte werden int
    – ist ein Operand vom Typ long, wird der gesamte Ausdruck long
    – ist ein Operand vom Typ float, wird der gesamte Ausdruck zu float
    – ist ein Operand vom Typ double, wird der gesamte Ausdruck double

    Bitweise Darstellung von Ganzzahlen, Zweier komplemt:

    Bsp.: byte
    – Stellenwertsystem 2(7) 2(6) 2(5) 2(4) 2(3) 2(2) 2(1) 2(0) in klammern stehen hoch zahlen
    90 0 1 0 1 1 0 1 0
    150 1 0 0 1 0 1 1 0

    -Vereinbarung. Vorzeichenbehaftete Werte werden über
    das höchstwertige Bit gekennzeichnet
    0 –> nicht Negativ
    1 –> Negativ

    -negative Zahlen werden als zweirkomplement Codiert

    –> Bitdarstellung des positiven Wertes notieren
    –> jedes Bit in sein gegenteil umschreiben
    –> im letzten Bit 1 addieren

    Bsp.: -1

    Schritt 1 00000000 ( Bitdarstellung des positiven Wertes notieren )

    Schritt 2 11111110 ( jedes Bit in sein gegenteil umschreiben )

    Schritt 3 + 1 ( im letzten Bit 1 addieren )

    Ergebniss 11111111 ( -1 )

    Variablen in Java-Programmen

    – Bezeichnung für einen Speicherbereich
    – immer typisiert
    – innerhalb des Programms wird bei lesendem zugriff der gespeicherte Wert benutzt
    –> vor erstem lesezugriff muss eine bewertung erfolgen
    –> vor erster bewertung muss Deklaration stehen

    Gültigkeitsbereich und lebensdauer

    – jede Variable ist in dem Codeblock gültig in dem sie deklariert wurde
    – der gleiche Bezeichner darf je Gültigkeitsbereich nur einmal vergeben werden
    – Es gibt Variablen die in einer klasse gültig sind (Klassenvariablen), sie werden ausserhalb von Methoden deklariert
    – Variablen, die in einer Methode deklariert werden, sind nur innerhalb dieser Methode bekannt (Methodenvariablen)

    Arrays

    – Platzhalter für Gruppe von Variablen gleichen Typs, die damit unter einem Namen ansprechbar sind

    – Deklaration: Typ[] Bezeichner
    Bsp.: int[] feld

    – Erzeugen Bezeichner=new typ[anzahl];
    Bsp.: feld=new int[5];

    – Zugriff auf Arrayelemente
    Bezeichner[index] 0<= index < Anzahl Bsp.: feld[0] , feld[1] , feld[2] , feld[3] , feld[4] , feld[5] – Variante zur Initialisierung:
    Bsp.: typ[]Bezeichner={wert,wert,wert,……}

    – mehrdimensionale Arrays
    Bsp.: int[][] zweiD=new int[2][4];

    Operatoren

    – Arithmetische Operatoren

    + Addition

    – Subtraktion

    * Multiplikation

    / Division

    % Modulo

    ++ Inkrement Präinkrement ++a Postinkement a++

    — Dekrement Prädekrement –a postdekrement a–

    – Zuweisungsoperatoren

    –> statt a=a+4 ist a+=4 zuschreiben
    –> schreibweise ist für alle grundrechenarten gegeben

    Bitweis Operatoren

    Operator Bedeutung

    & bitweises UND 1&1 –> 1 1&0 –>0

    | bitweises ODER 0|0 –> 0 rest liefert 1

    ^ bitweises exclusiv ODER 1^1 –> 0 1^0 –> 1

    ~ bitweise Negation ~1 –> 0 ~0 –> 1

    << linksverschiebung >> rechtsverschiebung

    >>> rechtsverschiebung mit nullauffüllung

    Erweiterung zu den Bitweisen Operatoren

    – bitweise Operatoren exsistieren auch als zuweisungsoperatoren
    Bsp:.: int a=2;
    a&=7; –> a=a&7;

    Vergleichsoperatoren ( typ boolean da ausgabe des Verglechs als true oder false )

    = = Gleich

    ! = ungleich

    > größer

    > = größer oder gleiech

    < kleiner < = kleiner oder gleich
    Logische Operatoren

    Operator Bedeutung Bsp.:

    & Logisches UND 7 > 3 & 2 < 1 | Logisches ODER 7 > 3 & 2 < 1 ^ Log.Exkl. ODER 7 > 3 ^ 2 > 1

    && Log.UND mit x != 0 && 7/x < 5
    Kurzschluss- x != 0 false, der rest muss nicht mehr ausgewertet werden
    auswertung x == 0 true, der rest muss nicht mehr ausgewertet werden

    || Log.ODER mit x == 0 || 7/x > 9
    Kurzschluss- x == 0 true, der rest muss nicht mehr ausgewertet werden
    auswertung x !=0 false, der rest (7/x > 5) muss weiter ausgewerte werden

    ! Log. NICHT ! 7 < 5 Zuweisungsoperatoren Operator Bedeutung Bsp.: boolean x=true,4;
    & = x&= y=false;
    x&0 a> b;

    | =

    ^

    Vorrangregeln

    höchser Rang

    ( ) [ ] .

    ++ — ~ !

    * / %

    + –

    >> >>> << > >= < <= == != & ^ | && || ?: = op= niedrigster Rang
    Bedingungsoperator

    – Syntax :
    – Log. Ausdrück ? Ausdruck 1 : Ausdruck 2

    – der Logische Ausdruck wird ausgewertet
    ist das ergebniss true wird Ausdruck 1 ausgewertet
    und das ergebnis zurückgegeben, sonst wird
    Ausdruck 2 ausgewertet und zurückgegeben

    Programme Struckturieren

    Verzweigungen

    In Abhängigkeit von Bedingungen zu entscheiden welche Anweisung/Anweisungen
    weiter auszuführen sind

    Varianten:
    Bedingungsprüfung mit if
    Fallunterscheidung mit switch
    Methodenaufruf

    Bedingungsprüfung mit if

    – einfache Verzweigung

    Syntax if(Bedingung) | if(Bedingung)
    Anweisung; | {
    | Anweisung 1;
    | Anweisung 2 :
    | }

    – zweifache Verzweigung

    Syntax if(Bedingung) | if(Bedingung)
    Anweisung a; | {
    else | Anweisung a1;
    Anweisung b; | Anweisung a2;
    | .
    | .
    | Anweisung an
    | }
    | else
    | {
    | Anweisung b1
    | Anweisung b2
    | .
    | .
    | Anweisung bn
    | }

    Fallunterscheidung

    Syntax: switch (Ausdruck)
    {
    case w1:
    Anweisung(en);
    break;

    case w2:
    Anweisung(en);
    break;

    [default:
    Anweisung(en);]

    }

    Schleifen in Java ( wiederholte ausführung von Anweisungen )

    Abbruchschlefen
    – Durchlaufzahl vorher unbekannt
    – wiederholung des durchlaufs hängt von bedingung ab
    – Abbruchschhleifen gibt es in zwei varianten

    1) Kopfgesteuerte Abbruchschleife (die sogenante Abweisende Schleife)

    Syntax: while (Bedingung)
    {
    Anweisung(en);
    }

    2) Fussgesteuerte Abbruchschleife (die sogenante annehmende Schhleife

    Syntax: do
    {
    Anweisung(en);
    }
    while (Bedingung);

    Zahlschleifen

    Durchlaufzahl vor beginn der Abarbeitung bakannt

    Syntax: for( Initiasierungsausdruck, Prüfungsausdruck, iteration )
    {
    Anweisung(en);
    }

    – Schleifenstornierung über break
    innerhalb des Schleifenkörpers ist der Schleifenkörper über break möglich
    break kann zusätzlich zum Prüfausdruck oder als Ersatz für den Prüfausdruck eingesetzt werden

    #2929
    krey
    Teilnehmer

    Das hast du schön kopiert.
    Also außer Kopfschmerzen bringt mir der Text nichts.

    Wieso nicht einfach

    !google „javainsel“

    #2933
    dantez
    Teilnehmer

    kopiert ja (hatte irgenwie etwas dagegen 16 seiten ernuet zu schreiben)
    da ich so oder so vor einem computer sitze und dessen BS über die fähigkeit verfügt andere Programme auszuführen (WinXP Prof.) hab ich mir gedacht das ich doch einfach diese möglichkeit nutzen kann (ectl. erkennt man das an vorhandenen rechtschreibfehlern ist nämlich nicht gerade meine stärke)

    sind meine aufzeichnungen

    also bevor man mäkert, selber machen

    mfg

    #2934
    krey
    Teilnehmer
    Quote:
    Original von DanteZ
    kopiert ja (hatte irgenwie etwas dagegen 16 seiten ernuet zu schreiben)
    da ich so oder so vor einem computer sitze und dessen BS über die fähigkeit verfügt andere Programme auszuführen (WinXP Prof.) hab ich mir gedacht das ich doch einfach diese möglichkeit nutzen kann (ectl. erkennt man das an vorhandenen rechtschreibfehlern ist nämlich nicht gerade meine stärke)

    sind meine aufzeichnungen

    also bevor man mäkert, selber machen

    mfg

    Ich wollte nicht Mäkeln sondern nur fragen wozu du das machst. Die Sachen gibts doch schon in tausendfacher Ausführung. Und außerdem bringen DIESE Sachen nur am rande etwas wenn du einen SCJP machen willst.

    #2935
    dantez
    Teilnehmer

    also ich strebe eine sun zertifizierung „Java-Programmer“ an
    diese beinhaltet unter anderem auch das programmieren für mobile endgeräte.

    mfg

    #2936
    krey
    Teilnehmer
    Quote:
    Original von DanteZ
    also ich strebe eine sun zertifizierung „Java-Programmer“ an
    diese beinhaltet unter anderem auch das programmieren für mobile endgeräte.

    mfg

    Ich sagte doch SCJP (Sun Certified Java Programmer).
    Aber was bringen die Themen hier im Forum?

    #2937
    dantez
    Teilnehmer

    ich denke in erster line fun, mann lernt sicher dadurch nicht umfassend java aber mann erhält einen kleinen einblick (hoffe ich zumindest)

    ausserdem macht es spass so zu üben

    #2939
    der_unwissende
    Teilnehmer

    Hm, ich bin gerade in dieses Forum gestolpert und wollte mir durch Beiträge wie diesen einen Überblick verschaffen. Du hast jetzt den ersten Beitrag erwischt, den ich mir angeschaut habe, deswegen gibt es auch keinen Vergleich zu anderen Beiträgen, aber ich würde dringen raten den Titel zu ändern!!!
    Das ist echt die schlechteste Einführung die ich je gelesen habe. Wem soll es denn Spaß machen sich alle Schlüsselworte von Java anzuschauen? Willst du nicht vielleicht noch alle Packages aufzählen?
    Das Objekt Orientiert von dir ohne Ende (und ohne Erklärung) benutzt wird, und du dann sagst dass das Wort missbraucht wird spricht für sich.
    Übringens ist Java nicht wirklich Objekt Orientiert, da es primitive Datentypen gibt, aber dass nur nebenbei.

    Sorry, ist nicht gegen dich gerichtet, wünsch dir auch viel Glück bei der Zertifizierung! Aber du hast echt einen Titel gewählt, der Anfängern das Gefühl geben könnte, dass sie hier Java lernen. Wenn die sich dann deine Beiträge durchlesen fürchte ich haben die nicht viel von. Es fehlt komplett alles was imho einen guten Kurs ausmacht. Du darfst doch hier nicht von Vorwissen ausgehen! Einfach mal so anfangen wie es jmd. ohne jegliche Kenntnisse Versteht.
    Damit wäre der Anfang zwangsläufig was willst du zeigen? Was ist Java? Warum?…

    Gruß Der Unwissende

    #2940
    whitenexx
    Teilnehmer
    Quote:
    Original von DanteZ
    ich denke in erster line fun, mann lernt sicher dadurch nicht umfassend java aber mann erhält einen kleinen einblick (hoffe ich zumindest)

    ausserdem macht es spass so zu üben

    Stimmt ;) Auch wenn ich nichts checke davon (noch nicht) finde ich es toll, dass du sowas machst. (Forum=Neu, also netter Content *freu*)
    Auf richtigkeit kann ich leider nicht prüfen, da ich ja noch keine Ahnung von Java habe.

Ansicht von 10 Beiträgen - 1 bis 10 (von insgesamt 10)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.