Griffindor01
Cadet 3rd Year
- Registriert
- Feb. 2021
- Beiträge
- 33
Guten Abend,
Ich habe mal wieder eine Aufgabe aus dem Unterricht, bei der ich leider nicht mehr weiterkomme, wobei der Ansatz von mir jedoch richtig sein sollte.
Das Haupt-Thema dieses Mal ist Vererbung, mein Problem ist der letze Punkt, in dem ein zuvor erstellter Container nach bestimmten Kriterien ausgegeben werden soll.
Die Aufgabenstellung ist folgende:
Implementieren Sie in einem neuen Projekt namens
„Himmel“ die dargestellte Vererbung. Ergänzen Sie
die Klassen um Properties für die jeweiligen Attribute.
Erzeugen Sie in Main() mehrere Objekte vom Typ
Planet bzw. Stern, speichern Sie diese in einer Liste
und geben Sie alle Attributwerte aus.
Überprüfen Sie hierzu, um welchen Objekttyp es sich
jeweils handelt, um dessen Attributwerte für geschwindigkeit
bzw. leuchtkraft auszugeben.
Dazu eine Klassendiagramm, welches ich definitiv korrekt ins Programm umgesetzt habe (sollte eigentlich kein Copyright haben, aber bin mir nicht sicher, ob ich das hier hochladen darf). Die beiden Attribute Leuchtkraft und Geschwindigkeit sollen den Status private haben, die anderen 3 Attribute (Name, Masse, Position) sind protected.
Nun habe ich ein Problem mit 2 Get-Methoden, welche komischerweise nicht erkannt werden und durch die ich die spezifischen Werte für die Geschwindigkeit oder die Leuchtkraft nicht ausgeben kann. Schaut euch am besten mal meine Main an, da ist zu sehen, wie ich das in der Aufgabenstellung beschriebene Problem versuche zu lösen (Ausgangsklasse heißt Himmelskörper, alle Himmelskörper haben einen Namen, eine Masse und eine Position, aber die Sterne sollen dazu ein Attribut namens Leuchtkraft haben, die Planeten eins namens Geschwindigkeit).
Nachfolgend meine Klassen und die Fehlermeldung nochmal im Anhang.
Ich habe mal wieder eine Aufgabe aus dem Unterricht, bei der ich leider nicht mehr weiterkomme, wobei der Ansatz von mir jedoch richtig sein sollte.
Das Haupt-Thema dieses Mal ist Vererbung, mein Problem ist der letze Punkt, in dem ein zuvor erstellter Container nach bestimmten Kriterien ausgegeben werden soll.
Die Aufgabenstellung ist folgende:
Implementieren Sie in einem neuen Projekt namens
„Himmel“ die dargestellte Vererbung. Ergänzen Sie
die Klassen um Properties für die jeweiligen Attribute.
Erzeugen Sie in Main() mehrere Objekte vom Typ
Planet bzw. Stern, speichern Sie diese in einer Liste
und geben Sie alle Attributwerte aus.
Überprüfen Sie hierzu, um welchen Objekttyp es sich
jeweils handelt, um dessen Attributwerte für geschwindigkeit
bzw. leuchtkraft auszugeben.
Dazu eine Klassendiagramm, welches ich definitiv korrekt ins Programm umgesetzt habe (sollte eigentlich kein Copyright haben, aber bin mir nicht sicher, ob ich das hier hochladen darf). Die beiden Attribute Leuchtkraft und Geschwindigkeit sollen den Status private haben, die anderen 3 Attribute (Name, Masse, Position) sind protected.
Nun habe ich ein Problem mit 2 Get-Methoden, welche komischerweise nicht erkannt werden und durch die ich die spezifischen Werte für die Geschwindigkeit oder die Leuchtkraft nicht ausgeben kann. Schaut euch am besten mal meine Main an, da ist zu sehen, wie ich das in der Aufgabenstellung beschriebene Problem versuche zu lösen (Ausgangsklasse heißt Himmelskörper, alle Himmelskörper haben einen Namen, eine Masse und eine Position, aber die Sterne sollen dazu ein Attribut namens Leuchtkraft haben, die Planeten eins namens Geschwindigkeit).
Nachfolgend meine Klassen und die Fehlermeldung nochmal im Anhang.
C#:
// Erstellen der Planeten
Planet Merkur = new Planet("Merkur", 671.4, 872, 344.4);
Planet Jupiter = new Planet("Jupiter", 823.1, 596, 371.5);
Planet Mars = new Planet("Mars", 491.2, 256, 922.1);
// Erstellen der Sterne
Stern Algol = new Stern("Algol", 762.5, 673, 120);
Stern Tabit = new Stern("Tabit", 729.3, 378, 150);
Stern Okab = new Stern("Okab", 374.3, 921, 115);
// Erstellen zweier Listen
List<Himmelskörper> himmelskörper = new List<Himmelskörper>();
// Hinzufügen der Planeten und Sterne in die Sammel-Liste
himmelskörper.Add(Merkur);
himmelskörper.Add(Jupiter);
himmelskörper.Add(Mars);
himmelskörper.Add(Algol);
himmelskörper.Add(Tabit);
himmelskörper.Add(Okab);
int Listenlänge = himmelskörper.Count();
for (Listenlänge = Listenlänge -1; Listenlänge >= 0; Listenlänge--) // For-Schleife, -1 weil Listenlänge nicht den nullbasierten Index beachtet.
{
Console.WriteLine(himmelskörper[Listenlänge].getName());
Console.WriteLine(himmelskörper[Listenlänge].getMasse());
Console.WriteLine(himmelskörper[Listenlänge].getPosition());
if(Convert.ToString(himmelskörper[Listenlänge]) == "Himmel.Planet")
{
Console.WriteLine(himmelskörper[Listenlänge].getGeschwindigkeit());
}
else
{
Console.WriteLine(himmelskörper[Listenlänge].getLeuchtstärke());
}
PLANETEN KLASSE:
class Planet : Himmelskörper
{
private double Geschwindigkeit { get; set; }
public double getGeschwindigkeit()
{
return Geschwindigkeit;
}
public Planet()
{
Name = "Beispiel-Planet";
Masse = 592.4;
Position = 991;
Geschwindigkeit = 9938.63;
}
public Planet(string _name, double _masse, int _pos, double _gesch)
{
Name = _name;
Masse = _masse;
Position = _pos;
Geschwindigkeit = _gesch;
}
}
}
STERN KLASSE:
class Stern : Himmelskörper
{
private int Leuchtkraft { get; set; }
public int getLeuchtkraft()
{
return Leuchtkraft;
}
public Stern()
{
Name = "Beispiel-Planet";
Masse = 592.4;
Position = 991;
Leuchtkraft = 100;
}
public Stern(string _name, double _masse, int _pos, int _leu)
{
Name = _name;
Masse = _masse;
Position = _pos;
Leuchtkraft = _leu;
}
}
}
HIMMELSKÖRPER KLASSE:
abstract class Himmelskörper
{
protected string Name { get; set; }
protected double Masse { get; set; }
protected int Position { get; set; }
public string getName()
{
return Name;
}
public double getMasse()
{
return Masse;
}
public int getPosition()
{
return Position;
}
}
Anhänge
Zuletzt bearbeitet: