Presentation laddar. Vänta.

Presentation laddar. Vänta.

Javaprogrammering 5p examinator: Ragnar Nohre, labass: Lasse Öberg Lektioner med Ragnar Tentamen (inkluderar ej grafiska klassbibliotek etc) Ca 3 veckor.

Liknande presentationer


En presentation över ämnet: "Javaprogrammering 5p examinator: Ragnar Nohre, labass: Lasse Öberg Lektioner med Ragnar Tentamen (inkluderar ej grafiska klassbibliotek etc) Ca 3 veckor."— Presentationens avskrift:

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

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

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

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å heapen Alla objektvariabler är egentligen pekare C++ Java 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å heapen Alla objektvariabler är egentligen pekare C++ Java 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 C++ programmerare undviker ofta ytliga kopieringar... ”Homer Simpson” A B pStr 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 kopierar nästan alltid ytligt.. ”Homer Simpson” A B pStr Ingen deletar strängen. Den tas bort först då ingen längre pekar på den. Ingen ändrar strängen. Strängar är omuterbara.

11 Sammanfattning av 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 övningar Java och C++ Javaprogrammering en elementär introduktion

13 Javaprogrammering En 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 class MyProg { public static void main(String[] args) { System.out.println(”Hello, world”); }  javac MyProg.java  java MyProg Hello, world  MyProg.java Ett program består normalt av många klasser En klass/fil Klassnamn = filnamn Exakt en main-funktion Skillnad på versaler och gemener

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 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  // 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

17 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 ); } Sekvensen utförs rad för rad, uppifrån och ned Sekvensen står innanför krullparanteser

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

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

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

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

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

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

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

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

26 matriser Exempel 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 klasser och objekt objekt av typ Person m_name = Bart m_born = 1993 age(..) m_name = Lisa m_born = 1995 age(..) m_name = Homer m_born = 1968 age(..) boy girl man 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 objekt skapas med new int i = 777; double length = 132.5; booleaan ok = false; String name = new String(”Bart”); Kortlek toy = new Kortlek(); i length ok name toy ”Bart” objekt

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

30 Andra exempel på objekt 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 String Ett objekt av typ Color Representerar en färg innehåller funktioner som: -Gör färgen ljusare -mörkare -etc, se Color.html 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 vid speciella 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 Repetition: klasser och objekt objekt av typ Person m_name = Bart m_born = 1993 age(..) m_name = Lisa m_born = 1995 age(..) m_name = Homer m_born = 1968 age(..) boy girl man class Person { String m_name; int m_born;... int age(int dettaÅr) { return dettaÅr-m_born } }

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

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

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

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


Ladda ner ppt "Javaprogrammering 5p examinator: Ragnar Nohre, labass: Lasse Öberg Lektioner med Ragnar Tentamen (inkluderar ej grafiska klassbibliotek etc) Ca 3 veckor."

Liknande presentationer


Google-annonser