Thema Datum  Von Nutzer Rating
Antwort
17.09.2021 08:43:25 Irina
Solved
17.09.2021 10:17:18 Gast8757
Solved
Rot eine etwas andere Implementierung
17.09.2021 10:40:09 Gast8757
Solved

Ansicht des Beitrags:
Von:
Gast8757
Datum:
17.09.2021 10:40:09
Views:
319
Rating: Antwort:
 Nein
Thema:
eine etwas andere Implementierung

Ich persönlich würde Breite/Höhe nicht in die abstrakte Klasse Figur packen. Ich würde da ehern die Positionsangabe der Form mit hinein nehmen - wie angedeutet.

Das Quadrat ist ja ein Speziellfall von einem Rechteck. Da könnte man sich fragen, ob man Quadrat von Rechteck erben lässt, oder ob man auf Quadrat auch ganz verzichtet (es gibt Alternativen das mit Rechteck zu lösen; z.B: Kontruktor überladen oder optionaler Parameter).


namespace Test
{
	using System;

	public class Program
	{
		static void Main()
		{
			//Figur f = new Figur();			// wird fehlschlagen, weil von abstrakten Klassen keine Objekt-Instanz erzeugt werden kann
			Rechteck a = new Rechteck(8, 3);
			Quadrat b = new Quadrat(3);
			
			a.Umfang();
			a.Flaeche();

			b.Umfang();
			b.Flaeche();
		}
	}

	public abstract class Figur
	{
		//public int PosX {get; set;}
		//public int PosY {get; set;}
		
	    public abstract void Umfang();
	    public abstract void Flaeche();
	}

	public class Rechteck : Figur
	{
	    public int Breite {get; private set;}
		public int Hoehe {get; private set;}
		
		public Rechteck(int breite, int hoehe)
		{
			this.Breite = breite;
			this.Hoehe = hoehe;
		}
		
	    public override void Umfang()
	    {
	        Console.WriteLine("Umfang des Rechtecks: " + 2 * (this.Breite + this.Hoehe));
	    }
		
	    public override void Flaeche()
	    {
	        Console.WriteLine("Fläche des Rechtecks: " + this.Breite * this.Hoehe);
	    }
	}

	public class Quadrat : Figur
	{
	    public int SeitenLaenge {get; private set;}
		
		public Quadrat(int laenge)
		{
			this.SeitenLaenge = laenge;
		}
		
		public override void Umfang()
	    {
	        Console.WriteLine("Umfang des Quadrats: " + 4 * this.SeitenLaenge);
	    }
		
	    public override void Flaeche()
	    {
	        Console.WriteLine("Fläche des Quadrats: " + this.SeitenLaenge * this.SeitenLaenge);
	    }
	}
}

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
17.09.2021 08:43:25 Irina
Solved
17.09.2021 10:17:18 Gast8757
Solved
Rot eine etwas andere Implementierung
17.09.2021 10:40:09 Gast8757
Solved