I am trying to understand and apply SOLID principles.
Regarding the Dependency Inversion Principle, does it means that composition/aggregation to an object is forbidden?
So that an interface must always be used to access another class method?

I mean that:

```
class ServiceClass {
  void serviceClasshelper();
}

class MainClass {
  void MainClass(ServiceClass service); // To use serviceClasshelper
}

```

Must be changed to:

```
class ServiceInterface {
  virtual void interfaceHelper() =0;
}

class ServiceClass : public ServiceInterface {
  void serviceClasshelper();
  void interfaceHelper() { serviceClasshelper(); };
}

class MainClass {
  void MainClass(ServiceInterface service); // Uses interfaceHelper
}

```

I think (or at least I hope) that I understand the principle.
But wonder if it can be rephrased like that.
Indeed, stuff I read about DIP suggest to use interfaces.

Thanks!