Frage von schoollive, 50

Hilfe #c --> Ich komme nicht weiter?

Für ein Geometrie-Programm soll ein Klassenkonzept entwickelt werden. Implementieren Sie folgende Funktionalität:

Erstellen Sie eine Klasse Punkt (in einem Koordinatensystem): (1)

  1. Für einen Punkt werden iX und iY als Koordinaten und ein cName (Buchstabe) gespeichert. Entsprechende Properties zum Lesen und Schreiben der Attribute sind zu implementieren. (3)
  2. Die Methode zeigePunkt(…) gibt als String den Punkt in folgender Form zurück: Bsp: Punkt A (7,9) Wobei A den Namen des Punktes und 7 den X- bzw. 9 den Y-Wert darstellt. (2)
  3. Der Konstruktor akzeptiert entweder alle Parameter (also Name, X- und Y-Wert) oder nur den Namen; in diesem Fall werden die Koordinaten auf 0 gesetzt. (3)
  4. Instanzieren Sie im Hauptprogramm 3 Punkte und zeigen Sie diese in am Bildschirm an. (1)
Antwort
von triopasi, 37

Und deine Frage?

Ps: Es heißt C# ("See Sharp") und nicht #C (und WEHE du sagst "C Hashtag"!)

Kommentar von Kiboman ,

haha, C Hashtag.... Der ist gut

Kommentar von schoollive ,

Punkt 2

Kommentar von triopasi ,

Du musst einfach 2 Konstruktoren definieren. Einen Punkt(char, int, int) und einen Punkt(char). (Und eigentlich geht das noch viel einfacher xD...)

Kommentar von triopasi ,

@Kiboman: DAS HABEN SCHON LEUTE SO GESAGT! Kein Witz!!!!

Kommentar von DataJockey ,

hehe, c hashtag. .. der war gut.

ich hab auch schon C Raute gehört. =)

Antwort
von Kiboman, 38

wo klemmts ist doch eine einfache aufgabe?

Kommentar von schoollive ,

Für mich ist es nicht eine einfache Hausübung. Könntest du mir vielleicht helfen ? 

Kommentar von Kiboman ,

also

du machst eine klasse


public class Punkt {...

public string name

public int X,Y

public Punkt (string _name) {...

public Punkt (string _name, int _X, int _Y) {...

public string zeigePunkt () {...

------

so ungefähr, die bezeichnung kannst du selber anpassen (schreibe am handy und das scrollen ist nervig um nach zu lesen),

in Main würde ich eine TList erzeugen, die kannst du dann mittel foreach ausgeben.

oder einfach 3 variablen für jede instanz eine erzeugen .


Kommentar von schoollive ,

class Klasse_1
{
private int iX;
private int iY;
private string sCName;

public int x { get { return iX; } set { iX = value; } }
public int y { get { return iY; } set { iY = value; } }
public string cname { get { return sCName; } set { sCName = value; } }

public Klasse_1(string CName)
{
CName =cname;
}
public Klasse_1(string cName, int X, int Y)
{
cName = cname;
X= x;
Y= y;

}
public zeige_Punkt()
{

Ich hab es gemacht, was muss ich jetzt ?

Kommentar von Kiboman ,

wenn ich am pc bin kann ich dor besser antworten, es sei denn dir wurde dann schon geholfen.

zeigePunkt hat keinen Rückgabe wert der debugger müsste eigentlich streiken.

und wozu die get set definitionen?

triopasi hat recht, mein fehler du sollst für den namen ein char machen und keinen string.

Kommentar von Kiboman ,

PS.
zu verwirrst dich schon selber,

X= x;
Y= y;

ist falsch rum

x = X; muss es sein

deshalb verwende ich bei den paramtern ein _ davor das macht es transparenter z.b.

x = _x;

Kommentar von Kiboman ,

so hier ein lösungs weg, ich wollte es zwar nicht vorkauen aber sonst dauert es ewig

du kannst dem ja noch eine persönliche note geben:

class Program
{
static void Main(string[] args)
{
List Punkte = new List();
Punkte.Add(new Punkt('A', 7, 9));
Punkte.Add(new Punkt('B'));
Punkte.Add(new Punkt('C', 12, 51));

foreach (Punkt item in Punkte)
{
Console.WriteLine(item.zeigePunkt());
}
Console.ReadLine();
}
}


class Punkt
{
public char cName { get; private set; }
public int iX { get; private set; }
public int iY { get; private set; }

public Punkt (char _cName)
{
cName = _cName;
iX = 0;
iY = 0;
}
public Punkt (char _cName, int _iX, int _iY)
{
cName = _cName;
iX = _iX;
iY = _iY;
}
public string zeigePunkt ()
{
return string.Format("Punkt {0} ({1}, {2})", cName, iX, iY);
}
}
Kommentar von Kiboman ,

GF hat in Zeile 5 bei der List was weg gelassen...

List<Punkt> Punkte = new List<Punkt>();

Kommentar von regex9 ,

Halte dich mal an C#-Konventionen. Das heißt:

  • keine ungarische Notation (ist bei C# eh unsinnig)
  • keine Unterstriche in Methodennamen
  • Properties und Methoden beginnen mit einem Großbuchstaben

Des Weiteren sind Auto Properties hier vorzuziehen und der Klasse fehlt der access modifier. Falls C# 6 erlaubt ist, würde ich bei der Ausgabe eine String-Interpolation verwenden.

Kommentar von Kiboman ,

wenn du nicht mehr zu bemängeln hast, ist gut. :)

ich werde es so weiter machen wie bisher.

Kommentar von triopasi ,

Wenn du mir sagst was dein konkretes Problem ist? An was hängts denn?

Kommentar von schoollive ,

Punkt 2 und 3

Kommentar von triopasi ,

Der Name sollte aber ein char sein, kein string! Deshalb heisst es auch "cName".

Kommentar von triopasi ,

Warum nicht? Schaden tun die ja nicht.. Mir ist nochwas aufgefallen: 1. Benenne die Klasse bitte ordentlich. 2. Im einen Konstruktor hast du "int X" geschrieben. Das x und das y sollten klein sein, sind ja Variablen.

Kommentar von triopasi ,

Mein Tipp gegen die Verwirrung: this.x = x usw. Ich mache das konsequent IMMER so, das hilft auch ;)

Kommentar von Kiboman ,

ich pers. Bin zu schreib faul für this das nervt mich bei php ungemein :)

Kommentar von triopasi ,

Mich garnicht... ich mag das, dann is es eindeutig ;)

Kommentar von Kiboman ,

schau dir meine lösung an willst ja nicht sagen das es so nicht klar erkennbar ist?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten