MVC und Kompositum

Meine aktuelle 11. Klasse in Informatik muss eine Hausaufgabenverwaltung als Anwendung des Kompositum-Entwurfmusters programmieren. Und wie immer spaltet sich die Gruppe in die erfahrenen Programmierer (“Kann ich nicht eine ArrayList nehmen?”, “Java ist doch eh Sche… . In C#/C++/Python/…. wäre das viel einfacher.”) und die Schüler mit wenig Erfahrung auf (“Herr Bartling, bei mir werden nur 2 Elemente in die Liste aufgenommen. Können Sie mal kommen?”).

Da das Ganze als kleiner Leistungsnachweis gedacht ist, gibt es wieder eine Grundanforderung zum Erreichen der Note 2 und ein paar Anregungen zum Erreichen der 1. Das entsprechende Blatt im Word-Format, so dass es verändert und angepasst werden kann, stelle ich hier mal zur Verfügung: hausaufgabenverwaltung .

Eine mögliche “1er”-GUI aufgrund der vielfältigen Möglichkeiten wäre, wenn sie vollständig funktioniert, dieser Entwurf von mir:

bildschirmfoto-2016-12-10-um-08-50-44

Das Abgabedatum wird dabei automatisch mit Hilfe der Systemzeit voreingestellt. Zum einfacheren Testen wird noch ein Dummy-Text erzeugt in dem ich mir von der Internetseite www.loremipsum.de einfach 100 Zeichen geholt habe und per Zufall Text ausschneiden. Erstellt werden bei mir im Unterricht solche Oberflächen mit Hilfe des Programms Java-Editor . Man kann den Java-Editor  einfach im Netzwerk installieren. Allerdings habe ich den Eindruck, dass bei einem Starten von mehreren Benutzern die Software nicht 100%ig funktioniert: Das Umbenennen der Objekte funktioniert nicht korrekt. Nach dem ich mehrere Buttons einfügt und über das Eigenschafts-Fenster umbenannt habe, habe ich so merkwürdigen Namen wie jButton1_sortierenDatum_Speichern_SortierenPriority, jButton1_sortierenDatum_Speichern, jButton1_sortierenDatum. Ich denke, wenn die Software lokal läuft, hat man das Problem wahrscheinlich nicht, aber das habe ich noch nicht ausprobiert.

Als nächstes muss die Verwaltung der Hausaufgaben in einer verketteten Liste nach dem Kompositum-Muster umgesetzt werden. Ich halte das zwar für eine nicht optimale, aber eine mögliche Anwendung des Kompositum-Musters gemäß des Lehrplans:

 

  • Implementierung einer einfach verketteten Liste als Klasse mittels Referenzen unter Verwendung eines geeigneten Softwaremusters (Composite); Realisierung der Methoden zum Einfügen, Suchen und Löschen
  • Einsatz der allgemeinen Datenstruktur Liste bei der Bearbeitung eines Beispiels aus der Praxis: Verwaltung von Elementen verschiedener Datentypen mittels Vererbung

 

Geschicktere Anwendungen wären Menü-Strukturen, Gruppierungen oä. Mehr zu diesem Entwurfsmuster und anderen  findet man bei philipphauer.de nachvollziehbar dargestellt und diskutiert.

Ein anderes Entwurfsmuster ist das MVC: Model-View-Control . Model sind die Daten, View ist hier die Oberfläche und die Control-Klassen kontrollieren und Steuern den Datenfluss zur und von der Oberfläche zu den Daten. Die Schwierigkeit besteht dabei in der wirklichen Trennung der Control-Funktionen von der Oberfläche und den Daten. So ist es beispielsweise viel einfacher die Kontrolle der eingegebenen Daten in der Oberfläche zu realisieren statt im Controller. Bei Fehlern so einfach ein neuer Wert angezeigt werden und automatisch an das Backend weitergeleitet werden. Allerdings müsste man dann bei einer anderen Oberfläche diese Prüfung zusätzlich implementieren anstatt einfach die Funktionalität des Controllers zurück greifen zu können

Viel schwieriger ist die Einhaltung der Trennung von Struktur und Inhalt beim Kompositum. Einfache Funktionen, wie das Zählen der Elemente, sind schnell und korrekt umgesetzt. ABER wenn es um spezielle Funktionen geht, wie das Finden aller Eingegebener Tage, so landet mal schnell bei Methoden wie

abstract public String getAllDates();

Hierbei wird die Trennung von Struktur und Inhalt im Kompositum aufgehoben, denn es wird, zumindest wenn man es nicht richtig macht, auf ein spezielles Attribut Datum der Hausaufgaben eingegangen.

bildschirmfoto-2016-12-10-um-10-03-36

Der “falsche” Quelltext würde lauten:

HA_Liste

    public String getAllDates() {
        return first.getAllDates();
    }

Datenknoten

    public String getAllDates() {
        String curDate = meinInhalt.getInfos()[1];
        String otherDates = next.getAllDates();
        if (otherDates.indexOf(curDate) == -1 ) {
            otherDates += "#"+curDate;
            //Der String wird später über split in ein Array zerlegt
            //und dadurch das DropDown-Menü angepasst.
        }
        return otherDates;
    }

“Richtiger” wäre es, denke ich, einfach alle Daten sich von der Listen zurückgeben zu lassen und dann in der Oberfläche die Daten zu filtern und anzuzeigen. Ähnlich wie bei Datenbanken. Man holt sich über FROM die Daten und filtern dann u.a. die Daten über SELECT.

Oder man filtert in einer Controller-Klasse, die hier aber noch nicht umgesetzt wurde.

3D-Ausstechformen

Zur Zeit drucken wir in der Schule vor allem Plätzchenausstecher. Diese wollen wir am Weihnachtsbasar verkaufen. Entwerfen lassen sich diese entweder recht einfach bei cookiecaster.com cookiecaster oder man schaut mal bei thingiverse.com rein und sucht “cookie cutter”.

Ich habe gestern Abend selbst mal versucht, die ausgedruckten Ausstechformen zu benutzen und hatte durchaus auch Erfolg.

img_6396 img_6397 img_6398 img_6399 img_6400 img_6402

Hier nun also die Manöverkritik mit entsprechenden Tipps:

  1. Der Teig muss von der Höhe sehr exakt in Bezug auf die Höhe ausgerollt werden. Ist er zu dünn, bekommt man keine Vertiefungen, ist er zu dick, bleibt er in der Ausstechform kleben. Die richtige Höhe hängt dabei von der verwendeten Form ab.
  2. Die Ausstechform sollte immer bemehlt sein, da aufgrund der Riffelung der Teig sich nicht so leicht löst.
  3. Der Teig selbst sollte nicht zu viel Butter enthalten, sonst passiert das, was oben zu sehen ist: Die Vertiefungen verlaufen. Und die Raumfähren lassen sich nicht ineinander stecken.

Hier noch die Links zu den oben benutzen Formen: Pokemonausstecher und Raumfähre.

Da es bestimmt Fragen zur Lebensmittelechtheit des Materials gibt, habe ich noch folgendes Dokument zusammengestellt: informationen-zu-pla.pdf

Das richtig lebensmittelechte Filament haben wir zwar auch, aber wir haben noch nicht die richtige Druckeinstellung gefunden, so dass da was vernünftiges herauskommt. Aber das kommt noch.

Durch die weitere Nutzung der Seite (Scrollen, Navigieren) stimmen Sie der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen