Bei der Konstruktor-Übergabemethode brauche ich bereits vorher eine Instanz,
genau das wollte ich nicht.
Von new wird abgeraten ...
Hier mal meine Intention:
Ich möchte im Sinne des guten alten Information Hiding die Instanz schön im private-Teil verstecken
und dann nur noch via Methodenaufrufe darauf zugreifen. Im Grunde ist die Oberklasse ein Wrapper,
der verbirgt, dass und wie ich ein LCD verwende ...
Ich möchte im Sinne des guten alten Information Hiding die Instanz schön im private-Teil verstecken
und dann nur noch via Methodenaufrufe darauf zugreifen. Im Grunde ist die Oberklasse ein Wrapper,
der verbirgt, dass und wie ich ein LCD verwende ...
Fehlschluss!
LiquidCrystal_I2C(0x27,20,4);
Verwendet Daten!
Diese Daten hart in eine Klasse zu kodieren ist ein Fehler.
Was passiert, wenn du ein anderes LCD verwenden willst?
Eine andere I2C Adresse, oder gar ein SPI LCD?
Die Klasse editieren?
Nein, nein!
Abhängigkeiten haben sichtbar zu sein.
Wartbar.
Sonst suchst du dir irgendwann einen Wolf.
Sonst bekommst du die Klasse nicht universell.
Tipp, befrage Google zu "Dependency Injection Design Pattern"
Das ist fast 30 Jahre alt!
Die Jungs/Mädels sind alle schon in die Falle getappt, welche gerade vor deiner Nase steht.
Und die Daten sind nach außen änderbar. Man muss aber einiges an Methoden durch den Wrapper schleifen
Was passiert, wenn du ein anderes LCD verwenden willst?
Das ist so oder so ein Problem, da die LCD Klassen generell nicht zueinander kompatibel sind und oft andere Methoden haben. Auch wenn man einen Zeiger auf die LCD Instanz übergibt, kann man dann nur genau diese LCD Klasse verwenden. I2C und parallel LCD wären wohl noch möglich wenn man die Initialisierung auch außerhalb der Klasse erledigt.
Das wäre nur wirklich universell wenn es eine gemeinsame abstrakte Oberklasse gäbe.
Das ist so oder so ein Problem, da die LCD Klassen generell nicht zueinander kompatibel sind und oft andere Methoden haben. Auch wenn man einen Zeiger auf die LCD Instanz übergibt, kann man dann nur genau diese LCD Klasse verwenden. I2C und parallel LCD wären wohl noch möglich wenn man die Initialisierung auch außerhalb der Klasse erledigt.
Siehst du!
Genau das meine ich.
Damit wären wir bei dem berühmten "Adapter Design Pattern"
Welches allerdings nicht wirklich anwendbar ist, wenn die Objekte "hart" ineinander stecken.