+Alles zusammen
parent
2aae6d889a
commit
08d0baf7f5
@ -1,227 +0,0 @@
|
|||||||
package com.company.lösungen;
|
|
||||||
|
|
||||||
public class Ebook {
|
|
||||||
// Öffentliche Klasse zur Repräsentation eines E-Books
|
|
||||||
public class Ebook {
|
|
||||||
// Deklaration privater Variablen
|
|
||||||
private MediaAsset[] assets;
|
|
||||||
private String author;
|
|
||||||
private int year;
|
|
||||||
|
|
||||||
// Öffentlicher Konstruktor, der zur Angabe von
|
|
||||||
// Autor und Jahreszahl verpflichtet
|
|
||||||
public Ebook(String author, int year) {
|
|
||||||
this.assets = new MediaAsset[100];
|
|
||||||
this.author = author;
|
|
||||||
this.year = year;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Getter-Methode zur Rückgabe der Seitenanzahl
|
|
||||||
public int numPages() {
|
|
||||||
float sum = 0.0f;
|
|
||||||
|
|
||||||
// Gehe Assets-Array durch
|
|
||||||
for (int i = 0; i < assets.length; i = i + 1) {
|
|
||||||
// Ist Eintrag in Array vorhanden, dann Summe errechnen
|
|
||||||
if (assets[i] != null) {
|
|
||||||
sum = sum + assets[i].numPages();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Math.round(sum);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methode, über die ein MediaAsset hinzugefügt werden kann
|
|
||||||
// Das Asset muss an die Methode übergeben werden.
|
|
||||||
public void addAsset(MediaAsset asset) {
|
|
||||||
// Gehe Assets-Array durch
|
|
||||||
for (int i = 0; i < assets.length; i = i + 1) {
|
|
||||||
// Ist kein Eintrag in Array vorhanden, dann einmal hinzufügen
|
|
||||||
if (assets[i] == null) {
|
|
||||||
assets[i] = asset;
|
|
||||||
|
|
||||||
// Springe aus Schleife
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methode, die eine String-Repräsentation dieses
|
|
||||||
// E-Books zurückliefert.
|
|
||||||
public String toString() {
|
|
||||||
String output = "Ebook: " + author + " (" + year + ")\nSeiten: " +
|
|
||||||
numPages() + "\n-------\n";
|
|
||||||
|
|
||||||
// Gehe Array-Inhalte durch
|
|
||||||
for (int i = 0; i < assets.length; i = i + 1) {
|
|
||||||
// Füge toString-Ausgabe hinzu
|
|
||||||
if (assets[i] != null) {
|
|
||||||
output = output + assets[i].toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Klasse zur Beschreibung eines MediaAsset
|
|
||||||
public class MediaAsset {
|
|
||||||
// Deklaration privater Variablen
|
|
||||||
private String file;
|
|
||||||
private int size;
|
|
||||||
private String language;
|
|
||||||
|
|
||||||
// Konstruktor, der zur Angabe diverser Informationen verpflichtet
|
|
||||||
public MediaAsset(String file, int size, String language) {
|
|
||||||
this.file = file;
|
|
||||||
this.size = size;
|
|
||||||
this.language = language;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methode zur Rückgabe der Seitenanzahl ist hierbei nicht möglich
|
|
||||||
public float numPages() {
|
|
||||||
// Ein undefiniertes Asset trägt nicht zur Seitenzahl bei
|
|
||||||
return 0.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methode zur Repräsentation des Assets
|
|
||||||
public String toString() {
|
|
||||||
return file + " (" + numPages() + " Seiten)\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Öffentliche Klasse zur Repräsentation eines TextAssets, die
|
|
||||||
// von der Klasse MediaAsset ableitet.
|
|
||||||
public class TextAsset extends MediaAsset {
|
|
||||||
// Deklaration privater Variablen
|
|
||||||
private int numChars;
|
|
||||||
|
|
||||||
// Konstruktor, der zur Angabe von Werten für Dateinamen, -größe,
|
|
||||||
// Sprache sowie Anzahl an Zeichen verpflichtet
|
|
||||||
public TextAsset(String file, int size, String language, int numChars) {
|
|
||||||
// Aufruf der Basisklasse und Übergabe der Werte
|
|
||||||
super(file, size, language);
|
|
||||||
|
|
||||||
// Spezifische Werte werden lokal gespeichert
|
|
||||||
this.numChars = numChars;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methode zur Abfrage der Anzahl an Seiten
|
|
||||||
public float numPages() {
|
|
||||||
return numChars / 2000.0f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Öffentliche Klasse zur Repräsentation eines PictureAssets, die
|
|
||||||
// von der Klasse MediaAsset ableitet.
|
|
||||||
public class PictureAsset extends MediaAsset {
|
|
||||||
// Deklaration privater Variablen
|
|
||||||
private int w;
|
|
||||||
private int h;
|
|
||||||
|
|
||||||
// Öffentlicher Konstruktor, der zur Angabe der folgenden Werte
|
|
||||||
// verpflichtet
|
|
||||||
public PictureAsset(
|
|
||||||
String file,
|
|
||||||
int size,
|
|
||||||
String language,
|
|
||||||
int w,
|
|
||||||
int h
|
|
||||||
) {
|
|
||||||
// Aufruf und Übergabe der von der Basisklasse verwalteten Werte
|
|
||||||
super(file, size, language);
|
|
||||||
|
|
||||||
// Übrige Werte werden lokal festgehalten
|
|
||||||
this.w = w;
|
|
||||||
this.h = h;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methode zur Berechnung und Rückgabe der Anzahl von Seiten
|
|
||||||
public float numPages() {
|
|
||||||
float height = h * (960 / (float)w);
|
|
||||||
if (height > 600) {
|
|
||||||
return 1.0f;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return 0.5f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Öffentliche Klasse zur Repräsentation eines PictureAssets, die
|
|
||||||
// von der Klasse MediaAsset ableitet.
|
|
||||||
public class AudioAsset extends MediaAsset {
|
|
||||||
// Deklaration privater Variablen
|
|
||||||
private int duration;
|
|
||||||
|
|
||||||
// Öffentlicher Konstruktor, der zur Angabe der folgenden Werte
|
|
||||||
// verpflichtet
|
|
||||||
public AudioAsset(String file, int size, String language, int duration) {
|
|
||||||
// Aufruf und Übergabe der von der Basisklasse verwalteten Werte
|
|
||||||
super(file, size, language);
|
|
||||||
|
|
||||||
// Übrige Werte werden lokal festgehalten
|
|
||||||
this.duration = duration;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methode zur Berechnung und Rückgabe der Anzahl von Seiten
|
|
||||||
public float numPages() {
|
|
||||||
return 0.0f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Öffentliche Klasse zur Repräsentation eines VideoAssets, die
|
|
||||||
// von der Klasse MediaAsset ableitet.
|
|
||||||
public class VideoAsset extends MediaAsset {
|
|
||||||
// Deklaration privater Variablen
|
|
||||||
private int duration;
|
|
||||||
private int w;
|
|
||||||
private int h;
|
|
||||||
|
|
||||||
// Konstruktor, der zur Angabe der folgenden Werte verpflichtet
|
|
||||||
public VideoAsset(
|
|
||||||
String file,
|
|
||||||
int size,
|
|
||||||
String language,
|
|
||||||
int duration,
|
|
||||||
int w,
|
|
||||||
int h
|
|
||||||
) {
|
|
||||||
// Aufruf und Übergabe der von der Basisklasse verwalteten Werte
|
|
||||||
super(file, size, language);
|
|
||||||
|
|
||||||
// Übrige Werte werden lokal festgehalten
|
|
||||||
this.duration = duration;
|
|
||||||
this.w = w;
|
|
||||||
this.h = h;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methode zur Berechnung und Rückgabe der Anzahl von Seiten
|
|
||||||
public float numPages() {
|
|
||||||
float height = h * (960 / (float)w);
|
|
||||||
if (height > 600) {
|
|
||||||
return 1.0f;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return 0.5f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Startpunkt des Hauptprogramms
|
|
||||||
// Hier werden die implementierten Klassen zu Demonstrations- und
|
|
||||||
// Testzwecken instanziiert und verwendet.
|
|
||||||
public void setup() {
|
|
||||||
Ebook testBook = new Ebook("Stephan Wiefling", 2017);
|
|
||||||
testBook.addAsset(new TextAsset("Aufgabe 1", 12, "Deutsch", 3444));
|
|
||||||
testBook.addAsset(new AudioAsset("Audio 1", 12, "Deutsch", 95));
|
|
||||||
testBook.addAsset(
|
|
||||||
new VideoAsset("Video 1", 12, "Deutsch", 95, 800, 800)
|
|
||||||
);
|
|
||||||
testBook.addAsset(new PictureAsset("Bild 1", 12, "Deutsch", 2000, 600));
|
|
||||||
testBook.addAsset(new TextAsset("Aufgabe 2", 12, "Deutsch", 7655));
|
|
||||||
System.out.println(testBook);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,202 +0,0 @@
|
|||||||
package com.company.lösungen;
|
|
||||||
|
|
||||||
public class onlineShop {
|
|
||||||
// Öffentliche Klasse zur Repräsentation eines Artikels
|
|
||||||
public class Article {
|
|
||||||
// Deklaration privater Variablen
|
|
||||||
private int articleNumber;
|
|
||||||
private float price;
|
|
||||||
|
|
||||||
// Konstruktor, der die Artikelnummer und den Preis
|
|
||||||
// erforderlich macht.
|
|
||||||
public Article(int articleNumber, float price) {
|
|
||||||
this.articleNumber = articleNumber;
|
|
||||||
this.price = price;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Getter-Methode, die den Preis zurückliefert.
|
|
||||||
public float getPrice() {
|
|
||||||
return price;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Öffentliche Klasse, die ein Buch repräsentiert.
|
|
||||||
// Die Klasse erbt von der Klasse Artikel
|
|
||||||
public class Book extends Article {
|
|
||||||
// Deklaration eigener privater Variablen
|
|
||||||
private String author;
|
|
||||||
private String title;
|
|
||||||
private int year;
|
|
||||||
|
|
||||||
// Der Mehrwertsteuersatz für Bücher (7 %) wird durch die
|
|
||||||
// statische Konstante VAT repräsentiert.
|
|
||||||
public static final float VAT = 0.07f;
|
|
||||||
|
|
||||||
// Öffentlicher Konstruktor mit der Vorschrift
|
|
||||||
// zum Anlegen eines Buchobjekts.
|
|
||||||
public Book(
|
|
||||||
int articleNumber,
|
|
||||||
float price,
|
|
||||||
String author,
|
|
||||||
String title,
|
|
||||||
int year
|
|
||||||
) {
|
|
||||||
// Aufruf des Konstruktors der Basisklasse Article
|
|
||||||
super(articleNumber, price);
|
|
||||||
|
|
||||||
// Zusätzlich werden die charakterisierenden
|
|
||||||
// Eigenschaften eines Buchs gesetzt.
|
|
||||||
this.author = author;
|
|
||||||
this.title = title;
|
|
||||||
this.year = year;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Öffentliche Methode zur Berechnung des Bruttopreises
|
|
||||||
public float getPrice() {
|
|
||||||
// Rufe für Nettopreis die Methode in der Superklasse auf
|
|
||||||
// und addiere die für Bücher geltende Mehrwertsteuer
|
|
||||||
return round((super.getPrice() + super.getPrice() * Book.VAT) * 100) / 100.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Öffentliche Methode, die einen geeigneten String generiert
|
|
||||||
// und zurückliefert.
|
|
||||||
public String toString() {
|
|
||||||
return "Buch - " + author + ": " + title + " (" + year + ")";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Klasse, die eine DVD repräsentiert und von der Klasse
|
|
||||||
// Article ableitet.
|
|
||||||
class DVD extends Article {
|
|
||||||
// Deklaration privater Variablen, die spezifisch für eine
|
|
||||||
// DVD sind
|
|
||||||
private String name;
|
|
||||||
private String duration;
|
|
||||||
private int countryCode;
|
|
||||||
|
|
||||||
// Statische Konstante für Mehrwertsteuersatz für DVDs (19 %)
|
|
||||||
public static final float VAT = 0.19f;
|
|
||||||
|
|
||||||
// Öffentlicher Konstruktor der Klasse DVD. Zum Generieren eines
|
|
||||||
// Objekts der Klasse DVD werden die angegebenen Werte verlangt.
|
|
||||||
public DVD(
|
|
||||||
int articleNumber,
|
|
||||||
float price,
|
|
||||||
String name,
|
|
||||||
String duration,
|
|
||||||
int countryCode
|
|
||||||
) {
|
|
||||||
// Aufruf des Basisklassenkonstruktors
|
|
||||||
super(articleNumber, price);
|
|
||||||
|
|
||||||
// Zusätzliche Daten werden in den internen Variablen abgelegt.
|
|
||||||
this.name = name;
|
|
||||||
this.duration = duration;
|
|
||||||
this.countryCode = countryCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Öffentliche Methode zur Berechnung des Bruttopreises
|
|
||||||
public float getPrice() {
|
|
||||||
// Rufe für Nettopreis die Methode in der Superklasse auf
|
|
||||||
// und addiere die für Bücher geltende Mehrwertsteuer
|
|
||||||
return round((super.getPrice() + super.getPrice() * DVD.VAT) * 100) / 100.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Öffentliche Methode, die einen DVD-repräsentativen String
|
|
||||||
// zurückliefert.
|
|
||||||
public String toString() {
|
|
||||||
return "DVD - " + name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Klasse, die einen Warenkorb realisiert
|
|
||||||
public class ShoppingCart {
|
|
||||||
// Deklaration privater Variablen
|
|
||||||
private Article[] cart;
|
|
||||||
|
|
||||||
// Öffentlicher Konstruktor, der den internen
|
|
||||||
// Warenkorb initialisiert
|
|
||||||
public ShoppingCart() {
|
|
||||||
// Noch leerer Warenkorb
|
|
||||||
this.cart = new Article[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Öffentliche Methode zum Hinzufügen eines Artikels
|
|
||||||
// zum Warenkorb. Der Artikel wird in Form eines
|
|
||||||
// Article-Objekts realisiert. Da sowohl Bücher als
|
|
||||||
// auch DVDs von der Klasse Article erben, sind beide
|
|
||||||
// Typen hier erlaubt und werden dafür auf die Basis-
|
|
||||||
// implementierung zurückgecastet.
|
|
||||||
public void addToCart(Article article) {
|
|
||||||
// Vergrößere Array um ein Element
|
|
||||||
Article[] cartNew = new Article[cart.length + 1];
|
|
||||||
|
|
||||||
// Kopiere alle Artikel rüber
|
|
||||||
for (int i = 0; i < cart.length; i = i + 1) {
|
|
||||||
cartNew[i] = cart[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setze neuen Artikel ans Ende der Liste
|
|
||||||
cartNew[cartNew.length - 1] = article;
|
|
||||||
|
|
||||||
// Übernehme neue Liste
|
|
||||||
cart = cartNew;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Öffentliche Methode, die eine Rechnung auf der
|
|
||||||
// Konsole druckt
|
|
||||||
public void showBill() {
|
|
||||||
// Gesamtpreis
|
|
||||||
float sum = 0.0f;
|
|
||||||
|
|
||||||
// Jeden Artikel durchgehen
|
|
||||||
for (int i = 0; i < cart.length; i = i + 1) {
|
|
||||||
Article article = cart[i];
|
|
||||||
|
|
||||||
// Gebe Namen und Preis aus
|
|
||||||
System.out.println(article + "\t " + article.getPrice() + " Euro");
|
|
||||||
|
|
||||||
// Addiere zu Gesamtpreis
|
|
||||||
sum = sum + article.getPrice();
|
|
||||||
}
|
|
||||||
System.out.println("------------------------------------");
|
|
||||||
|
|
||||||
// Gebe Gesamtpreis aus
|
|
||||||
System.out.println("Gesamtpreis: " + str(sum) + " Euro");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Startpunkt des Hauptprogramms
|
|
||||||
// Hier werden die implementierten Klassen zu Demonstrations- und
|
|
||||||
// Testzwecken instanziiert und verwendet.
|
|
||||||
public void setup() {
|
|
||||||
Book book = new Book(
|
|
||||||
122767676,
|
|
||||||
32.71f,
|
|
||||||
"Luigi Lo Iacono",
|
|
||||||
"WebSockets",
|
|
||||||
2015
|
|
||||||
);
|
|
||||||
|
|
||||||
DVD dvd1 = new DVD(
|
|
||||||
122767676,
|
|
||||||
14.95f,
|
|
||||||
"Spiel mir das Lied vom Tod",
|
|
||||||
"99:12",
|
|
||||||
1
|
|
||||||
);
|
|
||||||
DVD dvd2 = new DVD(
|
|
||||||
122767676,
|
|
||||||
8.40f,
|
|
||||||
"Casablanca, Classic Collection",
|
|
||||||
"99:12",
|
|
||||||
1
|
|
||||||
);
|
|
||||||
|
|
||||||
ShoppingCart wk = new ShoppingCart();
|
|
||||||
wk.addToCart(book);
|
|
||||||
wk.addToCart(dvd1);
|
|
||||||
wk.addToCart(dvd2);
|
|
||||||
wk.showBill();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,325 +0,0 @@
|
|||||||
package com.company.lösungen;
|
|
||||||
|
|
||||||
public class websiteGen {
|
|
||||||
// Konstanten, mit denen wir die Wetterlage beschreiben
|
|
||||||
static final int SONNE = 0,
|
|
||||||
BEWOELKT = 1,
|
|
||||||
REGEN = 2;
|
|
||||||
|
|
||||||
// Abstrakte Klasse zur Repräsentation einer Stadt.
|
|
||||||
// Von dieser Klasse kann keine Instanz (= Objekt) erzeugt werden.
|
|
||||||
public abstract class Stadt {
|
|
||||||
// Deklaration privater Variablen
|
|
||||||
private String name;
|
|
||||||
private int wetter;
|
|
||||||
|
|
||||||
// Konstruktor, der zur Angabe eines Städtenamens und des
|
|
||||||
// Wetters auffordert
|
|
||||||
public Stadt(String name, int wetter) {
|
|
||||||
this.name = name;
|
|
||||||
this.wetter = wetter;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Getter-Methode zur Rückgabe des Städtenamens
|
|
||||||
public String getName() {
|
|
||||||
return this.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Getter-Methode zur Rückgabe des Wetters als String
|
|
||||||
public String getWetter() {
|
|
||||||
if (this.wetter == REGEN) {
|
|
||||||
return "regnerisch";
|
|
||||||
}
|
|
||||||
else if (this.wetter == BEWOELKT) {
|
|
||||||
return "bewölkt";
|
|
||||||
}
|
|
||||||
else if (this.wetter == SONNE) {
|
|
||||||
return "sonnig";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Unbekannter Wert
|
|
||||||
return "Unbekannt";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Getter-Methode zur Rückgabe des Webseiten-Inhalts
|
|
||||||
// für den Webseiten-Generator.
|
|
||||||
public String getContent() {
|
|
||||||
return "<p>In " + this.getName() + " ist es " + this.getWetter() +
|
|
||||||
".</p>";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Getter-Methode zur Rückgabe der URL zur Wetterseite
|
|
||||||
public String getURL() {
|
|
||||||
// Wandle Namen in Kleinbuchstaben um
|
|
||||||
String name = this
|
|
||||||
.getName()
|
|
||||||
.toLowerCase();
|
|
||||||
|
|
||||||
// Wandle Leerzeichen im Namen in Bindestriche um
|
|
||||||
name = name.replace(" ", "-");
|
|
||||||
|
|
||||||
// Wandle Umlaute um
|
|
||||||
name = name.replace("ä", "ae");
|
|
||||||
name = name.replace("ü", "ue");
|
|
||||||
name = name.replace("ö", "oe");
|
|
||||||
|
|
||||||
// Gebe umgewandelte URL zurück
|
|
||||||
return name + ".html";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Öffentliche Klasse für die Großstadt leitet
|
|
||||||
// von der Klasse Stadt ab.
|
|
||||||
public class Grossstadt extends Stadt {
|
|
||||||
private String[] stadtteile;
|
|
||||||
|
|
||||||
// Konstruktor erwartet ebenfalls einen Städtenamen und das
|
|
||||||
// Wetter, aber zusätzlich noch Stadtteile
|
|
||||||
public Grossstadt(String name, int wetter, String[] stadtteile) {
|
|
||||||
// Städtename und Wetter werden an die Basisklasse
|
|
||||||
// übergeben
|
|
||||||
super(name, wetter);
|
|
||||||
|
|
||||||
// Stadtteile werden noch gesetzt
|
|
||||||
this.stadtteile = stadtteile;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Getter-Methode zur Rückgabe des Webseiten-Inhalts
|
|
||||||
// für den Webseiten-Generator
|
|
||||||
public String getContent() {
|
|
||||||
// Hier speichern wir unsere Webseite als HTML-Code.
|
|
||||||
// Wir übernehmen zunächst den Code von der Überklasse.
|
|
||||||
String output = super.getContent();
|
|
||||||
|
|
||||||
String stadtteile = "";
|
|
||||||
// Gehe die Stadtteile durch
|
|
||||||
for (int i = 0; i < this.stadtteile.length; i = i + 1) {
|
|
||||||
if (i == (this.stadtteile.length - 1)) {
|
|
||||||
// Wir sind beim letzten Eintrag:
|
|
||||||
// Füge "und" vor dem Stadtteilnamen hinzu
|
|
||||||
stadtteile = stadtteile + " und ";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Füge Namen des Stadtteils hinzu
|
|
||||||
stadtteile = stadtteile + this.stadtteile[i];
|
|
||||||
|
|
||||||
// Wenn wir noch nicht am Ende sind
|
|
||||||
if (i < (this.stadtteile.length - 2)) {
|
|
||||||
// Füge Komma und Leerzeichen hinzu
|
|
||||||
stadtteile = stadtteile + ", ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Füge den Hinweis zu den Stadtteilen hinzu
|
|
||||||
output = output + "<p>Dies trifft auch für die Stadtteile " +
|
|
||||||
stadtteile + " zu.</p>";
|
|
||||||
|
|
||||||
// Gebe generierten HTML-Code zurück
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Getter-Methode zur Rückgabe der URL zur Wetterseite
|
|
||||||
public String getURL() {
|
|
||||||
// Generiere URL und gebe sie zurück.
|
|
||||||
// Rufe dabei die URL-Generierungsmethode aus der
|
|
||||||
// Oberklasse auf.
|
|
||||||
return "wetter_grossstadt_" + super.getURL();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Öffentliche Klasse für die Großstadt leitet
|
|
||||||
// von der Klasse Stadt ab.
|
|
||||||
public class Kleinstadt extends Stadt {
|
|
||||||
// Konstruktor erwartet ebenfalls einen Städtenamen und das
|
|
||||||
// Wetter
|
|
||||||
public Kleinstadt(String name, int wetter) {
|
|
||||||
// Städtename und Wetter werden an die Basisklasse
|
|
||||||
// übergeben
|
|
||||||
super(name, wetter);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Getter-Methode zur Rückgabe des Webseiten-Inhalts
|
|
||||||
// für den Webseiten-Generator
|
|
||||||
public String getContent() {
|
|
||||||
return super.getContent();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Getter-Methode zur Rückgabe der URL zur Wetterseite
|
|
||||||
public String getURL() {
|
|
||||||
// Generiere URL und gebe sie zurück.
|
|
||||||
// Rufe dabei die URL-Generierungsmethode aus der
|
|
||||||
// Oberklasse auf.
|
|
||||||
return "wetter_kleinstadt_" + super.getURL();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Öffentliche Klasse für den Webseitengenerator
|
|
||||||
public class WebseitenGenerator {
|
|
||||||
// Deklaration privater Variablen
|
|
||||||
private Stadt[] staedte;
|
|
||||||
|
|
||||||
// Anzahl der Einträge im Array
|
|
||||||
private int numEntries = 0;
|
|
||||||
|
|
||||||
public WebseitenGenerator() {
|
|
||||||
this.staedte = new Stadt[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methode zum Hinzufügen einer Stadt
|
|
||||||
public void addStadt(Stadt stadt) {
|
|
||||||
// Erzeuge temporären Array mit einem Eintrag mehr
|
|
||||||
Stadt[] staedteTemp = new Stadt[numEntries + 1];
|
|
||||||
|
|
||||||
// Kopiere die alten Werte in den neuen Array
|
|
||||||
for (int i = 0; i < numEntries; i = i + 1) {
|
|
||||||
staedteTemp[i] = this.staedte[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Füge den neuen Eintrag an der letzten Position hinzu
|
|
||||||
staedteTemp[numEntries] = stadt;
|
|
||||||
|
|
||||||
// Setze die neue Liste
|
|
||||||
staedte = staedteTemp;
|
|
||||||
|
|
||||||
// Erhöhe die Anzahl der Einträge um eins
|
|
||||||
numEntries = numEntries + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methode zum Erstellen und Ausgeben der Navigationsleiste
|
|
||||||
// unserer Wetterwebseite
|
|
||||||
public String getNavigation() {
|
|
||||||
// Hier speichern wir unsere Navigationsleiste als HTML-Code.
|
|
||||||
// Wir beginnen mit dem Paragrafen-HTML-Tag
|
|
||||||
String output = "<h1>Die Wetter-Webseite</h1><p>";
|
|
||||||
|
|
||||||
// Gehe alle Städte durch
|
|
||||||
for (int i = 0; i < this.staedte.length; i = i + 1) {
|
|
||||||
// Hole die URL zur Datei
|
|
||||||
String url = this
|
|
||||||
.staedte[i]
|
|
||||||
.getURL();
|
|
||||||
|
|
||||||
// Hole den Städtenamen
|
|
||||||
String name = this
|
|
||||||
.staedte[i]
|
|
||||||
.getName();
|
|
||||||
|
|
||||||
// Füge HTML-Link zur Ausgabe hinzu
|
|
||||||
output = output + "<a href='" + url + "'>" + name + "</a>";
|
|
||||||
|
|
||||||
// Füge Trenner hinzu, wenn wir noch nicht am Ende der
|
|
||||||
// Liste sind
|
|
||||||
if (i < this.staedte.length - 1) {
|
|
||||||
output = output + " | ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Schließe den Paragrafen-Tag
|
|
||||||
output = output + "</p>";
|
|
||||||
|
|
||||||
// Gebe generierte Navigationsleiste zurück
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methode zum Erstellen und Ausgeben der HTML-Seite
|
|
||||||
// für eine bestimmte Stadt
|
|
||||||
public String generatePage(int index) {
|
|
||||||
// Hole die Stadt aus dem Array
|
|
||||||
Stadt stadt = this.staedte[index];
|
|
||||||
|
|
||||||
// Hier speichern wir unsere Webseite als HTML-Code
|
|
||||||
// Setze HTML-Kopf
|
|
||||||
String output = "<html><body>";
|
|
||||||
|
|
||||||
// Füge Navigationsleiste hinzu
|
|
||||||
output = output + this.getNavigation();
|
|
||||||
|
|
||||||
// Füge Überschrift hinzu
|
|
||||||
output = output + "<h2>Das Wetter für " + stadt.getName() + "</h2>";
|
|
||||||
|
|
||||||
output = output + stadt.getContent();
|
|
||||||
|
|
||||||
// Füge HTML-Fußzeile hinzu
|
|
||||||
output = output + "</body></html>";
|
|
||||||
|
|
||||||
// Gebe HTML-Code zurück
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Methode zum Erstellen und Ausgeben der Wetterwebseite
|
|
||||||
// mit allen Webseiten
|
|
||||||
public void generateWebsites() {
|
|
||||||
// Generiere Index-Dokument
|
|
||||||
// Öffne Datei für die Hauptseite
|
|
||||||
PrintWriter output = createWriter("index.html");
|
|
||||||
|
|
||||||
// Generiere HTML-Code für Datei, in der Hauptseite nehmen
|
|
||||||
// wir nur die Navigationsleiste
|
|
||||||
String htmlCode = this.getNavigation();
|
|
||||||
|
|
||||||
// Speichere HTML-Code in Datei
|
|
||||||
output.print(htmlCode);
|
|
||||||
|
|
||||||
// Schließe Datei
|
|
||||||
output.close();
|
|
||||||
|
|
||||||
// Gehe alle Städte durch
|
|
||||||
for (int i = 0; i < this.staedte.length; i = i + 1) {
|
|
||||||
// Öffne Datei mit URL-Dateinamen
|
|
||||||
output = createWriter(this.staedte[i].getURL());
|
|
||||||
|
|
||||||
// Generiere HTML-Code für Datei
|
|
||||||
htmlCode = this.generatePage(i);
|
|
||||||
|
|
||||||
// Speichere HTML-Code in Datei
|
|
||||||
output.print(htmlCode);
|
|
||||||
|
|
||||||
// Schließe Datei
|
|
||||||
output.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println("Webseiten generiert");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Startpunkt des Hauptprogramms
|
|
||||||
// Hier werden die implementierten Klassen zu Demonstrations- und
|
|
||||||
// Testzwecken instanziiert und verwendet.
|
|
||||||
public void setup() {
|
|
||||||
// Definiere Köln
|
|
||||||
String[] stadtteileKoeln = {
|
|
||||||
"Ehrenfeld",
|
|
||||||
"Raderthal",
|
|
||||||
"Nippes",
|
|
||||||
"Poll",
|
|
||||||
"Esch",
|
|
||||||
"Pesch",
|
|
||||||
"Kalk"
|
|
||||||
};
|
|
||||||
Grossstadt koeln = new Grossstadt("Köln", SONNE, stadtteileKoeln);
|
|
||||||
|
|
||||||
// Definiere Daaden
|
|
||||||
Kleinstadt daaden = new Kleinstadt("Daaden", BEWOELKT);
|
|
||||||
|
|
||||||
// Definiere Bonn
|
|
||||||
String[] stadtteileBonn = {
|
|
||||||
"Poppelsdorf",
|
|
||||||
"Südstadt",
|
|
||||||
"Beuel",
|
|
||||||
"Duisdorf",
|
|
||||||
"Graurheindorf"
|
|
||||||
};
|
|
||||||
Grossstadt bonn = new Grossstadt("Bonn", REGEN, stadtteileBonn);
|
|
||||||
|
|
||||||
// Initialisiere den Webseitengenerator
|
|
||||||
WebseitenGenerator generator = new WebseitenGenerator();
|
|
||||||
|
|
||||||
// Füge die Städte hinzu
|
|
||||||
generator.addStadt(koeln);
|
|
||||||
generator.addStadt(daaden);
|
|
||||||
generator.addStadt(bonn);
|
|
||||||
|
|
||||||
// Generiere die Webseiten
|
|
||||||
generator.generateWebsites();
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.company.mathe;
|
||||||
|
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
public class pfFormel {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
pqFormelRechner rechner = new pqFormelRechner();
|
||||||
|
Scanner scanner = new Scanner(System.in);
|
||||||
|
boolean bisStop = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
while (bisStop == false) {
|
||||||
|
try {
|
||||||
|
System.out.println("Bitte geben sie die Werte für P und Q ein: ");
|
||||||
|
System.out.println("P: ");
|
||||||
|
String Pwert = scanner.nextLine().replace("-", "");
|
||||||
|
if (Pwert.equals("x")) {
|
||||||
|
bisStop = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
System.out.println("Q: ");
|
||||||
|
String Qwert = scanner.nextLine().replace("-", "");
|
||||||
|
System.out.println(rechner.berechnePQFormel(Double.parseDouble(Pwert), Double.parseDouble(Qwert)));
|
||||||
|
}
|
||||||
|
catch(Exception e) {
|
||||||
|
System.out.println("Math Error");
|
||||||
|
System.out.println("Versuchen sie erneut");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.company.mathe;
|
||||||
|
|
||||||
|
public class pqFormelRechner {
|
||||||
|
public static String berechnePQFormel(double P, double Q){
|
||||||
|
double eingabe = (P/2) * (P/2) - Q;
|
||||||
|
if (eingabe >= 0) {
|
||||||
|
double x1,x2;
|
||||||
|
x1 = -(P/2) + Math.sqrt(eingabe);
|
||||||
|
x2 = -(P/2) - Math.sqrt(eingabe);
|
||||||
|
if (x1==x2){
|
||||||
|
return "Das Ergebnis ist L={"+x2+"}";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "Die Ergebnisse sind L={"+x1+";"+x2+"}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "Keine Lösung, das Ergebniss ist "+eingabe;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue