[Progra] Frage zur Musterlösung Blatt 8

[Progra] Programmierung
[DSAL] Datenstrukturen und Algorithmen
[SWT] Softwaretechnik
[DB] Datenbanken und Informationssysteme

Frage zur Musterlösung Blatt 8

Beitragvon Max11 » 05.01.09 13:29

Hi,
Warum ist die Klasse Kopfbedeckung als abstract deklariert obwohl sie keine einzige abstrake Methode enthält?
Und andere Frage: Wenn eine explizite Typumwandlung (B)a wie in der Aufgabe 1 durchgeführt wird, warum bleibt "a" nicht von Typ B z.B. für einen a.f() Aufruf?
Danke im Voraus
Max11
 
Beiträge: 11
Registriert: 24.03.08 21:51

Re: Frage zur Musterlösung Blatt 8

Beitragvon oxygen » 05.01.09 13:57

Max11 hat geschrieben:Hi,
Warum ist die Klasse Kopfbedeckung als abstract deklariert obwohl sie keine einzige abstrake Methode enthält?
Ich kenn zwar die Aufgabe nicht, aber da besteht kein kausaler Zusammenhang. Eine Klasse definiert man als abstrakt wenn sie eben ein abstraktes Objekt darstellt, ob sie nun Methoden, Attribute oÄ enthält ist das eher nebensächlich. Das ist auch eher ein stilitisches/strukturelles Mittel. Im Grunde müsste man eine Klasse nie als abstract definieren.

Kopfbedeckung ist da ein Parabeispiel, andere wären z.B. Fahrzeug als abstrakte Oberklasse von PKW und LKW.
oxygen
 
Beiträge: 1054
Registriert: 16.12.05 23:05
Wohnort: Bergheim
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: Medizin

Beitragvon biza » 05.01.09 14:29

Abstrakte Klassen dienen halt nur dazu zu verhindern, dass eine Klasse jemals instantiiert wird, also das man new Kopfbedeckung(...) sagen darf. Was sollte ein Objekt "Kopfbedeckung" schon sein?

Im Buch "Java von Kopf bis Fuß steht zu: Wie sieht ein neues abstract Tier() Objekt aus? :
Der Versuch, ein Objekt des Typs Tier zu erzeugen, ist wie ein alptraumartiger Star Trek-Transporter Unfall. Der, bei dem irgendwo während des Beamens plötzlich etwas Seltsames mit dem Zwischenspeicher geschieht.


Um also zu verhindern, dass du nach dem Erstellen einer Kopfbedeckung gefressen wirst (du hast ja gar keine Vorstellung wie sowas aussehen könnte!), machst du die Klasse lieber abstrakt ;)
huch, war ich das?
Benutzeravatar
biza
 
Beiträge: 139
Registriert: 20.11.08 21:02
Studiengang: Informatik (M.Sc.)
Studiert seit: WS 09/10
Anwendungsfach: Medizin

Beitragvon C-Otto » 05.01.09 18:43

Zum Thema abstrakte Klasse gab es hier ja schon gute Antworten.

Ein Typcast, also Beispielsweise "(B) a" aendert nichts an den Informationen, die zu "a" gehoeren. Der Inhalt der Instanz veraendert sich nicht, der Typ aendert sich nicht, nichts aendert sich. Der Typcast ist nur dafuer da, "anders" auf die Instanz zuzugreifen. Durch "(B) a" erzeugt man sich ein Konstrukt, das wie eine lokale Variable vom Typen B funktioniert. Statt "((B) a).?" kann man auch "B temp = (B) a; temp.?" schreiben. In bestimmten Situationen (wenn naemlich A und B jeweils ein Attribut "x" deklarieren), bieten nach der Deklaration "A a = new A()" die Ausdruecke "a.x" und "((B) a).x" Zugriff auf diese unterschiedlichen Attribute. Letzteres kann man auch durch "B temp = (B) a" und dann "temp.x" erreichen.

Ciao,
Carsten
Dr. rer. nat. Carsten Otto
http://verify.rwth-aachen.de/otto/
Benutzeravatar
C-Otto
 
Beiträge: 568
Registriert: 10.08.06 00:20
Wohnort: Schwalbach am Taunus
Studiert seit: fertig
Anwendungsfach: BWL

Frage zur Musterlösung Blatt 8

Beitragvon Anand » 07.01.09 13:52

Hi,

hab eine Frage zur Aufgabe 1a.

Bei OUT 5: muss da nicht y = -5.0 -32 = -37.0 stehen??

Gruss
Anand
Anand
 
Beiträge: 90
Registriert: 15.01.07 20:56


Zurück zu Praktische Informatik