{"id":3819,"date":"2012-06-17T17:04:21","date_gmt":"2012-06-17T15:04:21","guid":{"rendered":"https:\/\/www.herr-rau.de\/wordpress\/?p=3819"},"modified":"2015-08-09T21:05:57","modified_gmt":"2015-08-09T19:05:57","slug":"subversion-mit-bluej-mit-beispielprojekt-sequenzdiagramm","status":"publish","type":"post","link":"https:\/\/www.herr-rau.de\/wordpress\/2012\/06\/subversion-mit-bluej-mit-beispielprojekt-sequenzdiagramm.htm","title":{"rendered":"Subversion mit BlueJ (mit Beispielprojekt Sequenzdiagramm)"},"content":{"rendered":"<div style='text-align:right;'><small>(<a href='https:\/\/www.herr-rau.de\/wordpress\/2012\/06\/subversion-mit-bluej-mit-beispielprojekt-sequenzdiagramm.htm#comments'>5 Kommentare.<\/a>)<\/small> <\/div><p>(Die gute Nachricht f\u00fcr Informatiklehrer vorweg: Wer BlueJ zu Hause installiert hat, kann das gleich ausprobieren, ohne irgendetwas installieren zu m\u00fcssen.)<\/p>\n<p><em>Die schlechte Nachricht 2015: Google stellt das Codehosting ein, so dass die Links unten nicht mehr funktionieren. Eine Alternative ist sourceforge.net, wo allerdings &#8211; anders als bei Google &#8211; kaum ein Sch\u00fcler bereits einen Account haben d\u00fcrfte.<br \/>\nDie Adresse f\u00fcr das Beispielprojekt lautet jetzt:<br \/>\n<code>svn.code.sf.net\/p\/informatik\/code\/trunk\/<\/code><br \/>\nDas einfach in BlueJ beim Auschecken als Adresse angeben, Pfad und Passwort leer lassen, Benutzername ist egal &#8211; den will wohl nur BlueJ haben, falls \u00fcberhaupt. Dann kann man BlueJ alle unter dieser Adresse vorhanden Projekte anzeigen lassen.<\/em><\/p>\n<h3>Subversion mit BlueJ.<\/h3>\n<p>Ist leider nicht so subversiv, wie es sich anh\u00f6rt. <strong>BlueJ:<\/strong> Das ist eine Entwicklungsumgebung f\u00fcr Java-Programme, die speziell f\u00fcr Lernende entwickelt wurde und eines der wichtigsten Werkzeuge im Informatikunterricht der 10. Klassen darstellt. <strong>Subversion:<\/strong> Das ist ein Programm, das es erleichtert, in einem Team gleichzeitig an einem Softwareprojekt zu arbeiten. Ein Softwareprojekt besteht normalerweise aus vielen verschiedenen Dateien, und jedes Teammitglied werkelt an seinen zugeteilten Dateien herum, muss aber gleichzeitig die Dateien der anderen benutzen. Dabei entsteht leicht ein Durcheinander, wenn es darum geht, die jeweils aktuellsten einzelnen Dateien von den verschiedenen Mitgliedern zu holen und zu einem gemeinsamen Projekt zusammenzusetzen. Au\u00dferdem will man vielleicht noch einmal auf eine alte Version einer Datei zur\u00fcckgreifen k\u00f6nnen. <\/p>\n<p>Subversion ist ein Programm, das auf einem Server l\u00e4uft, und auf diesem Server liegen dann auch die Dateien des Softwareprojekts. Jedes Teammitglied l\u00e4dt sich mehr oder weniger automatisch alle zum Projekt geh\u00f6renden Dateien in der jeweils aktuellsten Fassung von diesem Server auf den eigenen Rechner herunter, bastelt an einigen Dateien davon herum, und l\u00e4dt danach mehr oder weniger automatisch die von ihm ge\u00e4nderten Dateien wieder auf den Server hoch. So hat jedes Teammitglied jederzeit Zugang zu aktuellen Fassungen aller Dateien. Wenn zwei Mitglieder gleichzeitig an einer Datei gearbeitet haben, dann unterst\u00fctzt Subversion das Team so weit wie m\u00f6glich dabei, aus den beiden konkurrierenden Version eine neue, gemeinsame Datei zu erstellen, die alle bisherigen \u00c4nderungen enth\u00e4lt. Das kann man bei Programmierprojekten in der 10. und 11. Jahrgangsstufe brauchen.<\/p>\n<p>Das <a href=\"http:\/\/www.bluej.org\/doc\/teamwork-tutorial-2.0.pdf\">BlueJ Teamwork Tutorial<\/a> (pdf) erkl\u00e4rt, wie man BlueJ zusammen mit Subversion einsetzt; das <a href=\"http:\/\/www.bluej.org\/doc\/repository-setup-2.0.pdf\">BlueJ Teamwork Repository Configuration<\/a> (pdf) erkl\u00e4rt, wie man Subversion so konfiguriert, dass es mit BlueJ zusammenarbeiten kann. (Unterst\u00fctzt wird von BlueJ das veraltete CVS, aber nicht das j\u00fcngere Git, die \u00e4hnliche Aufgaben wie Subversion haben.) Beide Dateien gibt es auf den <a href=\"http:\/\/www.bluej.org\/doc\/documentation.html\">BlueJ-Dokumentationsseiten<\/a>.<\/p>\n<p>Hier kommt aber die Kurzfassung:<\/p>\n<h4>I. Einrichten eines Subversion-Servers<\/h4>\n<p>Habe ich mir geschenkt. Stattdessen habe ich ein Projekt bei Google Code er\u00f6ffnet. Google Code ist ein Dienst von Google, mit dem man Softwareprojekte kostenlos verwalten kann. F\u00fcr jedes Projekt gibt es ein Wiki, Downloadm\u00f6glichkeit, Issue Tracking, und eben auch einen Subversion- oder Git-Server f\u00fcr die einzelnen Dateien. Zwei Nachteile: Alle Teammitglieder m\u00fcssen ein Google-Konto haben, und das Projekt muss open source sein. Es kann sein, dass Sch\u00fcler das nicht m\u00f6chten; es kann auch sein, dass man Material bei dem Projekt verwenden m\u00f6chte, zu dem man keine Ver\u00f6ffentlichungsrechte hat, etwa weil es aus einem Schulbuch stammt. Dann geht Google Code nicht und muss anderswoher an einen Subevrsion-Server kommen.<br \/>\nF\u00fcr mein Projekt gilt das nicht. Es ist auch kein gro\u00dfes oder wichtiges Projekt; weiter unten im Blog beschreibe ich es &#8211; ein BlueJ-Beispielprojekt f\u00fcr die 10. Jahrgangsstufe.<\/p>\n<p>Die Projektseite ist hier: <a href=\"http:\/\/code.google.com\/p\/sequenzdiagramme-mit-bluej\/\">http:\/\/code.google.com\/p\/sequenzdiagramme-mit-bluej\/<\/a><\/p>\n<h4>II. Einrichten von BlueJ<\/h4>\n<ol>\n<li>Standardm\u00e4\u00dfig sind die Teamwork-Schaltfl\u00e4chen ausgeblendet, deshalb erst einschalten:<br \/>\n<strong>Tools\/Preferences\/Miscellaneous\/Show teamwork controls.<\/strong>\n<\/li>\n<li>Zu Subversion hochladen: Tools\/Team\/Share this project. Muss einer einmal am Anfang machen, wenn man nicht auf anderem Weg die Dateien zu Subversion \u00fcbertragen hat. Zum Testen diesen Schritt weglassen.\n<\/li>\n<li>Mit Subversion verbinden: M\u00fcssen alle Teammitglieder einmal machen. Danach wird man aufgefordert einen Speicherort f\u00fcr das Projekt zu erstellen. Das aktuelle Projekt bleibt unber\u00fccksichtigt, es wird auf jeden Fall ein neuer Ordner mit einem neuen Projekt angelegt. Geht so:<br \/>\n<strong>Tools\/Team\/Checkout Project&#8230;<\/strong> <\/p>\n<p>Schritt 1: Daten eingeben.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/subversion_bluej_1.png\" alt=\"\" title=\"subversion_bluej_1\" width=\"336\" height=\"405\" class=\"alignnone size-full wp-image-3828\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/subversion_bluej_1.png 336w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/subversion_bluej_1-124x150.png 124w\" sizes=\"auto, (max-width: 336px) 100vw, 336px\" \/><br \/>\nDabei muss man Benutzernamen, Passwort, Protokoll und Adresse f\u00fcr den Subversion-Server eingeben. Oder wer es einfach ausprobieren m\u00f6chte, nimmt als anonymer Gast an meinem unten angegeben Projekt teil. Dann kann man fast alles machen &#8211; nur eben keine \u00c4nderungen auf den Subversion-Server hochladen, weil man ja kein Teammitglied ist.<br \/>\n<code>User: anonymous (oder was auch immer)<br \/>\nPasswort: leer<br \/>\nServer type: Subversion<br \/>\nServer: sequenzdiagramme-mit-bluej.googlecode.com\/svn\/trunk\/<br \/>\nProtocol: http (anders als Teammitglieder, die mit https arbeiten)<\/code><\/p>\n<p>Schritt 2: Projekt ausw\u00e4hlen.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/subversion_bluej_2.png\" alt=\"\" title=\"subversion_bluej_2\" width=\"407\" height=\"342\" class=\"alignnone size-full wp-image-3829\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/subversion_bluej_2.png 407w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/subversion_bluej_2-150x126.png 150w\" sizes=\"auto, (max-width: 407px) 100vw, 407px\" \/><br \/>\nEinfach auf &#8222;Show&#8220; klicken und nehmen, was kommt.\n<\/li>\n<li><strong>Fertig.<\/strong><\/li>\n<\/ol>\n<p>Jetzt kann man mit dem Knopf &#8222;Status&#8220; die Dateien auf dem eigenen Rechner mit denen bei Subversion vergleichen.<br \/>\nOder man kann mit dem Knopf &#8222;Commit&#8230;&#8220; alle selbst ge\u00e4nderten oder gel\u00f6schten Dateien nach Subversion hochladen. (Die M\u00f6glichkeit von Konflikten besteht.)<br \/>\nOder man kann mit dem Knopf &#8222;Update&#8230;&#8220; alle von anderen Mitgliedern aktualisierte Fassungen vom Subversion-Server herunterladen.<br \/>\nZur Vermeidung von Konflikten bietet es sich an, unmittelbar vor dem eigenen Arbeiten ein Update durchzuf\u00fchren, und so rasch wie m\u00f6glich nach dem Abschluss der eigenen Arbeit ein Commit.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/subversion_bluej_3.png\" alt=\"\" title=\"subversion_bluej_3\" width=\"557\" height=\"311\" class=\"alignnone size-full wp-image-3830\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/subversion_bluej_3.png 557w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/subversion_bluej_3-150x83.png 150w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/subversion_bluej_3-550x307.png 550w\" sizes=\"auto, (max-width: 557px) 100vw, 557px\" \/><br \/>\nIm Bild sieht man hinten die Statusmeldung, wenn man selber etwas ge\u00e4ndert und noch nicht an den Server \u00fcbertragen hat (n\u00e4chster Schritt: commit), und vorne die Statusmeldung, wenn auf dem Server jemand etwas ge\u00e4ndert hat, das man selbst noch nicht \u00fcbernommen hat (n\u00e4chster Schritt: update).<\/p>\n<p>Subversion kann noch viel mehr, aber das sind die Features, die von BlueJ unterst\u00fctzt werden und die f\u00fcr Sch\u00fclerprojekte auch ausreichen.<\/p>\n<hr\/>\n<h4>Mein Beispielprojekt.<\/h4>\n<p>Beim objektorientierten Modellieren und Programmieren packt man Aufgaben und Eigenschaften in Porti\u00f6nchen zusammen, die man Objekte nennt. Ein Objekt allein \u00fcbernimmt dabei meist keine gro\u00dfen Aufgaben, sondern es gibt viele Objekte, die zusammenarbeiten. Zusammenarbeiten hei\u00dft: Ein Objekt bietet an, Auftr\u00e4ge zu erledigen. Das nennt man die Methoden des Objekts. Und ein Objekt kennt andere Objekte, deren Methoden es aufrufen kann &#8211; die es also beauftragen kann, die angebotenen Aufgaben auszuf\u00fchren.<\/p>\n<p>Der Ablauf dieser Zusammenarbeit, also der Kommunikation der Objekte untereinander, wird in einem Sequenzdiagramm dargestellt. Das sieht, wenn man es hinschmiert, so aus:<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/seq_party0.jpg\" alt=\"\" title=\"seq_party0\" width=\"550\" height=\"302\" class=\"alignnone size-full wp-image-3820\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/seq_party0.jpg 550w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/seq_party0-150x82.jpg 150w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><br \/>\nIch k\u00f6nnte jetzt sagen, dass das so unfertig und hingeschmiert ist, weil ich in meinem Blog keine Musterl\u00f6sung vorgeben m\u00f6chte. Tats\u00e4chlich bin ich nur zu faul, die Skizze fertigzustellen. <\/p>\n<p>Das Diagramm soll darstellen, wie sich Frau Holle von Heinz eine Party f\u00fcr 30 Leute organisieren l\u00e4sst. Heinz beauftragt dazu seinen Freund Max, eine Musikanlage aufzutreiben, die der wiederum von seinem Freund Herbert kriegt, so dass Max sie Heinz geben kann, der damit aber noch nicht fertig ist mit der Organisation. Genauer ist das in diesen Aufgabenk\u00e4rtchen f\u00fcr ein Rollenspiel organisiert, das ich vor der Einf\u00fchrung des Sequenzdiagramms durchgef\u00fchrt habe:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/seq_party1.png\" alt=\"\" title=\"seq_party1\" width=\"548\" height=\"375\" class=\"alignnone size-full wp-image-3826\" srcset=\"https:\/\/www.herr-rau.de\/wordpress\/archiv\/seq_party1.png 548w, https:\/\/www.herr-rau.de\/wordpress\/archiv\/seq_party1-150x102.png 150w\" sizes=\"auto, (max-width: 548px) 100vw, 548px\" \/><\/p>\n<p>Die Datei mit den K\u00e4rtchen &#8211; es gibt insgesamt 5 Rollen &#8211; <a href='https:\/\/www.herr-rau.de\/wordpress\/archiv\/seq_party.odt'>kann man hier herunterladen<\/a>. Der Auftrag f\u00fcr die Sch\u00fcler lautet: F\u00fcnfergruppen bilden, jeder schnappt sich ein K\u00e4rtchen und f\u00fchrt das auf, was darin steht. Die Sch\u00fcler sollen das dann in einem Rollenspiel vorf\u00fchren und  &#8211; ganz ohne weitere Erkl\u00e4rungen &#8211; einen Entwurf f\u00fcr ein selbst erdachtes Diagramm \u00fcberlegen, in dem sie den Ablauf festhalten.<\/p>\n<p>Ich habe das parallel in ein BlueJ-Projekt umgesetzt. Und dieses Projekt ist eben das, das ich bei Google Code eingestellt und oben verlinkt habe.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(5 Kommentare.) (Die gute Nachricht f\u00fcr Informatiklehrer vorweg: Wer BlueJ zu Hause installiert hat, kann das gleich ausprobieren, ohne irgendetwas installieren zu m\u00fcssen.) Die schlechte Nachricht 2015: Google stellt das Codehosting ein, so dass die Links unten nicht mehr funktionieren. Eine Alternative ist sourceforge.net, wo allerdings &#8211; anders als bei Google &#8211; kaum ein Sch\u00fcler [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":3820,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[25],"tags":[227],"class_list":["post-3819","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-informatik","tag-informatik"],"jetpack_featured_media_url":"https:\/\/www.herr-rau.de\/wordpress\/archiv\/seq_party0.jpg","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/3819","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/comments?post=3819"}],"version-history":[{"count":1,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/3819\/revisions"}],"predecessor-version":[{"id":6535,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/posts\/3819\/revisions\/6535"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media\/3820"}],"wp:attachment":[{"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/media?parent=3819"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/categories?post=3819"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.herr-rau.de\/wordpress\/wp-json\/wp\/v2\/tags?post=3819"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}