Jan 18

Was ist die Ausgabe bei folgendem Code?

public class Angestellter  {

int PersNr=10;
int getPersNr(){ return PersNr;}
public static void main (String args[]){

Buchhalter b = new Buchhalter();
System.out.println(b.getPersNr());

}

}
public class Buchhalter extends Angestellter {

int PersNr=12;

}

Antwort/ answer
Tagged with:
Jan 10

Wie ist der Output des folgenden Codes?

interface PersNr{ void setPersNr (short PersNr); }

public class Angestellter implements PersNr {

void setPersNr(short PersNr){ System.out.println(“short”);}
void setPersNr(long PersNr){ System.out.println(“long”);}

static public void main(String[] Args){

Angestellter a = new Angestellter();
a.setPersNr(1);

}

}

Antwort/ answer
Dez 23

Cohersion oder auf deutsch Kohäsion nimmt Bezug auf die Anzahl und Vielfalt der Aufgaben, für die eine einzelne Einheit (Methode, Klasse) zuständig ist.

So weit, so gut; aber was bedeutet das eigentlich genau?

Grundsätzlich ist es wichtig, zu verstehen, was eine Klasse oder Methode tut. Dies wird leichter, wenn diese Einheit genau für eine logische Aufgabe verantwortlich ist. In diesem Zusammenhang sprechen wir von hoher Kohäsion.

Daher sollten Methoden nur für eine gut definierte Aufgabe verantwortlich sein und Klassen jeweils einen klar definierten Objekttyp modellieren.

Tagged with:
Dez 21

Coupling oder deutsch: Kopplung beschreibt den Grad der Abhängigkeiten zwischen separaten Modulen eines Programmes.

Nehmen also zwei Klassen in vielen Details aufeinander Bezug, sind sie eng gekoppelt (tightly coupled).

Erstrebenswert ist aber eine lose Kopplung, da hier eine Klasse einfacher verstanden, geändert und gewartet werden kann, ohne andere Klassen zu lesen.

Tagged with:
Okt 18

Wie ist der Output des folgenden Codes?

public class Angestellter  {

Angestellter(int … PersNr){ System.out.println(“Angestellter angelegt”); }

static public void main(String[] Args){

Angestellter a = new Angestellter();

}

}

Antwort/ answer
Sep 20

Was ist der Output des folgenden Codes?

public class Angestellter  {

static int newPersNr(Long x, Long y) { return 1; }
static int newPersNr(long… x) { return 2; }
static int newPersNr(Integer x, Integer y) { return 3; }
static int newPersNr(Number n, Number m) { return 4; }

static public void main(String[] Args){

short a =1;
int b =2;
long c=3;
Long d = new Long(4);

System.out.println(newPersNr(a,a));
System.out.println(newPersNr(b,b));
System.out.println(newPersNr(c,c));
System.out.println(newPersNr(d,d));

System.out.println(newPersNr(1,1));

System.out.println(newPersNr(a,b));
System.out.println(newPersNr(a,c));
System.out.println(newPersNr(a,d));
System.out.println(newPersNr(d,a));
System.out.println(newPersNr(c,a));
System.out.println(newPersNr(b,a));

}

}

Antwort/ answer
    Aug 24

    Was ist der Output des folgenden Codes?

    private class Angestellter {

    Angestellter(){

    int a = 10;
    System.out.println(a);

    }

    }

    class Buchhalter extends Angestellter {

    static int a = 12;

    static public void main(String[] Args) {

    Buchhalter b = new Buchhalter();
    System.out.println(a);

    }

    }



    Antwort/ answer

    Tagged with:
    Mai 24

    die letzten Tage haben wir uns recht viele Beispiele angeschaut; was geht, was geht nicht, was geht unter welchen Umständen, etc.

    Zum Abschluss dieses Themas (naja, fast, ich habe noch ein paar Übungen für einen späteren Zeitpunkt geplant) will ich die wichtigsten Infos nochmal zusammenfassen:

    • Gib es bei Methodenaufrufen keine exakte übereinstimmung, wird der nächstgrößere Typ “gezogen”.
    • Es wird immer nur der nächstgrößere, aber nie ein kleinerer Wert gezogen, auch wenn dieser theoretisch passen würde, da Datentypen zwar erweitert, aber nicht verkleinert werden können
    • Für den Falle, dass sich der Compiler zwischen Autoboxing und dem größerem Wert entscheiden muss, wird immer der nächstgrößere Wert und nicht der Autoboxing-Wert gezogen.
    • Bei Wahlmöglichkeit immer die genaue Anzahl von Werten gezogen wird und nicht eine variable Anzahl von Werten
    • Diese Wahlmöglichkeitist unabhängig von Autoboxing
    • Referenzvariablen können auch im Zuge des Polymorphismus erweitert werden, da ja jede Subklasse auch eine Überklasse ist.
    • Wrapper können nicht andere Werte (außer ihrem eigenen primitven Wert) aufnehmen. Abhilfe schafft hier die Aufnahme per Object-Klasse und anschließenden expliziten Cast
    Mai 23

    Wie ich ja vor ein paar Tagen erklährt habe, funktioniert der folgende Code nicht, da Long-Objekte keine Integer-Objekte aufnehmen können:

    class Angestellter {

    void getPosition(Long a){

    System.out.println(“Long-Übernahme”);

    }

    public static void main(String[] args) {

    Integer b = 2;

    Angestellter a = new Angestellter();

    a.getPosition(b);

    }

    }

    Hier, die Abänderung, mit der dieser Code compiliert werden kann:

    public class Angestellter {

    void getPosition(Object a){

    long b = (Long) a;

    }

    public static void main (String args[]){

    Angestellter a = new Angestellter();
    Integer b = 2;
    a.getPosition(b);

    }

    }

    Der Typ Objekt kann also jedes andere Objekt aufnehmen, da er Über-Objekt jedes Objektes ist.

    Nochmal zur Rekapitulation was genau passiert ist:

    1. die Integer-Referenz wird in eine Objekt-Referenz erweitert
    2. die getPosition-Methode, bekommt eine Objekt-Referenz, die eigentlich eine Integer-Referenz ist
    3. die Methode casted das Objekt  in eine Long-Referenz
    Mai 21

    Nochmal zur Erinnerung, dass man int-Werte mit Methoden, die einen long-wert aufnehmen aufrufen kann:

    class Angestellter {

    void getPosition(long a){

    System.out.println(“Long-Übernahme”);

    }

    public static void main(String[] args) {

    int b = 2;

    Angestellter a = new Angestellter();

    a.getPosition(b);

    }

    }

    Dies funktioniert aber nicht bei Wrappern:

    class Angestellter {

    void getPosition(Long a){

    System.out.println(“Long-Übernahme”);

    }

    public static void main(String[] args) {

    int b = 2;

    Angestellter a = new Angestellter();

    a.getPosition(b);

    }

    }

    Hier wird ein Compilerfehler (The method getPosition(Long) in the type Angestellter is not applicable for the arguments (Integer)) ausgegeben.

    preload preload preload
    http://www.wikio.de Blog Top Liste - by TopBlogs.de Blogverzeichnis - Blog Verzeichnis bloggerei.de Bloggeramt.de Software
    Webbhotell Top Blogs