Wiederverwendung von Programmcode

... ist ein zentrales Thema in der Software-Entwicklung. Einmal gefundene Lösungen, die sich bereits bei einem oder mehreren Projekten bewährt haben, sollen möglichst nicht noch ein zweites Mal "erfunden" werden müssen.

Dabei ist das Schreiben von wiederverwertbarem Programmcode ein komplexes Thema. Damit Programmteile tatsächlich wiederverwendet werden können, müssen sie allgemein gehalten werden; allgemeiner als es das aktuell zu schreibende Programm erfordert. Das bedeutet aber auch: höherer Entwicklungsaufwand, höherer Zeitaufwand bei Tests, Dokumentation und Wartung. Die Einsparungen ergeben sich erst bei späteren Projekten .

Nichtsdestotrotz kommt aber jeder Entwickler an den Punkt, wo er Teile seiner bisherigen Arbeit genau in diesem Sinne für eine spätere Verwendung aufbereitet. Ich möchte im Folgenden ein konkretes Beispiel zeigen.

Generierung einfacher, skalierbarer Icons

Bei graphischen Bedienoberflächen (GUI - Graphical User Interface) werden immer wieder Icons benötigt. Sie sollen möglichst einfach und einheitlich gestaltet sein, müssen aber dafür in verschiedenen Größen zur Verfügung stehen.

Da liegt die Idee nahe, diese auf einer vektorbasierten Grundlage zu erzeugen und dazu bereits vorhandene Klassen aus dem Bereich java.awt, java.awt.geom zu nutzen.

Pfeilsymbol in verschiedenen Varianten
Rechteck-Rahmen (und unterschiedliche Drehwinkel)
Icon-Beispiel Icon-Beispiel Icon-Beispiel Icon-Beispiel Icon-Beispiel
Winkel 0 (unterschiedliche Rahmen) / Rauten-Rahmen (Winkel 0 / 45)
Icon-Beispiel Icon-Beispiel Icon-Beispiel Icon-Beispiel Icon-Beispiel
 

Außerdem wird zwischen eigentlichem Symbol und einem zusätzlichen Rahmen unterschieden. Der "Rahmen" kann auch einfach nur inverse sein, dann wird zunächst die gesamte Rahmenfläche in der Vordergrundfarbe gezeichnet und anschließend darauf das Symbol (in der Farbe für den Hintergrund) gesetzt.

 

Pictogramm: Läufer

Dass dabei nicht nur einfache Pfeilsymbole sondern auch kreative Darstellungen möglich sind, zeigt das nebenstehende Beispiel Läufer.

Die Idee zu diesem, ebenfalls mit den Bibliotheksklassen realisierbaren Icon stammt von der Wikipedia-Seite Piktogramm.

Das Icon selber ist in der Java-Klasse Humans realisiert und kann auch von dem im Downloadbereich zur Verfügung gestellten IconViewer angezeigt werden.

 

In einer ersten (Nicht-Bibliotheks-) Version wurde noch alles in einer Klasse realisiert - mit entsprechend umfangreichen switch(...) - Konstrukten.

Bei der Überarbeitung sind dann allgemeine Grundsätze zur Gestaltung von Bibliotheksklassen berücksichtigt worden:

Definieren von erforderlicher Funktionalität in Interfaces Symbol, IconBorder
Implementierung "allgemeiner" Teile in Abstrakten Oberklassen (hier nicht erforderlich)
Bereitstellung einfacher Standard-Implementierungen ComposedSymbol, BasicSymbols, BasicIconBorders
 

Die Ergebnisse dieser Arbeit stehen im Downloadbereich zur Verfügung. Die Klasse für das Läufer-Icon ist separat abrufbar.

Damit diese in den IconViewer (SymbolicIcons.<version>.jar) geladen werden kann, muss er wie folgt aufgerufen werden:

java -cp .;SymbolicIcons.0.07.04.jar SymbolicIcons 
    de.finos.beta.gui.symbols.Humans

Die Datei Humans.class muss dabei entsprechend ihres Paketnamens in dem (relativen) Unterverzeichnis de/finos/beta/gui/symbols abgelegt sein.