Quellcode und Parameterübergabe

Status
Nicht offen für weitere Antworten.

Shorty-84

Mitglied
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 :( )

Code:
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:
Code:
CStudent s1 = new CStudent(23,″MM″);
int kl = s1.Klausuren(2);

kl = _8_s1.Alter =__23__s1.semester =_1_

Code:
s1.neuesSemester(4);
kl = s1.Klausuren(0);
kl = _6_s1.Alter =__25__s1.semester =_5_
Code:
s1.neuesSemester(2);
kl = s1.Klausuren(1);
kl = _3_s1.Alter =__24__s1.semester =_3_

Vielen vielen Dank für eure Hilfe!
 
S

SlaterB

Gast
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

Mitglied
Würde es vielleicht so passen?

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

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

Code:
s1.neuesSemester(4); 
kl = s1.Klausuren(0);


kl = _6_s1.Alter =__23__s1.semester =_5_

Code:
s1.neuesSemester(2); 
kl = s1.Klausuren(1);


kl = _3_s1.Alter =__23__s1.semester =_7_
 
S

SlaterB

Gast
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

Mitglied
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
 
S

SlaterB

Gast
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

Mitglied
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
 

Shorty-84

Mitglied
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?
 

Shorty-84

Mitglied
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?
 
S

SlaterB

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

du siehst, ich kann es auch nicht besser ;)
 

Shorty-84

Mitglied
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?
 
S

SlaterB

Gast
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

Mitglied
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.
 
Status
Nicht offen für weitere Antworten.

Oben