Autor |
Nachricht |
|
Verfasst am: Sonntag, 29.10.2006, 22:18 Titel:
INFORMATIK....Need Help
|
|
|
moin....
im anflug eines wahnsinns habe ich als nebenfach informatik gewählt....geht hauptsächlich um java, habe allerdings keinen blassen schimmer, was da los ist....
jetzt stelle ich mal die aufgabe rein, in der hoffnung, dass einer von euch weiß, was hier los ist und ich nicht total auf dem schlauch stehe...
Zitat:
Aufgabe 9
Aufgabenstellung:
In dieser Aufgabe geht es um wichtige Konzepte, die im letzten Semester vorgestellt
wurden: Aufruf von Methoden und Sichtbarkeitsbereiche von Variablen in Aufgabe 9a sowie Unterschiede zwischen primitiven und Referenz-Datentypen in Aufgabe 9b.
A 9a Betrachte die unten angegebenen Klassen Sichtbarkeit und
SichtbarkeitsTest. Überlege Dir, welche Ausgabe die Ausführung
der Methode SichtbarkeitsTest.main() produziert. Gehe dazu
wie folgt vor:
1. Ergänze zunächst den Quellcode an den Stellen (A), (B) und (C)
so, dass die Methoden die im Kommentar angegebene Funktionalität
haben.
2. Gib dann für die Stellen (1) bis (5) an, welche Variablen dort jeweils
sichtbar sind (manchmal sind ?verschatteteâ?? Variablen unter ihrem
vollständigen Namen erreichbar) und welche Werte sie haben.
3. Welches Ergebnis wird auf dem Bildschirm ausgegeben?
A 9b Java kennt zwei grundsätzlich verschiedene Arten von Datentypen:
primitive und Referenz-Datentypen. Beschreibe die Unterschiede zwischen
diesen beiden Arten von Datentypen und gehe dabei auf die folgenden
Punkte genau ein:
1. Welche Datentypen gehören zu welcher Art?
2. Welche Operatoren sind vordefiniert?
3. Was passiert beim Zuweisen des Wertes einer Variablen an eine
andere Variable des gleichen Typs oder eines anderen Typs?
4. Wie werden Variablen an Methoden übergeben? Gibt es dabei
einen Unterschied zwischen primitiven Datentypen und Referenztypen.
5. Wie werden Variablen verglichen?
Informatik für Nebenfachstudierende II
Quellcode für die Klasse Sichtbarkeit:
package nf.uebung;
public class Sichtbarkeit {
static int c = 6;
int a; // (1)
public Sichtbarkeit(int a) {
// Instanzvariable "a" soll den übergebenen
// Wert zuzüglich "c" erhalten. (A) (2)
}
public int eineMethode() {
int b = 4; // (3)
// Fließkomma-Variable "a" deklarieren
// und mit 7,5 initialisieren. (B) (4)
for ( int c = 0; c < b; c++ ) {
// Nach dem 2. Durchlauf: (5)
a = a * a;
}
// Wert des zuletzt deklarierten "a" zurückgeben. (C)
}
}
Quellcode für die Klasse SichtbarkeitsTest:
package nf.uebung;
import nf.support.Text;
public class SichtbarkeitsTest {
public static void main(String[] args) throws Exception {
Sichtbarkeit sichtbarkeit;
int a = 29;
sichtbarkeit = new Sichtbarkeit(a);
a = sichtbarkeit.eineMethode();
Text.println(a);
}
}
so, erstmal vielen dank im voraus für alldiejenigen, die sich mühe mit dem krempel machen...
gruß
der friese Zuletzt bearbeitet von DerFriese am Dienstag, 18.12.2007, 20:43, insgesamt einmal bearbeitet |
|
|
|
|
|
|
|
|
Verfasst am: Sonntag, 29.10.2006, 22:43 Titel:
|
|
|
:boing:
...manchmal sieht man den wald vor lauter bäumen nicht....
gruß
der friese
edit:
ok...jetzt kenn ich die beiden datentypen....
hilft mir aber nicht weiter, da ich keine ahnung habe, was ich nun machen muss.... |
|
|
|
|
|
|
|
|
Verfasst am: Montag, 30.10.2006, 00:06 Titel:
|
|
|
Vorschlag für Teil 1 (ohne Gewähr, nur mal zum nachvollziehen) :
sichtbarkeit : wo kann ich welche variable sehen, benutzen, bzw. welche variable verändere ich.
zb. wird in der klasse Sichtbarkeit ein a deklariert. Aber in der methode eineMethode() nochmal. D.h. ich arbeite innerhalb der Methode auf dem inneren a, dass ich in der Methode deklariert habe. Hätte ich das niht getan würde ich mit a das äußere a ansprechen. Das kann ich jetzt auch noch indem ich vor das a schreibe wo ich es finde. D.h. zb. this.a (this = referenz auf das aktuelle objekt in dem man sich befindet). Ich hoffe es ist einigermaßen richtig *g* und es hilft ein wenig. Hab mir jetzt auf die Schnelle nicht soo viel Mühe gegeben... morgen nochmal genauer...(bei Bedarf )
class Sichtbarkeit {
static int c = 6;
int a; // (1) a nix ,c = 6
public Sichtbarkeit(int a) {
a +=c; //(A) (2) inneres a = 35, äußeres a nix ,c = 6
}
public int eineMethode() {
int b = 4; // (3) äußeres a nix ,b=4,äußeres c=6
float a = 7.5f; // (B) (4) inneres a = 7.5, b=4, äußeres c=6,äußeres a nix
for ( int c = 0; c < b; c++ ) {
// Nach dem 2. Durchlauf: (5) inneres a = 3164.0625,b = 4,inneres c = 2, äußeres a nix,äußeres c = 6
a = a * a;
}
return (int) a;// (C) //sinn? zuletzt deklariertes a ist float, methode ist int... casten?
}
}
public class Sichtbarkeit_test{
public static void main(String[] args) throws Exception {
Sichtbarkeit sichtbarkeit;
int a = 29;
sichtbarkeit = new Sichtbarkeit(a);
System.out.println(a); //entweder 29 oder 35 .. aber ich glaube es war call-by-reference, also 35.
//also wenn das a eine zeile drüber nur als referenz übergeben wird, dann ändert a+=c auch die
//variable hier => 35.. wird oben eine neue erzeugt => 29
}
}
edit: doch nicht call-by-reference für primitive datentypen => ausgabe ist 29 |
|
|
|
|
Verfasst am: Montag, 30.10.2006, 00:15 Titel:
|
|
|
dank dir kollege....hilft mir schon....
wäre mir recht, du würdest da nochmal genauer schauen
...soll ich morgen abgeben....kann also auch übermorgen werden und ich bin da total aufgeschmissen....
trotzdem...dank dir erstmal....
gruß
der friese |
|
|
|
|
Verfasst am: Montag, 30.10.2006, 00:27 Titel:
|
|
|
ein kleiner fingerfehler vom kollgen:
es muß heissen this.a = a + c;
// Instanzvariable "a" soll den übergebenen
// Wert zuzüglich "c" erhalten. (A) (2) a=29, c=16, this.a=45
edit:
und zum schluß bleibt a=29, weil int's immer als value übergeben werden.
edit2:
und in eineMethode ist das "innere a" nicht sichtbar...quatsch doch, er hats ja grad vorher definiert
Freddy Duckstein, GnomProfessor |
|
|
|
|
Verfasst am: Montag, 30.10.2006, 00:37 Titel:
|
|
|
jungs...ich hoffe, also ich nehme es mal an, ihr wisst was ihr tut...ich schreibe das so ab, da dass alles böhmische dörfer für mich sind...
gruß
der friese |
|
|
|
|
Verfasst am: Montag, 30.10.2006, 01:03 Titel:
|
|
|
jo, meine korrekutur war schon korrekt. noch fragen?
Freddy Duckstein, GnomProfessor |
|
|
|
|
Verfasst am: Montag, 30.10.2006, 01:11 Titel:
|
|
|
jo...einige...
quasi die kompletten fragen zu den datentypen....
tut mir ja nun leid, dass ich euch da nerven muß, komme aber damit, hoffentlich im moment, gar nicht zu recht...
gruß
der friese |
|
|
|
|
Verfasst am: Montag, 30.10.2006, 01:22 Titel:
|
|
|
1. Welche Datentypen gehören zu welcher Art?
primitive: boolean, char byte..... das steht nun wirklich direkt bei wikipedia
referenz: alle per Klasse selbst definierten
2. Welche Operatoren sind vordefiniert?
prmitive: +,-,*,%. <<,>>, ....
referenz: keine, alle müssen selbst definiert werden
3. Was passiert beim Zuweisen des Wertes einer Variablen an eine
andere Variable des gleichen Typs oder eines anderen Typs?
primitive: der Wert wird an die andere Variablke übergeben. Ist die Variable von einem anderen Typ, muß gecastet werden, zb: double a=0.0; int b; b = (int) a;
referenz: Es wird eine Referenz an die neue Variable übergeben. Der Cast muss selbst definiert werden.
4. Wie werden Variablen an Methoden übergeben? Gibt es dabei
einen Unterschied zwischen primitiven Datentypen und Referenztypen.
primitive: Der Wert wird übergeben
Referent: Es wird eine Referenz auf das Objekt im Speicher übergeben.
5. Wie werden Variablen verglichen?
primitive: der wert des objektes wird verglichen
referenz: muß definiert werden, was "gleich" sein soll.
Freddy Duckstein, GnomProfessor |
|
|
|
|
Verfasst am: Montag, 30.10.2006, 01:32 Titel:
|
|
|
dank dir....damit hast du dich qualifiziert....du darfst mich dieses semester durch meinen informatikkurs navigieren....
herzlichen glückwunsch....
aber jetzt mal im ernst....es kann sein, dass in naher zukunft....
also...dank dir und meister petz....
gruß
der friese
ps....
wenn ich so lese, was ihr da macht, dann scheint es logisch....selber würde ich da nie drauf kommen... |
|
|
|
|
Verfasst am: Montag, 30.10.2006, 02:17 Titel:
|
|
|
Jetzt weis ich, warum ich nie Informatik studiert habe....
Die Nadel im Heuhaufen ist leicht zu finden:
leg alles Heu beiseite, die Nadel bleibt übrig.
Anders ist es mit der Nadel im Nadelhaufen... |
|
|
|
|
Verfasst am: Montag, 30.10.2006, 12:21 Titel:
|
|
|
Juhuu... muss ichs ja gar nicht mehr machen
Bevor du es einfach abschreibst, das äußere a muss jetzt natürlich überall 45 sein... also immer da wo ich "nix" geschrieben habe, weil ich "Instanzvariable" irgendwie überlesen habe . Aber sonst hätts ja eigentlich auch keinen Sinn gemacht.
noch kurz zu 1.
Datentyp String ist vom Typ referenz, aber schon vordefiniert.
2. referenz : object1.equals(object2) == true/false ist schon vordefiniert .. aber gut.. ob das nun nen operator ist im eigentlichen Sinne
5. referenz : durch equals ja schon was vorgegeben. Vergleicht ja quasi das "gleiche Aussehen". Aber natürlich kann man hier auch die Gleichheit durch anderere Gesichtspunkte definieren.
Noch als kompletierung und weil ich mich jetzt schon drauf eingestellt hatte mir jetzt nochmal zu irgendwas da Gedanken machen zu müssen
@Friese direkt: Was ist denn dein Hauptfach ? |
|
|
|
|