diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..2e737e408a044a2d475f86e247ac778244348a2e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.class +!.gitignore \ No newline at end of file diff --git a/README.md b/README.md index 84d29027fc88206009f65bddcef1bcb829577afb..0505650b6c1999a5c4a4229163453091c94140ab 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,15 @@ -# mtib-Inf3 +# meti-VL-Info3-Beispielprogramme -Begleitmaterial zur meti Info3 Vorlesung \ No newline at end of file +**Beispielprogramme aus der Vorlesung, Übungen** + +Die Programme sind jeweils in einem eigenen Ordner gespeichert. Das Repository wird im Laufe der Vorlesung fortlaufend aktualisiert. Kursteilnehmerinnen und -teilnehmer können sich von diesem Repository einen Clone anlegen, der sich dann fortlaufend per pull-Operation aktualisieren lässt. + +# Inhalt des Repositories + +## Digitaltechnik +Es werden Beispiele für das Programm LogicCircuit in einem Ordner angeboten. +## Java +Die in der VL gezeigten Java Programme werden in einem eigenen Ordner hinterlegt. + +# Änderungswünsche und Fehlermeldungen +Für die Kursteilnehmerinnen und -teilnehmer ist es nicht möglich eigene Änderungen in dieses Repository zu übertragen. Es können jedoch Änderungswünsche oder Fehlermeldungen über den GitLab Issue Tracker gemeldet werden. \ No newline at end of file diff --git a/VL04-02/Copyrightmeldung-Con/Copyrightmeldung.java b/VL04-02/Copyrightmeldung-Con/Copyrightmeldung.java new file mode 100644 index 0000000000000000000000000000000000000000..5ad2c2c8981cefc38851ac951a57104ebd1f0f59 --- /dev/null +++ b/VL04-02/Copyrightmeldung-Con/Copyrightmeldung.java @@ -0,0 +1,12 @@ +//Copyrightmeldung.java +package de.hsreutlingen.inf.metipack.inf3; + +public class Copyrightmeldung { + public void ZeigeCopyright() { + System.out.println("Copyright S.Steddin (C) 2016"); + } +} + + + + \ No newline at end of file diff --git a/VL04-02/Copyrightmeldung-Con/HalloIchCopyRight.java b/VL04-02/Copyrightmeldung-Con/HalloIchCopyRight.java new file mode 100644 index 0000000000000000000000000000000000000000..cc7965286a33e43d647a5b326fbfa31f2e17acbb --- /dev/null +++ b/VL04-02/Copyrightmeldung-Con/HalloIchCopyRight.java @@ -0,0 +1,46 @@ +/** HalloIchCopyRight.java + * + * Das Programm soll außer der Begrüßungsmeldung (Hallo meti) noch einen + * Copyright Verweis ausgeben, der auch in anderen Programmen zugänglich sein + * soll. Die für die Ausgabe zuständige Klasse soll daher in einem Paket + * hinterlegt werden, welches auch anderen Projekten zugänglich sein soll. + * + * Die Klasse Copyrightmeldung.class wird gemäß der package-Anweisung in der + * Quelldatei im Paket de.hsreutlingen.inf.metipack.inf3 + * angelegt und wird beim Programmaufruf im Dateisystem in der zugehörigen + * Verzeichnisstruktur gesucht. Die Wurzel dieser Verzeichnisstruktur ist + * entweder + * a) im aktuellen Verzeichnis, von dem aus die JVM aufgerufen wird oder + * b) in einem der unter der Umgebungsvariablen CLASSPATH hinterlegten Verzeichnisse + * + * Beispiel: + * Wird das Programm aus dem Verzeichnis c:\JavaProgs gestartet, so wird die + * Klasse Copyrightmeldung im Verzeichnis c:\JavaProgs\de\hsreutlingen\inf\metipack\inf3 + * erwartet. Bei der Programminstallation muss das entsprechende Verzeichnis angelegt werden. + * + * + * Die Sourcecode-Dateien müssen gemäß der in der import Direktive festgelegten Verzeichnis- + * struktur abgelegt sein. Anderfalls kann der Compiler die Sourcedatei nicht finden und die + * Übersetzung von HalloIchCopyright bricht ab, da das Import-Verzeichnis nicht auffindbar ist. + * + * Ist die Übersetzung erfolgreich, so wird die .class Datei im gleichen Verzeichnis abgelegt, + * wie die Quelldatei. Auf diese Weise ist gewährleistet, dass beim Aufruf des Programmes + * die .class-Datei im über den package Namen festgelegten Verzeichnisbaum liegt. + * + * Für die Übersetzung von HalloIch müssen die Sourcedateien von Copyrightmeldung und + * Infomeldung nicht mehr vorliegen, wenn deren .class-Dateien im zugehörigen package- + * Verzeichnis liegen. + * + * @author Steddin + * @version 1.00, 2016-11-18 + */ +import de.hsreutlingen.inf.metipack.inf3.Copyrightmeldung; + +public class HalloIchCopyright { + + public static void main(String[] args) { + System.out.println("Hallo meti"); + Copyrightmeldung cm = new Copyrightmeldung(); + cm.ZeigeCopyright(); + } +} diff --git a/VL04-02/DefaultPackage-1-Con/BlaBla.java b/VL04-02/DefaultPackage-1-Con/BlaBla.java new file mode 100644 index 0000000000000000000000000000000000000000..d47629792f92188305ca1d50b4d8cf99510d8afd --- /dev/null +++ b/VL04-02/DefaultPackage-1-Con/BlaBla.java @@ -0,0 +1,6 @@ +class BlaBla { + void sayBla() { + System.out.println("Bla"); + } +} + diff --git a/VL04-02/DefaultPackage-1-Con/MainProg.java b/VL04-02/DefaultPackage-1-Con/MainProg.java new file mode 100644 index 0000000000000000000000000000000000000000..613c5cc0ace3c11948ea8d1b27c38bc9c5c8aab6 --- /dev/null +++ b/VL04-02/DefaultPackage-1-Con/MainProg.java @@ -0,0 +1,12 @@ + /** MainProg.java + * Programm zeigt Nutzung des Default Packages. + * @author Steddin + * @version 1.00, 2019-11-04 + */ + public class MainProg { + public static void main(String[] args) { + BlaBla blabla = new BlaBla(); + blabla.sayBla(); + } +} + diff --git a/VL04-02/DefaultPackage-2-Con/MainProg.java b/VL04-02/DefaultPackage-2-Con/MainProg.java new file mode 100644 index 0000000000000000000000000000000000000000..850a1313896bd20bb2a67f5a9272c047c04dd7da --- /dev/null +++ b/VL04-02/DefaultPackage-2-Con/MainProg.java @@ -0,0 +1,15 @@ + /** MainProg.java + * Programm zeigt Nutzung des Default Packages zusammen mit + * untergeordneten Packages. + * @author Steddin + * @version 1.00, 2019-11-04 + */ +public class MainProg { + public static void main(String[] args) { + vorlesung.BlaBla blabla1 = new vorlesung.BlaBla(); + kaffeeklatsch.BlaBla blabla2 = new kaffeeklatsch.BlaBla(); + blabla1.sayBla(); + blabla2.sayBla(); + } +} + diff --git a/VL04-02/DefaultPackage-2-Con/kaffeeklatsch/BlaBla.java b/VL04-02/DefaultPackage-2-Con/kaffeeklatsch/BlaBla.java new file mode 100644 index 0000000000000000000000000000000000000000..2f3f5f3508ccfbfe37c10369bc8f47c8b1c20fff --- /dev/null +++ b/VL04-02/DefaultPackage-2-Con/kaffeeklatsch/BlaBla.java @@ -0,0 +1,7 @@ +package kaffeeklatsch; +public class BlaBla { + public void sayBla() { + System.out.println("Kaffeeklatsch: Bla"); + } +} + diff --git a/VL04-02/DefaultPackage-2-Con/vorlesung/BlaBla.java b/VL04-02/DefaultPackage-2-Con/vorlesung/BlaBla.java new file mode 100644 index 0000000000000000000000000000000000000000..c7d4675fb7d1e31f3b2a95f9afaf134e4693cab0 --- /dev/null +++ b/VL04-02/DefaultPackage-2-Con/vorlesung/BlaBla.java @@ -0,0 +1,7 @@ +package vorlesung; +public class BlaBla { + public void sayBla() { + System.out.println("Vorlesung: Bla"); + } +} + diff --git a/VL04-02/DefaultPackage-3-Con/MainProg.java b/VL04-02/DefaultPackage-3-Con/MainProg.java new file mode 100644 index 0000000000000000000000000000000000000000..3071d59c33cdb8f1662494c8451fcd3746a6cecd --- /dev/null +++ b/VL04-02/DefaultPackage-3-Con/MainProg.java @@ -0,0 +1,20 @@ + /** MainProg.java + * Programm zeigt Nutzung des Default Packages in Verbindung + * mit hierarchisch strukturierten Packages. + * @author Steddin + * @version 1.00, 2019-11-04 + */ +public class MainProg { + public static void main(String[] args) { + hochschule.vorlesung.BlaBla blabla1 = new hochschule.vorlesung.BlaBla(); + hochschule.mensa.BlaBla blabla2 = new hochschule.mensa.BlaBla(); + kaffeeklatsch.BlaBla blabla3 = new kaffeeklatsch.BlaBla(); + blabla1.sayBla(); + blabla2.sayBla(); + blabla3.sayBla(); + } +} + + + + diff --git a/VL04-02/DefaultPackage-3-Con/hochschule/mensa/BlaBla.java b/VL04-02/DefaultPackage-3-Con/hochschule/mensa/BlaBla.java new file mode 100644 index 0000000000000000000000000000000000000000..8580307478f163a0de2e4a91239b9af2b412295e --- /dev/null +++ b/VL04-02/DefaultPackage-3-Con/hochschule/mensa/BlaBla.java @@ -0,0 +1,7 @@ +package hochschule.mensa; +public class BlaBla { + public void sayBla() { + System.out.println("Hochschule Mensa: Bla"); + } +} + diff --git a/VL04-02/DefaultPackage-3-Con/hochschule/vorlesung/BlaBla.java b/VL04-02/DefaultPackage-3-Con/hochschule/vorlesung/BlaBla.java new file mode 100644 index 0000000000000000000000000000000000000000..150636b1e13de98b7ada15da43ed614236b9916c --- /dev/null +++ b/VL04-02/DefaultPackage-3-Con/hochschule/vorlesung/BlaBla.java @@ -0,0 +1,7 @@ +package hochschule.vorlesung; +public class BlaBla { + public void sayBla() { + System.out.println("Hochschule Vorlesung: Bla"); + } +} + diff --git a/VL04-02/DefaultPackage-3-Con/kaffeeklatsch/BlaBla.java b/VL04-02/DefaultPackage-3-Con/kaffeeklatsch/BlaBla.java new file mode 100644 index 0000000000000000000000000000000000000000..2a685779596dfcfe3cf59a7832f852b9c0804d4f --- /dev/null +++ b/VL04-02/DefaultPackage-3-Con/kaffeeklatsch/BlaBla.java @@ -0,0 +1,6 @@ +package kaffeeklatsch; +public class BlaBla { + public void sayBla() { + System.out.println("Kaffeeklatsch: Bla"); + } +} \ No newline at end of file diff --git a/VL04-02/DefaultPackage-4-Con/hochschule/mensa/BlaBla.java b/VL04-02/DefaultPackage-4-Con/hochschule/mensa/BlaBla.java new file mode 100644 index 0000000000000000000000000000000000000000..8580307478f163a0de2e4a91239b9af2b412295e --- /dev/null +++ b/VL04-02/DefaultPackage-4-Con/hochschule/mensa/BlaBla.java @@ -0,0 +1,7 @@ +package hochschule.mensa; +public class BlaBla { + public void sayBla() { + System.out.println("Hochschule Mensa: Bla"); + } +} + diff --git a/VL04-02/DefaultPackage-4-Con/hochschule/vorlesung/BlaBla.java b/VL04-02/DefaultPackage-4-Con/hochschule/vorlesung/BlaBla.java new file mode 100644 index 0000000000000000000000000000000000000000..150636b1e13de98b7ada15da43ed614236b9916c --- /dev/null +++ b/VL04-02/DefaultPackage-4-Con/hochschule/vorlesung/BlaBla.java @@ -0,0 +1,7 @@ +package hochschule.vorlesung; +public class BlaBla { + public void sayBla() { + System.out.println("Hochschule Vorlesung: Bla"); + } +} + diff --git a/VL04-02/DefaultPackage-4-Con/kaffeeklatsch/BlaBla.java b/VL04-02/DefaultPackage-4-Con/kaffeeklatsch/BlaBla.java new file mode 100644 index 0000000000000000000000000000000000000000..2a685779596dfcfe3cf59a7832f852b9c0804d4f --- /dev/null +++ b/VL04-02/DefaultPackage-4-Con/kaffeeklatsch/BlaBla.java @@ -0,0 +1,6 @@ +package kaffeeklatsch; +public class BlaBla { + public void sayBla() { + System.out.println("Kaffeeklatsch: Bla"); + } +} \ No newline at end of file diff --git a/VL04-02/DefaultPackage-4-Con/mypackage/MainProg.java b/VL04-02/DefaultPackage-4-Con/mypackage/MainProg.java new file mode 100644 index 0000000000000000000000000000000000000000..87816c5cb2e05a8434971ef4072dc0d80b6ae1d2 --- /dev/null +++ b/VL04-02/DefaultPackage-4-Con/mypackage/MainProg.java @@ -0,0 +1,22 @@ + /** MainProg.java + * Programm zeigt vollständige Nutzung des Package Konzepts. + * Aufgabe für Vorlesung: Programm soll über Kommandozeile + * übersetzt und gestartet werden. + * @author Steddin + * @version 1.00, 2019-11-04 + */ +package mypackage; +public class MainProg { + public static void main(String[] args) { + hochschule.vorlesung.BlaBla blabla1 = new hochschule.vorlesung.BlaBla(); + hochschule.mensa.BlaBla blabla2 = new hochschule.mensa.BlaBla(); + kaffeeklatsch.BlaBla blabla3 = new kaffeeklatsch.BlaBla(); + blabla1.sayBla(); + blabla2.sayBla(); + blabla3.sayBla(); + } +} + + + + diff --git a/VL04-02/DefaultPackage-5-Con/hochschule/mensa/BlaBla.java b/VL04-02/DefaultPackage-5-Con/hochschule/mensa/BlaBla.java new file mode 100644 index 0000000000000000000000000000000000000000..8580307478f163a0de2e4a91239b9af2b412295e --- /dev/null +++ b/VL04-02/DefaultPackage-5-Con/hochschule/mensa/BlaBla.java @@ -0,0 +1,7 @@ +package hochschule.mensa; +public class BlaBla { + public void sayBla() { + System.out.println("Hochschule Mensa: Bla"); + } +} + diff --git a/VL04-02/DefaultPackage-5-Con/hochschule/vorlesung/BlaBla.java b/VL04-02/DefaultPackage-5-Con/hochschule/vorlesung/BlaBla.java new file mode 100644 index 0000000000000000000000000000000000000000..150636b1e13de98b7ada15da43ed614236b9916c --- /dev/null +++ b/VL04-02/DefaultPackage-5-Con/hochschule/vorlesung/BlaBla.java @@ -0,0 +1,7 @@ +package hochschule.vorlesung; +public class BlaBla { + public void sayBla() { + System.out.println("Hochschule Vorlesung: Bla"); + } +} + diff --git a/VL04-02/DefaultPackage-5-Con/kaffeeklatsch/BlaBla.java b/VL04-02/DefaultPackage-5-Con/kaffeeklatsch/BlaBla.java new file mode 100644 index 0000000000000000000000000000000000000000..2a685779596dfcfe3cf59a7832f852b9c0804d4f --- /dev/null +++ b/VL04-02/DefaultPackage-5-Con/kaffeeklatsch/BlaBla.java @@ -0,0 +1,6 @@ +package kaffeeklatsch; +public class BlaBla { + public void sayBla() { + System.out.println("Kaffeeklatsch: Bla"); + } +} \ No newline at end of file diff --git a/VL04-02/DefaultPackage-5-Con/mypackage/MainProg.java b/VL04-02/DefaultPackage-5-Con/mypackage/MainProg.java new file mode 100644 index 0000000000000000000000000000000000000000..0d9097727fb67abaebdcbb12d00e9e3424d23cbc --- /dev/null +++ b/VL04-02/DefaultPackage-5-Con/mypackage/MainProg.java @@ -0,0 +1,26 @@ + /** MainProg.java + * Programm zeigt Nutzung der import Direktive: + * Durch die Nutzung identischer Klassennamen in + * den unterschiedlichen Packages ist die Verwendung + * der import-Direktive nur eingeschränkt sinnvoll. + * @author Steddin + * @version 1.00, 2019-11-04 + */ +package mypackage; +import hochschule.vorlesung.*; +import kaffeeklatsch.BlaBla; + +public class MainProg { + public static void main(String[] args) { + BlaBla blabla1 = new BlaBla(); + hochschule.mensa.BlaBla blabla2 = new hochschule.mensa.BlaBla(); + BlaBla blabla3 = new BlaBla(); + blabla1.sayBla(); + blabla2.sayBla(); + blabla3.sayBla(); + } +} + + + + diff --git a/VL04-02/EinfachesPackage-Con/EinfachesProgMitPackage.java b/VL04-02/EinfachesPackage-Con/EinfachesProgMitPackage.java new file mode 100644 index 0000000000000000000000000000000000000000..38f7894d94bf76fecd352be839815fd37d58cd20 --- /dev/null +++ b/VL04-02/EinfachesPackage-Con/EinfachesProgMitPackage.java @@ -0,0 +1,15 @@ +/** VL04-02_EinfachesProgMitPackage + * Ohne die Angabe eines Packages muss die Datei zur Übersetzung und zur Ausführung in dem + * Verzeichnis liegen, in dem die Konsole der JVM gestartet wird. + * Mit Angabe des Packages muss das Programm aus dem über dem Package-Verzeichnis liegenden + * Verzeichnis heraus aufgerufen werden; hierbei muss im Aufruf der Pfad angegeben werden. + * @author Steddin + * @version 1.00, 2019-11-04 + */ +package mypackage; +public class EinfachesProgMitPackage { + + public static void main(String[] args) { + System.out.println("Hallo metis :-)"); + } +} \ No newline at end of file diff --git a/VL04-02/EinfachesPackage-Con/EinfachesProgOhnePackage.java b/VL04-02/EinfachesPackage-Con/EinfachesProgOhnePackage.java new file mode 100644 index 0000000000000000000000000000000000000000..13fcffbd8b905cda626ae36115626375e9c79d8e --- /dev/null +++ b/VL04-02/EinfachesPackage-Con/EinfachesProgOhnePackage.java @@ -0,0 +1,12 @@ +/** VL04-02_EinfachesProgOhnePackage + * Ohne die Angabe eines Packages muss die Datei zur Übersetzung und zur Ausführung in dem + * Verzeichnis liegen, in dem die Konsole der JVM gestartet wird. + * @author Steddin + * @version 1.00, 2016-11-18 + */ +public class EinfachesPackage { + + public static void main(String[] args) { + System.out.println("Hallo metis :-)"); + } +} \ No newline at end of file diff --git a/VL04-02/MyStaticPI-Con/de/hsreutlingen/inf/metipack/inf3/myMath/Misc.java b/VL04-02/MyStaticPI-Con/de/hsreutlingen/inf/metipack/inf3/myMath/Misc.java new file mode 100644 index 0000000000000000000000000000000000000000..8e96d4c79b5bb394b850ffb731fdd8e851f2c0f8 --- /dev/null +++ b/VL04-02/MyStaticPI-Con/de/hsreutlingen/inf/metipack/inf3/myMath/Misc.java @@ -0,0 +1,26 @@ +/** Misc.java + * + * Anhand der Klasse Misc soll demonstriert werden, wie man sich eine + * eigene Bibliothek mit häufig verwendeten Funktionen und Konstanten + * in einem Package anlegen kann. <p> + * Das Package heißt myMath und könnte außer der Klasse Misc auch noch + * andere Klassen aufnehmen, welche Mathematik-Funktionen anbieten würden. + * + * @author Steddin + * @version 1.00, 2016-11-18 + */ +package de.hsreutlingen.inf.metipack.inf3.myMath; + +public class Misc { + public static final float PI_F = 3.14f; + public static final int REGEL_ANZ_METI_SEMESTER = 7; + + public static float GetKreisFlaeche(float radius) { + return (radius * radius * PI_F); + } + public double GetKugelVolumen(double radius) { + return (4.0 * PI_F * Math.pow(radius,3)); + } +} + + diff --git a/VL04-02/MyStaticPI-Con/mypackage/MyStaticPI.java b/VL04-02/MyStaticPI-Con/mypackage/MyStaticPI.java new file mode 100644 index 0000000000000000000000000000000000000000..08d9e607832c3f089bb5827a87850a321f4b0c06 --- /dev/null +++ b/VL04-02/MyStaticPI-Con/mypackage/MyStaticPI.java @@ -0,0 +1,36 @@ +/** MyStaticPi.java + * + * Das Projekt demonstriert, wie der statische Import von + * Konstanten und von Methoden erfolgen kann. + * + * @author Steddin + * @version 2.00, 2019-11-04 + */ + +package mypackage; +//für Zugriff auf statische Elemente der Klasse myMath.Misc erforderlich: +//import static de.hsreutlingen.inf.metipack.inf3.myMath.Misc.*; +//für Zugriff auf nicht statische Elemente (Methoden) der Klasse myMath.Misc erforderlich: +import de.hsreutlingen.inf.metipack.inf3.myMath.Misc; + +public class MyStaticPI { + + public static void main(String[] args) { + float erg; + float radius = 2.0f; + //Ohne statischen Import müsste folgender Befehl verwendet werden + erg = 2.0f * radius * de.hsreutlingen.inf.metipack.inf3.myMath.Misc.PI_F; + //erg = 2.0f * radius * PI_F; + System.out.println("Umfang(Radius r = " + radius + " cm) = " + erg + " cm"); + System.out.println("Flaeche = " + de.hsreutlingen.inf.metipack.inf3.myMath.Misc.GetKreisFlaeche(radius) + "cm²"); + //System.out.println("Flaeche = " + GetKreisFlaeche(radius) + "cm²"); + //nicht statische Methoden können nur nach Erzeugung einer Instanz + //der Klasse verwendet werden: + Misc helper = new Misc(); + System.out.println("Kugelvolumen = " + helper.GetKugelVolumen(radius)); + //Aufruf über anonyme Klasse: + System.out.println("Kugelvolumen = " + new Misc().GetKugelVolumen(radius)); + } +} + + diff --git a/VL04-02/StaticVars-Con/Kfz.java b/VL04-02/StaticVars-Con/Kfz.java new file mode 100644 index 0000000000000000000000000000000000000000..d5b8401978f9860c3dddf849d4354deda3a4f3bd --- /dev/null +++ b/VL04-02/StaticVars-Con/Kfz.java @@ -0,0 +1,29 @@ +/** Kfz.java + * + * Verwendung von statischen Variablen und Methoden: + * Das Programm enthält Fehler, die korrigiert werden sollen. + * + * @author Steddin + * @version 1.00, 2016-11-18 + */ + +public class Kfz { + int anzSitze = 2; + int anzRaeder = 2; + + public static void main(String[] args) { + Fahrrad fahrrad = new Fahrrad(); + System.out.println("Kfz: Anzahl Autositze: "+ GetAnzSitze()); + System.out.println("Fahrrad: Anzahl Räder: "+ fahrrad.GetAnzRaeder()); + } + + int GetAnzSitze() { + return anzSitze; + } +} + +public class Fahrrad { + int GetAnzRaeder() { + return Kfz.anzRaeder; + } +}