Hallo,
ich arbeite gerade an einer Klassenbibliothek für eine abgespeckte Zeiterfassung.
Abgespeckt deshalb, weil hier nur Zeiten erfasst werden sollen, damit unsere AT-Mitarbeiter eine Übersicht für sich selbst haben, da sie ja nicht über unser Zeiterfassungssystem laufen.
Nun möchte ich aber die Bibliothek ein wenig universell gestalten, falls künftig doch mehr daraus werden soll.
Jetzt ist es so, das unsere bestehenden Mitarbeiter ja eine Personalnummer haben, da diese vom Lohnbüro erstellt wird.
In meienr Klasse Mitarbeiter möchte ich allerdings die Möglichkeit schaffen einerseits eine Personalnummer beim instanzieren mitzugeben und anderseits, falls keine mitgegeben wird, eine neue freie zu vergeben.
Erstmal die Klasse Mitarbeiter:
Spoiler anzeigen
So hab ich das im Moment.
Gibt es in C# nicht die Möglichkeit direkt beim instanzieren, wenn keine personalnummer angegeben wird, direkt die nächstefreie mitzugeben?
das funktioniert leider nicht, auch wenn ich _nextFreeStaffNumber als static deklariere
Ich glaub ich hab da nen Denkfehler...
Danke Euch
ich arbeite gerade an einer Klassenbibliothek für eine abgespeckte Zeiterfassung.
Abgespeckt deshalb, weil hier nur Zeiten erfasst werden sollen, damit unsere AT-Mitarbeiter eine Übersicht für sich selbst haben, da sie ja nicht über unser Zeiterfassungssystem laufen.
Nun möchte ich aber die Bibliothek ein wenig universell gestalten, falls künftig doch mehr daraus werden soll.
Jetzt ist es so, das unsere bestehenden Mitarbeiter ja eine Personalnummer haben, da diese vom Lohnbüro erstellt wird.
In meienr Klasse Mitarbeiter möchte ich allerdings die Möglichkeit schaffen einerseits eine Personalnummer beim instanzieren mitzugeben und anderseits, falls keine mitgegeben wird, eine neue freie zu vergeben.
Erstmal die Klasse Mitarbeiter:
C#-Quellcode
- class Employee : Person
- {
- int _staffNumber;
- int _nextFreeStaffNumber = 0;
- TimeRecord _timeRecord;
- List<TimeRecord> _timeRecordList = new List<TimeRecord>();
- public Employee(string firstname, string lastname, string title, int staffnumber = 0) : base(firstname, lastname, title)
- {
- if (staffnumber == 0)
- { _staffNumber = _nextFreeStaffNumber;
- _nextFreeStaffNumber++;
- }
- else
- {
- _staffNumber = staffnumber;
- }
- }
- public override int GetStaffNumber()
- {
- return _staffNumber;
- }
- public override void CheckIn()
- {
- if(_timeRecordList.Count != 0 && _timeRecordList.Last().IsCheckedIn)
- { throw new ApplicationException("Employee is almost CheckedIn!"); }
- _timeRecordList.Add(new TimeRecord());
- }
- public override void CheckOut()
- {
- if (_timeRecordList.Count == 0)
- { throw new ApplicationException("Employee is not CheckedIn!"); }
- _timeRecordList.Last().CheckOut();
- }
- public TimeSpan TimeRecording()
- {
- TimeSpan total = new TimeSpan();
- foreach (TimeRecord time in _timeRecordList)
- {
- total += time.Duration;
- }
- return total;
- }
- public Double TotalTime()
- {
- return _timeRecordList.Sum(t => t.Duration.TotalHours);
- }
- }
- }
So hab ich das im Moment.
Gibt es in C# nicht die Möglichkeit direkt beim instanzieren, wenn keine personalnummer angegeben wird, direkt die nächstefreie mitzugeben?
das funktioniert leider nicht, auch wenn ich _nextFreeStaffNumber als static deklariere
Ich glaub ich hab da nen Denkfehler...
Danke Euch
"Hier könnte Ihre Werbung stehen..."