Entwickler-Ecke
Basistechnologien - [C#] Klasse will nicht funktionieren
Sharpener - Sa 22.10.11 13:41
Titel: [C#] Klasse will nicht funktionieren
Hi,
ich arbeite seit geraumer Zeit ein Lehrbuch zu C# durch , dort wird nun an einem Klassenprojekt gearbeitet ,doch (der Code im IDE ist gleich dem im Buch) bekomme ich Fehler ,die ich nicht zu lösen weiß :S
Circle.cs
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace GeometricObjects { public class Circle { public int XCoordinate; public int YCoordinate; public double Radius;
private double _Radius; private int _XCoordiante; private int _YCoordiante;
public int YCoordinate { get { return _YCoordiante; } set { _YCoordiante = value; } }
public int XCoordinate { get { return _XCoordiante; } set { _XCoordiante = value; } } public double Radius { get { return _Radius; } set { if (value >= 0) _Radius = value; else Console.WriteLine("Unzulässiger negativer Radius."); } } public double GetArea() { double area = 3.14 * Math.Pow(Radius, 2); return area; }
public double GetCircumference() { double circumferne = 2 * 3.14 * Radius; return circumferne; }
} } |
Programm.cs
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace GeometricObjects { class Program { static void Main(string[] args) { Circle kreis = new Circle() { Radius = 12 }; double _area = kreis.GetArea(); Console.WriteLine(" Fläche = {0}", _area); Console.WriteLine(" Umfang = {0}", kreis.GetCircumference());
Console.ReadLine(); } } } |
Nach Buch sollte das Klappen aber (!) bei mir halt nicht und Tippfehler sind keine drin.
FehlerCode:
Quelltext
1: 2: 3: 4: 5:
| Fehler 1 Der Typ "GeometricObjects.Circle" enthält bereits eine Definition für "YCoordinate". I:\C Sharp Projekte\GeometricObjectsSolution\GeometricObjects\Circle.cs 20 20 GeometricObjects
Fehler 2 Der Typ "GeometricObjects.Circle" enthält bereits eine Definition für "XCoordinate". I:\C Sharp Projekte\GeometricObjectsSolution\GeometricObjects\Circle.cs 26 20 GeometricObjects
Fehler 3 Der Typ "GeometricObjects.Circle" enthält bereits eine Definition für "Radius". I:\C Sharp Projekte\GeometricObjectsSolution\GeometricObjects\Circle.cs 31 23 GeometricObjects |
Was ist falsch gelaufen?
Ausserdem erhalte ich zahlreiche "Ähnlichkeits und Mehrdeutigkeitsfehler" die aber beim Debuggen verschwinden.
Ich bin kein totaler Anfänger habe schon vorher programmiert aber nicht Objektorientiert.
Th69 - Sa 22.10.11 13:55
Hallo,
die ersten drei Member
C#-Quelltext
1: 2: 3:
| public int XCoordinate; public int YCoordinate; public double Radius; |
hast du ja nochmal in deiner Klasse als Eigenschaften (Properties) angelegt.
Ich nehme mal an, daß im Buch steht, daß du statt der öffentlichen Felder jetzt besser Eigenschaften dafür erstellen sollst (und dann dafür die public Member löschen sollst)?
Um welches Buch handelt es sich denn?
P.S. bei
C#-Quelltext
1: 2:
| private int _XCoordiante; private int _YCoordiante; |
hast du noch Rechtschreibfehler ;-)
Sharpener - Sa 22.10.11 15:15
So nach entfernen der Rechtschreibfehler kommt nurnoch ein Compiler Fehler
Quelltext
1:
| Fehler 1 Der Typ "GeometricObjects.Circle" enthält bereits eine Definition für "Radius". I:\C Sharp Projekte\GeometricObjectsSolution\GeometricObjects\Circle.cs 31 23 GeometricObjects |
Bei dem Buch handelt es sich um "Visual C# 2010" von Andreas Kühnel ist von Galileo Computing. Ich hab es als Buchform, ist aber auch als OpenBook verfügbar.
Zurzeit bin ich bei ...
http://openbook.galileocomputing.de/visual_csharp_2010/visual_csharp_2010_03_006.htm#mj7f2f5147154e87840d99873a40e07b4b !
Die ersten 3 Member hab ich nach Buch nochmal _Member angelegt ,um per get und Set diese zu setzten und Radius näher zu bestimmen (nicht unter 0).
Die public Member sollte ich nicht löschen (?).
Ich schau nochmal drüber... oder du auch per OpenBook :D
Sharpener
Christian S. - Sa 22.10.11 15:28
Die öffentlichen Felder müssen weg, die hast Du ja durch die gleichnamigen Eigenschaften ersetzt. Keine Ahnung, ob das im Buch vielleicht nicht so deutlich geschrieben wird, aber wenn die weg sind, sollte es passen ;-)
Sharpener - Sa 22.10.11 15:35
Also aus dem Quellcode müssen raus...
C#-Quelltext
1: 2: 3:
| private double Radius; private int XCoordiante; private int YCoordiante; |
?
Christian S. - Sa 22.10.11 15:38
Äh, wieso sind die jetzt private? :gruebel:
Du solltest im Quellcode haben: Private Felder mit "_" davor und öffentliche Eigenschaften. Keine öffentlichen Felder.
Sharpener - Sa 22.10.11 15:44
oh Sorry das war ein Kopierfehler :oops:
C#-Quelltext
1: 2: 3: 4:
| private double _Radius; private int _XCoordiante; private int _YCoordiante; |
private felder raus und die public da lassen.
Sinn der Sache war es die Datenkapselung zu erlernen
Christian S. - Sa 22.10.11 15:50
Sharpener hat folgendes geschrieben : |
private felder raus und die public da lassen. |
Lies nochmal, was ich geschrieben habe ;)
Ralf Jansen - Sa 22.10.11 15:51
Zitat: |
oh Sorry das war ein Kopierfehler
....
private felder raus und die public da lassen. |
Und das ein Denkfehler. Anders rum.
Sharpener - Sa 22.10.11 16:20
Ahhhso verstanden ;)
jetzt funktioniert das Programm ohne Probleme und gibt die richtigen Werte aus
Sharpener - So 23.10.11 13:45
Errare humanum est...
Ist mir erst jetzt wirklich aufgefallen, wohl zu schnell gelesen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!