Presentation laddar. Vänta.

Presentation laddar. Vänta.

Javaprogrammering 5p examinator: Ragnar Nohre, labass: Lasse Öberg

Liknande presentationer


En presentation över ämnet: "Javaprogrammering 5p examinator: Ragnar Nohre, labass: Lasse Öberg"— Presentationens avskrift:

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 grafiska klassbibliotek etc) 3 betyg: tentamen, projekt, kursen som helhet

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

3 Ett programmeringsspråk från SUN som påminner om C++
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 eftersom allt är pekare
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” 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” 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 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 Java och C++ Javaprogrammering en elementär introduktion övningar

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 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 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 ); } // 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 javac Seq.java java Seq variabeln a har värdet 100 variabeln b har värdet 7

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 Förbjudet! variabeln a finns ju redan! { int a = 7;
int b = 100; } Förbjudet! variabeln a finns ju redan!

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

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

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 sant dvs noll eller flera gånger princip: while (vilkor) sats; exempel: while (ix<100) { ... ... ix++; } // Då vi når denna rad är ix>=100

23 for-loop Överkurs: do-loop, break, continue
for (int ix = ; 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 matriser Exempel Skapa en en-dimensionell heltalsmatris med 20 element och fyll den med 5:ans multiplikationstabell (5,10,...100) myMat[0] int [ ] myMat = {5,10,15,20,25,30,35,40,45,50, 55,60,65,70,75,80,85,90,95,100 }; bra: 5 10 15 20 25 30 90 95 100 int [ ] myMat = new int[20]; for (int i=0 ; i<20 ; ++i) myMat[i] = (i+1)*5; bättre: 20 int [ ] myMat = new int[20]; for (int i=0 ; i<myMat.length ; ++i) myMat[i] = (i+1)*5; ännu bättre: myMat[19]

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 class Person objekt av typ Person boy class Person
m_name = Bart m_born = 1993 age(..) m_name = Lisa m_born = 1995 m_name = Homer m_born = 1968 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;
”Bart” objekt int i = 777; double length = 132.5; booleaan ok = false; String name = new String(”Bart”); Kortlek toy = new Kortlek(); i length ok name toy 777 132.5 00000

29 Övningsexempel på objekt
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 Kortlek giveCard() size() shuffle() ev krånglig innuti Enkel utanpå! med objektorientering kapslar man in krångliga detaljer

30 Andra exempel på objekt
String 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 Color Ett objekt av typ Color Representerar en färg innehåller funktioner som: -Gör färgen ljusare -mörkare -etc, se Color.html

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
class Person objekt av typ Person m_name = Bart m_born = 1993 age(..) m_name = Lisa m_born = 1995 m_name = Homer m_born = 1968 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 m_nbr = boy.m_nbr girl.m_nbr man.m_nbr Person.m_nbr OK att skriva namnet på klassen här! 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)

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 = static – metoder Accessar inga objektvariabler utan bara (static) klassvariabler int r = Math.random(); double d = Math.sqrt(2); class Math { static final double PI = ; ... 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


Ladda ner ppt "Javaprogrammering 5p examinator: Ragnar Nohre, labass: Lasse Öberg"

Liknande presentationer


Google-annonser