Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Polymorfi og arv, del 1 LC191D Videregående programmering Semesterplan: Høgskolen i Sør-Trøndelag, Avdeling.

Liknende presentasjoner


Presentasjon om: "Polymorfi og arv, del 1 LC191D Videregående programmering Semesterplan: Høgskolen i Sør-Trøndelag, Avdeling."— Utskrift av presentasjonen:

1 Polymorfi og arv, del 1 LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_LC191D.php Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring Else Lervik, februar 2010

2 Litt teori …  Klassen Object  Metodene equals() og toString()  Arv  Polymorfi Forelesning 7, side 2

3 Problemstilling  Vi skal arbeide med en problemstilling knyttet til tidsforbruk ved sensurering av ulike typer eksamensoppgaver.  Vi skiller mellom tre typer eksamener med ulik type avlønning:  Muntlig eksamen. Sensoren får her for tre timer forberedelse pluss faktisk medgått tid til gjennomføringen av eksamen.  Skriftlig eksamen. Også her beregnes tre timers forberedelse. Her får sensoren betalt for et bestemt antall timer uavhengig av faktisk forbrukt tid. Antall timer pr besvarelse avhenger av antall besvarelser og eksamenstidens lengde:  Tidsforbruk for de 10 første besvarelsene settes lik 0,15 * eksamenstidens lengde pr besvarelse. Eksempel: 8 besvarelser, 4 timers eksamen, gir 8 * 4 * 0,15 = 4,8 timer.  Tidsforbruk pr besvarelse fra og med besvarelse nr 11 settes lik 0,1 * eksamenstidens lengde. Eksempel: 15 besvarelser, 4 timers eksamen, gir 10 * 4 * 0,15 + 5 * 4 * 0,1 = 6,0 + 2,0 = 8,0 timer  Prosjektoppgave. For sensurering av en oppgave får sensoren lønn for åtte timer. Forelesning 7, side 3

4 Testdata Forelesning 7, side 4 TypeMedgått tid Ant. besv. Eksamens- tid Ant. timer for sensor SensornrLønn*Utbetalt* Muntlig15,518,50102003700 Muntlig15,518,50113005550 Skriftlig50425,00102005000 Skriftlig10510,50102002100 Skriftlig535,25113001575 Prosjekt540,001130012000 *) Dette kommer vi tilbake til senere. Sum lønn sensor 10: 10800 Sum lønn sensor 11: 19125

5 Klassetre Forelesning 7, side 5 Oppdrag SkriftligMuntligEksamen ProsjektoppgaveSkriftligEksamen spesialisering, generalisering, subklasse, direkte subklasse, superklasse, direkte superklasse

6 Klassetre med attributter og operasjoner Forelesning 7, side 6 Oppdrag -sensor {readOnly} -fag {readOnly} +FORBEREDELSE = 3 +getSensor() +getFag() +finnTimeforbruk() MuntligEksamen -medgåttTid {readOnly} +getMedgåttTid() +finnTimeforbruk() Skriftlig -antBesvarelser {readOnly} +getAntBesvarelser() Prosjektoppgave +finnTimeforbruk() SkriftligEksamen -antTimer {readOnly} +FAKTOR1 = 0.15 +FAKTOR2 = 0.1 +ANTALL = 10 +getAntTimer() +finnTimeforbruk() +NORM_TIMER_PROSJEKT = 8 OBS! Merk at finnTimeforbruk() skal være med her, selv om den ikke har noen meningsfull implementasjon her spesialisering, generalisering, subklasse, direkte subklasse, superklasse, direkte superklasse

7 Programmering av klassen MuntligEksamen  Klassen Oppdrag er gitt  Programmer klassen MuntligEksamen, men vent med finnTimeforbruk()  Lag liten klient. Vis hvordan arv og polymorfi (toString()) virker.  Om arv  Om det reserverte ordet super  for å kalle konstruktører på nivået over  for å kalle metoder på nivået over Forelesning 7, side 7 Litt teori, forts …

8 Avansert bruk av polymorfi – finnTimeforbruk() i subklasse Forelesning 7, side 8 Utskrift: Muntlig eksamen, medgått tid: 15.5 Sensornr: 10, fag: LX456D, tidsforbruk for avlønning: 18.5 timer. Klassen Oppdrag: public String toString() { return "Sensornr: " + sensornr + ", fag: " + fag + ", tidsforbruk for avlønning: " + finnTimeforbruk() + " timer."; } Klassen MuntligEksamen: public double finnTimeforbruk() { return medgåttTid + FORBEREDELSE; } public String toString() { return "Muntlig eksamen, medgått tid: " + medgåttTid + " " + super.toString(); } Klient: System.out.println(muntlig.toString()); 1 2 3 Vis de tre øvrige subklassene

9 Samle oppdragene i en klasse Forelesning 7, side 9 Oppdrag MuntligEksamen ProsjektoppgaveSkriftligEksamen * 1 oppdragene Oppdragsregister +void regNyttOppdrag( Oppdrag oppdrag) +double finnLønn( int sensornr, double timelønn) +Oppdrag finnOppdrag( int indeks) +int finnAntOppdrag() Skriftlig Aggregering: En-del-av-sammenheng mellom objekter Klassetre: Er-sammenheng mellom klasser Programmer metodene i klassen Oppdragsregister. Datakontroll ikke nødvendig.


Laste ned ppt "Polymorfi og arv, del 1 LC191D Videregående programmering Semesterplan: Høgskolen i Sør-Trøndelag, Avdeling."

Liknende presentasjoner


Annonser fra Google