Java Realisierung der Komponentenspezifikation AirlineSystemSpec //Datei Airline.java package AirlineSystemJava; import java.util.*; public class Airline { private String name; private Set employees = new HashSet(); private Set flights = new HashSet(); private Set partners = new HashSet(); public Airline(String n) { name = n; } public Pilot createPilot(String n, double s) { Pilot p = new Pilot(n, s); hire(p); return p; } public Pilot createSteward(String n, double s) { //analog } public Flight createFlight(Integer no, Pilot p, Steward s) { Flight f = new Flight(no, this); addFlight(f); p.deploy(f); s.deploy(f); return f; } public void deploy(Person p, Flight f) { p.deploy(f); } public void cooperate(Airline a) { this.addAirline(a); a.addAirline(this); } private void addAirline(Airline a) { partners.add(a); } private void hire(Person p) { employees.add(p); } private void addFlight(Flight f) { flights.add(f); } } //Datei Flight.java package AirlineSystemJava; import java.util.*; public class Flight { private int number; private String start; private String destination; private String date; private double basicPrice; private Airline airline; Flight(int no, Airline a) { number = no; airline = a; } public double business() { return basicPrice * 4; } public double economy() { return basicPrice * 1.5; } } //Datei Person.java package AirlineSystemJava; import java.util.*; public abstract class Person { protected String name; protected double salary; protected Set flights = new HashSet(); public abstract void increase(double i); void deploy(Flight f) { flights.add(f); } } //Datei Pilot.java package AirlineSystemJava; import java.util.*; public class Pilot extends Person { Pilot(String n, double s) { name = n; salary = s; } public void increase(double i) { salary = salary + i; } } //Datei Steward.java package AirlineSystemJava; import java.util.*; public class Steward extends Person { Steward(String n, double s) { name = n; salary = s; } public void increase(double i) { salary = salary + i/2; } }