Gå til innhold

Anbefalte innlegg

Hei, har tenkt lenge på å sette opp post om dette, men har ikke fått rotet meg til det enda..

 

Saken er den at jeg studerer informatikk, og der lærer man jo endel programmering. Språket som skolen valgte at vi skulle lære oss var selvfølgelig Java.

Kjipt synes nå jeg, men måtte bare finne meg i det..

 

Etter noen år med "programmering" har jeg enda ikke lært meg noe særlig.

Kan programmere bra "før" objektorientert.

Etter vi har passert denne delen har det liksom bare gått nedover. Jeg føler at jeg bør gjøre noe snart hvis jeg skal ha sjangse i å få ståkarakter i faget.

 

Så, har noen tips til motivasjon og hvordan jeg skal angripe "Java"?

Har selvfølgelig en lærebok, men finner det ufattelig kjedelig å lese bøker.

 

Btw, så det skal være sakt, jeg finner faktisk programmering interessant, føler at det er noe jeg vil lære meg, men finner bare ikke ork til å gjøre noe. Dessuten sliter jeg veldig med ideer til hva jeg skal programmere..

Lenke til kommentar
Videoannonse
Annonse

Hvis du vil lære java ordentlig så kommer du nok desverre ikke unna å lese litt i en bok. Da jeg lærte meg Java så leste jeg en bok, og etter hvert kapittel prøvde jeg å forestille meg hva det jeg nettopp hadde lest kunne brukes til (bortsett fra å stå på eksamen ;) ).

 

Prøv å forestille deg f.eks et enkelt spill og hvordan de forskjellige funksjonene til java kan brukes der.

 

Hvorfor er det en fordel med objekter som arver egenskaper/metoder?

Hvorfor er det lurt å lage interfacer?

Hvorfor bruke forskjellige datastrukturer?

Hvorfor bruker man rekursjon i stedet for en loop?

 

En ting er å kunne et programmeringsspråk "flytende", en helt annen ting er å skrive gode, strukturerte og lett utvidbare programmer. Det lærer man seg gjennom bøker, web tutorials og prøving og feiling.

 

Et godt opplæringsprogram som brukes på universitetet mitt er BlueJ. Har ikke prøvd det selv, men en kamerat har fortalt meg at han syntes det var veldig nyttig for å forstå konseptet bak objektorientert programmering.

 

Lykke til!

 

PS! Et must når man driver med java er å lære seg å bruke Java API. Lurer du på en funksjon, konstant eller klasse så står det der.

Endret av Skuggen
Lenke til kommentar

Er to av de tingene du nevner der jeg stusser veldig på.

 

det ene er interfacer, jeg vet hva det er, men fatter absolutt ikke hvorfor og hva man kan bruke det til, for meg virker det helt ubrukelig..

 

Java API ja! :p

Har titta litt på den, men skjønner somregel ikke en dritt. Hvordan skal jeg lære meg mer om den?

Lenke til kommentar
det ene er interfacer, jeg vet hva det er, men fatter absolutt ikke hvorfor og hva man kan bruke det til, for meg virker det helt ubrukelig..

5711076[/snapback]

 

Java støtter arv, men bare fra en superklasse. Et interface kan være en måte å implementere multippel arv. Eksempelvis hvis du har en klasse Media, som er superklasse til DVD og CD. Så kan du ha et interface Utlån, hvor du har variabler som utlåner, utlånsdato osv. Jeg har skrevet litt om interface her: http://nibbler.no/blog/?p=157

Lenke til kommentar

Interface kan være vanskelig å forstå, det slet jeg også endel med i begynnelsen.

 

Et interface kan sees på som en slags "kontrakt", i form av en samling metoder og konstant-deklarasjoner. Når en klasse implementerer et interface, så lover den å implementere alle metodene deklarert i interfacet. Hvis den ikke gjør det, vil ikke klassen kompilere.

 

Werner

Lenke til kommentar

du kan nesten tenke på et interface som en kontrakt, hvis du tenker på f.eks intel så har de sikkert en interface/standard/spesifikasjon på sokkel 775 kjøleribbe og vifter. Hvis f.eks zalman skal lake en vifte og kjøleribba til sokkel 775 da så kan de følge spesifikasjonen til intel og da vil den garantert passe når du kjøper denne vifta til din pc(hvis du har en p4 sokkel 775 da). Da sier de at vifta "er en sokkel 775"-vifte.

 

Når du implementerer et interface så sier du at klassen "er en"..

Lenke til kommentar

Min motivasjon for å lære java, var at jeg begynte med tomcat og lagde enkle hjemmesider i jsp og utvidet etterhvert... Det er gøy når du får resultater som du kan dele med andre.

 

Dette har gitt meg mye lærdom og erfaring. Jeg driver nå www.team-norway.org som egentlig bare var en nettside som jeg lagde for lære java. Jeg bruker denne fremdeles for å eksperimentere med nye "pattern" og "eksperimentell-kode" osv... Ikke vær redd for å gjøre noe feil, det lærer du bare av!

 

Jobber nå som systemutvikler innen webapplikasjoner på .NET plattformen(!?!), mye pga erfaringene jeg har skaffet meg gjennom å leke med java på web. :)

Bare ha det gøy og programmere er mitt tips!

Lenke til kommentar
Dette kan hjelpe på motivasjonen:

 

Skal du ha jobb når du er ferdig, bør du ha A i alle programmeringsfagene. Det viktigste faget er kanskje algoritmer & datastrukturer.

5768234[/snapback]

Spørs hva vi vil jobbe med da!

 

Jeg, f.eks., blir snart ingeniør og må derfor gjennom java, algoritmer og sånt! Men jobber og vil jobbe senere med web eller hardware-retta ting!

Er jo selvfølgelig også programmering i web, men ikke så "kjedelig"( :cool: mitt synspunkt) språk!

 

EDIT: Ønsker synspunkt som kan gjøre java mer "morsomt" jeg og! :yes:

Endret av Oxido
Lenke til kommentar

Et godt råd er å ta programmeringsfagene seriøst, så seriøst at du får A i fagene. I webutvikling er det programmering, programmering og enda mere programmering. Og så litt design da. Design-biten kan noen som har et kurs fra IT-akademiet, eller noen som har gått andre "ingeniør-light"-kurs ta seg av. Du som ingeniør skal lage nettstedet dynamisk (implementere tilstand), og programmere logikken.

 

En dataingeniør innen program- og systemutvikling skal være systematisk og nøyaktig, og det beviser du langt ved å ha et topp resultat fra kjernefagene, dvs programmeringsfag og algoritmer.

 

Lykke til!

Lenke til kommentar
  • 2 uker senere...

To conquer java you must become java.

 

Jeg hadde også problemmer med java og objektorientering da jeg først skulle lære meg det. Kom meg ut av den krisen ved å jobbe med små enkle oppgaver. Helt basic ikke GUI engang, konsoll hele veien og etter 10-11 sånne oppgaver så fikk jeg et sikkelig aha! opplevelse. Det gikk helt opp for meg. Etter det var det egentlig ikke noe forskjell mellom de 11 små oppgavene eller en stor. Samme gjelder forskjellige språk hvis man kan programere i java så kan ikke feks. C# være altfor vanskelig.

 

Poenget er at det er viktig å jobbe med java for å bli bedre og det er også viktig å forstå hva er det man koder egentlig. Jeg tror denne forståelsen kommer når man løser et problem som man ikke viste løsningen på når man begynte. Etterhvert vil man ha nok erfaring til å kunne raskt og effektivt løse de fleste oppgaver.

Endret av aleh
Lenke til kommentar

Bruk litt mindre tid hver dag paa det som er tungt eller kjedelig! Men bruk den tiden mer effektivt, dvs. at du ikke diller med andre ting mens du gjor lekser eller oppgaver da faar du mere tid til kjekke ting som kansje gir deg litt mer overskudd og guts. Og kansje det viktigste som er nevnt tidligere, gjoer flere oppgaver som ikke er saa vanskelige.

Lenke til kommentar

beste forslaget ever: jobb et år; det er en stor sjanse for at du får en drittjobb, og etter det er det ikke noe mer igjen av deg bortsett fra en hel masse motivasjon :) (eller du kan være heldig å finne noe du liker - og det er jo også bra)

Lenke til kommentar

Litt av problemet med å prøve å lære seg å programmere er at man ofte lærer tungvinte måter å gjøre ting på for å forstå konsepter. Ikke noen god ide spør du meg.

 

En ting som du garantert får bruk for hvis du skal bruke java er at du må kommunisere med databaser. Hvis du er litt newbie så kan det være en ganske stor utfordring å få til, men når du har fått det til så har du ihvertfall lært noe nyttig.

 

Den vanligste måten å kommunisere med databaser på er ved bruk av jdbc og sql setninger.

 

Når du har forstått hvordan det fungerer så kan du prøve å bruke en ORM (Object Relation Mapper) sånn som hibernate (www.hibernate.org). En ORM gjør at du rimelig automatisk lærer deg å bruke objekter ;)

 

En god gratis database som du kan kjøre på windows og som fungerer godt med jdbc/hibernate er postgres. Du får tak i den på www.postgres.org

 

Hvis du fortsatt sliter med å se poenget så kan du jo prøve å lage dynamiske websider. En gratis webserver for servlets/jsp (skrevet i java) finner du på http://tomcat.apache.org/

 

Min erfaring er at i arbeidslivet så er det mye dataflyt og lite logikk. Oppgaver man får under utdanning er gjerne tunge på logikk og lette på dataflyt. Ser ikke helt hva de tenker med ;)

 

Interfaces er noe jeg har endt opp med å bruke når jeg skal prøve å gjenbruke kode.

 

La oss si at jeg har to ordretyper (klasser) Mobil og PC, jeg har et Notat panel (klasse) som man skal kunne legges til i Mobil og PC vinduene. Istedetfor at panelet sjekker om den er lagt til i Mobil eller PC klassen og så kalle metoden for å hente ordrenr så kan man definere ett inteface Ordre som har metoden public int getOrdernumber(). Mobil og PC klassene implementerer det interfacet og jeg kan da i Notat panelet (klassen) bare kalle på vinduet det ligger (Mobil eller PC klassen) sin getOrdernumber() metode, uten å vite om det er en PC eller Mobil notatet hører til.

 

Det høres kanskje ikke så vanvittig arbeidsbesparende ut, helt til du har 23 ordretyper og hvis du ikke hadde brukt interfaces så måtte du i Notat panelet hatt en if/elseif struktur med 23 sammenligninger på hvilket panel den holdt til i og så kallt den aktuelle metoden for å hente ut ordrenr.

 

Ett litt dårlig eksempel, ettersom implementasjonen i Mobil og PC klassen nok er lik, men, interfaces blir som oftest brukt når implementasjonen i de forskjellige klassene er forskjellig... ;)

Endret av blackbrrd
Lenke til kommentar
Når du har forstått hvordan det fungerer så kan du prøve å bruke en ORM (Object Relation Mapper) sånn som hibernate (www.hibernate.org). En ORM gjør at du rimelig automatisk lærer deg å bruke objekter ;)

 

Hibernate er nok *altfor* tung materie for vår umotiverte venn. Han har nok adskillige trappetrinn igjen å gå før han bør begynne å snuse på det. I det minste bør han lære OO FØR han begynner med Hibernate.

 

Werner

Lenke til kommentar

Ikke vær så pessimistisk nå ;)

 

Å følge oppskrifter på nett på hvordan man kan gjøre ting fungerer ofte ganske bra spør du meg. Synes det er en bedre måte å lære på enn å lese i bøker ;)

 

Mente bare å komme med eksempler på hvor man faktisk bruker objekt orientert programmering. I diverse oppgaver på universiteter etc, så fungerer gjerne funksjonsorientert programmering like bra... Det gjør det ikke enklere å lære seg OO.

Lenke til kommentar
  • 2 uker senere...

Kan karakterer vera så viktig når omtrent alle som fekk A eller B det første året på kurset mitt har allerede hoppa av studiet fordi det blei for vanskeleg mens eg som bare får E føler at eg egentleg surfer igjennom heile greia ganske fint? Blir bare sur fordi eg føler eg får altfor dårlege karakterer til eksamenane men pytt pytt, eg kjem meg jo vidare.

 

Min motivasjon i programmering er for det meste spel/media/grafikk og databaser. Det er to ting eg liker veldig godt. Har i det siste handla bøker som dekker PostgreSQL, PHP start og videregåande, SDL spelprogrammering, OpenGL og OpenGL shading, C++ ansi start og videregående og design patterns. Og alle dei har ingenting å gjere med studiet mitt. Men poenget med å studere er jo å lære. Ikkje få gode karakterer.

 

Får sjå om eg får jobb med bare E'er når eg er ferdig. Det blir jo snart eindel open source prosjekter å putte på CVen og :)

Endret av siDDIs
Lenke til kommentar

Interface i den "virkelige verden" blir veldig ofte brukt hvis du oensker at noen andre skal implementere en del av programmet ditt. Du definerer et interface, dokumenterer hva hver enkel metode skal gjoere, og de andre programmerer dette.

 

Et veldig godt eksempel er database i java. java.sql.Connection er et interface definert av Sun. Alle database-firmaer som oensker aa gjoere JDBC (java database) tilgjengelig for en java programmerer maa implementere dette interfacet. Du som programmerer driter egentlig i hvordan interfacet implementeres, bare metodene gjoer jobben sin naar du bruker java.sql.Connection.

 

Faar aa gjoere en sql-query, trenger du en Statement fra klassen Connection

public Statement createStatement()

Statement er ogsaa et interface, ser klin lik ut enten det kommer fra Oracle, MySQL osv., men er under overflaten annerledes. Igjen er dette deg revnendes likegyldig, klassen bak interfacet skal gjoer jobben sin.

 

public ResultSet executeQuery(String aQuery)

Denne metoden i interfacet Statement utfoerer en SQL-spoerring og leverer tilbake interfacet ResultSet. Jepp, man bruker stort sett bare interfacer i java.sql. ResultSet inneholder metoder for aa hente ut informasjonen i Queryen din.

 

Naa lurer du paa kanskje hvor du faar en instans av interfacet java.sql.Connection. Som kjent kan man ikke skrive :

Connection myConnection = new Connection();

Java bruker noe som heter dynamisk lading. Ikke noe du trenger aa bry deg som mye om akkurat naa, la oss si at det blir gjort med svart magi ved hjelp av klassen java.sql.DriverManager:

public Connection getConnection(String url)

Jepp, roten til alt interface-virvaret er en klasse. DriverManager-klassen "vet" om den skal returnere en Oracle-Connection, eller en MySQL-connection osv. DriverManager og interfacene er laget av Sun, mens klassene som gjoer alt database-arbeidet blir laget av de forskjellige database-bedriftene.

Endret av Patton
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å
×
×
  • Opprett ny...