8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 1/26
1
Velkommen tilTDT4100 –
Objekt-orientert programmering,våren 2010
1. amanuensis Hallvard Trætteberg
[email protected]: 115, litt bortenfor
IDI-ekspedisjonen i IT-bygget
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 2/26
2
Dagens forelesning
• Om faget• Praktisk informasjon
• Læringsmål– Bli kjent med faget
– Java-programmering• komme i gang med egen programmering
• kompilering og kjøring av enkelt Java-program
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 3/26
3
Læringsmål
• Tredelt læringsmål– kunne tenke og
konstruere objektorientert
– kunne skrive
objektorientert programkode
– kunne bruke standard
programmeringsverktøy
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 4/26
4
Vi har valgt...
• ...objektorientert konstruksjon fordi det er ledendeinnen moderne systemutvikling
• ...Java, fordi det er et fritt tilgjengelig, relativt enkelt
og praktisk programmeringsspråk
• ...Eclipse, fordi det er en god representant for en viktig
klasse verktøy, er mye brukt av og godt likt iutviklingsmiljøer og er fritt tilgjengelig for de tre
hovedplattformene (linux, mac, win)
• Merk at søsterfaget TDT4102, som bruker C++, har
omtrent samme læringsmål, dekker mye av det sammestoffet ift. objektorientering og moderne verktøy, og
gir samme mulighet til å ta datafag senere.
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 5/26
5
Læringsform
• Faglig opplegg– Forelesingene benyttes til å gi introduksjon til teorien
– Øvingene brukes for at dere skal lære selv og opparbeide forståelse• øvingsforelesninger vil presentere og gjennomgå øvingene, med fokus på
praktisk problemløsning med øvingene som utgangspunkt
– På slutten av semesteret tilbyr vi to alternative løp, for å gi dereerfaring/læring med et mer komplekst problem:1) Et styrt øvingsopplegg rundt et spill, og2) et egendefinert spill-prosjektDet er ikke sikkert det blir et fritt valg, da prosjektet er ment å passe tilde som er relativt sterke og selvstendige.
• Læringen skjer inni deg– du bygger en mental modell av Java og objekt-orientering
– samspill mellom aksjon og refleksjon
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 6/26
6
Programmering er en ferdighet som
krever både kunnskap og trening!
Bruk tid på å øve dere, det er det
eneste som hjelper!
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 7/26
7
TDT4100 og andre datafag
• Bygger på– IT grunnkurs (ulike varianter) evt.– IT1103 (IT grunnkurs for de frie studiene)
• Går parallelt med– TDT4102 – Prosedyre- og objektorientert
programmering (med C++)– Gir samme grunnlag for å ta andre kurs
• Bygger opp under– TDT4120 – Algoritmer og datastrukturer– TDT4140 – Systemutvikling– TDT4180 – Menneske-maskin-interaksjon
IT Grunnkurs
TDT4100
(Java)
TDT4102
(C++)
TDT4120 (Alg. dat)
TDT4140
(SU)
TDT4180
(MMI) ...
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 8/26
8
Forventede forkunnskaper
• Vi forutsetter at dere har grunnleggendekunnskap om prosedyreorientert programmering i Java– IT Grunnkurs eller tilsvarende (f.eks. IT1103)
– variabler, enkle datatyper og tabeller, uttrykk, kontroll- ogløkkekonstruksjoner og funksjoner/funksjonskall
• Erfaringsmessig er det stor variasjon i denenkeltes utgangspunkt– De viktigste elementene i prosedyreorientert programmering
gjennomgås/repeteres i de første forelesningene
– Selv om dette er kjent stoff er det nødvendige for mange!
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 9/26
9
Lærebok Y. Daniel Liang,
Introduction to Java Programming,comprehensive version,Sixth edition, eller nyere
Boka dekker det meste av pensum. Noensmå notater legges ut der læreboka ikke
dekker godt nok. Forøvrig er alt forelesnings-og øvingsmateriale pensum.
Boka dekker også stoff som er relevant isenere fag, som Systemutvikling ogMenneske-maskin-interaksjon
Merk at det finnes mange andre bøker somdekker samme stoff og som dere gjerne måbenytte. Til eksamen vil dere få ta med énJava-lærebok, fritt valgt.
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 10/26
10
Fagsider
• Hjemmesiden for faget er:http://www.idi.ntnu.no/emner/tdt4100/
• It’s:learning brukes for løpende informasjon:https://innsida.ntnu.no/sso/?target=itslearning– informasjon om forelesninger og øvinger– ekstramateriale for emner som ikke er (godt) dekket av boka– kalenderen vil bli brukt aktivt
– forum for diskusjoner og tilbakemeldinger
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 11/26
11
Øvinger• Øvinger
– 12 øvinger (9 + 3), de tre siste er frivillige for de somtar spillprosjektet)
– Øvingsopplegget er obligatorisk og fokuserer påeksamensrelevant pensum
–Hver øving gir maks. 100 poeng og du må samle i snitt75 poeng pr. øving for å få bestått øvingsopplegget
– Dette betyr at øvinger med lite i, må kompenseres medmer i senere
• To typer øvinger– Flesteparten er fokuserte øvinger for spesifikke
teknikker– Tre øvinger spredd utover semesteret er en trinnvis
implementasjon av Sokoban: http://sokobano.de/wiki/
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 12/26
12
Øvinger• Øvings/stud.ass-grupper
– Dere deles inn i grupper som veiledes av én stud.ass– Vi prøver å samle studenter fra samme studieprogram
• Øvingssyklusen– Øving legges ut uken før temaet ”foreleses”– Innlevering er vanligvis 2 uker etter at øvingen ble lagt ut
– Først øving blir lagt ut i kommende uke og skal leveres inn i ukenetter.
• Veiledning– Hver øvingsgruppe vil få saltid, men det vil også være lov å jobbe på
sal utenom disse tidene, og få veiledning av andre stud.asser
– Vi vil ha egne salkollokvier for de som strever mest, med ekstrabemanning av und.asser og faglærer
– Forum på it’s learning er et bra sted å få svar– Und.ass-kontoret i 5. etasje skal være bemannet– Det opprettes også et chat-rom hvor en kan få hjelp
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 13/26
13
Scrava
• Scrava – script-orientert Java– I de første ukene vil vi forelese med utgangspunkt i en forenklet
variant av Java, for repetisjon av prosedyre-orientert programmering
– Målet er å fokusere på kjerne-konsepter som en finner i alle
programmeringsspråk.
– Ingenting må avlæres når en går over til OO med ren Java
• Scrava vs. Java– Lite ”unødvendig” syntaks rundt den essensielle koden
– Oversettes automatisk til Java og utføres deretter
– Kan bruke alle vanlige Java-biblioteker
– Støtter bruk av objekter, men ikke objekt-orientering
• Pedagogisk poeng, ikke tvang
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 14/26
14
JExercise
• JExercise brukes på de fokuserte OO-øvingene– Vi bruker en egen såkalt ”plugin” til utviklingsverktøyet Eclipse
for testing og validering av koden dere skriver
– Stud.ass skal gi poeng, basert på poenggivingen til JExercise
– Etter hvert skal koden også sendes til en JExercise-server
– Mengden tester vil kunne variere fra øving til øving
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 15/26
15
Gruppeprosjekt
• Gruppeprosjekt– Gruppene skal programmere et spill, med fritt valgt tema og genre
– Dere vil kunne danne grupper selv
– Prosjektet er et alternativ til de 3 siste øvingene og forutsetter et
visst kunnskapsnivå og grad av selvstendighet. Husk at en uansettmå lære stoffet som de 3 siste øvingene dekker!
• Prosjektgjennomføring
– Det blir prosjektrettede forelesninger, uten nytt pensumstoff – Dere veiledes som vanlig på sal
– Prosjektet avrundes med JOscar, en uhøytidelig kåring av beste
spill i ulike kategorier
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 16/26
16
Referansegruppe
Vi trenger frivillige til en referansegruppe,én fra hver studieretning
Vi ønsker primært ”vanlige” studenter somgår på forelesning og gjør øvingene.
Kom ned i pausen og meld dere!
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 17/26
17
Innhold i faget
• Repetisjon avprosedyreorientert
programmering
• Klasser og instanser
• Innkapsling
• Objektinteraksjon og
interaksjonsdiagram
• Grensesnitt
• Testing (JUnit)
• Unntakshåndtering
• Arv• Abstrakte metoder (og
klasser) og polymorfi
• Klassediagram• Java API og
Collection-
rammeverket
• Noen tema innen meravansert
objektorientering
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 18/26
18
Foreløpig plan
• Forelesninger– tirsdager kl. 14.15-16.00 i F1
– fredager 10.15-12.00 i F1
• Øvingstimer– onsdager kl. 16.15-18.00 i F1
• Oppstart i uke 2– Faginfo. i forelesningstimen tirsdag 12/1
– Første ordinære forelesning fredag 15/1
• De følgende lysark er en gjennomgang uke for ukeav tema og øvingsoppgaver
• NB! Forelesingsplanen kan endres – følg med påkalenderen på It’s learning
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 19/26
19
Uke 2 og 3 –
Introduksjon til programmering
• Repetisjon av prosedyreorientertprogrammering– uttrykk og setninger– datatyper og variabeldeklarasjoner
– kontroll- og løkkekonstruksjoner– funksjoner/metoder, programutførelse– programklasser
• Trinnvis kjøring av programmer– ark-modell for programutførelse
• String-objekter og –metoder• Fler-dimensjonale tabeller• Tekstinput med Skanner-klassen
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 20/26
20
Uke 4 og 5 –
Klasser og instanser
• Enkle objekter– objekter og felt
– new og instansiering
• Sammensatte objektstrukturer– enkle objektstrukturer og referanser
– visualiering vha. objektdiagrammer
– enkle metoder og navigering i objektstrukturer
• Objekter som en modell av
virkeligheten
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 21/26
21
Uke 6 og 7 – Innkapsling
• Innkapsling– innkapsling
– synlighetsmodifikatorer og tilgangsmetoder
– konstruktører og instansiering
– overlasting
– objektinteraksjon, objektdiagrammer m/metodekall
• Grensesnitt– metodedeklarasjoner
– invarianter og regler for oppførsel
• Enhetstesting og JUnit-rammeverket– generell testmetodikk
– JUnit-testrammeverket
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 22/26
22
Uke 8 og 9 –
Standardklasser i Java
• Intro. til Collection-rammeverket(java.util.*)– collection-rammeverket
– List/ArrayList og Collection og Iterator
• Praktisk bruk av– List/ArrayList
– Map/HashMap
• wrapperklassene, nummerklassene
• Enum(eration)-klasser
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 23/26
23
Uke 10 – Unntakshåndtering
• Unntakshåndtering– throw og catch
– forhåndsdefinerte unntakstyper
• Strømmer og filbehandling og
IOException (java.io.*)
• URL og URI (java.net.*)
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 24/26
24
Uke 11 og 12
• Standard objektorienterte teknikker– delegering
– observatør-observert-teknikken
• GUI-eksempel– hendelser og lytting
8/14/2019 Fag Intro Duks Jon
http://slidepdf.com/reader/full/fag-intro-duks-jon 25/26
25
Uke 14 – 16 – Arv
• Arv– arving
– super
–redefinering
• Mer om arv– abstrakte klasser og grensesnitt
– arv i Collection-rammeverket
• Eksempler fra GUI-programmering– GUI-programmering
– 2D-grafikk
Top Related