www.munz-udo.de1 JAVA und OOP Teil 2: Objektorientierung.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Objektorientierte Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Zusammenfassung
Kapselung , toString , equals , Java API
Andreas Kalender Institut für Informatik FU Berlin Seminar über Algorithmen Durchschnittsverzögerung.
der Universität Oldenburg
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Objektorientierung
SWITCH - Anweisung.
Abstrakte Klassen.
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Einführung in die Programmierung mit Java
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
Abstrakte Klassen DVG
Abstrakte Klassen, Interface
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Klassen 02 - Klassen.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Einführung in die Programmierung Klassendefinition und Objekte
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Künstlergemeinschaft Ober-Ramstadt
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
18. November 2006 Einführung in die Welt der fast 1000 Digital Möglichkeiten / Stefan Schmid / Herzlich willkommen Einführung.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Objektorientiertes Konstruieren
EPROG Tutorium #5 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
Programmiervorkurs WS 2014/15 Instanzmethoden
Programmiervorkurs WS 2014 Referenzdatentypen
C++11 Defaulted & Deleted Functions / 48 C++11 Defaulted & Deleted Functions Detlef Wilkening
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Objektorientierte Programmierung (OOP)
Konstruktoren.
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Implementieren von Klassen
 Präsentation transkript:

JAVA und OOP Teil 2: Objektorientierung

Objektorientierung Daten und Methoden bilden eine Einheit Daten können nur mit festgelegten Methoden geändert werden Methoden können nicht auf fremde Daten angewandt werden.

Ziele der Objektorientierung Höhere Datensicherheit (durch Kapselung) Erleichterte Pflege des Quellcodes (durch Kapselung) Höhere Produktivität (durch Vererbung) Verbesserte Zugangskontrolle im Quellcode (durch Getter- und Setter Methoden)

Klassen Eine Klasse stellt den Bauplan für verschiedene aber gleichartige Dinge (Objekte) dar. In der Klasse werden die möglichen Eigenschaften der Objekte und ihre Verhaltensweisen in Form von Methoden festgelegt.

Objekte Ein Objekt gehört grundsätzlich zu einer Klasse Es gibt jedoch auch sogenannte abstrakte Klassen ( abstract classes ), die über keinerlei Objekte verfügen.

Instanzen Konkretisierung eines Objekts: Instanzen benötigen -realen Speicherplatz mit -realen Werten.

Das Programm fahrkarte Das Programm f ahrkarte simuliert eine Fahrkarte für den öffentlichen Nahverkehr.

Eigenschaften einer Fahrkarte Anzahl der Tarifzonen Datum Reduzierter Preis? Fahrpreis

Vorgänge im Fahrkartenautomaten (Methoden)  Karte drucken  Fahrpreis berechnen (von der Fahrstrecke abhängen )  Karten zu ermäßigtem Preis?  Vierfachnetzkarte  Zählwerk

Kapselung (encapsulation) Prinzip  Möglichst alle Variablen sind intern vereinbart (private).  Zugang nur über Getter- und Setter- Methoden

Kapselung (encapsulation) Vorteile  Sicherheit gegen Änderungen von außen  Sicherheit bei Veränderungen im Innern  Vereinfachte Nutzung  Verringerte Dokumentationslast  Zugangsberechtigungen

Klassenkonstanten (class constants) Die Konstante dPreisProZone wird der Klasse fahrkarte selbst zugeordnet, es handelt sich somit um eine Klassenkonstante.

Attribute von dPreisProZone final Inhalt kann nicht geändert werden static Klassenkonstante double Inhaltstyp (Kommazahl). final static double dPreisProZone=1.3; final static double dPreisProZoneReduziert=0.6;

Klassenvariable (class fields) Beispiel: Die Gesamtzahl aller in unserem Automaten erstellten Fahrkarten. o Inhalt kann nicht in einer Konstanten gespeichert werden, da sich der Wert laufend ändert. o Es macht wenig Sinn, diese Information einer einzelnen Fahrkarte zuzuordnen. o Folgerung: Klassenvariable static int iVerkaufteKarten=0;

Kontrollfragen 1) Unterscheiden Sie Klasse und Instanz auf der Grundlage der Programmiersprache JAVA ™ 2) Welche Eigenschaften ( properties ) einer Fahrkarte sollten Ihrer Meinung nach als Klassenkonstanten, Instanzvariablen oder als Klassenvariablen deklariert werden? Begründen Sie Ihre Antwort! 3) Beschreiben Sie das Konzept der Kapselung. 4) Nennen Sie Vorteile der Kapselung

Vererbung Neue Definition: Klasse dauerkarte als Erweiterung von fahrkarte – Methoden und Eigenschaften, die dauerkarte von fahrkarte übernimmt, nennt man vererbte Methoden ( inherited ). – fahrkarte ist Superklasse ( superclass ) zu dauerkarte. – dauerkarte ist von fahrkarte abgeleitet. – Jeder Dauerkarte besitzt alle Eigenschaften und Methoden einer normalen Fahrkarte ! package eins.munz.fahrkarte; public class dauerkarte extends fahrkarte

Erweiterungen zu Fahrkarten 1. Erweitern Sie die Ausgabemethode für die Dauerkarten so, dass die Inhabernamen mit ausgedruckt werden. 2. Ändern Sie das Konzept „Kartenzahl“ so ab, dass nach Erreichen eines Schwellenwertes beim Ausdrucken einer Fahrkarte ein entsprechender Hinweis erscheint.

Verwandte Aufgaben Realisieren Sie die folgenden Ideen in Ihrem Programm. a) Wenn man gleichzeitig Hin- und Rückfahrt bucht, reduziert sich der Gesamtpreis. b) Wie wär’s mit einer Rabattstaffel für Großkunden? c) Wer ein Fahrrad oder einen Hund im Bus befördern möchte, braucht eine besondere Fahrkarte. d) Sonntags fahren alle (auch Hunde) zum reduzierten Preis!

Weitere Klassendefinitionen Formulieren Sie schriftlich in Umgangssprache (also ohne JAVA) eine mögliche Klassendefinition (mit Eigenschaften und Methoden) für folgende Alltagsgegenstände: – Getränkedosen – Autos – Computermaus – Bücher in einem Ausleihesystem – Abiturnoten eines Schülers bzw. einer Schülerin

Standardkreis  Eigenschaften  Mittelpunktskoordinaten  Radius  Methoden  Flächeninhalt berechnen  Umfang berechnen  feststellen, ob er sich mit einem anderen Kreis schneidet. M(mx,my) P(px,py)

kreis2.java public class kreis2 { public int iMitteX,iMitteY, iRadius; public double dUmfang, dInhalt; public static double PI() {return Math.atan(1)*4;} public void dRechneUmfang() {dUmfang=2*PI()*iRadius;} public void dRechneInhalt() {dInhalt=PI()*iRadius+iRadius;} public int iAnzahlSchnittpunkte(kreis2 k) { }

Konstruktor zu kreis2.java /** Creates new kreis2 constructor*/ public kreis2(int iMitteX,int iMitteY, int iRadius) { this.iMitteX=iMitteX; this.iMitteY=iMitteY; this.iRadius=iRadius; dRechneUmfang(); dRechneInhalt(); }

kreis3.java public class kreis3 { private int iMitteX,iMitteY, iRadius; private double dUmfang, dInhalt; private void dRechneUmfang() { dUmfang=2*Math.PI*iRadius; } private void dRechneInhalt() { Inhalt=Math.PI*iRadius +iRadius;} }

Setter public void setRadius(int iRadius) { this.iRadius=iRadius; dRechneUmfang(); dRechneInhalt(); }

Ausgabe public void ausgabe() { System.out.println("Radius: "+iRadius); System.out.println("Umfang: "+dUmfang); System.out.println("Flächeninhalt: "+dInhalt); }

Objekte vergleichen public boolean equals(kreis3 k2) { return (this.iRadius==k2.iRadius) &&(this.iMitteX==k2.iMitteX) &&(this.iMitteY==k2.iMitteY); }

Schule Schule NameSchulklassen Versetzung durchführen neue Schulklasse erzeugen

Schulklasse Schulklasse NameSchüler Gewichtung schriftlich-mündlich Klassenlehrer Schnitt aller Gesamtnoten Schnitt berechnen neuen Schüler erzeugen

Schüler SchülerName Durchschnittsnote schriftliche Note mündliche Note bestanden Noten eingeben Notenschnitt berechnen feststellen, ob bestanden

Attribute public: – Die Variable oder Methode ist in der Klasse selbst, in an- geleiteten Klassen und in übergeordneten Klassen, die unsere Klasse aufrufen, sichtbar (liberale Variante). private: – Die Variable oder Methode ist nur in der Klasse sichtbar. in der sie vereinbart wurde (sichere Variante). Untergeordnete (abgeleitete) oder übergeordnete (aufrufende) Klassen sehen diese Variable nicht. protected: – Variablen mit diesem Attribut sind in der eigenen Klasse und in abgeleiteten Klassen sichtbar. Aufrufer sehen diese Variablen nur, wenn sie im gleichen Paket aufrufen.

Überladung Zwei Prozeduren mit gleichem Namen, die sich aufgrund der Anzahl bzw. Typen der Parameter unterscheiden.

Überladung (Beispiel) public schulemain(String name) { this.sName=name; System.out.println(sName); } schulemain gymLoerrach = new schulemain("Gymnasium Loerrach"); //zweiter Konstruktor / überladen public schulemain() { this.sName="Die arme Schule hat keinen Namen."; System.out.println(sName); } schulemain gymLoerrach = new schulemain();

Die Klasse schulklasse public class schulklasse { public String sName; private String sLehrer; private double dGewichtung; /** Creates new schulklasse */ public schulklasse(String name, String lName, double gewichtung) { this.sName=name; this.sLehrer=lName; this.dGewichtung=gewichtung; System.out.println (this.sName+" "+this.sLehrer+" "+ this.dGewichtung); }}

Aufrufe von schulklasse schulklasse klasse1=new schulklasse("11a", „Munz",1.5); schulklasse klasse2=new schulklasse("12a", "Henne",2);

Die Klasse schueler public class schueler { public String sName; private double dDurchschnitt; protected boolean bHatBestanden; private int iMuendlich; private int iSchriftlich; public void ausgabe(String Klassenname) {System.out.print(Klassenname+" "); System.out.print(this.sName+" "); System.out.print(this.dDurchschnitt+" "); System.out.println(this.bHatBestanden); }

Setter und Konstruktor public void SetSchuelerdaten(String name, double schnitt,boolean hatBestanden, int muendlich, int schriftlich) { this.sName=name; this.dDurchschnitt=schnitt; this.bHatBestanden=hatBestanden; } /** Creates new schueler */ public schueler(String name) { SetSchuelerdaten(name,0,false,0,0); ausgabe("test"); } }

Testmethoden MethodeEingabe(n) Setter Methode Ausgabe Getter Meth. Erge b-nis Da- tum Tes- ter Konstruktor SCHULE- MAIN "Gymnasium Loerrach" ok Pl Konstruktor SCHUL- KLASSE ("11a",„Munz",1) ;("7b","Henne",3 )("8a","Lost",1.5) ok He setNoten0,01,123,3213,12 12,13 ok; neg Ein- gab. feh- len Pl

Weiterführende Testaufgaben 1) Testen sie Ihr Programm gemäß den oben beschriebenen Methoden. 2)Entwerfen Sie weitere Testfälle. 3)Lösen Sie die im Text erwähnten Probleme. 4)Definieren Sie vier verschiedene Standardschüler(innen) bzw. Standardklassen, die möglichst viele Testfälle abdecken. 5)Konzipieren Sie weitere Methoden zur Oberstufenverwaltung. 6)Informieren Sie sich bei Ihrer Schulleitung über die tat-sächlich für die Oberstufenverwaltung eingesetzte Software. Welche Methoden der kommerziellen Software könnten Sie ebenfalls erstellen?

Container Definition: – WINDOWS Fenster der obersten hierarchischen Stufe (das allumfassende Fenster, in dem das gesamte Programm abläuft). Name: – contentPane, zusammen gesetzt aus content = Inhalt und Pane= (Fenster-) Scheibe.

Layout Grid Flow Border

Beispiel: Euro Erstellen Sie ein JAVA Programm, das einen Eurobetrag in eine andere Währung (z.B. US Dollar) umrechnet. Verwenden Sie eine GUI - Oberfläche für das Programm. Passen Sie die Umrechnung dem aktuellen Dollarkurs an. Erweitern Sie das Programm so, dass auch Schweizer Franken umgerechnet werden können.

Temperaturumrechnung Nach Eingabe einer Temperatur in Grad Celsius ist die Angabe in Grad Réaumur und Grad Fahrenheit umzurechnen. Dabei gelten folgende Umrechnungen: 0°C = 0°R = 32°F und 100°C=80°R=212°F. Ändern Sie Teil 1) wie folgt ab: Nach Eingabe einer Temperatur in Grad Celsius in Grad Réaumur oder in Fahrenheit sind die jeweils anderen Temperaturen zu berechnen. Fügen Sie eine Kelvin-Skala ein.

Auerbacher Telekom Ihre Rechnung Rechnungsdatum RechnungsmonatJanuar 2002 Kundennummer Munz Udo Blauenstr Binzen Artikel oder Leistung Menge Nettobetrag Nettogesamtbetrag Ust in% T- DSL Telefonanschluss128,5528, City-Verbindungen1060,02642, Deutschlandverbindungen 2500,03969,9016 T-DSL Flat21,5516 ZWISCHENSUMMExxx Umsatzsteuer 16% auf xxxyyy Rechnungsbetragzzz

Telefon- rechnung Erstellen Sie ein JAVA - Programm, das aus der Anzahl der genutzten Telefoneinheiten den Gesamtpreis inkl. Grundgebühr berechnet. Die Preise entnehme man der oben abgebildeten Telefonrechnung. Der Grundpreis und die Gebühr einer einzelnen Telefoneinheit sollen als lokale Konstante (final) realisiert werden.

Aufgaben Erweitern Sie das Programm Telefon so, dass der Grundpreis und der Preis für eine einzelne Gebühreneinheit auf der Oberfläche sichtbar sind. 2. Erstellen Sie ein entsprechendes Programm für Handy- Gebühren. Es genügt, die Gebühren zur Standardnutzerzeit (höchste Gebührenklasse) zu errechnen. Eingegeben wird nun nicht mehr die Anzahl der Gebühreneinheiten, sondern die Gesamtzeit der Verbindungen. 3. Schreiben Sie ein JAVA - Programm, das nach Eingabe der Anzahl den Kaufpreis für Disketten (bzw. CD- Rohlinge) inklusive 16% Mehrwertsteuer bestimmt.

Aufgaben Erweitern Sie das Programm so, dass mehrere Produkte (z.B. CD-Rohlinge und Disketten und Tintenpatronen und...) geordert werden können. Das Programm soll alles fein säuberlich auf der Oberfläche auflisten und den Gesamtpreis berechnen. 5. Erstellen Sie ein Programm, das Antwort auf die Frage gibt: Wie lange kann ich mit einem vorgegebenen Betrag telefonieren? Man differenziere nach Entfernungszonen. 6. Rechnen Sie einen in Sekunden vorgegebenen Wert um in eine Zeitangabe von Tagen, Stunden, Minuten und Sekunden.

Aufgaben Rechnen Sie einen in Tagen, Stunden, Minuten und Sekunden vorgegebenen Wert in eine Zeitangabe von Sekunden um. 8. Berechnen Sie aus zwei Zeitangaben eines Tages die Dauer der Zeitspanne dazwischen in Sekunde

Münzen zählen Erstellen Sie ein einfaches Zählprogramm, das Euromünzen durch Mausklick aufsummieren soll. Die Benutzeroberfläche soll verschiedene Buttons für verschiedene Münzen enthalten und das Ergebnis (Summe) anzeigen.

Komponenten Notwendige Komponenten Mindestens sieben verschiedene Buttons zur Eingabe Anzeige für das Endergebnis Überschrift Hilfreiche Komponente: Fehlerkorrektur Letzte Eingabe (Mausklick) rückgängig machen.

Banknotenaufgaben Erweitern Sie das Programm so, dass auch die Beträge von Euroscheinen abgearbeitet werden können. Ordnen Sie die Buttons in einer Form an, die ergonomisch sinnvoll ist. Dabei müssen nicht alle Buttons gleich groß bleiben. Erläutern Sie Ihren Ansatz. Wie kann man mehrere Eingaben rückgängig machen? Ist es sinnvoll, jede Eingabe auch in der Ausgabe anzuzeigen?

Elementarer Kreis Der Radius r bleibt konstant, der Winkel w gegen die Horizontale ändert sich zwischen Null und 2 (Bogenmaß!). M(mx,my) P(px,py)

Polarkoordinaten Radius und Winkel legen den Punkt fest

Kreis und Spirale

Kreisaufgaben Wie ändert sich das Ergebnis, wenn man die Schleife bis 4Pi laufen läßt? 2. Ändern Sie die Schleife so, dass der Anfangswert Null benutzt werden kann. 3. Überlegen Sie, ob man das Problem auch mit einer for -Schleife lösen könnte. Begründen Sie Ihr Ergebnis.

Kreisaufgaben Erstellen Sie ein Konzept für eine Kreisprogramm ohne Polarkoordinaten. 5. Erzeugen Sie aus dem Kreisprogramm die Graphikdarstellung einer Spirale. Welche Änderungen sind nötig? 6. Was berechnet folgende Anweisung: dPi = Math.atan(1)*4.0 ?

Array Mehrere Variablen des gleichen Grundtyps ( primitive type, z.B. int oder double ), die den gleichen Variablennamen tragen und durch einen ganzzahligen Index unterschieden werden können. Der Index beginnt stets bei Null und endet dort, wo der maximale Index erreicht ist. Dieser maximale Index wird bei der Deklaration festgelegt. Eine Vereinbarung der Form feld = int[20] reserviert den Speicherplatz für 21 (!) Integervariablen.

ArrayLists Ähnelt in Funktion dem Array, kann jedoch dynamisch, also zur Run-Time (Laufzeit), erweitert werden!

Variable vom Typ ArrayList protected static ArrayList alFeld=new ArrayList(); Static {alFeld.add(BigInteger.valueOf(1)); alFeld.add(BigInteger.valueOf(1));}

Fibonacci Folge 1,1, 1,1,2, 1,1,2,3, 1,1,2,3,5, 1,1,2,3,5,8 1,1,2,3,5,8,13,... a n+1 =a n +a n-1 für n€ N, n>1 und a 1 =1 a 2 =1

Fibo rechnet neues Folgeglied public static BigInteger fibo(int i) {for (int iLaenge=alFeld.size();iLaenge<i;iLaenge++) { BigInteger letzteFibo= (BigInteger) alFeld.get(iLaenge-1); BigInteger vorletzteFibo= (BigInteger) alFeld.get(iLaenge-2); BigInteger naechsteFibo= letzteFibo.add(vorletzteFibo); alFeld.add(naechsteFibo); } return (BigInteger) alFeld.get(i-1); }

Fibo Hauptprogramm public static void main(String args[]) { for (int iLauf=111; iLauf<141; iLauf++) {System.out.println(fibo(iLauf));} System.out.println(fibo(115)); System.out.println(fibo(140)); System.out.println(fibo(141)); }

Fibonacci Ausgabe

Arrays sortieren über Minimum arraySort sucht man in einem bestehenden Feld zuerst das kleinste Feldelement (Minimum), sichert es in einer Hilfsvariablen, verschiebt alle darunter liegenden Feldelemente um eine Position nach oben und heftet das zuvor gerettete Minimum ans Ende des Feldes. Damit haben wir das Minimum sicher im letzten Feldelement unter gebracht. Im nächsten Durchgang sucht man nur noch bis zum vorletzten Element nach einem Minimum und verfährt erneut wie oben. Mit jedem Durchgang sitzt ein weiteres Element an der richtigen Stelle.

Sortierfortschritt

Sortieraufgaben Erweitern Sie das oben beschriebene Verfahren so, dass eine wirklich große Anzahl Integerzahlen sortiert werden kann. 2. Verändern Sie das obige Programm so, dass nach Bestimmung des Minimums nur ein einziger Tausch erfolgt (aktuelles Minimum an den Schluss, dortige Zahl an bisherige Position des Minimums). 3. Führen Sie den oben beschriebenen Sortieralgorithmus mit einer ArrayList statt einem Array durch. Welche Probleme tauchen auf?

Sortieraufgaben Sortieren Sie ein Integerfeld bei der Entstehung. Sobald ein neuer (Zufalls-)Wert berechnet wurde, sucht man seine adäquate Position im Feld, schafft Platz durch Verschieben (Nach oben oder nach unten? Nach oben und unten?) und fügt anschließend ein. 5. Sortieren Sie ein Integerfeld bei der Entstehung, in dem Sie eine Vorsortierung einsetzen. Diese funktioniert so, dass man bei jeder neuen Zahl entscheidet, ob sie zur ersten oder zweiten Hälfte des Felde gehört. Danach muss mit einem anderen Verfahren genauer sortiert werden.

Sortieraufgaben Sortieren Sie ein Integerfeld über die Bestimmung des Maximums mit anschließendem Verschieben innerhalb des Feldes. 7. Ändern Sie Ihr Sortierprogramm so ab, dass ein String-Array String[20] sortiert werden kann. Benutzen Sie die Standardmethode compareTo. (Siehe stringSort ) 8. Bewerten Sie die verschiedenen Verfahren. Welches Verfahren eignet sich für vorsortierte Zahlen?

Trigonometrische Tabelle

Tabellenaufgaben Begründen Sie, warum im Beispiel Zufall1.java nicht direkt nach den Strings sortiert wird, sondern diese erst in Integer konvertiert werden. 2. Informieren Sie sich bei über die Funktion Random (). Welche Wirkung hat ein Parameter? 3. Erweitern Sie unsere trigonometrische Tabelle auf die Tangensfunktion. Beachten Sie eventuelle Definitionslücken.

Tabellenaufgaben Erstellen Sie eine Tabelle zur Umrechnung von Bogen- in Gradmaß 5. Tabellieren Sie die Temperaturskalen Celsius, Réaumur, Kelvin und Fahrenheit. 6. Bauen Sie das BubbleSort-Verfahren so um, dass man wahlweise nach oben oder nach unten sortieren kann. 7. Erweitern Sie das BubbleSort- Verfahren so, dass ein einzelner Durchgang der inneren Schleife pro Knopfdruck durchgeführt wird. So erkennt man, wie die Tabelle immer weiter sortiert wird.