1 / 36

Javaprogrammering 5p

Javaprogrammering 5p. examinator: Ragnar Nohre, labass: Lasse Öberg. Lektioner med Ragnar. Ca 3 veckor. kravspec. Projektarbete med Lasse. Ca 4 veckor. Proj redovisning. Tentamen (inkluderar ej grafiska klassbibliotek etc). 3 betyg : tentamen, projekt, kursen som helhet. idag.

iliana-neal
Download Presentation

Javaprogrammering 5p

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Javaprogrammering 5p examinator: Ragnar Nohre, labass: Lasse Öberg Lektioner med Ragnar Ca 3 veckor kravspec Projektarbete med Lasse Ca 4 veckor Proj redovisning Tentamen (inkluderar ej grafiskaklassbibliotek etc) • 3 betyg: • tentamen, • projekt, • kursen som helhet

  2. idag Java och C++ Javaprogrammering en elementär introduktion övningar

  3. Java och C++ • JAVA är • plattformsoberoende • säkrare • enklare • Å andra sidan är C++ • snabbare • mer hårdvarunära • fler finesser Ett programmeringsspråk från SUN som påminner om C++

  4. Plattformsoberoende • Kompileras till byte-code • kan exekveras av JVM (java virtual maskin). En emulator som finns implementerad på alla betydande plattformar • Innehåller standardklasser för • GUI (graphical user interface) • Trådhantering • Kommunikation

  5. Säkrare • Man kan konfigurera JVM så att det blir omöjligt att läsa/skriva från hårddisken, etc • Förenklad minneshantering gör att programmen ofta innehåller färre buggar

  6. Enklare • Ingen pekararetmetik • Inga templates • Ingen operatoröverlagring • Ingen delete, istället finns Garbage Collection

  7. Objekt allokeras alltid på heapenAlla objektvariabler är egentligen pekare Java C++ Complex val(2, 3); // Går ej i java Complex* pVal = new Complex(2, 3); // ytlig kopia Complex* pSamma = pVal; float r = (*pSamma).real( ); Complex val = new Complex(2, 3); // ytlig kopia Complex samma = val; float r = samma.real( ); eftersom allt är pekare behövs inga *stjärnor

  8. Objekt allokeras alltid på heapenAlla objektvariabler är egentligen pekare Java C++ Complex arr[100]; // Går ej i java Complex** pArr=new Complex*[100]; for (int i=0 ; i<100; ++i) pArr[i] = new Complex( ); Complex [ ] arr=new Complex[100]; for (int i=0 ; i<100; ++i) arr[i] = new Complex( );

  9. A B pStr C++ programmerare undvikerofta ytliga kopieringar... ”Homer Simpson” • Farhågor: • Tänk om B deletar strängen. Då kommer A:s container att peka på ett ogiltigt objekt! • Tänk om B ändrar strängen. Då kanske A:s container pekar på ett felaktigt namn!

  10. Java programmerare kopierarnästan alltid ytligt.. A ”Homer Simpson” B • Ingen deletar strängen. Den tas bort först då ingen längre pekar på den. • Ingen ändrar strängen. Strängar är omuterbara. pStr

  11. Sammanfattningav de Största skillnaderna • Javaobjekt allokeras alltid från heapens fria minne • om de lades på stacken skulle de ju försvinna vid return • Javaobjekt deletas aldrig manuellt • Garbage collection • Javaobjekt är ofta immutable (ej ändringsbara)  Riskfritt med ytliga kopieringar

  12. idag Java och C++ Javaprogrammering en elementär introduktion övningar

  13. JavaprogrammeringEn elementär introduktion Hello world / enklast möjliga program / kompilering och exekvering Sekvenser / exekveringsordning / krullparanteser /variabelscoop Selektion / vilkorliga satser Iteration / while- och for- looparna Matriser (vektor array fält tabell) Klasser och objekt new skapar objekt exempel på objekt medlemsfunktioner konstruktor- och toString- metoderna static: saker som tillhör klassen istället för objektet

  14. Ett enkelt program MyProg.java class MyProg { public static void main(String[] args) { System.out.println(”Hello, world”); } } • Ett program består normalt av många klasser • En klass/fil • Klassnamn = filnamn • Exakt en main-funktion • Skillnad på versaler och gemener • javac MyProg.java • java MyProg Hello, world

  15. in-parametrar class Test { public static void main(String[] args) { System.out.println(”Hello” + args[0] + ”! How are you?”); } } • javac Test.java • java Test Ragnar Hello Ragnar! How are you?

  16. // a är en ny heltalsvariabel som får värdet 7 // b är en ny heltalsvariabel som får värdet 7 // a får ett nytt värde Sekvens class Seq { public static void main(String[] args) { int a = 7; int b = a; a = 100; System.out.println(”variablen a har värdet ” + a ); System.out.println(”variablen b har värdet ” + b ); } } • javac Seq.java • java Seq variabeln a har värdet 100 variabeln b har värdet 7

  17. Sekvensen utförs rad för rad, uppifrån och ned Sekvensen står innanför krullparanteser Sekvens class Seq { public static void main(String[] args) { int a = 7; int b = a; a = 100; System.out.println(”variablen a har värdet ” + a ); System.out.println(”variablen b har värdet ” + b ); } }

  18. scope = giltighet { int a = 7; int b = 100; int a = 7; } Förbjudet! variabeln a finns ju redan!

  19. { variabler som deklareras här glöms nu } scope = giltighet { } variabler som deklareras efter denna krullparantes glöms bort här

  20. Selketion / vilkorliga satser if (vilkor) sats; else sats; princip: myndig = false; if (ålder>=18) myndig = true; if (ålder>=18) myndig = true; else myndig = false; exempel: 

  21. En sats kan alltid bytas ut mot en sekvens if (a>b) { c = 33; a = 0; } else { c = 15; b= 10; } exempel: Överkurs: switch-sats

  22. while-loop utför sats så länge vilkor är santdvs noll eller flera gånger while (vilkor) sats; princip: while (ix<100) { ... ... ix++; } // Då vi når denna rad är ix>=100 exempel:

  23. for-loop for (int ix = 7 ; ix<100 ; ++ix ) { ... ... } int ix = 7; while ( ix<100 ) { ... ... ix++; } int ix = 7; ix<100 int ix = 7 ix<100 ++ix ... ... ... ... ... ...  ++ix Överkurs: do-loop, break, continue

  24. matriser(vektor, fält, array) en-dimensionell matris minMatris[0] n st element minMatris[n-1]

  25. bra: int [ ] myMat = {5,10,15,20,25,30,35,40,45,50, 55,60,65,70,75,80,85,90,95,100 }; 5 10 15 20 bättre: 25 30 int [ ] myMat = new int[20]; for (int i=0 ; i<20 ; ++i) myMat[i] = (i+1)*5; ännu bättre: 90 int [ ] myMat = new int[20]; for (int i=0 ; i<myMat.length ; ++i) myMat[i] = (i+1)*5; 95 100 matriserExempel Skapa en en-dimensionell heltalsmatris med 20 element och fyll den med 5:ans multiplikationstabell (5,10,...100) myMat[0] 20 myMat[19]

  26. matriserExempel Spelkort: Om färg=0 och valör =1 : skriv ut hjärter Ess om färg =1 och valör=2 : skriv ut spader två om färg =2 och valör =11: skriv ut klöver knekt osv String [ ] strFärg = { ”hjärter”, ”spader”,”klöver”,”ruter” }; String [ ] strValör= {”??”, ”Ess”, ”två”, ”tre”, ”fyra”, ”fem”, ”sex”, ”sju”, ”åtta”, ”nio”, ”tio”, ”knekt”, ”dam”, ”kung”}; System.out.println( strFärg[färg] + ” ” + strValör[valör] );

  27. objekt av typ Person m_name = Bart m_born = 1993 age(..) boy girl man m_name = Lisa m_born = 1995 age(..) m_name = Homer m_born = 1968 age(..) klasser och objekt class Person class Person { String m_name; int m_born; ... int age(int dettaÅr) { return dettaÅr - m_born } } Varje objekt av typ Person innehåller dessa variabler och funktioner

  28. i lengthok name toy 777 132.5 00000 objekt skapas med new ”Bart” objekt int i = 777; double length = 132.5; booleaan ok = false; String name = new String(”Bart”); Kortlek toy = new Kortlek();

  29. Ett objekt av typ Kortlek • Representerar en kortlek • Innehåller Spelkortsobjekt • Enkel att använda giveCard() size() shuffle() • giveCard() • -returnerar ett Spelkort-objekt • size() • -returnerar antalet kvarvarande kort • shuffle() • -blandar leken Övningsexempel på objekt Kortlek ev krånglig innuti Enkel utanpå! med objektorientering kapslar man in krångliga detaljer

  30. Ett objekt av typ String • Representerar en textsträng • innehåller funktioner som: • -Hittar delsträngar • -Gör om till versaler • -etc, se String.html • Ett objekt av typ Color • Representerar en färg • innehåller funktioner som: • -Gör färgen ljusare • -mörkare • -etc, se Color.html Andra exempel på objekt String Color

  31. Konstruktor- och toString-metoderna En normal metod kan heta vad som helst och den anropas manuellt av programmeraren • Men vissa metoder anropas automatiskt vidspeciella tillfällen • tex • konstruktor-metoden • -Måste ha samma namn som klassen • -Anropas automatiskt då ett objekt skapas • -Uppgift: att initiera objektet • toString() – metoden • -Måste heta toString() • -Anropas tex då man skriver ut ett objekt på skärmen • -Uppgift: att returnera en ”sträng representation” av objektet

  32. objekt av typ Person m_name = Bart m_born = 1993 age(..) boy girl man m_name = Lisa m_born = 1995 age(..) m_name = Homer m_born = 1968 age(..) Repetition: klasser och objekt class Person class Person { String m_name; int m_born; ... int age(int dettaÅr) { return dettaÅr-m_born } }

  33. boy.m_nbr girl.m_nbr man.m_nbr Person.m_nbr 6000000000 OK att skriva namnet på klassen här! static–variabler är klassvariabler class Person m_nbr = 6000000000 class Person { static int m_nbr = 6000000000; String m_name; int m_born; ... ... } static variabeln lagras inte i objekten utan i klassen (6 miljarder människor på planeten)

  34. Andra exempel på static–variabler class Spelkort HJÄRTER = 0 RUTER = 1 SPADER = 2 KLÖVER = 3 class Spelkort { static final int HJÄRTER = 0; static final int RUTER = 1; osv... int m_färg; int m_valör; ... ... } Nu kan vi skriva Spelkort.HJÄRTER i stället för 0 Lättare att förstå

  35. static–metoder, klassmetoder class Math PI = 3.1415926 static – metoder Accessar inga objektvariabler utan bara (static) klassvariabler int r = Math.random(); double d = Math.sqrt(2); class Math { static final double PI = 3.1415926; ... static int random() { .... } static double sqrt(double x) { ..... } } OK att skriva namnet på klassen här!

  36. idag Java och C++ Javaprogrammering en elementär introduktion övningar

More Related