Hellmut1956
Cadet 4th Year
- Registriert
- Juni 2011
- Beiträge
- 65
Hallo Freunde
Ich versuche gerade mich in Visual C# 2010 unter Visual Studio 2010 Ultimate einzuarbeiten und folge dabei dem sonstt sehr wertvollen Lehrbuch!
Ich versuche gerade korrekt die Verwendung von "base" zur expliziten Referenzierung einer Methode in der Basis-Klasse anzuwenden, halte mich dabei an die Programmierbeispiele des Lehrbuches. Der Einfachheit des Lernens zuliebe ist das Programm noch eine Konsolen-Anwendung, um so den Fokus auf das Lernen von Visual C# zu legen!
Das Programm besteht zu diesem Zeitpunkt aus 3 Dateien, "Program.cs", "Circle.cs" und "GraphicCircle.cs", wobei die beiden graphischen Dateien mit "Circle" die Basisklasse und GraphicCircle" die davon abgeleitete Klasse darstellt.
Mein Problem, eine Zählgröße "CountCircles" zeigt, siehe Testkode in "Program.cs", trotz expliziter Referenzierung auf die Methode in der Basisklasse Circle, als Ergebnis eine "2" und nicht eine "1"! Vielleicht kann mir jemand sagen, was ich falsch mache, bzw. offensichtlich noch nicht richtig verstanden habe! es folgt der Code aus den 3 Dateien:
Program.cs
Basisklasse Circle:
Und abgeleitete Klasse GraphicCircle:
Ich versuche gerade mich in Visual C# 2010 unter Visual Studio 2010 Ultimate einzuarbeiten und folge dabei dem sonstt sehr wertvollen Lehrbuch!
Ich versuche gerade korrekt die Verwendung von "base" zur expliziten Referenzierung einer Methode in der Basis-Klasse anzuwenden, halte mich dabei an die Programmierbeispiele des Lehrbuches. Der Einfachheit des Lernens zuliebe ist das Programm noch eine Konsolen-Anwendung, um so den Fokus auf das Lernen von Visual C# zu legen!
Das Programm besteht zu diesem Zeitpunkt aus 3 Dateien, "Program.cs", "Circle.cs" und "GraphicCircle.cs", wobei die beiden graphischen Dateien mit "Circle" die Basisklasse und GraphicCircle" die davon abgeleitete Klasse darstellt.
Mein Problem, eine Zählgröße "CountCircles" zeigt, siehe Testkode in "Program.cs", trotz expliziter Referenzierung auf die Methode in der Basisklasse Circle, als Ergebnis eine "2" und nicht eine "1"! Vielleicht kann mir jemand sagen, was ich falsch mache, bzw. offensichtlich noch nicht richtig verstanden habe! es folgt der Code aus den 3 Dateien:
Program.cs
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GeometricObjects
{
class Program
{
static void Main(string[] args)
{
GraphicCircle gc = new GraphicCircle();
Console.WriteLine("Anzahl der Kreise = {0}",
GraphicCircle.CountCircles);
Console.ReadLine(); }}
}
Basisklasse Circle:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GeometricObjects
{
// ------------------------------------------------------------------
// Beispiel: ...\Kapitel 3\GeometricObjectsSolution
// ------------------------------------------------------------------
public class Circle
{
// ---------- Felder -------------
protected double _Radius;
public int XCoordinate
{
get;
set;
}
public int YCoordinate
{
get;
set;
}
// --------- Statisches Feld -----------
protected static int _CountCircles;
// --------- Konstruktoren ---------------
public Circle()
{
_CountCircles++;
}
public Circle(double radius) : this()
{
Radius = radius;
}
public Circle(double radius, int xPos, int yPos) :this(radius)
{
XCoordinate = xPos;
YCoordinate = yPos;
}
// -------- Eigenschaftsmethoden ----------
public double Radius
{
get
{
return _Radius;
}
set
{
if (value >= 0)
_Radius = value;
else
Console.WriteLine("Unzulässiger negativer Radius.");
}
}
// ---------- Klasseneigenschaft -----------------
public static int CountCircles
{
get
{
return _CountCircles;
}
}
// ---------- Instanzmethoden ----------
public double GetArea()
{
return 3.14 * Math.Pow(Radius, 2);
}
public double GetCircumference()
{
return 2 * 3.14 * Radius;
}
public int Bigger(Circle kreis)
{
if (Radius < kreis.Radius)
return -1;
else
if (Radius == kreis.Radius)
return 0;
else
return 1;
} public void MoveXY(int dx, int dy)
{
XCoordinate += dx;
YCoordinate += dy;
}
public void MoveXY(int dx, int dy, int dRadius)
{
XCoordinate += dx;
YCoordinate += dy;
Radius += dRadius;
}
// -------- Klassenmethoden ------------
public static double GetArea(int radius)
{
return 3.14 * Math.Pow(radius, 2);
}
public static double GetCircumference(double radius)
{
return 2 * 3.14 * radius;
}
public static int Bigger(Circle kreis1, Circle kreis2)
{
if (kreis1.Radius < kreis2.Radius)
return -1;
else
if (kreis1.Radius == kreis2.Radius)
return 0;
else
return 1;
}
}
}
Und abgeleitete Klasse GraphicCircle:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GeometricObjects
{
public class GraphicCircle : Circle
{
public GraphicCircle()
{
_CountCircles++;
}
public GraphicCircle(double radius) : base(radius)
{
Radius = radius;
}
public GraphicCircle(double radius, int xPos, int yPos) : base(radius)
{
XCoordinate = xPos;
YCoordinate = yPos;
}
}
}
Zuletzt bearbeitet: