object oriented design – Explaining this UML example from Eric Evans DDD Tackling complexity in the heart of software

This is an example from chapter 3 of the aforementioned book. If someone could explain this OOPS example that would be of great help.

enter image description here
The assignRule() method can be implemented on Abstract Net. The assignedRules() method
on Net takes its own rules and its Bus’s rules.

abstract class AbstractNet {
  private Set rules;
  void assignRule(LayoutRule rule) {

  Set assignedRules() {
    return rules;

class Net extends AbstractNet {
  private Bus bus;

  Set assignedRules() {
    Set result = new HashSet();
    return result;

Of course, there would be a great deal of supporting code, but this covers the basic functionality of
the script.
The application requires import/export logic, which we’ll encapsulate into some simple services.

enter image description here
Now, starting the application is a matter of initializing the repositories with imported data:

Collection nets = NetListImportService.read(aFile);
Collection buses = InferredBusFactory.groupIntoBuses(nets);

public void testBusRuleAssignment() {
  Net a0 = new Net("a0");
  Net a1 = new Net("a1");
  Bus a = new Bus("a"); //Bus is not conceptually dependent
  a.addNet(a0); //on name-based recognition, and so
  a.addNet(a1); //its tests should not be either.
  NetRule minWidth4 = NetRule.create(MIN_WIDTH, 4);
  assertEquals(minWidth4, a0.getRule(MIN_WIDTH));
  assertEquals(minWidth4, a1.getRule(MIN_WIDTH));

An interactive user interface could present a list of buses, allowing the user to assign rules to each,
or it could read from a file of rules for backward compatibility. A fa├žade makes access simple for
either interface. Its implementation echoes the test:

public void assignBusRule(String busName, String ruleType, double parameter){
  Bus bus = BusRepository.getByName(busName);
  bus.assignRule(NetRule.create(ruleType, parameter));


NetRuleExport.write(aFileName, NetRepository.allNets());

(The service asks each Net for assignedRules(), and then writes them fully expanded.)