<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SebastianD</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SebastianD"/>
	<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//Spezial:Beitr%C3%A4ge/SebastianD"/>
	<updated>2026-11-01T03:00:58Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.6</generator>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Datei:SebastianDyroff.jpg&amp;diff=11393</id>
		<title>Datei:SebastianDyroff.jpg</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Datei:SebastianDyroff.jpg&amp;diff=11393"/>
		<updated>2008-11-06T15:44:47Z</updated>

		<summary type="html">&lt;p&gt;SebastianD: hat eine neue Version von „Bild:SebastianDyroff.jpg“ hochgeladen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SebastianD</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=CAcert&amp;diff=4259</id>
		<title>CAcert</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=CAcert&amp;diff=4259"/>
		<updated>2008-04-17T07:32:47Z</updated>

		<summary type="html">&lt;p&gt;SebastianD: /* Assurer */ Sebastian Dyroff hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;CAcert&#039;&#039;&#039; ist eine Zertifizierungsstelle für kostenlose S/MIME- und SSL-Serverzertifikate. Für personalisierte Zertifikate muss man sich gegenüber CAcert authentifizieren, dafür wurde ein &amp;quot;[[Web of Trust]]&amp;quot; geschaffen, in dem bereits ausreichend authentifizierte CAcert-Benutzer, die sogenannten &amp;quot;Assurer&amp;quot; andere Teilnehmer bestätigen können. Das ganze funktioniert über ein Punktesystem und je mehr Punkte man erhält, desto mehr Rechte hat man und kann dann z.B. für sich selber personalisierte S/MIME-Zertfikate erhalten oder ab einer gewissen Punktzahl auch andere Teilnehmer bestätigen.&lt;br /&gt;
&lt;br /&gt;
Das wichtigste Ziel von CAcert ist, daß ihr [https://www.cacert.org/index.php?id=3 Root-Zertifikat] von den Browser-Herstellern in ihre Produkte aufgenommen wird, damit bei SSL-verschlüsselten Seiten, deren Schlüssel von CAcert unterschrieben wurden, zukünftig keine Warnhinweise mehr angezeigt werden, so wie man es schon von den großen kommerziellen Zertifizierungsstellen her kennt.&lt;br /&gt;
&lt;br /&gt;
== Die Freitagsrunde bestätigt dich ==&lt;br /&gt;
Einige von uns sind selber schon CAcert-Assurer bzw. gerade dabei, die benötigten Punkte zu erhalten. Unser Ziel ist es, dass Interessierte bei uns direkt alle benötigten Punkte für die Nutzung von CAcert erhalten können, vorausgesetzt natürlich die Identität konnte nach den Regeln von CAcert überprüft werden (zwei gültige amtliche Ausweisdokumente, mindestens eins mit Lichtbild).&lt;br /&gt;
&lt;br /&gt;
Wir können zur Zeit max. 100 Punkte vergeben (mehr geht per Web of Trust nicht), so dass du selbst sofort ein Assurer wirst. Außerdem ist [[Benutzer:Felix| Felix Schwarz]] auch Thawte Notar. Bei Interesse oder für Fragen und Hinweise, sind für unter [mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org] erreichbar. Da nicht immer alle Assurer freitags da sind, bitte unbedingt vorher per E-Mail ([mailto:cacert@freitagsrunde.org cacert@freitagsrunde.org]) anmelden, um unnötige Wege zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
== Assurer ==&lt;br /&gt;
* [[Benutzer:Felixf|Felix Friedrich]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Mutax|Florian Streibelt]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Bastla|Sebastian Lange]] (25 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Dan|Dan Levin]] (20 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Cleeus|Kai Dietrich]] (15 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:BjörnL|Björn Lohrmann]] (10 Punkte CAcert)&lt;br /&gt;
* Sebastian Dyroff (10 Punkte CAcert)&lt;br /&gt;
&lt;br /&gt;
==== Nicht mehr regelmäßig anwesend: ====&lt;br /&gt;
* [[Benutzer:Martin Häcker|Martin Häcker]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Thomas|Thomas Kaschwig]] (35 Punkte CAcert)&lt;br /&gt;
* [[Benutzer:Felix|Felix Schwarz]] (35 Punkte CAcert, 35 Punkte Thawte)&lt;br /&gt;
&lt;br /&gt;
== Wo und wann findet das ganze statt? ==&lt;br /&gt;
&lt;br /&gt;
Wir sind eine Studierendeninitiative, die sich regelmäßig am Freitag trifft, daher auch unser Name. Die CAcert-Zertifizierung führen wir i.d.R. vor oder nach dem Treffen durch, in Ausnahmefällen können wir jedoch auch individuelle Termine vereinbaren.&lt;br /&gt;
&lt;br /&gt;
=== Wo? ===&lt;br /&gt;
&lt;br /&gt;
 Technische Universität Berlin&lt;br /&gt;
 Raum [[FR 5046]]&lt;br /&gt;
 Franklinstr. 28/29&lt;br /&gt;
 10587 Berlin&lt;br /&gt;
&lt;br /&gt;
=== Wann? ===&lt;br /&gt;
&lt;br /&gt;
Unsere Sitzung beginnt jeden Freitag um 13 Uhr und geht bis ca. 15:00. Während des Treffen führen wir keine Assurings durch. Nach dem Treffen ist ein Assuring aber problemlos möglich. Bitte trotzdem vorher per E-Mail anmelden und abklären, wann genau wer da ist.&lt;br /&gt;
&lt;br /&gt;
== Wie funktionierts? ==&lt;br /&gt;
&lt;br /&gt;
Du zeigst uns deine Personaldokumente (mind. ein amtlicher Ausweis, zwei stark bevorzugt), füllst das CAcert-Formular aus. Solltest du auf den Ausweisen erkennbar sein, vergeben wir anschließend die Punkte und tragen das auf der CAcert-Webseite ein. Fertig. Das ganze dauert idR. etwa 10-15 Minuten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Was soll ich mitbringen? ==&lt;br /&gt;
&lt;br /&gt;
# Zwei gültige amtliche Ausweisdokumente (z.B. Personalausweis + Führerschein). Wichtig: Auf mindestens einem Bild solltest du gut zu erkennen sein.&lt;br /&gt;
# Für Thawte-Zertifizierungen: Eine Kopie (Vorder- und Rückseite) deiner Personaldokumente. &lt;br /&gt;
# Für Thawte-Zertifizierungen: Im [https://www.thawte.com/cgi/personal/wot/directory.exe?node=397 Notary-Listing bei Thawte] [https://www.thawte.com/cgi/personal/wot/wotpermission.exe?add=esLj9v2MdTCJh2t4JAMazCA&amp;amp;ref=25&amp;amp;return=directory.exe&amp;amp;node=397 &amp;quot;Felix Schwarz&amp;quot; freischalten] (&amp;quot;allow this notary to view your details&amp;quot;).&lt;br /&gt;
# [http://www.cacert.org/cap.php?lang=de_DE CAcert-Formulare] haben wir da, du kannst sie aber natürlich auch schon vorher bei CAcert herunterladen und ausfüllen. Die [https://www.thawte.com/en/wot/tngerman.pdf Thawte-Formulare] sind etwas versteckter, aber ebenfalls erhältlich.&lt;br /&gt;
# Du solltest bereits einen Account bei [https://www.cacert.org/ CAcert] besitzen (gleiches gilt natürlich für [http://www.thawte.com/wot/index.html Thawte]).&lt;br /&gt;
# Dich selbst.&lt;br /&gt;
&lt;br /&gt;
== Was muss ich danach noch machen? ==&lt;br /&gt;
&lt;br /&gt;
Wenn du bei uns schon die maximalen 100 Punkte bekommen hast, gibt es eigentlich für dich nicht mehr viel zu machen. Allerdings fänden wir es schön, wenn du folgende Bitten befolgen würdest:&lt;br /&gt;
# Mit 100 Punkten bist du selbst Assurer, kannst also andere bestätigen. Bitte missbrauche deine neue Macht nicht und prüfe die Identität der Leute, die du zertifizierst.&lt;br /&gt;
# Ein Projekt wie CAcert lebt davon, dass es möglichst viele Assurer gibt. Da du jetzt auch einer bist, trage dich doch in die Assurer-Liste ein, damit dich andere finden (dies ist standardmäßig nicht der Fall): Einloggen bei CAcert - Meine Details - Mein Listeneintrag.&lt;br /&gt;
# Installiere das [https://www.cacert.org/index.php?id=3 CAcert-Rootzertifikat] auf Systemen, die du ev. betreust (Familie, Freunde, Verwandte), um für größere Akzeptanz zu werben.&lt;br /&gt;
# Werbe allgemein für CAcert, so dass z.B. auch Foren-Bekannte etc. sich das CAcert-Rootzertifikat installieren.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* https://www.cacert.org/&lt;br /&gt;
* http://wiki.cacert.org/&lt;br /&gt;
&lt;br /&gt;
[[Kategorie: Kryptologie]]&lt;/div&gt;</summary>
		<author><name>SebastianD</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Javakurs2008/Vortrag02&amp;diff=10908</id>
		<title>Javakurs2008/Vortrag02</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Javakurs2008/Vortrag02&amp;diff=10908"/>
		<updated>2008-03-28T22:07:44Z</updated>

		<summary type="html">&lt;p&gt;SebastianD: vom Vorjahr übernommen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Schleifen und Arrays =&lt;br /&gt;
&lt;br /&gt;
Vortragende: &#039;&#039;&#039;Robert Buchholz&#039;&#039;&#039; &amp;lt;rbu freitagsrunde.org&amp;gt; und &#039;&#039;&#039;Sebastian Dyroff&#039;&#039;&#039; &amp;lt;sdyroff freitagsrunde.org&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Folien ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Audio-Podcasts ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Themen ==&lt;br /&gt;
&lt;br /&gt;
=== Schleifen ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
while(bedingungDieTrueErgibt()) {&lt;br /&gt;
    tuEtwas();&lt;br /&gt;
}&lt;br /&gt;
int [] zahlen = new int[100]; // Indizes des Arrays sind 0 bis 99 !&lt;br /&gt;
for(int i = 0; i &amp;lt; zahlen.length; i = i + 1) {&lt;br /&gt;
    zahlen[i] = i;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei Arten von Schleifen, die while-Schleife, die hervorragend geeignet ist, wenn man etwas so lange wiederholen möchte bis eine Bedingung zutrifft, und die for-Schleife, mit der man hervorragend alle Werte in einem Array durchgehen kann.&lt;br /&gt;
&lt;br /&gt;
while-Schleifen schreibt man so:&lt;br /&gt;
* zuerst &#039;&#039;while&#039;&#039; und in runden Klammern dahinter die Bedingung. Das kann ein Ausdruck wie &#039;&#039;i &amp;lt; 10&#039;&#039; sein, oder eine Methode wie &#039;&#039;problemGelösst()&#039;&#039; oder &#039;&#039;nochAnDerArbeit()&#039;&#039;&lt;br /&gt;
* Danach in geschweiften Klammern der Inhalt (Body) der Schleife.&lt;br /&gt;
&lt;br /&gt;
for-Schleifen schreibt man so:&lt;br /&gt;
* zuerst &#039;&#039;for&#039;&#039;, dann in runden Klammern drei Anweisungen, jeweils mit Semikolon getrennt: Variablen-Initialisierung, Schleifenbedingung und Weitersetzung der Schleifenvariablen. Sehr oft sieht das sehr ähnlich zu dem Beispiel oben aus.&lt;br /&gt;
* danach auch wieder in geschweiften Klammern die Anweisungen, die wiederholt werden sollen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Arrays ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
int [] vieleInteger = new int [1000];&lt;br /&gt;
double [] wenigGleitkommazahlen;&lt;br /&gt;
wenigGleitkommazahlen = new double[10];&lt;br /&gt;
int anzahl = 42;&lt;br /&gt;
String [] antwort = new String[anzahl];&lt;br /&gt;
&lt;br /&gt;
antwort[3] = &amp;quot;Arthur Dent&amp;quot;;&lt;br /&gt;
String name = antwort[3];&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arrays sind eine Möglichkeit, viele Werte vom gleichen Typ zu haben. Man schreibt:&lt;br /&gt;
* zuerst den Typ der einzelnen Werte: &#039;&#039;int&#039;&#039;, &#039;&#039;double&#039;&#039;, &#039;&#039;boolean&#039;&#039; oder &#039;&#039;String&#039;&#039;&lt;br /&gt;
* dann ein paar eckige Klammern &#039;&#039;[]&#039;&#039;&lt;br /&gt;
* dann den Namen des Arrays, wobei wieder die normale Namenskonvention, CamelCase mit erstem Buchstaben klein, gilt.&lt;br /&gt;
&lt;br /&gt;
Initialisieren kann man diese Variablen entweder gleich oder später - je nachdem was besser passt. Dazu&lt;br /&gt;
* weist man mit &#039;&#039;=&#039;&#039; den Wert zu, den man von &#039;&#039;new&#039;&#039; zurückbekommt.&lt;br /&gt;
* &#039;&#039;new&#039;&#039; verwendet man so, dass man immer dahinter den Typ der Variablen wiederholt, allerdings schreibt man jetzt in die eckigen Klammern hinein, wie viel Elemente man benötigt - das kann aber auch eine Variable vom Typ &#039;&#039;int&#039;&#039; sein.&lt;br /&gt;
&lt;br /&gt;
Zugreifen kann man auf die Elemente eines Arrays mit der &#039;&#039;[]&#039;&#039; Syntax mit &#039;&#039;einArray[nummer]&#039;&#039; kann man auf die einzelnen Werte sowohl zugreifen als auch ihnen Werte zuweisen.&lt;/div&gt;</summary>
		<author><name>SebastianD</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Eclipsekurs_2007/Tag_2&amp;diff=10486</id>
		<title>Eclipsekurs 2007/Tag 2</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Eclipsekurs_2007/Tag_2&amp;diff=10486"/>
		<updated>2007-11-17T09:01:08Z</updated>

		<summary type="html">&lt;p&gt;SebastianD: /* Aufgabe: Micki Maus im Labyrinth (etwas schwerer) */ Labyrinth hinuzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabe: Grundlagen ==&lt;br /&gt;
* Für die Leute, die noch ein wenig mehr mit den Grundlagen der Programmiersprache Java üben möchten, haben wir [[Javakurs2006/Uebungsaufgaben | hier]] viele kleine Aufgaben hinterlegt. &lt;br /&gt;
* Wer die Grundlagen der Java-Programmierung versteht und keine (bzw. sehr wenige) Probleme mit der Rennschneckenaufgabe von der letzten Eclipse-Übung hatte, kann ruhig den Schwerpunkt dieser Übungseinheit stärker auf Eclipse legen und folgende Aufgaben angehen:&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Importieren und Exportieren ==&lt;br /&gt;
&lt;br /&gt;
* Erstelle ein Java-Projekt &amp;quot;Matrix&amp;quot; und importiere die Datei [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2006/MatrixClass.zip MatrixClass.zip] als Archivdatei in das Projekt. Um zu sehen, dass die .class Dateien zum Ausführen eines Programms reichen, starte das Projekt wie gehabt.&lt;br /&gt;
** &#039;&#039;Tipp:&#039;&#039; Wechsle zur Navigator-Ansicht, um die importierten .class Dateien zu sehen.&lt;br /&gt;
** &#039;&#039;Hinweis:&#039;&#039; Die Hauptklasse des Projekts ist &#039;&#039;MatrixTest&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Nun importiere den Quellcode hierzu aus der Archivdatei [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2006/MatrixJava.zip MatrixJava.zip] in dein Projekt. Verändere die Klasse &#039;&#039;Matrix&#039;&#039; mittels Refactoring:&lt;br /&gt;
** Gib der Instanzvariable &#039;&#039;giveMeAName&#039;&#039; einen sinnvollen Namen.&lt;br /&gt;
&lt;br /&gt;
* Exportiere die beiden bearbeiteten Java-Dateien in eine Archivdatei und schicke sie an deinen Tischnachbarn, der freut sich bestimmt.&lt;br /&gt;
      &lt;br /&gt;
&#039;&#039;Tipp:&#039;&#039; Achte darauf, dass die Archivdatei das gesamte Projekt enthält, damit es von jemandem importiert werden kann, ohne dass vorher extra ein neues Projekt angelegt werden muss.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Subversion Repository ==&lt;br /&gt;
&lt;br /&gt;
Wir haben für euch ein Subversion-Repository im CS-Netz angelegt, das ihr für die folgenden Aufgaben nutzen könnt. Checkt euch ein eigenes Verzeichnis davon aus und fügt eure Lösungen dort hinzu.&lt;br /&gt;
&lt;br /&gt;
* Stellt sicher, dass euer Eclipse mit dem [http://subclipse.tigris.org/ Subclipse-Plugin] versehen ist. Wenn ihr Eclipse im CS-Netz nutzt, fügt einfach die &amp;quot;Repository Location&amp;quot; wie auf dem Beipackzettel beschrieben hinzu. Falls nicht, fügt es über &amp;quot;Help-&amp;gt;Software Updates-&amp;gt;Find and Install&amp;quot; hinzu.&lt;br /&gt;
* Erstellt ein neues Java-Projekt. Über Rechtsclick -&amp;gt; &amp;quot;Team -&amp;gt; Share Project&amp;quot; wählt ihr &amp;quot;SVN&amp;quot; aus.  &lt;br /&gt;
* Gebt als Repository Location folgendes an, clickt danach auf Next - nicht auf Finish:&lt;br /&gt;
 svn+ssh://NUTZERNAME@condesa.cs.tu-berlin.de/home/dyroff/repos/eclipsekurs/&lt;br /&gt;
* Im folgenden Dialog wählt bitte &amp;quot;Use specified folder name&amp;quot; aus und fragt euren Tutor nach einer Nummer für euer Projekt, die ihr allein haben könnt. Gebt als Folder Name dann euren Raum und eure Nummer ein, z.B. &amp;quot;2516/20&amp;quot; für Nummer 20 in Raum 2516.&lt;br /&gt;
* Gebt im folgenden Fenster euer CS-Passwort in das entsprechende Feld ein. Das darauf folgende Fenster &amp;quot;Enter SVN Author Name&amp;quot; bitte einfach bestätigen.&lt;br /&gt;
&lt;br /&gt;
* Folgt den weiteren Schritten und arbeitet eine der nächsten Aufgaben unten ab.&lt;br /&gt;
* Führt Commits nach einigen Änderungen durch!&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Refactoring ==&lt;br /&gt;
&lt;br /&gt;
Herzlichen Glückwunsch, du wurdest bei der &amp;quot;Luft- und Bodenverkehr AG&amp;quot; eingestellt! Deine erste Aufgabe als neuer Entwickler der firmeneigenen Software ist es, diese in einen wartbaren und besser verständlichen Zustand zu bringen. Dein Vorgänger, ein Java-Crack, der auf den Programmier-Editor HackPad schwört, musste aufgrund geringer Produktivität leider von dieser Aufgabe abgezogen werden. Nun darfst du dich mit Eclipse daran versuchen!&lt;br /&gt;
&lt;br /&gt;
* Importiere das gezippte Projekt in  [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2007/Verkehr.zip Verkehr.zip].&lt;br /&gt;
* Zu deinem Schrecken findest du ein Chaos vor. Bringe zuerst die Klassen in eine sinnvolle Ordnung, indem du sie per Drag-and-Drop in die richtigen Java-Packages einordnest.&lt;br /&gt;
* Dir wird aufgefallen sein, dass einige Klassen sehr seltsame und/oder falsch geschriebene Namen haben. Gib diesen Klassen bessere bzw. korrekte Namen. Benutze dafür die Refactoring-Funktion &amp;quot;Rename&amp;quot;.&lt;br /&gt;
* Beim Durchsehen der Klassen fällt dir folgendes auf:&lt;br /&gt;
** Die Klassen mit den (ehemaligen) Namen &amp;quot;Farrad&amp;quot; und &amp;quot;MeinAuto&amp;quot; enthalten beide Code, der die Anzahl der Räder zurückgibt. Benutze die Refactoring-Funktion &amp;quot;Pull Up&amp;quot;, so dass in einem Schritt der identische Code von &#039;&#039;anzahl()&#039;&#039; aus beiden Klassen entfernt und in die gemeinsame Mutterklasse verschoben wird. Führt Eclipse diese Aktion aus, ohne sich zu beschweren? Falls nicht, nicht nutze das von Eclipse erzeugte Preview um das Problem zu erkennen. Dann gehe zurück im Refactoring-Dialog und versuche das Problem zu beseitigen.&lt;br /&gt;
*** &#039;&#039;Tipp:&#039;&#039; Es hat mit dem Attribut &amp;quot;anzahlRaeder&amp;quot; zu tun!&lt;br /&gt;
** Alle Klassen, die ein konkretes Verkehrsmittel modellieren (Auto, Fahrrad, Flugzeug, ...), haben Funktionen um die Farbe zurückzuliefern. Verschiebe diese zusammen mit dem Attribut &amp;quot;farbe&amp;quot; in die gemeinsame Mutterklasse.&lt;br /&gt;
** In der (ehemaligen) Klasse &#039;&#039;MeinAuto&#039;&#039; kommt Code mehrfach vor. Benutze die Refactoring-Funktion &amp;quot;Extract Method&amp;quot; um dieses Problem zu beseitigen.&lt;br /&gt;
** Während du den soeben extrahierten Code durchliest, fällt dir auf, dass er viel verständlicher wäre, wenn die Variablen sprechende Namen hätten. Nutze die Refactoring-Funktion &amp;quot;Rename&amp;quot; um dies zu erreichen.&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Standardnormalverteilung (einfach)==&lt;br /&gt;
* Ihr könnt euch entscheiden, ob ihr diese Aufgabe oder die nächste Aufgabe machen wollt (oder beide!).&lt;br /&gt;
* Lade die Datei [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2006/StandardNormalVerteilung.java StandardNormalVerteilung.java] herunter und importiere sie in das Projekt &amp;quot;Einstein&amp;quot;.&lt;br /&gt;
* Setze einen Breakpoint in der main-Methode (siehe TODO) und starte das Programm im Debug-Modus.&lt;br /&gt;
* Benutze die &#039;&#039;&#039;Step into/Step over/Run to return/Resume&#039;&#039;&#039; Buttons im Debugger, um folgendes herauszufinden:&lt;br /&gt;
** &#039;&#039;Hinweis:&#039;&#039; Dies lässt sich alles in einem einzigen Programmdurchlauf herausfinden (du kannst aber natürlich trotzdem mehrere Anläufe nehmen bis du es raus hast)&lt;br /&gt;
** Im ersten Aufruf von &#039;&#039;normalVerteilung()&#039;&#039;:&lt;br /&gt;
*** Welcher Wert wird &#039;&#039;xi&#039;&#039;  im 2. Durchlauf der 1. Schleife zugewiesen?&lt;br /&gt;
*** Welcher Wert wird &#039;&#039;summe&#039;&#039; im 2. Durchlauf der 2. Schleife zugewiesen? &lt;br /&gt;
*** &#039;&#039;Tipp:&#039;&#039; Um letzteres herauszufinden kannst du &#039;&#039;zur Laufzeit des Programms&#039;&#039; noch einen Breakpoint einfügen!&lt;br /&gt;
** Im zweiten Aufruf von &#039;&#039;normalVerteilung()&#039;&#039;:&lt;br /&gt;
*** Welchen Wert hat &#039;&#039;summe&#039;&#039; am Ende des Methodenaufrufs? Ermittle dies &#039;&#039;&#039;innerhalb&#039;&#039;&#039; des Aufrufs von &#039;&#039;normalVerteilung()&#039;&#039;!&lt;br /&gt;
*** &#039;&#039;Tipp:&#039;&#039; Auch hier kannst du zur Laufzeit wieder Breakpoints einfügen und entfernen!&lt;br /&gt;
** Lass das Programm bis zum Ende laufen (es erscheint eine Ausgabe auf der Konsole).&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Micki Maus im Labyrinth (etwas schwerer)==&lt;br /&gt;
&lt;br /&gt;
* Ihr könnt euch entscheiden, ob ihr diese Aufgabe oder die vorige Aufgabe machen wollt (oder beide!).&lt;br /&gt;
* Bei dieser Aufgabe geht es auch darum, den Eclipse Debugger ein wenig kennenzulernen.&lt;br /&gt;
&lt;br /&gt;
* Ladet euch die Aufgabe unter [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2007/MickiMaus.jar MickiMaus.jar] herunter und importiert diese wie ihr es schon in Aufgabe 1 getan habt.&lt;br /&gt;
&lt;br /&gt;
Micki die Maus, befindet sich in einem Labyrinth und muss den Käse finden. Ihr sollt nun &lt;br /&gt;
ihren Weg mit Hilfe des Debuggers verfolgen. Setzt dazu einen Breakpoint auf den Methodenaufruf von Mouse.dfs(),&lt;br /&gt;
also in Zeile 30 und in Zeile 40 am &#039;return&#039;. Wechselt dann auf die Debuggeransicht und startet den Debugger, indem ihr auf das Käfer-Symbol&lt;br /&gt;
klickt. Um zu sehen, welchen Weg Micki wählt, schaut euch in der &amp;quot;Variables View&amp;quot; die Variable this.currentNode an. Micki sollte&lt;br /&gt;
auf den Koordinaten (1,1) stehen. Nun könnt ihr mit der Funktion &amp;quot;Resume&amp;quot; einen Schritt weitergehen. (Es ist normal,&lt;br /&gt;
dass sich Micki beim ersten Schritt nicht bewegt :-). Probiert auch mal die anderen Debugger-Funktionen&lt;br /&gt;
&amp;quot;Step into&amp;quot;, &amp;quot;Step over&amp;quot; und &amp;quot;Step return&amp;quot; aus. Am Ende sollte Micki den Käse gefunden haben.&lt;br /&gt;
&lt;br /&gt;
Das Labyrinth sieht folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
    01234567 &lt;br /&gt;
  0 ########&lt;br /&gt;
  1 #S#   ##&lt;br /&gt;
  2 # #K#  #&lt;br /&gt;
  3 # #### #&lt;br /&gt;
  4 # #### #&lt;br /&gt;
  5 #   X  #&lt;br /&gt;
  6 #### ###&lt;br /&gt;
  7 ########&lt;br /&gt;
&lt;br /&gt;
Die Stelle X ist beipielsweiße mit den Koordinaten (4,5) beschrieben. Micki befindet sich anfangs bei (1,1) also S und der Käse ist mit einem K markiert also (3,2). &lt;br /&gt;
&lt;br /&gt;
=== Wer macht was ===&lt;br /&gt;
Zur Erinnerung: Der Debugger bietet dir mehrere Möglichkeiten, dein Programm fortzusetzen:&lt;br /&gt;
* Terminate: Beendet das Programm sofort&lt;br /&gt;
* Step Into: Überspringt die Methode nicht (F5)&lt;br /&gt;
* Step Over: Überspringt die Beobachtung einer Methode (F6)&lt;br /&gt;
* Step Return: Führt die Methode bis zum Ende aus (F7)&lt;br /&gt;
* Resume: Setzt das Programm bis zum nächsten Haltepunkt fort (F8)&lt;br /&gt;
&lt;br /&gt;
= Zusatzaufgaben =&lt;br /&gt;
&lt;br /&gt;
== Refactoring II ==&lt;br /&gt;
&lt;br /&gt;
Verwende für diese Aufgabe das Projekt Verkehr von der ersten Refactoring Aufgabe. Im folgenden sind ein paar Vorschläge von Refactoring Aktionen, die du noch durchführen kannst:&lt;br /&gt;
* In der (ehemaligen) Klasse &#039;&#039;MyHupschrauber&#039;&#039;:&lt;br /&gt;
** Benenne die Instanzvariable &#039;&#039;x&#039;&#039;, &#039;&#039;y&#039;&#039;, &#039;&#039;z&#039;&#039; und &#039;&#039;blabla&#039;&#039; um, so dass sie aussagekräftige Namen haben. Ihre Bedeutung erfährst du aus den JavaDoc-Kommentaren&lt;br /&gt;
** Kapsle die (ehemaligen) Instanzariablen &#039;&#039;x&#039;&#039;, &#039;&#039;y&#039;&#039;, &#039;&#039;z&#039;&#039; und &#039;&#039;blabla&#039;&#039; (immer nur eine auf einmal). Was bewirkt dies? Dazu schaue dir in der Vorschau den Unterschied an. Warum könnte das sinnvoll sein?&lt;br /&gt;
** Wende die Refactoring-Funktion &amp;quot;Extract Interface&amp;quot; auf &#039;&#039;MyHupschrauber&#039;&#039; an. Was bewirkt sie und was bewirken die einzelnen Einstellungen?&lt;br /&gt;
* In der (ehemaligen) Klasse &#039;&#039;MyFlugzeug&#039;&#039;: Lies dir kurz den Code der Klasse durch (man beachte die Warnungen). Benutze die Refactoring-Funktion &#039;&#039;Infer Generic Type Arguments&#039;&#039; und schau was passiert.&lt;br /&gt;
&lt;br /&gt;
== Debugging II ==&lt;br /&gt;
* Lade dir die Datei [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2006/Calc.java Calc.java] runter. Erstelle ein Java-Projekt &amp;quot;Einstein&amp;quot; und importiere die Datei in das Projekt und führe es aus.&lt;br /&gt;
* Im Quellcode wurden zwei Stellen markiert, an denen du den aktuellen Wert einer Variable auslesen sollst. Dies lässt sich sehr einfach mit Hilfe von Breakpoints lösen.&lt;br /&gt;
**Hinweis: Der Quellcode darf zur Lösung der Aufgabe nicht verändert werden!&lt;br /&gt;
       &lt;br /&gt;
* Setze eine Watch Expression auf die Variable &#039;&#039;b&#039;&#039; und beobachte wie sie sich im Laufe des Programms verändert.&lt;br /&gt;
    &lt;br /&gt;
* Exportiere das Programm als Jar-Datei. Damit die Datei später über die Konsole ausgeführt werden kann, gehst du wie folgt vor:&lt;br /&gt;
** Der komplette Projektordner muss exportiert werden&lt;br /&gt;
** Wähle einen Namen für die Datei und einen Ordner in deinem Home Verzeichnis als Exportziel.&lt;br /&gt;
** Klicke zweimal auf &amp;quot;weiter&amp;quot; und wähle die Hauptklasse des Projekts aus.&lt;br /&gt;
** Um zu testen, ob du alles richtig gemacht hast, öffne eine Konsole, wechsle in den Ordner, in dem die Jar-Datei liegt und führe den Befehl &#039;&#039;java -jar filename.jar&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Eclipse Plug-Ins==&lt;br /&gt;
&lt;br /&gt;
* Installiere das Plug-In für das deutsche Sprachpaket ([http://docs.freitagsrunde.org/eclipsekurs/tutorials/translations_cs_net/ Anleitung]) und starte Eclipse neu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Eigenes Subversion-Repository im Fakultätsnetz ==&lt;br /&gt;
&lt;br /&gt;
Richte in deinem eigenen Verzeichnis im CS-Netz ein SVN-Repository ein und lade deine Gruppenmitglieder aus MPGI3 oder MPGI4 in eine eigene Gruppe ein. Setze für diese Gruppe die entsprechenden Rechte im Respository. Checke dieses Verzeichnis mit Subclipse aus und lade eure fertigen und angefangenen Hausaufgaben darin hoch.&lt;br /&gt;
&lt;br /&gt;
Hinweise zur Einrichtung findet ihr im Artikel [[Subversion im CS-Netz]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Eclipsekurs 2007|Zurück zu Eclipsekurs 2007]]&lt;br /&gt;
&lt;br /&gt;
PS: Wenn du Fehler in den Aufgaben findest, benutze den &amp;quot;Bearbeiten&amp;quot;-Link oben auf der Seite.&lt;/div&gt;</summary>
		<author><name>SebastianD</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Eclipsekurs_2007/Tag_2&amp;diff=10481</id>
		<title>Eclipsekurs 2007/Tag 2</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Eclipsekurs_2007/Tag_2&amp;diff=10481"/>
		<updated>2007-11-17T01:14:06Z</updated>

		<summary type="html">&lt;p&gt;SebastianD: /* Aufgabe: Importieren und Exportieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabe: Grundlagen ==&lt;br /&gt;
* Für die Leute, die noch ein wenig mehr mit den Grundlagen der Programmiersprache Java üben möchten, haben wir [[Javakurs2006/Uebungsaufgaben | hier]] viele kleine Aufgaben hinterlegt. &lt;br /&gt;
* Wer die Grundlagen der Java-Programmierung versteht und keine (bzw. sehr wenige) Probleme mit der Rennschneckenaufgabe von der letzten Eclipse-Übung hatte, kann ruhig den Schwerpunkt dieser Übungseinheit stärker auf Eclipse legen und folgende Aufgaben angehen:&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Importieren und Exportieren ==&lt;br /&gt;
&lt;br /&gt;
* Erstelle ein Java-Projekt &amp;quot;Matrix&amp;quot; und importiere die Datei [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2006/MatrixClass.zip MatrixClass.zip] als Archivdatei in das Projekt. Um zu sehen, dass die .class Dateien zum Ausführen eines Programms reichen, starte das Projekt wie gehabt.&lt;br /&gt;
** &#039;&#039;Tipp:&#039;&#039; Wechsle zur Navigator-Ansicht, um die importierten .class Dateien zu sehen.&lt;br /&gt;
** &#039;&#039;Hinweis:&#039;&#039; Die Hauptklasse des Projekts ist &#039;&#039;MatrixTest&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Nun importiere den Quellcode hierzu aus der Archivdatei [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2006/MatrixJava.zip MatrixJava.zip] in dein Projekt. Verändere die Klasse &#039;&#039;Matrix&#039;&#039; mittels Refactoring:&lt;br /&gt;
** Gib der Instanzvariable &#039;&#039;giveMeAName&#039;&#039; einen sinnvollen Namen.&lt;br /&gt;
&lt;br /&gt;
* Exportiere die beiden bearbeiteten Java-Dateien in eine Archivdatei und schicke sie an deinen Tischnachbarn, der freut sich bestimmt.&lt;br /&gt;
      &lt;br /&gt;
&#039;&#039;Tipp:&#039;&#039; Achte darauf, dass die Archivdatei das gesamte Projekt enthält, damit es von jemandem importiert werden kann, ohne dass vorher extra ein neues Projekt angelegt werden muss.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Subversion Repository ==&lt;br /&gt;
&lt;br /&gt;
Wir haben für euch ein Subversion-Repository im CS-Netz angelegt, das ihr für die folgenden Aufgaben nutzen könnt. Checkt euch ein eigenes Verzeichnis davon aus und fügt eure Lösungen dort hinzu.&lt;br /&gt;
&lt;br /&gt;
* Stellt sicher, dass euer Eclipse mit dem [http://subclipse.tigris.org/ Subclipse-Plugin] versehen ist. Wenn ihr Eclipse im CS-Netz nutzt, fügt einfach die &amp;quot;Repository Location&amp;quot; wie auf dem Beipackzettel beschrieben hinzu. Falls nicht, fügt es über &amp;quot;Help-&amp;gt;Software Updates-&amp;gt;Find and Install&amp;quot; hinzu.&lt;br /&gt;
* Erstellt ein neues Java-Projekt. Über Rechtsclick -&amp;gt; &amp;quot;Team -&amp;gt; Share Project&amp;quot; wählt ihr &amp;quot;SVN&amp;quot; aus.  &lt;br /&gt;
* Gebt als Repository Location folgendes an, clickt danach auf Next - nicht auf Finish:&lt;br /&gt;
 svn+ssh://NUTZERNAME@condesa.cs.tu-berlin.de/home/dyroff/repos/eclipsekurs/&lt;br /&gt;
* Im folgenden Dialog wählt bitte &amp;quot;Use specified folder name&amp;quot; aus und fragt euren Tutor nach einer Nummer für euer Projekt, die ihr allein haben könnt. Gebt als Folder Name dann euren Raum und eure Nummer ein, z.B. &amp;quot;2516/20&amp;quot; für Nummer 20 in Raum 2516.&lt;br /&gt;
* Gebt im folgenden Fenster euer CS-Passwort in das entsprechende Feld ein. Das darauf folgende Fenster &amp;quot;Enter SVN Author Name&amp;quot; bitte einfach bestätigen.&lt;br /&gt;
&lt;br /&gt;
* Folgt den weiteren Schritten und arbeitet eine der nächsten Aufgaben unten ab.&lt;br /&gt;
* Führt Commits nach einigen Änderungen durch!&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Refactoring ==&lt;br /&gt;
&lt;br /&gt;
Herzlichen Glückwunsch, du wurdest bei der &amp;quot;Luft- und Bodenverkehr AG&amp;quot; eingestellt! Deine erste Aufgabe als neuer Entwickler der firmeneigenen Software ist es, diese in einen wartbaren und besser verständlichen Zustand zu bringen. Dein Vorgänger, ein Java-Crack, der auf den Programmier-Editor HackPad schwört, musste aufgrund geringer Produktivität leider von dieser Aufgabe abgezogen werden. Nun darfst du dich mit Eclipse daran versuchen!&lt;br /&gt;
&lt;br /&gt;
* Importiere das gezippte Projekt in  [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2007/Verkehr.zip Verkehr.zip].&lt;br /&gt;
* Zu deinem Schrecken findest du ein Chaos vor. Bringe zuerst die Klassen in eine sinnvolle Ordnung, indem du sie per Drag-and-Drop in die richtigen Java-Packages einordnest.&lt;br /&gt;
* Dir wird aufgefallen sein, dass einige Klassen sehr seltsame und/oder falsch geschriebene Namen haben. Gib diesen Klassen bessere bzw. korrekte Namen. Benutze dafür die Refactoring-Funktion &amp;quot;Rename&amp;quot;.&lt;br /&gt;
* Beim Durchsehen der Klassen fällt dir folgendes auf:&lt;br /&gt;
** Die Klassen mit den (ehemaligen) Namen &amp;quot;Farrad&amp;quot; und &amp;quot;MeinAuto&amp;quot; enthalten beide Code, der die Anzahl der Räder zurückgibt. Benutze die Refactoring-Funktion &amp;quot;Pull Up&amp;quot;, so dass in einem Schritt der identische Code von &#039;&#039;anzahl()&#039;&#039; aus beiden Klassen entfernt und in die gemeinsame Mutterklasse verschoben wird. Führt Eclipse diese Aktion aus, ohne sich zu beschweren? Falls nicht, nicht nutze das von Eclipse erzeugte Preview um das Problem zu erkennen. Dann gehe zurück im Refactoring-Dialog und versuche das Problem zu beseitigen.&lt;br /&gt;
*** &#039;&#039;Tipp:&#039;&#039; Es hat mit dem Attribut &amp;quot;anzahlRaeder&amp;quot; zu tun!&lt;br /&gt;
** Alle Klassen, die ein konkretes Verkehrsmittel modellieren (Auto, Fahrrad, Flugzeug, ...), haben Funktionen um die Farbe zurückzuliefern. Verschiebe diese zusammen mit dem Attribut &amp;quot;farbe&amp;quot; in die gemeinsame Mutterklasse.&lt;br /&gt;
** In der (ehemaligen) Klasse &#039;&#039;MeinAuto&#039;&#039; kommt Code mehrfach vor. Benutze die Refactoring-Funktion &amp;quot;Extract Method&amp;quot; um dieses Problem zu beseitigen.&lt;br /&gt;
** Während du den soeben extrahierten Code durchliest, fällt dir auf, dass er viel verständlicher wäre, wenn die Variablen sprechende Namen hätten. Nutze die Refactoring-Funktion &amp;quot;Rename&amp;quot; um dies zu erreichen.&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Standardnormalverteilung (einfach)==&lt;br /&gt;
* Ihr könnt euch entscheiden, ob ihr diese Aufgabe oder die nächste Aufgabe machen wollt (oder beide!).&lt;br /&gt;
* Lade die Datei [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2006/StandardNormalVerteilung.java StandardNormalVerteilung.java] herunter und importiere sie in das Projekt &amp;quot;Einstein&amp;quot;.&lt;br /&gt;
* Setze einen Breakpoint in der main-Methode (siehe TODO) und starte das Programm im Debug-Modus.&lt;br /&gt;
* Benutze die &#039;&#039;&#039;Step into/Step over/Run to return/Resume&#039;&#039;&#039; Buttons im Debugger, um folgendes herauszufinden:&lt;br /&gt;
** &#039;&#039;Hinweis:&#039;&#039; Dies lässt sich alles in einem einzigen Programmdurchlauf herausfinden (du kannst aber natürlich trotzdem mehrere Anläufe nehmen bis du es raus hast)&lt;br /&gt;
** Im ersten Aufruf von &#039;&#039;normalVerteilung()&#039;&#039;:&lt;br /&gt;
*** Welcher Wert wird &#039;&#039;xi&#039;&#039;  im 2. Durchlauf der 1. Schleife zugewiesen?&lt;br /&gt;
*** Welcher Wert wird &#039;&#039;summe&#039;&#039; im 2. Durchlauf der 2. Schleife zugewiesen? &lt;br /&gt;
*** &#039;&#039;Tipp:&#039;&#039; Um letzteres herauszufinden kannst du &#039;&#039;zur Laufzeit des Programms&#039;&#039; noch einen Breakpoint einfügen!&lt;br /&gt;
** Im zweiten Aufruf von &#039;&#039;normalVerteilung()&#039;&#039;:&lt;br /&gt;
*** Welchen Wert hat &#039;&#039;summe&#039;&#039; am Ende des Methodenaufrufs? Ermittle dies &#039;&#039;&#039;innerhalb&#039;&#039;&#039; des Aufrufs von &#039;&#039;normalVerteilung()&#039;&#039;!&lt;br /&gt;
*** &#039;&#039;Tipp:&#039;&#039; Auch hier kannst du zur Laufzeit wieder Breakpoints einfügen und entfernen!&lt;br /&gt;
** Lass das Programm bis zum Ende laufen (es erscheint eine Ausgabe auf der Konsole).&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Micki Maus im Labyrinth (etwas schwerer)==&lt;br /&gt;
&lt;br /&gt;
* Ihr könnt euch entscheiden, ob ihr diese Aufgabe oder die vorige Aufgabe machen wollt (oder beide!).&lt;br /&gt;
* Bei dieser Aufgabe geht es auch darum, den Eclipse Debugger ein wenig kennenzulernen.&lt;br /&gt;
&lt;br /&gt;
* Ladet euch die Aufgabe unter [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2007/MickiMaus.jar MickiMaus.jar] herunter und importiert diese wie ihr es schon in Aufgabe 1 getan habt.&lt;br /&gt;
&lt;br /&gt;
Micki die Maus, befindet sich in einem Labyrinth und muss den Käse finden. Ihr sollt nun &lt;br /&gt;
ihren Weg mit Hilfe des Debuggers verfolgen. Setzt dazu einen Breakpoint auf den Methodenaufruf von Mouse.dfs(),&lt;br /&gt;
also in Zeile 30 und in Zeile 40 am &#039;return&#039;. Wechselt dann auf die Debuggeransicht und startet den Debugger, indem ihr auf das Käfer-Symbol&lt;br /&gt;
klickt. Um zu sehen, welchen Weg Micki wählt, schaut euch in der &amp;quot;Variables View&amp;quot; die Variable this.currentNode an. Micki sollte&lt;br /&gt;
auf den Koordinaten (1,1) stehen. Nun könnt ihr mit der Funktion &amp;quot;Resume&amp;quot; einen Schritt weitergehen. (Es ist normal,&lt;br /&gt;
dass sich Micki beim ersten Schritt nicht bewegt :-). Probiert auch mal die anderen Debugger-Funktionen&lt;br /&gt;
&amp;quot;Step into&amp;quot;, &amp;quot;Step over&amp;quot; und &amp;quot;Step return&amp;quot; aus. Am Ende sollte Micki den Käse gefunden haben.&lt;br /&gt;
&lt;br /&gt;
=== Wer macht was ===&lt;br /&gt;
Zur Erinnerung: Der Debugger bietet dir mehrere Möglichkeiten, dein Programm fortzusetzen:&lt;br /&gt;
* Terminate: Beendet das Programm sofort&lt;br /&gt;
* Step Into: Überspringt die Methode nicht (F5)&lt;br /&gt;
* Step Over: Überspringt die Beobachtung einer Methode (F6)&lt;br /&gt;
* Step Return: Führt die Methode bis zum Ende aus (F7)&lt;br /&gt;
* Resume: Setzt das Programm bis zum nächsten Haltepunkt fort (F8)&lt;br /&gt;
&lt;br /&gt;
= Zusatzaufgaben =&lt;br /&gt;
&lt;br /&gt;
== Refactoring Ia ==&lt;br /&gt;
&lt;br /&gt;
Verwende für die folgenden Aufgaben die Matrixklasse vom Anfang:&lt;br /&gt;
** Kapsle die Instanzariablen &#039;&#039;n&#039;&#039; und &#039;&#039;m&#039;&#039;:&lt;br /&gt;
*** Wähle für &#039;&#039;n&#039;&#039; mit und für &#039;&#039;m&#039;&#039; ohne &amp;quot;Feldverweise beibehalten&amp;quot; aus und schaue dir in der Vorschau den Unterschied an.&lt;br /&gt;
*** Warum ist es in diesem Fall besser, &#039;&#039;n&#039;&#039; und &#039;&#039;m&#039;&#039; auf &#039;&#039;private&#039;&#039; zu setzen? &lt;br /&gt;
*** Ist es hier sinnvoll, für &#039;&#039;n&#039;&#039; und &#039;&#039;m&#039;&#039; getter- und/oder setter-Methoden bereit zu stellen?&lt;br /&gt;
** Gib den Methoden &#039;&#039;multipliesMatrixWithScalar()&#039;&#039; und &#039;&#039;multipliesMatrixWithMatrix()&#039;&#039; den gleichen Methodennamen. Der neue Name sollte sinvoll gewählt werden, aber dennoch nicht eine halbe Zeile lang sein. Warum kann man in diesem Fall beiden Methoden den gleichen Namen geben?&lt;br /&gt;
*** Tipp: Bei &#039;&#039;multipliesMatrixWithMatrix()&#039;&#039; und &#039;&#039;add()&#039;&#039; wäre dies nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debugging II ==&lt;br /&gt;
* Lade dir die Datei [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2006/Calc.java Calc.java] runter. Erstelle ein Java-Projekt &amp;quot;Einstein&amp;quot; und importiere die Datei in das Projekt und führe es aus.&lt;br /&gt;
* Im Quellcode wurden zwei Stellen markiert, an denen du den aktuellen Wert einer Variable auslesen sollst. Dies lässt sich sehr einfach mit Hilfe von Breakpoints lösen.&lt;br /&gt;
**Hinweis: Der Quellcode darf zur Lösung der Aufgabe nicht verändert werden!&lt;br /&gt;
       &lt;br /&gt;
* Setze eine Watch Expression auf die Variable &#039;&#039;b&#039;&#039; und beobachte wie sie sich im Laufe des Programms verändert.&lt;br /&gt;
    &lt;br /&gt;
* Exportiere das Programm als Jar-Datei. Damit die Datei später über die Konsole ausgeführt werden kann, gehst du wie folgt vor:&lt;br /&gt;
** Der komplette Projektordner muss exportiert werden&lt;br /&gt;
** Wähle einen Namen für die Datei und einen Ordner in deinem Home Verzeichnis als Exportziel.&lt;br /&gt;
** Klicke zweimal auf &amp;quot;weiter&amp;quot; und wähle die Hauptklasse des Projekts aus.&lt;br /&gt;
** Um zu testen, ob du alles richtig gemacht hast, öffne eine Konsole, wechsle in den Ordner, in dem die Jar-Datei liegt und führe den Befehl &#039;&#039;java -jar filename.jar&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Eclipse Plug-Ins==&lt;br /&gt;
&lt;br /&gt;
* Installiere das Plug-In für das deutsche Sprachpaket ([http://docs.freitagsrunde.org/eclipsekurs/tutorials/translations_cs_net/ Anleitung]) und starte Eclipse neu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Eigenes Subversion-Repository im Fakultätsnetz ==&lt;br /&gt;
&lt;br /&gt;
Richte in deinem eigenen Verzeichnis im CS-Netz ein SVN-Repository ein und lade deine Gruppenmitglieder aus MPGI3 oder MPGI4 in eine eigene Gruppe ein. Setze für diese Gruppe die entsprechenden Rechte im Respository. Checke dieses Verzeichnis mit Subclipse aus und lade eure fertigen und angefangenen Hausaufgaben darin hoch.&lt;br /&gt;
&lt;br /&gt;
Hinweise zur Einrichtung findet ihr im Artikel [[Subversion im CS-Netz]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Eclipsekurs 2007|Zurück zu Eclipsekurs 2007]]&lt;br /&gt;
&lt;br /&gt;
PS: Wenn du Fehler in den Aufgaben findest, benutze den &amp;quot;Bearbeiten&amp;quot;-Link oben auf der Seite.&lt;/div&gt;</summary>
		<author><name>SebastianD</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Eclipsekurs_2007/Tag_2&amp;diff=10480</id>
		<title>Eclipsekurs 2007/Tag 2</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Eclipsekurs_2007/Tag_2&amp;diff=10480"/>
		<updated>2007-11-17T00:08:57Z</updated>

		<summary type="html">&lt;p&gt;SebastianD: MickiMaus hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Aufgabe: Grundlagen ==&lt;br /&gt;
* Für die Leute, die noch ein wenig mehr mit den Grundlagen der Programmiersprache Java üben möchten, haben wir [[Javakurs2006/Uebungsaufgaben | hier]] viele kleine Aufgaben hinterlegt. &lt;br /&gt;
* Wer die Grundlagen der Java-Programmierung versteht und keine (bzw. sehr wenige) Probleme mit der Rennschneckenaufgabe von der letzten Eclipse-Übung hatte, kann ruhig den Schwerpunkt dieser Übungseinheit stärker auf Eclipse legen und folgende Aufgaben angehen:&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Importieren und Exportieren ==&lt;br /&gt;
&lt;br /&gt;
* Erstelle ein Java-Projekt &amp;quot;Matrix&amp;quot; und importiere die Datei [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2006/MatrixClass.zip MatrixClass.zip] als Archivdatei in das Projekt. Um zu sehen, dass die .class Dateien zum Ausführen eines Programms reichen, starte das Projekt wie gehabt.&lt;br /&gt;
** &#039;&#039;Tipp:&#039;&#039; Wechsle zur Navigator-Ansicht, um die importierten .class Dateien zu sehen.&lt;br /&gt;
** &#039;&#039;Hinweis:&#039;&#039; Die Hauptklasse des Projekts ist &#039;&#039;MatrixTest&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* Nun importiere den Quellcode hierzu aus der Archivdatei [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2006/MatrixJava.zip MatrixJava.zip] in dein Projekt. Verändere die Klasse &#039;&#039;Matrix&#039;&#039; mittels Refactoring:&lt;br /&gt;
** Gib der Instanzvariable &#039;&#039;giveMeAName&#039;&#039; einen sinnvollen Namen.&lt;br /&gt;
&lt;br /&gt;
* Exportiere die beiden bearbeiteten Java-Dateien in eine Archivdatei und schicke sie an deinen Tischnachbarn, der freut sich bestimmt.&lt;br /&gt;
      &lt;br /&gt;
&#039;&#039;Tipp:&#039;&#039; Achte darauf, dass die Archivdatei das gesamte Projekt enthält, damit es von jemandem importiert werden kann, ohne dass vorher extra ein neues Projekt angelegt werden muss.&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Refactoring ==&lt;br /&gt;
&lt;br /&gt;
Herzlichen Glückwunsch, du wurdest bei der &amp;quot;Luft- und Bodenverkehr AG&amp;quot; eingestellt! Deine erste Aufgabe als neuer Entwickler der firmeneigenen Software ist es, diese in einen wartbaren und besser verständlichen Zustand zu bringen. Dein Vorgänger, ein Java-Crack, der auf den Programmier-Editor HackPad schwört, musste aufgrund geringer Produktivität leider von dieser Aufgabe abgezogen werden. Nun darfst du dich mit Eclipse daran versuchen!&lt;br /&gt;
&lt;br /&gt;
* Importiere das gezippte Projekt in  [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2007/Verkehr.zip Verkehr.zip].&lt;br /&gt;
* Zu deinem Schrecken findest du ein Chaos vor. Bringe zuerst die Klassen in eine sinnvolle Ordnung, indem du sie per Drag-and-Drop in die richtigen Java-Packages einordnest.&lt;br /&gt;
* Dir wird aufgefallen sein, dass einige Klassen sehr seltsame und/oder falsch geschriebene Namen haben. Gib diesen Klassen bessere bzw. korrekte Namen. Benutze dafür die Refactoring-Funktion &amp;quot;Rename&amp;quot;.&lt;br /&gt;
* Beim Durchsehen der Klassen fällt dir folgendes auf:&lt;br /&gt;
** Die Klassen mit den (ehemaligen) Namen &amp;quot;Farrad&amp;quot; und &amp;quot;MeinAuto&amp;quot; enthalten beide Code, der die Anzahl der Räder zurückgibt. Benutze die Refactoring-Funktion &amp;quot;Pull Up&amp;quot;, so dass in einem Schritt der identische Code von &#039;&#039;anzahl()&#039;&#039; aus beiden Klassen entfernt und in die gemeinsame Mutterklasse verschoben wird. Führt Eclipse diese Aktion aus, ohne sich zu beschweren? Falls nicht, nicht nutze das von Eclipse erzeugte Preview um das Problem zu erkennen. Dann gehe zurück im Refactoring-Dialog und versuche das Problem zu beseitigen.&lt;br /&gt;
*** &#039;&#039;Tipp:&#039;&#039; Es hat mit dem Attribut &amp;quot;anzahlRaeder&amp;quot; zu tun!&lt;br /&gt;
** Alle Klassen, die ein konkretes Verkehrsmittel modellieren (Auto, Fahrrad, Flugzeug, ...), haben Funktionen um die Farbe zurückzuliefern. Verschiebe diese zusammen mit dem Attribut &amp;quot;farbe&amp;quot; in die gemeinsame Mutterklasse.&lt;br /&gt;
** In der (ehemaligen) Klasse &#039;&#039;MeinAuto&#039;&#039; kommt Code mehrfach vor. Benutze die Refactoring-Funktion &amp;quot;Extract Method&amp;quot; um dieses Problem zu beseitigen.&lt;br /&gt;
** Während du den soeben extrahierten Code durchliest, fällt dir auf, dass er viel verständlicher wäre, wenn die Variablen sprechende Namen hätten. Nutze die Refactoring-Funktion &amp;quot;Rename&amp;quot; um dies zu erreichen.&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Standardnormalverteilung (einfach)==&lt;br /&gt;
* Ihr könnt euch entscheiden, ob ihr diese Aufgabe oder die nächste Aufgabe machen wollt (oder beide!).&lt;br /&gt;
* Lade die Datei [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2006/StandardNormalVerteilung.java StandardNormalVerteilung.java] herunter und importiere sie in das Projekt &amp;quot;Einstein&amp;quot;.&lt;br /&gt;
* Setze einen Breakpoint in der main-Methode (siehe TODO) und starte das Programm im Debug-Modus.&lt;br /&gt;
* Benutze die &#039;&#039;&#039;Step into/Step over/Run to return/Resume&#039;&#039;&#039; Buttons im Debugger, um folgendes herauszufinden:&lt;br /&gt;
** &#039;&#039;Hinweis:&#039;&#039; Dies lässt sich alles in einem einzigen Programmdurchlauf herausfinden (du kannst aber natürlich trotzdem mehrere Anläufe nehmen bis du es raus hast)&lt;br /&gt;
** Im ersten Aufruf von &#039;&#039;normalVerteilung()&#039;&#039;:&lt;br /&gt;
*** Welcher Wert wird &#039;&#039;xi&#039;&#039;  im 2. Durchlauf der 1. Schleife zugewiesen?&lt;br /&gt;
*** Welcher Wert wird &#039;&#039;summe&#039;&#039; im 2. Durchlauf der 2. Schleife zugewiesen? &lt;br /&gt;
*** &#039;&#039;Tipp:&#039;&#039; Um letzteres herauszufinden kannst du &#039;&#039;zur Laufzeit des Programms&#039;&#039; noch einen Breakpoint einfügen!&lt;br /&gt;
** Im zweiten Aufruf von &#039;&#039;normalVerteilung()&#039;&#039;:&lt;br /&gt;
*** Welchen Wert hat &#039;&#039;summe&#039;&#039; am Ende des Methodenaufrufs? Ermittle dies &#039;&#039;&#039;innerhalb&#039;&#039;&#039; des Aufrufs von &#039;&#039;normalVerteilung()&#039;&#039;!&lt;br /&gt;
*** &#039;&#039;Tipp:&#039;&#039; Auch hier kannst du zur Laufzeit wieder Breakpoints einfügen und entfernen!&lt;br /&gt;
** Lass das Programm bis zum Ende laufen (es erscheint eine Ausgabe auf der Konsole).&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Micki Maus im Labyrinth (etwas schwerer)==&lt;br /&gt;
&lt;br /&gt;
* Ihr könnt euch entscheiden, ob ihr diese Aufgabe oder die vorige Aufgabe machen wollt (oder beide!).&lt;br /&gt;
* Bei dieser Aufgabe geht es auch darum, den Eclipse Debugger ein wenig kennenzulernen.&lt;br /&gt;
&lt;br /&gt;
* Ladet euch die Aufgabe unter [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2007/MickiMaus.jar MickiMaus.jar] herunter und importiert diese wie ihr es schon in Aufgabe 1 getan habt.&lt;br /&gt;
&lt;br /&gt;
Micki die Maus, befindet sich in einem Labyrinth und muss den Käse finden. Ihr sollt nun &lt;br /&gt;
ihren Weg mit Hilfe des Debuggers verfolgen. Setzt dazu einen Breakpoint auf den Methodenaufruf von Mouse.dfs(),&lt;br /&gt;
also in Zeile 30 und in Zeile 40 am &#039;return&#039;. Wechselt dann auf die Debuggeransicht und startet den Debugger, indem ihr auf das Käfer-Symbol&lt;br /&gt;
klickt. Um zu sehen, welchen Weg Micki wählt, schaut euch in der &amp;quot;Variables View&amp;quot; die Variable this.currentNode an. Micki sollte&lt;br /&gt;
auf den Koordinaten (1,1) stehen. Nun könnt ihr mit der Funktion &amp;quot;Resume&amp;quot; einen Schritt weitergehen. (Es ist normal,&lt;br /&gt;
dass sich Micki beim ersten Schritt nicht bewegt :-). Probiert auch mal die anderen Debugger-Funktionen&lt;br /&gt;
&amp;quot;Step into&amp;quot;, &amp;quot;Step over&amp;quot; und &amp;quot;Step return&amp;quot; aus. Am Ende sollte Micki den Käse gefunden haben.&lt;br /&gt;
&lt;br /&gt;
=== Wer macht was ===&lt;br /&gt;
Zur Erinnerung: Der Debugger bietet dir mehrere Möglichkeiten, dein Programm fortzusetzen:&lt;br /&gt;
* Terminate: Beendet das Programm sofort&lt;br /&gt;
* Step Into: Überspringt die Methode nicht (F5)&lt;br /&gt;
* Step Over: Überspringt die Beobachtung einer Methode (F6)&lt;br /&gt;
* Step Return: Führt die Methode bis zum Ende aus (F7)&lt;br /&gt;
* Resume: Setzt das Programm bis zum nächsten Haltepunkt fort (F8)&lt;br /&gt;
&lt;br /&gt;
= Zusatzaufgaben =&lt;br /&gt;
&lt;br /&gt;
== Refactoring Ia ==&lt;br /&gt;
&lt;br /&gt;
Verwende für die folgenden Aufgaben die Matrixklasse vom Anfang:&lt;br /&gt;
** Kapsle die Instanzariablen &#039;&#039;n&#039;&#039; und &#039;&#039;m&#039;&#039;:&lt;br /&gt;
*** Wähle für &#039;&#039;n&#039;&#039; mit und für &#039;&#039;m&#039;&#039; ohne &amp;quot;Feldverweise beibehalten&amp;quot; aus und schaue dir in der Vorschau den Unterschied an.&lt;br /&gt;
*** Warum ist es in diesem Fall besser, &#039;&#039;n&#039;&#039; und &#039;&#039;m&#039;&#039; auf &#039;&#039;private&#039;&#039; zu setzen? &lt;br /&gt;
*** Ist es hier sinnvoll, für &#039;&#039;n&#039;&#039; und &#039;&#039;m&#039;&#039; getter- und/oder setter-Methoden bereit zu stellen?&lt;br /&gt;
** Gib den Methoden &#039;&#039;multipliesMatrixWithScalar()&#039;&#039; und &#039;&#039;multipliesMatrixWithMatrix()&#039;&#039; den gleichen Methodennamen. Der neue Name sollte sinvoll gewählt werden, aber dennoch nicht eine halbe Zeile lang sein. Warum kann man in diesem Fall beiden Methoden den gleichen Namen geben?&lt;br /&gt;
*** Tipp: Bei &#039;&#039;multipliesMatrixWithMatrix()&#039;&#039; und &#039;&#039;add()&#039;&#039; wäre dies nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debugging II ==&lt;br /&gt;
* Lade dir die Datei [http://docs.freitagsrunde.org/Veranstaltungen/eclipsekurs_2006/Calc.java Calc.java] runter. Erstelle ein Java-Projekt &amp;quot;Einstein&amp;quot; und importiere die Datei in das Projekt und führe es aus.&lt;br /&gt;
* Im Quellcode wurden zwei Stellen markiert, an denen du den aktuellen Wert einer Variable auslesen sollst. Dies lässt sich sehr einfach mit Hilfe von Breakpoints lösen.&lt;br /&gt;
**Hinweis: Der Quellcode darf zur Lösung der Aufgabe nicht verändert werden!&lt;br /&gt;
       &lt;br /&gt;
* Setze eine Watch Expression auf die Variable &#039;&#039;b&#039;&#039; und beobachte wie sie sich im Laufe des Programms verändert.&lt;br /&gt;
    &lt;br /&gt;
* Exportiere das Programm als Jar-Datei. Damit die Datei später über die Konsole ausgeführt werden kann, gehst du wie folgt vor:&lt;br /&gt;
** Der komplette Projektordner muss exportiert werden&lt;br /&gt;
** Wähle einen Namen für die Datei und einen Ordner in deinem Home Verzeichnis als Exportziel.&lt;br /&gt;
** Klicke zweimal auf &amp;quot;weiter&amp;quot; und wähle die Hauptklasse des Projekts aus.&lt;br /&gt;
** Um zu testen, ob du alles richtig gemacht hast, öffne eine Konsole, wechsle in den Ordner, in dem die Jar-Datei liegt und führe den Befehl &#039;&#039;java -jar filename.jar&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Aufgabe: Eclipse Plug-Ins==&lt;br /&gt;
&lt;br /&gt;
* Installiere das Plug-In für das deutsche Sprachpaket ([http://docs.freitagsrunde.org/eclipsekurs/tutorials/translations_cs_net/ Anleitung]) und starte Eclipse neu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Eigenes Subversion-Repository im Fakultätsnetz ==&lt;br /&gt;
&lt;br /&gt;
Richte in deinem eigenen Verzeichnis im CS-Netz ein SVN-Repository ein und lade deine Gruppenmitglieder aus MPGI3 oder MPGI4 in eine eigene Gruppe ein. Setze für diese Gruppe die entsprechenden Rechte im Respository. Checke dieses Verzeichnis mit Subclipse aus und lade eure fertigen und angefangenen Hausaufgaben darin hoch.&lt;br /&gt;
&lt;br /&gt;
Hinweise zur Einrichtung findet ihr im Artikel [[Subversion im CS-Netz]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Eclipsekurs 2007|Zurück zu Eclipsekurs 2007]]&lt;br /&gt;
&lt;br /&gt;
PS: Wenn du Fehler in den Aufgaben findest, benutze den &amp;quot;Bearbeiten&amp;quot;-Link oben auf der Seite.&lt;/div&gt;</summary>
		<author><name>SebastianD</name></author>
	</entry>
</feed>