Gå til innhold

Hjelp. Skal studere INF1000 ved UiO (Java)


Anbefalte innlegg

Hei.

Jeg skal dette semesteret ha emnet INF1000 ved UiO, hvor vi skal lære å programmere Java. Vi skal her lære å bruke en "pakke" som kalles EasyIO, som skal forenkle innlesing og utskrift. Jeg vil mye heller lære 'ekte' Java (dvs. bruke standardpakker så mye som mulig). Det står i boka at EasyIO er en spesiell pakke som er utviklet for denne boka (dvs. at det er vanskelig å f.eks. dele mine .class filer med andre som ikke bruker denne boka, siden de ikke vil ha EasyIO). Grunnen til at de bruker EasyIO er: "Javas standarverktøy for lesing og skriving til terminal og fil har en del svakheter og forutsetter dessuten kjennskap til begreper som først vil bli omtalt mye seinere i boka."

 

Jeg vil gjerne høre deres kommentarer og meninger om dette. Kan jeg klare meg med kun java standardmetoder eller vil dette være en stor ulempe for meg? Jeg kommer antageligvis ikke til å ta flere INF kurs (jeg studerer fysikk), så senere dummheter(?) fra institutt for informatikk kommer ikke til å plage meg.

 

Takker for hjelp.

Lenke til kommentar
Videoannonse
Annonse

java.io-pakken er ikke helt enkel å starte med, det er sikkert. Jeg aner ikke hvordan kurset er lagt opp, men det ser ut som at mye lesing og skriving til fil/terminal-vindu er inkludert, er det kanskje lurt å ikke forville seg inn i for mye io før man er stø på språket.

 

Senere er det temmelig vesentlig å forstå java.io-pakken, siden underklasser av java.io.InputStream og java.io.OutputStream blir veldig mye brukt i alle former for kommunikasjon.

 

Edit:

Å si at java-pakkene har svakheter er nok i dette tilfelle en heller dårlig formulering. Antakeligvis har de bare wrappet java-pakken med egne klasser og metoder, for å gjøre det enklere for deg å skrive/lese til fil/terminalvindu. Vanligvis er ikke dette nødvendig.

Endret av Patton
Lenke til kommentar

Det er fullt mulig å gjennomføre inf1000 ved å bruke standard ioen til java, men det krever veldig mye mer av deg enn hva resten må igjennom...

 

Så vidt jeg vet er det ganske normalt å bruke slike pakker for begynnerkurs på universiteter, da du vil få en letter tilnærming til de forskjellige temaene.

Og selv om du brukere BufferedReader i stedet for In vil du fortsatt ikke lære nok i løpet av kurset til å programmere...

Men hvis du bare vil ta inf1000 og så lære deg resten selv vil det nok faktisk fortsatt lønne seg å bruke EasyIO i starten, og så når du er vant med den pakken gå over til javas io pakke. Ellers blir det en mye vanskeligere start enn det trenger å være...

 

[EDIT]

Og når det gjelder portabiliteten, så blir ikke den noe vanskeligere... Det bare krever at du har pakken tilgjengelig når du kompilerer...

[/EDIT]

Endret av Mr.Garibaldi
Lenke til kommentar
Så vidt jeg vet er det ganske normalt å bruke slike pakker for begynnerkurs på universiteter, da du vil få en letter tilnærming til de forskjellige temaene.

Og selv om du brukere BufferedReader i stedet for In vil du fortsatt ikke lære nok i løpet av kurset til å programmere...

Men hvis du bare vil ta inf1000 og så lære deg resten selv vil det nok faktisk fortsatt lønne seg å bruke EasyIO i starten, og så når du er vant med den pakken gå over til javas io pakke. Ellers blir det en mye vanskeligere start enn det trenger å være...

Er nok enig her. Når jeg startet med Java programmering på universitetet mitt benyttet vi en pakke som het TerminalIO for input/output til terminal, og en pakke som het BreezySwing for GUI-applikasjoner.

 

Gleden er at boka kan gå gjennom temaer som input og output uten å måtte forklare den mer kompliserte prosessen med hvordan en BufferedReader og BufferedWriter fungerer, og input/output skal være binært eller tegn-basert (character based), osv.

 

Når det er sagt er output til terminalvinduet enkelt nok i Java fra før, og gjøres ved hjelp av

 

System.out.println("Utskrift til teminal vinduet");

 

Input er noe vanskeligere å krever at du oppretter et objekt som kan lese fra standard in, osv.

 

Gleden med EasyIO er antagelig at den har hjelpe-metoder som tar seg av omgjøring av variabler osv, slik at du kan lese inn et heltatt ved hjelp av metoder som readInt(); osv med ett metode kall. Skal du gjøre det samme krever det kjennskap til å parse input for å sjekke at det er et nummer osv.

 

f.eks: http://www.devsiden.info/index.jsp?side=pastebin&pasteid=7

 

Kompiler og kjør programmet fra linken overfor v.hj.a:

 

javac KeyInput.java

java KeyInput

 

Nå er det helt sikkert noe liknende EasyIO gjør, men boka kan lære deg programmerings prinsipper som har med IO å gjøre uten å gå innom Casting, parsing og Exceptions. Hvis du ønsker å lære deg hvordan du bruker Javas standard IO, er det nok bare å gjøre det, men det kan jo hende du får spørsmål om hvordan EasyIO brukes på eksamen, og selv om du ikke gjør det direkte er det nok mye raskere å skrive "eksamenskode" v.hj.a EasyIO enn det er med Javas IO pakke.

 

uansett. Din beste venn når det gjelder Java programmering er Sun's Java API: http://java.sun.com/j2se/1.5.0/docs/api/

 

En annen god ressurs er Sun's Java Tutorial: http://java.sun.com/docs/books/tutorial/index.html

 

Og da spesielt IO seksjonen: http://java.sun.com/docs/books/tutorial/es...l/io/index.html

Lenke til kommentar

Jeg har nettopp hatt et år med java programmering på NITH, og vi brukte kun det som lå i suns java api. Nå kunne jeg ikke tenkt meg å gjort det på en annen måte, men som fersking så ville jeg sikkert ikke sagt noe imot det siden jeg ikke hadde hatt peiling uansett.

 

Det har ihvertfall ikke hindra meg på noen måte at vi gjorde det uten eksterne biblioteker.

Lenke til kommentar
Jeg har nettopp hatt et år med java programmering på NITH, og vi brukte kun det som lå i suns java api. Nå kunne jeg ikke tenkt meg å gjort det på en annen måte, men som fersking så ville jeg sikkert ikke sagt noe imot det siden jeg ikke hadde hatt peiling uansett.

 

Det har ihvertfall ikke hindra meg på noen måte at vi gjorde det uten eksterne biblioteker.

Samme her .

Lenke til kommentar
Det er mye lettere å kopiere inn de tre standard linjene for fillesing med Suns API enn å måtte sette riktig CLASSPATH.

Nå er det ikke slik at Javas API er direkte vanskelig, men som nybegynner (helt ny) er temaer som Exceptions og casting emner som ofte går over hodet på en. Det er hovedgrunnen til at bøker benytter seg av slike biblioteker når de skal lese og skrive til terminal-vinduet.

 

Jeg er enig med begge sider. Når jeg hadde mitt første Java fag på universitetet husker jeg at jeg valgte å ikke benytte meg av TerminalIO pakken, men lærte meg å bruke Javas API. Problemet jeg hadde var at jeg møtte på kode som var helt ukjent for meg når jeg møtte opp på eksamen. Der fikk jeg nemlig beskjed om å skrive et lite program som benyttet seg av Terminal IO, uten at de gav noe detaljer for TerminalIO's API.

 

Så mitt tips er nok å først lære å bruke koden slik den læres av boka/foreleser, og deretter lære seg å bruke Javas eget API.

Lenke til kommentar
  • 2 uker senere...

Nå er kanskje denne tråden litt utdødd, men: Hvilken bok bruker du i faget?

Vil anbefale nyeste versjon av Lervik og havdals bok: http://tisip.no/public/bok/enBok.jsp?bokid=471

Den boka tar tidlig in bruk av JOptionPane, som er standard java, og dette er et ganske mye bedre enn slike pakker som utvikles innenfor enkelte av de kursene. JOptionPane er betydelig mye enkelre enn å starte med io.stream osv.

 

Forøvrig er jeg imot å bruke slike pakker som begrenser bruken av det man skriver. Tidligere versjoner av boka jeg nevner ovenfor brukte (men bruker IKKE sånnt tull nå) noe som kaltes mittBibliotek, som var noe av det samme, var veldig irriterende i forhold til at skulle du teste programmet ditt på en annen PC, så måtte denne PC'en ha dette biblioteket og bare helv**te.

 

Lær deg heller bruk av JOptionPane i starten, mulig at kurset er lagt opp til bruk av ett annet tullebibliotek, men da dette kurset satt opp av folk uten peiling.

 

C

Lenke til kommentar

Vi bruker boken Rett På Java. Selve boken virker grei for meg i allfall. Jeg er helt enig i din holdning til å bruke slike ikke-standard pakker. Jeg har likevel bestemt meg for å bruke EasyIO, siden jeg antageligvis ikke vil programmere så mye mer (ville i så fall måtte ta et ekstra fag 2. semester, jeg studerer fysikk). Missliker sterkt at programmene mine ikke uten videre kan brukes på andres maskiner (er jo høvelig stikk i strid med det Java skal representere), men jeg har hørt historier om at det kreves bruk av slike pakker på eksamen, og det tør jeg ikke sjanse på.

Endret av dravisher
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...