In diesem Schritt
- Ein berechnetes Attribut anlegen
- Formular und Liste ergänzen
- Code generieren und dem Compiler folgen
- Die Berechnung in C# schreiben
Ein berechnetes Attribut
Lege in Charis an der Entität Messmittel ein neues Attribut an: Nächste Kalibrierung am mit Typ date. Hake außerdem im Bereich additional features das Feld run code for value an. Das heißt: Den Wert gibt niemand ein, er wird im Code berechnet.
Der technische Name NächsteKalibrierungAm behält sein „ä“. C# kommt mit Umlauten in Namen gut zurecht.
Mit den Pfeilen über der Attributliste schiebst du das neue Attribut an seinen Platz, hinter das Kalibrierintervall.
Formular und Liste ergänzen
Formular und Liste hat assure usable in Schritt 6 angelegt. Damals gab es das neue Attribut noch nicht. Du findest beide im Formular der Entität auf dem Reiter views. Links die Formularansicht, rechts die Tabellenansicht.
Öffne die form view und klicke rechts auf generate widgets. Charis ergänzt ein Eingabefeld für jedes Attribut, das noch keines hat. Öffne dann die table view und klicke auf generate columns. Schiebe Feld und Spalte mit den Pfeilen an die passende Stelle.
Der Compiler zeigt dir den Weg
Generiere den Code wie in Schritt 7. Wechsle dann zu Visual Studio und baue die Lösung mit Build › Build Solution (Erstellen › Projektmappe erstellen). Der Build schlägt fehl, und das ist Absicht:
Charis hat eine Basisklasse MessmittelBase erzeugt. Darin steht für jedes Attribut mit run code for value eine abstrakte Methode, hier GetNächsteKalibrierungAm(). Deine Klasse Messmittel muss sie implementieren. Du kannst sie also gar nicht vergessen: Der Compiler sagt dir genau, wo deine Fachlogik fehlt.
Die Berechnung schreiben
Ein Doppelklick auf den Fehler öffnet die Datei Messmittel.cs im Objektprojekt. Charis hat sie beim ersten Generieren angelegt, und sie ist noch fast leer:
// Prepared by de.horaios.Charis
// Place your cool methods for this object here. Have fun!
namespace de.aft_praezisa.Messmittelverwaltung.Objects.Objects
{
public class Messmittel : MessmittelBase, IMessmittel
{
}
}
Setze den Cursor auf Messmittel und drücke Strg+.. Wähle Implement missing members (Fehlende Member implementieren). Visual Studio schreibt den Rahmen der Methode für dich.
Im Methodenrumpf stehen dir alle Attribute als Eigenschaften zur Verfügung. IntelliSense zeigt sie dir an, mit ihren technischen Namen:
Die nächste Kalibrierung ist die letzte plus das Intervall in Monaten:
public override DateTime? GetNächsteKalibrierungAm()
{
return LetzteKalibrierungAm?.AddMonths(KalibrierintervallMonate ?? 0);
}
Ohne Datum der letzten Kalibrierung liefert die Methode keinen Wert.
DataObjects, Names und Objects. Deshalb endet der Namensraum auf .Objects.Objects. Deine Fachlogik steht in Objects/Behavior. Dort schreibt Charis nach dem ersten Anlegen nie wieder hinein. Alles andere erzeugt Charis bei Bedarf neu.Das Ergebnis
Drücke F5. Die Liste zeigt jetzt die neue Spalte mit den berechneten Daten. Öffnest du ein Messmittel, ist das Feld „Nächste Kalibrierung am“ ausgegraut: Ein berechneter Wert lässt sich nicht eintippen.
Schaue dir die Daten genau an: Der Endmaßsatz hätte schon im Juni kalibriert werden müssen. Die Messuhr ist noch länger überfällig, aber sie ist ausgemustert. Solche Fälle sollen sofort auffallen. Genau darum geht es im letzten Schritt.