Klasse "Angestellter"
-
Gegeben sei die folgende Klasse Angestellter.
class Angestellter { char *Name; int Alter; int Betriebsangehoerigkeit; int Gehalt; };(1) Welche Probleme hat man damit?
(2) Schreiben Sie die Klasse Angestellter neu und vermeiden Sie die obigen
Probleme.Meine Antworten bisher:
für 1): Es ist nicht deklariert welcher Teil Public,Private,Protected ist.
Bei dieser Klasse sollte "int Gehalt" private sein, damit man von außen nicht darauf zugreifen kann. "int Betriebsangehörigkeit" (würde ich jetzt spontan) in Protected setzten und den Rest "int alter" und "char *Name" auf Publicfür 2): kein plan
class Angestellter { public: char *Name; int Alter; protected: int Betriebsangehörigkeit; private: int Gehalt; };Kann mir bitte jemand bei diesen Aufgaben helfen?

Danke im Voraus
-
Nein, das ist deine Aufgabe.
-
manni66 schrieb:
Nein, das ist deine Aufgabe.
so unnötig dein Kommentar..
-
scanbot90 schrieb:
manni66 schrieb:
Nein, das ist deine Aufgabe.
so unnötig dein Kommentar..
Stimmt, der Kommentar ist unnötig, denn das steht doch schon in den FAQ und in den als wichtig markierten Threads und sollte eigentlich ohnehin selbstverständlich sein.
-
da es für mich leider noch nicht verständlich ist, hab ich hier diesen Beitrag geöffnet. Freut mich wenn du Ahnung hast und das Prinzip verstanden hast.. Aber gib mir auch die Chance das zu verstehen.
-
scanbot90 schrieb:
da es für mich leider noch nicht verständlich ist, hab ich hier diesen Beitrag geöffnet. Freut mich wenn du Ahnung hast und das Prinzip verstanden hast.. Aber gib mir auch die Chance das zu verstehen.
Dann stell Fragen! Derzeit fragst du bloß, ob dir jemand die Hausaufgaben machen kann.
edit: Anscheinend hast du inzwischen Fragen hinzugefügt. Dann wirst du sicher auch bald Antworten bekommen.
-
scanbot90 schrieb:
da es für mich leider noch nicht verständlich ist, hab ich hier diesen Beitrag geöffnet. Freut mich wenn du Ahnung hast und das Prinzip verstanden hast.. Aber gib mir auch die Chance das zu verstehen.
Vielleicht solltest du deine Unterlagen kontaktieren - so kontextfrei deine Aufgabe hier rein zu posten wird zum Ratespiel.
-
Eine konkrete Frage die ich habe ist: ist der Ansatz richtig?
-
Zeus schrieb:
scanbot90 schrieb:
da es für mich leider noch nicht verständlich ist, hab ich hier diesen Beitrag geöffnet. Freut mich wenn du Ahnung hast und das Prinzip verstanden hast.. Aber gib mir auch die Chance das zu verstehen.
Vielleicht solltest du deine Unterlagen kontaktieren - so kontextfrei deine Aufgabe hier rein zu posten wird zum Ratespiel.
Das ist der komplette Kontext.

-
scanbot90 schrieb:
Zeus schrieb:
scanbot90 schrieb:
da es für mich leider noch nicht verständlich ist, hab ich hier diesen Beitrag geöffnet. Freut mich wenn du Ahnung hast und das Prinzip verstanden hast.. Aber gib mir auch die Chance das zu verstehen.
Vielleicht solltest du deine Unterlagen kontaktieren - so kontextfrei deine Aufgabe hier rein zu posten wird zum Ratespiel.
Das ist der komplette Kontext.

Mit Sicherheit nicht - schon etwas von Konstruktor und Kapselung gehört?
-
Achtung Auto-Analogie: Vor Ihnen steht eine durchgeweichte Pappschachtel. Welche Probleme hat dieses Auto? Beheben Sie diese.
-
Bashar schrieb:
Achtung Auto-Analogie: Vor Ihnen steht eine durchgeweichte Pappschachtel. Welche Probleme hat dieses Auto? Beheben Sie diese.
ja so ungefähr kann man die Aufgabenstellung vergleichen.
Aus dem Grund habe ich auch diesen Beitrag geöffnet. Weil ich als Einsteiger bin einfach planlos.Und der Begriff Konstruktor sagt mir was, aber da könnte ich nur Wikipedia oder eine andere Informationsquelle zitieren.
-
SeppJ schrieb:
edit: Anscheinend hast du inzwischen Fragen hinzugefügt. Dann wirst du sicher auch bald Antworten bekommen.
Ich gehe dann mal voran:
scanbot90 schrieb:
für 1): Es ist nicht deklariert welcher Teil Public,Private,Protected ist.
Bei dieser Klasse sollte "int Gehalt" private sein, damit man von außen nicht darauf zugreifen kann. "int Betriebsangehörigkeit" (würde ich jetzt spontan) in Protected setzten und den Rest "int alter" und "char *Name" auf PublicNein, nichts davon würde ich als direktes Problem ansehen. Alle Member hier sind private (Defaulsichtbarkeit bei class) und das ist auch gut so. Es fehlen jedoch irgendwelche Methoden, um überhaupt mit der Klasse etwas zu tun, wodurch sie derzeit unbenutzbar ist. Man könnte als reine Datensammelhalde alles public machen (oder struct statt class benutzen, da ist die Defaultsichbarkeit public). Ich tendiere dazu, dass letzteres gemeint ist, da sonst die Aufgabe 2 unmöglich wird, da wir nicht wissen, was die Klasse überhaupt tun soll und daher keine Methoden schreiben können.
Dir wirklich dringenden Probleme:
- C-Strings, noch dazu in Form von Zeigern, anstatt C++-Strings. Das lädt unzählige unnötige Fehlerquellen ein. Es macht den Einsatz der Klasse extrem frickelig und man muss allerhöchste Vorsicht wahren lassen.
- Angabe eines Alters. Schlechtes Design, denn das Alter verändert sich ganz natürlich mit der Zeit. Daher fragen auch alle immer nach dem Geburtsdatum, wenn sie eigentlich nur das Alter brauchen.
- Betriebsangehörigkeit kommt mir als int ein bisschen komisch vor. Das schreit eigentlich nach einer eigenen Klasse. Eine Betriebsangehörigkeit ist kein Zahlenwert mit dem man irgendwie rechnen kann. Genau dies wird aber durch einen int ausgedrückt. Kann man aber behelfsweise so stehen lassen, wenn man irgendwo anders im Programm fest vereinbart, welcher Wert was bedeutet. Eine bessere Lösung liegt wahrscheinlich noch jenseits des Lernstoffes.
- Gleiches gilt für den Gelddatentyp. Mit Geld kann man zwar rechnen, aber Geld ist auch irgendwie mit einer Einheit verknüpft, die hier außen vor gelassen wird. Wieder ist das aber noch ok, das so zu machen. Man hat dann eben irgendwo im Programm fest die Einheit vereinbart. Es gäbe wesentlich schlechtere Lösungen*. Eine gute Lösung liegt wohl wieder außerhalb des Erwartungshorizonts (wahrscheinlich sogar außerhalb der Fähigkeiten des Aufgabenstellers
)*: Falls hier hinterher in der Musterlösung so etwas wie float oder double vorgeschlagen werden sollte, dann renn bitte sofort schreiend(!) raus und geh nie wieder zu diesem Kurs. Es ist zu deinem Besten.
-
SeppJ schrieb:
- Betriebsangehörigkeit kommt mir als int ein bisschen komisch vor.
Ich vermute, damit ist die bisherige Dauer der Betriebsangehörigkeit gemeint.
-
Bashar schrieb:
SeppJ schrieb:
- Betriebsangehörigkeit kommt mir als int ein bisschen komisch vor.
Ich vermute, damit ist die bisherige Dauer der Betriebsangehörigkeit gemeint.
Dann ist der Bezeichner offensichtlich schlecht gewählt. Beweis dafür ist meine falsche Interpretation.
Falls die Dauer der Betriebsangehörigkeit gemeint ist, gilt das gleiche wie für das Alter. Zählt man bei so etwas in der Betriebswirtschaft auch eventuelle vorherige Anstellungen im gleichen Betrieb (wo man nachher bei einem anderen Betrieb war oder Pause machte)? Falls ja, dann muss der Datentyp diese ebenfalls aufnehmen können, müsste also dynamisch sein. Vermutlich ebenfalls wieder weit über dem Erwartungshorizont.
P.S.: @Threadersteller: Siehst du, wie sehr sich Threadklima und Inhalt verändern, wenn man nicht bloß stumpf seine Hausaufgaben hinklatscht?
-
@SeppJ und Bashar:
Diese Aufgabenstellung steht so wie ich es hier gepostet habe in meinem Skript.. Komplett ohne Zusammenhang.
Ich soll "einfach" eine Klasse Deklarieren, die keine Probleme mit diesen Membern mit sich bringt.
Und ich als Einsteiger sitz gerade nur davor und denk mir wtf..?!
-
scanbot90 schrieb:
@SeppJ und Bashar:
Diese Aufgabenstellung steht so wie ich es hier gepostet habe in meinem Skript.. Komplett ohne Zusammenhang.
Ich soll "einfach" eine Klasse Deklarieren, die keine Probleme mit diesen Membern mit sich bringt.
Und ich als Einsteiger sitz gerade nur davor und denk mir wtf..?!
Und welche Themen hast du bis jetzt durchlesen müssen - ich meine die Aufgabe wird doch nicht auf der erste Seite stehen?
-
P.S.: @Threadersteller: Siehst du, wie sehr sich Threadklima und Inhalt verändern, wenn man nicht bloß stumpf seine Hausaufgaben hinklatscht?
jop habs gemerkt
und vielen Dank für die bisherigen Kommentare/Hilfestellungen 
-
Zeus schrieb:
Und welche Themen hast du bis jetzt durchlesen müssen - ich meine die Aufgabe wird doch nicht auf der erste Seite stehen?
Thema das Parallel zu diesen "Laboraufgaben" steht ist: deklarieren einer Klasse. bzw. einstieg in objektorientierte softwareentwicklung.
-
scanbot90 schrieb:
Zeus schrieb:
Und welche Themen hast du bis jetzt durchlesen müssen - ich meine die Aufgabe wird doch nicht auf der erste Seite stehen?
Thema das Parallel zu diesen "Laboraufgaben" steht ist: deklarieren einer Klasse. bzw. einstieg in objektorientierte softwareentwicklung.
Dir wird doch in deiner bisherigen Schulkarriere schon aufgefallen sein, dass Übungsaufgaben sich häufig an den ein oder zwei vorhergehenden Lektionen orientieren. Daran kannst du den Erwartungshorizont des Lehrers ausmachen. Wenn da viel über public/private stand, dann schreib ein paar Worte darüber. Falls da tatsächlich etwas zum Datentyp von Geld oder ähnlichem gestanden haben sollte, dann wird auch das erwartet, falls nicht, dann höchstwahrscheinlich eher nicht und int ist ok (siehe meinen Beitrag oben). So kannst du mit allen Sachen die ich angesprochen habe ungefähr prüfen, ob und was genau erwartet wird.