Laden...

Anfängerfrage: Konstruktor und Methode

Erstellt von suave86 vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.820 Views
S
suave86 Themenstarter:in
5 Beiträge seit 2015
vor 9 Jahren
Anfängerfrage: Konstruktor und Methode

ich hab ein ziemliches problem den konstruktor und die methode zu verstehen um den umfang eines n ecks zuberechen.
könnte mir jemand das verständlicher erläutern bitte?

namespace N_Eck
{
    class Program
    {
        struct Punkt
        {
            public double x, y;

            public Punkt(double x, double y)
            {
                this.x = x;
                this.y = y;
            }
        }

        class Neck
        {
           //Konstruktor 
            public Neck(Punkt mittelpunkt, double radius, int eckenanzahl)
            {
                double Winkel = 2 * Math.PI / eckenanzahl;
                double x;
                double y;

                for (int i = 0; i < eckenanzahl; i++)
                {
                    x = mittelpunkt.x + (radius * Math.Cos(i * Winkel));
                    y = mittelpunkt.y + (radius * Math.Sin(i * Winkel));
                 }
            }
        }
            //Methode:
          static public double Umfang(int eckenanzahl, double radius)
            {
                double winkel =  Math.PI / eckenanzahl;
                return eckenanzahl * 2 * radius * Math.Sin(winkel);
            }
       static void Main(string[] args)
        {
            Console.Write("Geben Sie die Anzahl der Ecken an: ");
            int n = int.Parse(Console.ReadLine());

            Console.Write("Geben Sie den Radius ein: ");
            double r = double.Parse(Console.ReadLine());

            Console.Write("Geben Sie den X-Wert des Mittelpunktes ein: ");
            double x = double.Parse(Console.ReadLine());

            Console.Write("Geben Sie den Y-Wert des Mittelpunktes ein: ");
            double y = double.Parse(Console.ReadLine());

            Console.WriteLine("Der Umfang beträg: " + (Umfang(n,r)));
            Console.ReadKey();
2.207 Beiträge seit 2011
vor 9 Jahren

Hallo suave86,

Bitte benutze die Code-Tags. [Hinweis] Wie poste ich richtig? Punkt 6.

Was willst du denn genau wissen? Der Konstruktor macht das, was er sagt: Er konstruiert eine Klasse. Kannst du mit

MyClass myclass = new MyClass();

aufrufen. Dann hast du eine Instanz deiner Klasse. Der Konstruktor kann auch Parameter übergeben bekommen, womit man initiale Eigenschaften der Klasse beschreiben kann. In deinem Fall bekommt "Neck" einen Mittelpunkt, einen Radius und eine Eckenanzahl.

Methoden innerhalb einer Klasse können irgenwelche Aktionen ausführen. Etwas berechnen beispielsweise.

Deine Methode "Umfang" berechnet den Umfang und gibt diesen zurück.

Du solltest nicht Code kopieren den du nicht verstehst 😉 Und vielleicht mal ein Buch lesen. Oder im Internet stöbern.

[Hinweis] Bitte schau in die SDK-/MSDN-Doku
[FAQ] Wie finde ich den Einstieg in C#?

Ich hoffe, ich konnte dir ein wenig helfen. Aber: Was genau ist denn dein Problem? Also was genau verstehst du nicht?

Gruss

Coffeebean

S
suave86 Themenstarter:in
5 Beiträge seit 2015
vor 9 Jahren

was ein konstruktor und eine methode ist weiß ich .ich versteh bloss nicht in diesen fall wie er den umfang berechnet .das ist mein problem

16.807 Beiträge seit 2008
vor 9 Jahren

Dann verwende den [Artikel] Debugger: Wie verwende ich den von Visual Studio?, damit Du schritt-weise den Code nachverfolgen kannst.

2.207 Beiträge seit 2011
vor 9 Jahren

ich versteh bloss nicht in diesen fall wie er den umfang berechnet

Hallo suave86,

was meinst du damit? Wie er es berechnet? Er verrechnet einfach die Werte.

Da wo du sie aufrufst setzt er das Ergebnis ein.

Console.WriteLine("Der Umfang beträg: " + (Umfang(n,r)));

Ist vielleicht einfacher/verständlicher wenn du schreibst


double umfang = Umfang(n,r);
Console.WriteLine("Der Umfang beträg: " + umfang));

Lässt sich auch schöner debuggen 😉

Gruss

Coffeebean

S
suave86 Themenstarter:in
5 Beiträge seit 2015
vor 9 Jahren

ja genau die berechnung versteh ich nicht die mittels des konstruktors und der methode angewendet wird.kann die nicht nachvollziehen.

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo suave86,

wenn dus nicht nachvollziehen kannst nimm mal den Debugger und schau, was dien Code macht und versuche zu verstehen, was da vor sich geht. Abt hat den Link nicht umsonst gepostet. Der Konstruktor hat mit der Berechnung recht wenig zu tun, denn "Umfang" benutzt ja nur Parameter, die sie übergeben bekommt zum Berechnen.

Btw: Einmal berechnest du den Winkel mit 2 * ... und in der Methode nicht 😉 Die Variablen haben unterschiedliche scopes, heissen aber ähnlich. Vielleicht verwirrt dich das...

Gruss

Coffeebean

S
suave86 Themenstarter:in
5 Beiträge seit 2015
vor 9 Jahren

danke ich versuchs mal.bin eher verwirrt weil ich einfach die art nicht versteh wie der umfang berechnet wird.
finde auch keine passende formel die mittels der x,y,anzahl der ecken und radius den unfang berechnet

4.931 Beiträge seit 2008
vor 9 Jahren

Die Struktur Punkt sowie die Klasse Neck werden ja auch gar nicht in der Main-Methode benutzt, d.h. du könntest sie auch löschen 😉
Woher hast du denn den Code? Aus einem Buch oder Tutorial?

Und der Umfang wird in der statischen Methode mittels der Umfang eines regelmäßigen Polygons-Formel berechnet.

PS: Der bisherige Code im Neck-Kosntruktor ist auch ziemlich sinnfrei, da dort bisher n (=eckenanzahl) mal der Wert für x und y berechnet wird (und danach dann die Werte nicht weiter benutzt werden). Soll das eine Aufgabe sein, damit man die Formel herleiten soll?

PPS: Daß der Umfang eine N-Ecks unabhängig von dem Mittelpunkt ist, sollte dir aber klar sein, oder?

2.207 Beiträge seit 2011
vor 9 Jahren
S
suave86 Themenstarter:in
5 Beiträge seit 2015
vor 9 Jahren

ne ist eine aufgabe vom studium, wir sollten eigentlich den flächeninhalt(mittels x,y koordinaten) und umfang(mittels x,y koordinaten) berechnen mit geeigneten konstruktoren und methoden.als exkurs hat unser tutor uns die aufgabe mit dem umfang so gelöst anhand der echzahlen,radius etc.

Hinweis von MrSparkle vor 9 Jahren

Bitte beachte [Hinweis] Wie poste ich richtig?, besonders Punkt 2.3

Bitte verwende auch - wenn möglich - Groß und Kleinschreibung bzw. Zeichensetzung.