26
8/14/2019 Fag Intro Duks Jon http://slidepdf.com/reader/full/fag-intro-duks-jon 1/26 1 Velkommen til TDT4100 – Objekt-orientert programmering, våren 2010 1. amanuensis Hallvard Trætteberg [email protected] Kontor: 115, litt bortenfor IDI-ekspedisjonen i IT-bygget

Fag Intro Duks Jon

Embed Size (px)

Citation preview

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 

8/14/2019 Fag Intro Duks Jon

http://slidepdf.com/reader/full/fag-intro-duks-jon 26/26

26

Uke 17 –

• Slakk 

•Repetisjon og oppsummering