Wie Du treffend formuliert hast ist Integer in Java
kein primitiver Datentyp.
Aber wenn man im "Sinn der Modellierung" handelt. Kann es aber auch keine Lösung sein, einen primitiven Datentyp noch einmal zu wrappen, diesem einen anderen Namen zu geben, und das dann als Lösung zu präsentieren.
Sollte die Lösung passen --> dann ist der Integer auch eine Lösung.
Hier irgendwo im Thread steht die Erklärung dazu, warum man sowas macht,
@Meniskusschaden hats schon mal geschrieben, ich auch, vermutlich auch noch irgendwer.
Unterschiedliche Dinge haben in unterschiedlichen Domänen schon mal gleiche Namen - daraus kann man aber nicht schließen, dass sie die selben Dinge sind.
In diesem Fall ist primitive != Primitiv in Java und Wrapper != Wrapper für primitive in Java.
Ein „int“ (oder auch Integer) hat keinerlei Bedeutung, es ist einfach nur eine beliebige Zahl, die irgendwas sein kann. Ein „irgendwas“ will man in der Modellierung immer vermeiden, da es eben nichts aussagt.
In deinem Modell gibt es keine Zahlen (Spezialfälle außen vor gelassen), alles was dadrin vor kommt, ist etwas ganz konkretes - also modellierst du es auch so. Die verschiedenen Dinge, die man durch Zahlen darstellen kann, haben meist auch nichts miteinander zu tun - warum sollten sie also den gleichen Typ haben, wenn sie völlig unterschiedliche Konzepte darstellen?
Ein Mensch hat keinen int als Alter, ein Mensch hat einfach ein Alter. Ob das Alter intern einen int benutzt, ist Implementierungsdetail.
Ein Mensch hat keinen float als Gewicht, ein Mensch hat einfach ein Gewicht. Ob das Gewicht intern einen float benutzt, ist Implementierungsdetail.
Ein Mensch hat keinen float als Größe, ein Mensch hat einfach eine Größe. Ob die Größe intern einen float benutzt, ist Implementierungsdetail.
Alles drei sind Zahlen - aber es sind drei Zählen, die völlig andere Dinge darstellen
Alle drei haben klare Konstraints, die ganze andere als die eines ints sind, zb darf nichts davon unter 0 sein.
Alle drei sind auch mehr als nur Zahlen: jedes davon hat eine Einheit, die man auch noch mit aufnehmen könnte.
„Ein Mensch hat Gewicht und Größe“ wird im Gegensatz zu „Ein Mensch hat zwei ints, Dir Gewicht und Größe sind“ auch noch jeder Nicht-Informatiker verstehen.
Also Nein -> Integer ist keine Lösung, außer Ganze Zahlen zwischen −2.147.483.648 und 2.147.483.647 sind ganz explizit Teil der Domäne (zB, weil du einen „Taschenrechner für verschiedene Datentypen in der Programmiersprache C“ modellierst.)