# Quellcode und Parameterübergabe



## Shorty-84 (4. Jul 2007)

Hallo, ich hab hier folgene Klausuraufgabe bearbeitet, und wollte fragen, ob mir vielleicht jemand sagen könnte, was ich richtig und was ich falsch gemacht habe, wäre echt net von euch! (Wahrscheinlich ist viel mehr falsch als richtig    )


```
class CPerson{
    int Alter;
} 

class CVorlesung{
    String name;
} 
class CFach{
    String name;
    
    CFach(String n) {
    name = n;
    }

    int Klausuren(int sem, int v){ 
        int erg = 0;
        if (sem<5)
        erg = (5-sem)*2;
        if (sem > 5)
        erg = 3;
        sem ++;
        return (erg-v);
    }

    int Stunden(CVorlesung v){
        if (v.name == ″DV″)
        return 4;
        else
        return 6;
    } 
}

    class CStudent extends CPerson{
        CFach fach;
        int semester;
        
        CStudent(int a, String f){
            Alter = a;
            fach = new CFach(f);
            semester = 1;
        }

        int Klausuren(int versch){
            return fach.Klausuren(semester,versch);
        }

        void neuesSemester(int plus) {
            semester += plus;
        }
    }
```

Das waren mal die gegebenen Programmzeilen, als nächstes sollen die folgenen Werte der angegebenen Variablen an den jeweiligen Stellen angegeben werden:

```
CStudent s1 = new CStudent(23,″MM″);
int kl = s1.Klausuren(2);
```

kl = _8_s1.Alter =__23__s1.semester =_1_


```
s1.neuesSemester(4);
kl = s1.Klausuren(0);
```
kl = _6_s1.Alter =__25__s1.semester =_5_

```
s1.neuesSemester(2);
kl = s1.Klausuren(1);
```
kl = _3_s1.Alter =__24__s1.semester =_3_

Vielen vielen Dank für eure Hilfe!


----------



## SlaterB (4. Jul 2007)

1.)
kl = 8 beim ersten bezweifle ich,
gib doch mal paar Zwischenwerte an
2.)
kl = 6 ebenso merkwürdig und wieso sollte sich das Alter ändern?
3.)
warum zum Teufel sinkt jetzt Alter + Semester? 
oder gehts da um einen neuen Studenten?

und kl hängt ja vom Semster ab, da will ich das gar nicht erst kommentieren


----------



## Shorty-84 (4. Jul 2007)

Würde es vielleicht so passen?


```
CStudent s1 = new CStudent(23,″MM″); 
int kl = s1.Klausuren(2);
```

kl = _6_ s1.Alter =__23__s1.semester =_1_ 


```
s1.neuesSemester(4); 
kl = s1.Klausuren(0);
```
 

kl = _6_s1.Alter =__23__s1.semester =_5_ 


```
s1.neuesSemester(2); 
kl = s1.Klausuren(1);
```
 

kl = _3_s1.Alter =__23__s1.semester =_7_


----------



## SlaterB (4. Jul 2007)

beim Alter und Semester stimme ich dir nun zu, das +4 und +2 ist ja nicht so schwer,
ob ich nun bei kl ja oder nein sage, was hilft dir das?

begründe es jeweils doch a la
sem = 1 -> erg = 2*(5-1) = 8, 
v= 2 also -2
-> kl = 6


----------



## Shorty-84 (4. Jul 2007)

also das erste Ergebnis hab ich so erhalten, wie du es vorgemacht hast:

sem = 1 -> erg = 2*(5-1) = 8, 
v= 2 also -2 
-> kl = 6

beim zweiten: 

sem = 2 -> erg = 2*(5-2) = 6, 
v= 0  
-> kl = 6

beim dritten:

sem = 3 -> erg = 2*(5-3) = 4, 
v= 1 also -1 
-> kl = 3

aber könnte es vielleicht sein, dass sem immer 1 ist und nur v sich verändert (2 , 0 , 1)? Dann wären die Ergebnisse für kl = 6 , 8 , 7


----------



## SlaterB (4. Jul 2007)

ich füge mal deine Postings zusammen
1)
s1.semester =_1_ 
sem = 1 
 :toll: 
2)
s1.semester =_5_ 
sem = 2
 :bloed: 
3)
s1.semester =_7_
sem = 3 
 :bloed:


----------



## Shorty-84 (4. Jul 2007)

kann es sein, dass sem immer 1 ist, also:
1) 
s1.semester =_1_ 
sem = 1 

2) 
s1.semester =_5_ 
sem = 1 

3) 
s1.semester =_7_ 
sem = 1


----------



## SlaterB (4. Jul 2007)

ne, 
s1.semester = sem

also
s1.semester =_5_ 
-> 
sem = 5


----------



## Shorty-84 (4. Jul 2007)

wenn s1.semester = sem, 

dann müsste für 2) kl=0 das ergebnis sein, oder?

und für 3) kl = 2

Stimmt das jetzt so?


----------



## SlaterB (4. Jul 2007)

bei 3) ok, bei 2) wieder Einzelwerte bitte


----------



## Shorty-84 (4. Jul 2007)

also s1.semester = 5, daraus folgt, dass sem = 5 ist.  
Da sem nicht kleiner und auch nicht größer als 5 ist, ist erg=0. v ist auch 0. also müsste doch null für kl rauskommen, nicht?


----------



## SlaterB (4. Jul 2007)

stimmt, ich war bei in Gedanken noch bei v=2

du siehst, ich kann es auch nicht besser


----------



## Shorty-84 (4. Jul 2007)

erstmal vielen Dank für deine Hilfe. Wollte fragen, ob du mir noch bei den Beziehungen zwischen den Klassen helfen könntest?

bin mir nur bei einer sicher, dass zwischen CStudent und CPerson Vererbung besteht!

ich denke zwischen CStudent und CFach besteht Komposition,

zwischen CStundet und CVorlesung besteht ebenso Kompositon

und zwischen CFach und CVorlesung Aggregation

Kann das so hinkommen?


----------



## SlaterB (4. Jul 2007)

kann, aber dazu sage ich persönlich mal nix genaues,

von solch subjektiven Begriffen halte ich wenig,
wenn du eine genaue Definion hast, dann poste die,
oder dann könntest du das auch selber genau beantworten,

reine Interpretation/ Meinung is dagegen weniger nützlich


----------



## Shorty-84 (4. Jul 2007)

also zum ersten: Vererbung erkennt man an extends, deswegen erbt die klasse CStudent von CPerson.
zum zweiten und dritten: Zwischen CStudent und CFach, sowie CStudent und CVorlesung müsste doch eine Komposition bestehen. Es besteht eine zwingende Teil-Ganzes-Beziehnung, also damit meine ich, dass es keine Studenten ohne Fächer und Vorlesung gibt.
und zum vierten: Zwischen CFach und CVorlesung besteht Aggregation, weil eine Vorlesung ein Teil von einem Fach ist.


----------

