Ein Beispiel für den Aufbau einer abstrakten Klasse in C#
Im Beispiel werden zur Demonstration nicht abstrakte Klassen implementiert (Addition und PI) sowie die Abstrakte für Subtraktion, Division und Multiplikation
using System;
using System.Globalization;
namespace AbstractClass
{
abstract class Calculator
{
public double Addition(double num1, double num2) //non abstract method
{
return (num1 + num2);
}
public abstract double Multiplikation(double num1, double num2); //abstract method
public abstract double Division(double num1, double num2); //abstract method
public abstract double Subtraktion(double num1, double num2); //abstract method
}
class Program : Calculator
{
public override double Multiplikation(double n1, double n2)
{
return (n1 * n2);
}
public override double Division(double n1, double n2)
{
return (n1 / n2);
}
public override double Subtraktion(double n1, double n2)
{
return (n1 - n2);
}
static void Main(string[] args)
{
Program obj = new Program();
const string fehlermeldung = "Bitte eine gültige Zahl - Format: #.#";
// Abfrage der Werte
Console.WriteLine("PI");
double pi = GetUserInput("Ein Wert:", fehlermeldung);
Console.WriteLine("Addition | Multiplikation | Subtraktion");
double a = GetUserInput("1. Wert:", fehlermeldung);
double b = GetUserInput("2. Wert:", fehlermeldung);
Console.WriteLine("Division | Eingabe von 0 nicht erlaubt");
double aZero = GetUserInput("1. Wert:", fehlermeldung, false);
double bZero = GetUserInput("2. Wert:", fehlermeldung, false);
// Berechnungen durchführen
double resultPi = pi*Math.PI;
double resultAddition = obj.Addition(a, b);
double resultSubtraktion = obj.Subtraktion(a, b);
double resultMultiplikation = obj.Multiplikation(a, b);
double resultDivision = obj.Division(aZero, bZero);
// Ausgabe an Benutzer
Console.WriteLine("\nErgebnisse:");
Console.WriteLine("PI\t\t:{0}*{1}={2}", pi, Math.PI.ToString(CultureInfo.InvariantCulture), resultPi);
Console.WriteLine("Addition\t:{0}+{1}={2}", a, b, resultAddition);
Console.WriteLine("Subtraktion\t:{0}-{1}={2}", a, b, resultSubtraktion);
Console.WriteLine("Multiplikation\t:{0}*{1}={2}",a,b, resultMultiplikation);
Console.WriteLine("Division\t:{0}+{1}={2}",aZero, bZero, resultDivision);
Console.ReadLine();
}
static double GetUserInput(string question, string errorMessage, Boolean allowZero = true)
{
double a;
Console.Write(question);
if (double.TryParse(Console.ReadLine(), out a) )
{
if (!allowZero && (int)a == 0)
{
Console.WriteLine("0 nicht erlaubt.");
a = GetUserInput(question, errorMessage);
}
}
else{
Console.WriteLine(errorMessage );
a = GetUserInput(question, errorMessage);
}
return a;
}
}
}