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

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Tabeller av objekter Klassen ArrayList
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
14 okt. 2003, Arne Maus Inst. for informatikk, UiO
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser LC191D Videregående programmering Semesterplan:
Datafiler og serialisering Tekstfiler Scanner-klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering.
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Uke 8 - Mer om: Objekter, klasser og pekere
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Samarbeid mellom objekter
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  En instans er et objekt av en bestemt klasse  Instanser blir laget ved å kalle klassens.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Objektorientert programmering i PHP del 2
IS-102 Klassedefinisjoner
Eiendomregister mars 2002 Arne Maus. import java.util.*; import inf101.*; /* Klasse med main() som starter hele programmet */ class EiendomsregisterMain.
C# for javaprogrammerere
Objekt-orientering og Java
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 11 Applet’s Hva karakteriserer applet’sside.
Siste forelesning ER/EER-modellering
Mer om programmering av aggregeringer Repetisjon: Komposisjon og aggregering En register-klasse: modellering En register-klasse: implementering Sortering.
Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse.
GUI-programmering, del 2 Enkle layout-håndterere Forskjellige typer hendelser og lyttere GUI-komponenter for valg (oppgave) LC191D Videregående programmering.
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
Introduksjon til Java 5.0. Hva er nytt i 5.0? Generiske typer For-løkke med iterator (for-hver løkke) Automatisk innpakking av primitive typer Metadata.
Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Objektorientert programmering
Java & OO.
Muntlig eksamen realfag: Retningslinjene for lokalt gitt eksamen i Oppland fylkeskommune: Realfag 7.april 2008.
Java 11 Programmering med og uten objekter: hva er forskjellen?
Høgskolen i Sør-Trøndelag Forkurs: Tre vanlige klasser med alle fag En realfagsklasse Realfagskurs, halvårig: To klasser.
OOT Seminar H-97 CORBA Praktisk del. Valg av ORB implementasjon n Har valgt å bruke Visigenic sin ORB implementsjon n ORB’en er 100% Java kodet n Bygger.
Arv og polymorfi, del 3 Modifikatoren abstract side 2-3
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
09 – Arv og polymorfi i java
Se ellers læreboka, kap , side
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
INF Objektorientert programmering
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 25.9 MER OM: Sub-prosedyrer og sub-funksjoner Kap 4.
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Udir Lokalt gitt muntlig eksamen Sist endret: Endret 20. mars 2014 Vi har presisert en formulering to steder i rundskrivet. Tidligere sto det at.
Arv Gjenbruk. Begreper Super Overriding – Samme signatur Polymorfi – «en ting kan bety mange ting»
Triks Avslutt alle klasser, metoder og løkker samtidig som du lager dem. Deklarer alle variablene/referansene på begynnelsen av klassen. Hvis du definerer.
IS-102 Interaksjon med objekter
BilSalg klassedatastruktur Bil klassedatastruktur
Krav om sensorveiledninger – bakgrunn og intern oppfølging
Digital eksamen - relevante tilbud
Sensorveiledninger på MN
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

Polymorfi og arv, del 1 LC191D Videregående programmering Semesterplan: Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring Else Lervik, februar 2010

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

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, * 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

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

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

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 = 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

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 …

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()); Vis de tre øvrige subklassene

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.