002
08.05.2015, 19:29 Uhr
ao
(Operator)
|
Programmierkurs für E-Technik-Studenten, es hat sich echt nix geändert in den letzten zwanzig Jahren. Die Aufgaben sind immer noch so katastrophal ausgedacht wie damals.
Welchen Sinn hat es, eine Instanz von Bauteil ohne eine definierte Bauform konstruieren zu können (Konstruktor mit leerem Default-Argument)? Keinen, es gibt keine Bauteile ohne Bauform.
Welchen Sinn hat eine öffentliche Methode SetBauform? Ändert das Bauteil dann synchron zur Laufzeit sein Aussehen? Oder ist SetBauform ein Alias für Overheat - dann würde das ja noch in gewisser Weise Sinn ergeben.
Für die Eigenschaften der abgeleiteten Klassen gilt dasselbe. Die sind alle nicht zur Lebenszeit des Bauteils veränderbar, also braucht man auch keine Settermethoden dafür. Es ist der sichere Weg ins Chaos, wenn ein API einen falschen Anschein erweckt über das, was das modellierte Objekt kann. Irgendwann holt ein Programmierer ein Bauteil, was schon lange angelegt und abgespeichert ist, aus der Datenbank und kommt auf die Idee, SetWert oder SetBauform aufzurufen. Was jetzt? Wo überall wirkt sich das aus? In wievielen Designs ist dieses Bauteil referenziert? Wie viele Schaltungen ändern jetzt ihr Verhalten? Wie viele Baugruppen können nicht mehr gebaut werden (weil das Bauteil nicht mehr reinpasst)?
Es lohnt sich wirklich, über das nachzudenken, was man verspricht, wenn man ein Klassen-API definiert. Kann man das alles halten? Aber diese Gedanken muss sich der Dozent machen, das können die Studenten nicht leisten, nicht im Anfängerpraktikum. Das ist eher was für eine Wahlpflichtvorlesung in Softwaretechnik.
Außerdem hat das Objekt virtuelle Methoden, aber einen (nicht-virtuellen) Defaultdestruktor. Großes Bäh. Dieser Post wurde am 08.05.2015 um 19:30 Uhr von ao editiert. |