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
{
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;
}
}
}