Hallo,
ich versuche meist zu vermeiden, pointer von innerhalb des Objekts nach außen sichtbar zu machen. Das birgt immer das Risiko, dass damit Dinge angestellt werden, für die sie nicht gedacht waren (z.B. Speicherfreigabe). Wenn dann deine Komponente später versucht, mit dem pointer zu hantieren, oder erwartet, dass eine gewisse Bedingung erfüllt ist, kann das schwer zu lokalisierende Fehler haben. Wenn du möchtest, dass sich die Eigenschaften deiner Komponente ändern, ist es i.A. sinnvoller, auch direkt mit der Komponente zu arbeiten (da kommen dann wieder die angesprochenen Settermethoden zum Einsatz).
Ausgenommen hiervon behandel ich aber Klassen. Bei diesen lässt es sich meist nicht vermeiden, und ggf kann die Klasse ja auch ihre übergeordnete Klasse von den geschehenen Veränderungen in Kenntnis setzen.
Innerhalb der Klasse vermeide ich es außerdem (außer in Constructor, Destructor, Getter und Setter) direkt auf das Feld zuzugreifen. Denn sollte ich für eine Eigenschaft später einen Setter/Getter implementieren, dann muss ich nicht den Code durchforsten und alle direkten Feldzugriffe abändern. Dadurch dass ich die ganze Zeit nur mit der property gearbeitet habe, wird "automatisch" der richtige Code ausgeführt.
PS:
(0 >= n >= 14)
Das könnte schwierig werden...