<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>gironimo.org &#187; Java</title>
	<atom:link href="http://www.gironimo.org/tag/java/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gironimo.org</link>
	<description>there&#039;s nothing left to say...</description>
	<lastBuildDate>Wed, 25 Jan 2012 16:32:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Eigenes Eclipse Paket für Ubuntu/Debian bauen</title>
		<link>http://www.gironimo.org/linux/eigenes-eclipse-paket-ubuntu-debian-bauen.html</link>
		<comments>http://www.gironimo.org/linux/eigenes-eclipse-paket-ubuntu-debian-bauen.html#comments</comments>
		<pubDate>Mon, 07 Nov 2011 11:49:35 +0000</pubDate>
		<dc:creator>Marc Rochow</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[APT]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Paketverwaltung]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.gironimo.org/?p=1493</guid>
		<description><![CDATA[Wer die neueste Eclipse Version für Debian oder Ubuntu 11.04 benötigt, der hat ein Problem. Die, sowohl in Ubuntu Natty als auch in Debian Sid verfügbare Version ist 3.5, obwohl seit Juni 2010 3.6 verfügbar ist oder sogar seit diesem Jahr 3.7 Indigo. In Ubuntu 11.10...]]></description>
			<content:encoded><![CDATA[<p>Wer die <strong>neueste Eclipse Version</strong> für <strong>Debian</strong> oder <strong>Ubuntu 11.04</strong> benötigt, der hat ein Problem. Die, sowohl in <strong>Ubuntu Natty</strong> als auch in <strong>Debian Sid</strong> verfügbare Version ist 3.5, obwohl seit Juni 2010 3.6 verfügbar ist oder sogar seit diesem Jahr 3.7 Indigo. In Ubuntu 11.10 dagegen ist endlich die neue Version 3.7 verfügbar.</p>
<p>Ein Grund für die zögerliche <strong>Paketierung</strong> könnte sein, dass Eclipse bereits eine interne <strong>Paketverwaltung</strong> mitbringt, über die Plugins mittels Paketquellen installiert werden können. Eventuell haben wenige Leute Interesse daran Eclipse zu paketieren. Deshalb bin ich dazu übergegangen mir selbst ein <strong>eigenes Eclipse Paket zu bauen</strong>, und dieses über <strong>APT</strong> zu installieren. Wie das ganze funktioniert, beschreibe ich hier.</p>
<h3>Vorbereiten und Erstellen des Arbeitsverzeichnisses</h3>
<p>Bevor wir mit der Paketierung starten können, benötigen wir noch einige Pakete und ein <strong>Arbeitsverzeichnis</strong>, in dem wir später unser Eclipse Paket bauen werden.</p>
<pre class="brush: bash; title: ; notranslate">$ sudo apt-get install fakeroot dpkg-dev debhelper unp</pre>
<p>Hiermit werden einige Tools installiert, die wir benötigen um die entsprechenden <strong>Rechte</strong> des Pakets zu setzen und dieses schlussendlich zu bauen.</p>
<pre class="brush: bash; title: ; notranslate">$ mkdir eclipse-sdk</pre>
<p>Innerhalb dieses Arbeitsverzeichnisses müssen nun die Ordner so angelegt werden, wie sie später auf dem Dateisystem abgebildet werden sollen. Legt man also innerhalb dieses Ordners <code>eclipse-sdk</code> den Ordner <code>bin</code> an und speichert dort Dateien, so werden diese Dateien später nach <code>/bin</code> installiert. Userprogramme werden unter Linux üblicherweise unter <code>/usr</code> installiert. Ich lasse den Inhalt des Archivs nach <code>/usr/lib/eclipse</code> installieren.</p>
<h3>Eclipse herunterladen und Paket vorbereiten</h3>
<p>Ich installiere mir das Eclipse SDK, also mit bereits installierten JAVA Development Tools und in der 64-Bit Variante. Wer eine andere Version braucht, sollte dies anpassen.</p>
<pre class="brush: bash; title: ; notranslate">$ wget http://download.eclipse.org/eclipse/downloads/drops/R-3.7.1-201109091335/download.php?dropFile=eclipse-SDK-3.7.1-linux-gtk-x86_64.tar.gz
$ unp eclipse-platform-3.6.2-linux-gtk-x86_64.tar.gz
$ mkdir -p eclipse-sdk/usr/lib
$ mv eclipse eclipse-sdk/usr/lib/eclipse</pre>
<p>Anschließen erstellen wir ein Skript, mit dem wir Eclipse starten können. <strong>Startskripte</strong> werden in <code>/usr/bin</code> abgespeichert.</p>
<pre class="brush: bash; title: ; notranslate">$ mkdir -p eclipse-sdk/usr/bin
$ touch eclipse-sdk/usr/bin/eclipse
$ chmod +x eclipse-sdk/usr/bin/eclipse</pre>
<p>Mit dem zweiten Befehl erstellen wir eine leere Datei und geben dieser mit dem dritten Befehl <strong>Ausführrechte</strong>. Nun sollten wir dem Startskript natürlich auch einen Inhalt geben. Dies kann entweder mit einem Konsolen-Editor geschehen (wie <strong>vi</strong> oder <strong>nano</strong>) oder auch mit einem grafischen Editor (z.B. <strong>gedit</strong>, &#8230;). Folgenden Inhalt bekommt unser Startskript:</p>
<pre class="brush: bash; title: ; notranslate">#!/bin/sh
exec /usr/lib/eclipse/eclipse &quot;$@&quot;</pre>
<p>&#8220;<code>$@</code>&#8221; bewirkt, dass dem Skript mitgegebene Parameter an Eclipse weitergereicht werden. Nun müssen wir noch einen Menüeintrag erstellen, so dass sich Eclipse auch bequem aus dem Anwendungsmenü heraus starten lässt.</p>
<pre class="brush: bash; title: ; notranslate">$ mkdir -p eclipse-sdk/usr/share/applications
$ nano eclipse-sdk/usr/share/applications/eclipse.desktop</pre>
<p>&nbsp;</p>
<pre class="brush: bash; title: ; notranslate">[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Eclipse
Exec=eclipse
Terminal=false
Icon=/usr/lib/eclipse/icon.xpm
Comment=Eclipse Integrated Development Environment
Categories=Development;IDE;
</pre>
<p>Nun haben wir also ein Startskript, einen Anwendungsstarter sowie einen Programmordner. Fehlen nur noch Informationen, die das Paket näher beschreiben, damit auch APT was damit anfangen kann.</p>
<h3>Paketinformationen und paketieren</h3>
<p>Wir brauchen für die Paketierung eine Debain Control Datei. Die das Paket näher beschreibt und <strong>Abhängigkeiten</strong> auflistet.</p>
<pre class="brush: bash; title: ; notranslate">mkdir eclipse-sdk/DEBIAN
nano eclipse-sdk/DEBIAN/control</pre>
<p>In die Control Datei kommt folgender Inhalt:</p>
<pre class="brush: bash; title: ; notranslate">Package: eclipse-sdk
Version: 3.7.1
Architecture: amd64
Maintainer: InsertYourNameHere
Depends: openjdk-6-jre | sun-java6-jre
Section: devel
Priority: optional
Description: Eclipse IDE, static-linked, minimal plugins.</pre>
<p>Als Maintainer sollte euer Name stehen. Die Abhängigkeiten die Eclipse benötigt sind <strong>Java</strong>. Egal ob dies OpenJDK oder doch Sun Java ist. Alles andere ist bei Eclipse dabei.</p>
<p>Nun verpacken wir das Paket und können dies dann ganz bequem installieren.</p>
<pre class="brush: bash; title: ; notranslate">$ fakeroot dpkg -b eclipse-sdk eclipse-sdk_3.7.1_amd64.deb
$ sudo dpkg -i eclipse-sdk_3.7.1_amd64.deb</pre>
<p>Wenn <code>fakeroot</code> nicht vergessen wurde (wird benötigt um die Rechte richtig zu setzen!) sollte Eclipse jetzt problemlos starten.</p>
<p>Getestet mit Ubuntu 11.10 und Ubuntu 11.04.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gironimo.org/linux/eigenes-eclipse-paket-ubuntu-debian-bauen.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programmieren: Java</title>
		<link>http://www.gironimo.org/hochschule/programmieren-java.html</link>
		<comments>http://www.gironimo.org/hochschule/programmieren-java.html#comments</comments>
		<pubDate>Wed, 01 Jul 2009 13:54:34 +0000</pubDate>
		<dc:creator>Marc Rochow</dc:creator>
				<category><![CDATA[Studium]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.gironimo.org/?p=443</guid>
		<description><![CDATA[Welche Ausgaben auf dem Bildschirm erzeugt folgende Klasse beim Ausführen? A:-1 B:Infinity C:4 4 D:7 E:255 F:++++ G:false H:true Es sei folgende rekursive Methode gegeben: a) Welches Muster erzeugt der Aufruf printRec(5) auf dem Bildschirm? 12345 1234 123 12 1 b) Was passiert, wenn Sie...]]></description>
			<content:encoded><![CDATA[<p>Welche Ausgaben auf dem Bildschirm erzeugt folgende Klasse beim Ausführen?</p>
<pre class="brush: java; title: ; notranslate">package aufg1;

public class Aufg1 {

	public static void main(String[] args) {

		int i = Integer.MAX_VALUE; // entspricht Wert 2147483647

		System.out.println(&quot;A:&quot; + ((i+1) + i));

		float f = Float.MAX_VALUE; // entspricht Wert 3.4028235E38
		System.out.println(&quot;B:&quot; + ( 2*f - f));

		i = 1;
		System.out.println(&quot;C:&quot; + (i&lt;&lt;=2) + &quot; &quot; + i);

		i = 7;
		System.out.println(&quot;D:&quot; + (i &amp; 0xFF));
		System.out.println(&quot;E:&quot; + (i | 0xFF));

		i = 4;
		System.out.print(&quot;F:&quot;);
		while (i-- &gt; 0) {
			System.out.print(&quot;+&quot;);
		}
		System.out.println();

		String first = new String(&quot;Hallo&quot;);
		String second = new String(&quot;Hallo&quot;);
		System.out.println(&quot;G:&quot; + (first==second));
		System.out.println(&quot;H:&quot; + (first.equals(second)));
	}

}</pre>
<blockquote><p>A:-1<br />
B:Infinity<br />
C:4 4<br />
D:7<br />
E:255<br />
F:++++<br />
G:false<br />
H:true</p></blockquote>
<p>Es sei folgende rekursive Methode gegeben:</p>
<pre class="brush: java; title: ; notranslate">package aufg2;

public class Aufg2a {

	public static void main(String[] args) {
		printRec(5);
	}

	public static void printRec(int n) {
		if (n == 0)
			return;
		for (int j = 1; j &lt;= n; j++)
			System.out.print(j);
		System.out.println();
		printRec(n - 1);
	}

}</pre>
<p>a) Welches Muster erzeugt der Aufruf <span style="font-weight: bold; font-style: italic;">printRec(5)</span> auf dem Bildschirm?</p>
<blockquote><p>12345<br />
1234<br />
123<br />
12<br />
1</p></blockquote>
<p>b) Was passiert, wenn Sie versuchen, einen Aufruf der Form <span style="font-weight: bold; font-style: italic;">printRec(3.14)</span> zu tätigen?</p>
<blockquote><p>1. Compiler wird einen Fehler ausgeben<br />
2. Die rekursive Methode erwartet einen Integer Wert, es wird allerdings ein Double übergeben</p></blockquote>
<p>c) Was erfolgt, wenn die Methode <span style="font-weight: bold; font-style: italic;">printRec()</span> mit einer negativen ganzen Zahl als aktuellem Parameter aufgerufen wird? Wie würden Sie die Implementierung der Methode verändern, um diesen Effekt zu verhindern?</p>
<blockquote><p>Die Methode bricht nicht mehr ab, dh sie wird unendlich lange laufen bis der minimale Integer Wert erreicht wird und dann weiter laufen bis sie endlich bei 0 ankommt.</p></blockquote>
<pre class="brush: java; title: ; notranslate">package aufg2;

public class Aufg2c {

	public static void main(String[] args) {
		printRec(-1);
	}

	public static void printRec(int n) {
		if (n == 0 || n &lt;= 0)
			return;
		for (int j = 1; j &lt;= n; j++)
			System.out.print(j);
		System.out.println();
		printRec(n - 1);
	}

}</pre>
<p>d) Wandeln Sie die rekursive Implementierung von <span style="font-weight: bold; font-style: italic;">printRec()</span> unter dem nachfolgenden Methodenkopf in eine iterative Implementierung um.</p>
<pre class="brush: java; title: ; notranslate">package aufg2;

public class Aufg2d {

	public static void main(String[] args) {
		printIt(9);
	}

	public static void printIt(int n) {
		if (n == 0 || n &lt;= 0)
			return;

		for (int i = 1-n; i &lt;= n; i++) {

			for (int j = 1; j &lt;= n; j++) {
				System.out.print(j);
			}
			n = n-1;
			System.out.println();
		}
	}

}</pre>
<p>e) Modifizieren Sie die Implementierung von <span style="font-weight: bold; font-style: italic;">printRec()</span> unter Benutzung des nachfolgenden Rahmens so, dass in dem erzeugten Muster nur noch Kleinbuchstaben statt Ziffern erscheinen, und zwar ein a an Stelle von 1, b an Stelle von 2, &#8230;. (Es kann dabei davon ausgegangen werden, dass die Methode nur für einstellig Zahlen 0, …, 9 als aktueller Parameter aufgerufen wird).</p>
<pre class="brush: java; title: ; notranslate">package aufg2;

public class Aufg2e {

	public static void main(String[] args) {
		printRec(9);
	}

	public static void printRec(int n) {
		if (n == 0 || n &lt;= 0)
			return;

		char c = 'a';

		for (int j = 1; j &lt;= n; j++) {
			System.out.print(((char)c));
			c++;
		}
		System.out.println();
		printRec(n - 1);
	}

}</pre>
<p>Auf Pythagoras geht der Begriff der vollkommenen Zahl (perfect number) zurück. Eine vollkommene Zahl ist eine positive ganze Zahl, deren Wert gleich der Summe seiner Teiler ist. Die kleinste vollkommene Zahl ist 6 (6 = 1 + 2 + 3), die nächste ist 28 (28 = 1 + 2 + 4 + 7 +14).<br />
Schreiben Sie eine Methode (Klassen- oder Objektmethode?), die als Parameter eine ganze Zahl übergeben bekommt und als Wahrheitswert zurückliefert, ob die übergebene Zahl eine vollkommene Zahl ist.</p>
<pre class="brush: java; title: ; notranslate">public static boolean perfectNumber(int n) {
	boolean perfNum = false;
	int sumSoFar = 0, sumOfDivisors, i;

	for (i = 1; i &lt; n; i = i + 1) {
		if (n%i == 0) {
			sumSoFar = sumSoFar + i;
		}
	}
	sumOfDivisors = sumSoFar;

	if (n == sumOfDivisors) {
		System.out.println( &quot;The value &quot; + n + &quot; is PERFECT&quot; );
		perfNum = true;
	} else {
		System.out.println( &quot;The value &quot; + n + &quot; is NOT PERFECT&quot; );
	}
	return perfNum;
}</pre>
<p>Es soll der Speiseplan eines Restaurants in Java-Code abgebildet werden. Das nachfolgende Klassendiagramm enthält fragmentarisch den zugehörigen Entwurf.</p>
<p><center><img src="/wp-content/uploads/2009/07/class.png" alt="class" /></center></p>
<p>a) Definieren Sie die Java-Klasse Gericht. Es soll die Attribute erhalten, die in obigem Klassendiagramm angegeben sind. Das Attribut <span style="font-weight: bold; font-style: italic;">preis</span> speichert den Preis des Gerichts in Cent. Sein Wert soll über eine <span style="font-weight: bold; font-style: italic;">get()-Methode</span> abgefragt und über eine <span style="font-weight: bold; font-style: italic;">set()-Methode</span> verändert werden können. Die Werte der restlichen Attribute sollen unveränderlich sein. Die Werte des Attributs <span style="font-weight: bold; font-style: italic;">typ</span> sollen wie im Diagramm durch ein auch zu definierendes <span style="font-weight: bold; font-style: italic;">enum Essenstyp</span> abgedeckt werden (oder, falls Sie damit nichts anfangen können, ersatzweise über symbolische Konstanten in einer eigenen Klasse Essenstyp).</p>
<p>Ergänzen Sie die Klasse Gericht durch einen entsprechenden <span style="font-weight: bold; font-style: italic;">Konstruktor</span> und überschreiben Sie die <span style="font-weight: bold; font-style: italic;">toString()-Methode</span> der Klasse Object geeignet, so dass dadurch alle Attributwerte wiedergegeben werden können.</p>
<pre class="brush: java; title: ; notranslate">package aufg4;

public class Gericht {

	public final String name;
	public final Essenstyp typ;
	public final boolean fleischlos;
	private int preis;

	public Gericht(String name, Essenstyp typ, boolean fleischlos, int preis) {
		this.name = name;
		this.typ = typ;
		this.fleischlos = fleischlos;
		this.preis = preis;
	}

	public void setPreis(int preis) {
		this.preis = preis;
	}

	public int getPreis() {
		return preis;
	}

	public String toString() {
		String s = &quot;Name: &quot; + name + &quot;\nEssenstyp: &quot; + typ.toString() +
				   &quot;\nFleischlos: &quot; + fleischlos + &quot;\nPreis: &quot; + preis + &quot;cent&quot;;
		return s;
	}

}</pre>
<pre class="brush: java; title: ; notranslate">package aufg4;

public enum Essenstyp {

	VORSPEISE, HAUPTGERICHT, NACHSPEISE;

}</pre>
<p>b) Realisieren Sie nun die Klasse Speisekarte. Die Assoziation <span style="font-weight: bold; font-style: italic;">gerichte</span> im Klassendiagramm soll über ein Array fester Länge abgedeckt werden (Die Länge wird im Konstruktor übergeben). Realisieren Sie diesen <span style="font-weight: bold; font-style: italic;">Konstruktor</span> sowie die Methoden <span style="font-weight: bold; font-style: italic;">addGericht()</span> (fügt ein Gericht zur Speisekarte hinzu) sowie <span style="font-weight: bold; font-style: italic;">getBilligstes()</span> (sucht das billigste Gericht vom übergebenen Typ heraus).</p>
<pre class="brush: java; title: ; notranslate">package aufg4;

public class Speisekarte {

	private Gericht[] gerichte;
	private int z = 0;

	public Speisekarte(int n) {
		gerichte = new Gericht[n];
	}

	public void addGericht(Gericht gericht) {
		for (int i = 0; i &lt; gerichte.length -1; i++) {
			if (gerichte[i] == null) {
				gerichte[i] = gericht;
			}

			if (z &lt; gerichte.length) {
				gerichte[z++] = gericht;
			}

		}
	}

	public Gericht getBilligstes(Essenstyp typ) {
		Gericht bG = null, aG;

		for (int i = 0; i &lt; z; i++) {
			if (gerichte[i].typ != typ)
				continue;

			aG = gerichte[i];

			if (bG == null) {
				bG = aG;
				continue;
			}

			if (aG.getPreis() &lt; bG.getPreis()) {
				bG = aG;
			}
		}
		return bG;
	}

}</pre>
<p>c) Definieren Sie eine Test-Methode, in der eine Speisekarte und zwei Gerichte von gleichem Typ aber unterschiedlichem Preis instanziert und die Gerichte zur Speisekarte hinzugefügt werden. Anschließend soll die Speisekarte auf das billigste Gericht dieses Typs abgefragt werden und dessen Daten auf die Konsole ausgegeben werden.</p>
<pre class="brush: java; title: ; notranslate">package aufg4;

public class Test {

	public static void main(String[] args) {

		Speisekarte sk = new Speisekarte(2);
		Gericht knoedel = new Gericht(&quot;Knödel&quot;, Essenstyp.HAUPTGERICHT, true, 50);
		Gericht wurst = new Gericht(&quot;Wurst&quot;, Essenstyp.HAUPTGERICHT, false, 40);

		sk.addGericht(knoedel);
		sk.addGericht(wurst);

		System.out.println(sk.getBilligstes(knoedel.typ).toString());
	}

}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.gironimo.org/hochschule/programmieren-java.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

