THM                                                                                                                                                Uebung  02

Komponenten & Frameworks

Prof. Dr. Henrich

 

Ziel: Dll, Exception-Handling, ildasm, Entwurfsmuster

 

Aufgabe 1

Erstellen Sie folgendes Programm:

    Eingabe: beliebige reelle Zahl

    Ausgabe: Quadrat des Eingabewertes

In folgender Variante:

Quadratfunktion in Dll, die dann in einer Konsolenanwendung verwendet  wird

 

Aufgabe 2 (eigene Exception)

Erstellen Sie die Klasse Bruch mit den Rechenoperation Addition und Multiplikation.

Beim Anlegen eines Bruches werden im Konstruktor Nenner und Zaehler vom Benutzer

erfragt (von der Konsole eingegeben). Falls der Benutzer den Nenner 0 eingibt wird kein

Bruch angelegt. (eigene Exception erstellen und verwenden).

Das Anlegen eines Bruches in der Form Bruch b = new Bruch(5,7) darf in Main nicht möglich sein.

 

Aufgabe 3
a) Untersuchen Sie mit dem Programm ildasm.exe die Datei http://homepages.thm.de/~hg6678/RaetselDLL.dll
    Was enthaelt die Datei?
   Welche Funktionalitaet verbirgt sich hinter den Methoden?
b) Testen Sie ihre Vermutungen durch Verwendung der Dll.

c) Generieren Sie gegebenenfalls C#-Code aus der Dll

 

Aufgabe 4
Gegeben sei folgendes Programm, das um die Funktionalität der unten gegebenen Klasse

erweitert werden soll:

 

    public interface IKoerper

    {

        int Laenge { get; }

        int Breite { get; }

        int Hoehe { get; }

        double BerechneVolumen();

    }

 

    public class Quader : IKoerper

    {

        int laenge, breite, hoehe;

        public Quader(int l, int b, int h)

        {

            hoehe = h;

            breite = b;

            laenge = l;

        }

        public int Laenge

        {

            get { return laenge; }

        }

        public int Breite

        {

            get { return breite; }

        }

        public int Hoehe

        {

            get { return hoehe; }

        }

        public double BerechneVolumen()

        {

            return laenge * breite * hoehe;

        }

 

    }

   

  class Test

    {

        static void Main(string[] args)

        {

            IKoerper koerper=null;

            Console.WriteLine("Auswahl Koerper: 1=Quader 2= Zylinder");

            int zahl = Convert.ToInt32(Console.ReadLine());

            if (zahl == 1)

            {

                koerper = new Quader(3,4,5);

            }

            if (zahl == 2)

            {

            //    koerper = ???   // Einzige Erweiterung der Main-Funktion

            }

           

            if(koerper!= null)  Console.WriteLine(koerper.BerechneVolumen());

            Console.ReadLine();

 

        }

    }

 

Das Programm soll so erweitert werden, dass folgende Klasse unverändert verwendet

wird, so dass in Main nicht nur ein Quader sondern auch ein Zylinder ausgewählt werden kann.

 

// gegebene Klasse, die verwendet werden soll

    public class Zylinder

    {

        public int hoehe, radius;

        public Zylinder(int hoehe, int radius)

        {

            this.radius = radius;

            this.hoehe = hoehe;

        }

        public double Volumen

        {

            get

            {

                return Math.PI * radius *radius * hoehe;

            }

        }

    }