public static void main (String [] args)
{
new Kampagne.losschlagen();
}
// Dies nennt man im Fachjargon eine anonyme Instanz erzeugen
In der Methode losschlagen werden die Details der Kampagne festgelegt, deren Durchführung im Einzelnen natürlich den persönlichen Vorlieben überlassen bleibt. Neben einer neuen Instanz der Basis-Klasse "Al Quaida" kann auch ein weiteres Obkjekt des Typs "Geheimdienstaufklärung" zum Einsatz kommen, und vieles Andere mehr.
Kommen wir nun zum Kern der Sache. Wir leiten von der Klasse Bomberbesatzung eine Klasse B2Crew ab und instanziieren sie. Diese enthält alle erforderlichen Handler, um ein Objekt vom Typ B2 zu steuern. Wir erinnern uns, daß für die Super-Klasse Bomber (von der B2 erbt), diverse Interfaces zur Verfügung stehen und implementieren lenkbareAtomwaffe.
public class B2 extends Bomber implements lenkbareAtomwaffe
Nun müssen wir nur noch den Trigger (in Kampagne) auslösen:
onFlightEvent (Teheran t) {
try {
lenkbareAtomwaffe.einsetzen();
} catch (öffentlicheEmpörungException ö) {
B2.abdrehen();
Kampagne neuerAnlauf = new Kampagne();
}
}
Damit sind wir auch im Störungsfall auf der sicheren Seite. Wenn der Erstschlag im ersten Anlauf nicht gelingt, dann vielleicht im zweiten. Es wird trotzdem ein Erstschlag sein.
Wenn man sieht, wie mit ein wenig wohldurchdachter Programmierung viel erreicht werden kann, wird der Zauber von Java und der Objekt-Orientierung spürbar.
Als ich kaum mehr fünf Meter von ihr entfernt war, weder ausweichend noch verlangsamend, trat sie einen zögerlichen Schritt gen Bürgersteig zurück, ohne ihr Gebrabbel zu unterbrechen. Ich habe den Mittelpunkt der Welt nur knapp verfehlt.
XTC lohnt das Zuhören mit Anspielungen auf alle Bereiche populärer Musik (Reggae, Rock'n'Roll, West Coast, Folk, Big Band Jazz, Sixties, Funk und und und), originellen Wendungen, Spiel mit Klischees, guten und ausgefeilten Texten, wirkungsvollen Arrangements und musikalischer Fortentwicklung. Deshalb ist der Name "XTC" (für Ecstasy, lange bevor die gleichnamige Designerdroge entwickelt wurde), wie ich vermute, auch ein Verweis auf 10cc.
Andy Partridge, Terry Chambers, Dave Gregory,Colin Moulding (1981)
Runder, reifer, selbstsicherer, ein Schritt nach vorn die zweite LP "Go 2" (1978). Der Keyboarder Barry Andrews hatte darauf bestanden, daß Songs aus seiner Feder aufgenommen wurden - und wurde kurz darauf rausgeschmissen. "My weapon" klingt auch einfach nicht nach XTC; "Super-tuff" hingegen, trotz unpassenden Refrains, ist viel interessanter und erinnert an ... bzw. nimmt vorweg ... nein, das müßt ihr selbst hören.
Die dritte LP "Drums and Wires" (1979) leidet trotz einiger Überraschungen und mancher Gewitzheit ("Helicopter", "Scissor man") darunter, daß der neue Bandsound mit dem vielseitigen Gitarristen Dave Gregory noch in der Entwicklung war. Andy Partridge hat die Tracks nachträglich auf einer Solo-LP ("Take away/The lure of salvage") verwurstet; sehr komisch "The forgotten language of light", worin er seine stimmlichen Talente austobt.
Eine klassische Pop-LP - "Black Sea" (1980) - folgte als vierter Streich sogleich. Kraftvoller Klang, dem Vernehmen nach besonders nahe am Live-Sound. Höhepunkte: "Towers of London", "No language in our lungs", Travels in Nihilon".
Dann ist in meiner Sammlung eine Lücke (u.a. die schon erwähnte "English Settlement"). 1982 beschlossen sie, keine Konzerte mehr zu spielen, und deshalb verließ Schlagzeuger Terry Chambers die Band. Andy Partridge übernahm im Studio die Drums; gewiß gekonnt, aber sie sind nun einmal nicht "sein" Instrument, und fortan fehlten einfach ein paar Akzente und Farbtupfer. Dennoch ist "Skylarking" (1986) eine wundervolle und vielfältige LP, wiederum eine musikalische Weiterentwcklung.
Nach einer weiteren Lücke kommt das Doppelalbum "Oranges and Lemons" (1989) - die zweite LP der "Dukes of Stratosphear" ignoriert, obschon hörenswert und mit Anspielungen auf die Sixties gespickt - die für mich die am wenigsten eingängige Veröffentlichung ist, da sie mit klaren Melodien geizt; Orangen und Zitronen halten sich die Waage. Hörenswert allemal. Doch erinnernswert?
Bleiben werden "Go 2", "Black Sea" und "Skylarking", eventuell auch "English Settlement". Geht die Musik auch nicht zu Herzen, so macht sie doch Freude. Langeweile gibt es mit XTC jedenfalls nicht.
Wichtig ist nicht so sehr das Programm - dafür gab es eine Programmkommission, die wir hier nicht näher betrachten wollen - als vielmehr eine hohe Mitgliederzahl ("Volkspartei"!), um schnell Einfluß zu gewinnen und an die Fleischtöpfe zu gelangen. Das ist aber vorläufig noch Zukunftsmusik, und deshalb konzentrieren wir uns auf die Gründungsveranstaltung. Wir haben eine Halle mit 5000 Sitzplätzen gemietet; mit seiner Eintrittskarte erhält jeder Besucher auch sein Parteibuch. Es sollen aber nur vertrauenswürdige Parteigänger hereingelassen werden - Hinz und Kunz, mit denen kennen wir uns aus - , andere müssen leider draußen bleiben, wie etwa Krethi und Plethi, deren Schreibweise uns schon mißfällt, kurzum, wir brauchen eine Einlaßkontrolle. Wer schon mal mit einem Programmierer gesprochen hat, der weiß, daß es Events gibt, hat vielleicht auch von Exceptions gehört, eventuell sogar von Listener>n. Klingt, als könnten wir etwas davon brauchen.
public class Volkspartei extends Partei implements OpinionListener
// Volkspartei erbt alle Eigenschaften und Methoden
// der Klasse Partei und bekommt einen Listener
{
public Volkspartei(meineLeute) // sogenannter Konstruktor
{
int meineMitgliederZahl = 0; // wichtig, nur integre Mitglieder zu haben
boolean meinProgramm = true; // ein wahres Programm, behaupten wir jedenfalls
this.meineParteiGenossen = meineLeute;
// nur damit es keine Verwechslungen gibt
}
boolean meineTuerIst Offen = true;
String meinKandidat;
meinKandidat.addOpinionListener; // jedem Kandidaten wird ein "Meinungsforscher" assoziiert
Volkspartei meinePartei = new Volkspartei(HinzUndKunz); // die Gründung beginnt
meinKandidat.drawOpinion(); // wollen mal sehen, was da für Leute kommen
public void drawOpinion()
{
while (meineTuerIst Offen) // die Tür wird erst beim 5000ten Mitglied geschlossen
{
try // Einlaßkontrolle durch Saalordner
{
if (meineParteiGenossen.indexOf(meinKandidat) != -1 );
// wenn der Kandidat ein HinzUndKunz ist
meineMitgliederZahl++;
else programmVerkaufen(meinKandidat); // sonst mit AgitProp-Material beeinflussen
} catch (divergentOpinionException d)) { // kritische Kandidaten abfangen
einlassVerweigern(meinKandidat);
}
if (meineMitgliederZahl == 5000)
{ meineTuerIst Offen = false; } // der Sall ist voll, Tür zu
}
}
public void programmVerkaufen(unsichererKantonist)
{
// hier nach Vorhandensein politisches Material für teures Geld
// verkaufen, als Lockmittel Werbegeschenke o.ä. verteilen
// z.B. unsichererKantonist.getMoney();
}
public void einlassVerweigern(unterMensch)
{
// hier können nach Belieben Maßnahmen gegen unerwünschte
// Kandidaten festgelegt werden, je nach Gemüt und Stimmung
// z.B unterMensch.set Executable(true) oder ähnliches
}
}
}