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

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

Villkor Booelska operatorer Villkorsatser Switchsatser Villkor och annat.
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Föreläsning 1 i programmeringsteknik och Matlab 2D1312
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Programstruktur: C för enchipsdatorer
Algoritmer och data strukturer -Länkade listor
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 6
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
2D1311 Programmeringsteknik med PBL
Föreläsning 2 Datalogi för E1 2D1343
i olika programmeringsspråk
Java. Kortfattat om Java Syntaxen påminner i hög grad om C++ Stöd för objektorientering Kod kan köras i en virtuell maskin som finns tillgänglig för nästan.
Flödeskontroll Satser i ett program utförs en och en efter varandra. Detta kallas sekvensiell flödeskontroll. Ofta är det dock nödvändigt att modifiera.
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Programmering B PHP Lektion 2
INTRODUKTION TILL PROGRAMMERING
1 ITK:P1 Föreläsning 5 Iteration, slumpning och arrayer DSV Peter Mozelius.
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT CD5250 OOP med C++
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Repetition inför slutprovet
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
OOPJ I, 5p Objektorienterad Programmering i Java.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Modulär programutveckling
Servlets — Java på serversidan. previous next 2 Servlets Introduktion Javaservlets är en i raden av SUN:s många tillämpningar av Java. Servlets kan grovt.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Programmering i C# 9. Pekare och osäker kod.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska operatorer och logiska uttryck -Referenstyper.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Emulatorkonstruktion Schema Inledning Andra metoder Mina metoder Demonstration av min C64-emulator Sammanfattning och frågor.
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Projekt 5.3 Gilpins och Ayalas θ-logistiska modell A Course in Mathematical Modeling - Mooney & Swift.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Introduktion till programmeringsspråket Java -Den allmänna.
Digitalitet.
2D1311 Programmeringsteknik med PBL
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( )‏ Innehåll:Trådar: - Avbrott (”interrupts”)‏ - Metoden join()‏ Högnivå objekt för.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning 1 Introduktion till kursen. Algoritmer
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
Dagens ämnen Numeriska serier Definition av konvergens
TDP004 Objektorienterad Programmering Fö 5 Minneshantering.
Lektion 4.
RMI Av: Josefina & Sarah DS04.
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

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

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

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

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

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

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

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( );

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!

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

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

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

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

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

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?

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

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

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

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 }

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; 

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

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

for-loop Överkurs: do-loop, break, continue 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

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

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]

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] );

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

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

Ö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

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

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

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 } }

static–variabler är klassvariabler class Person m_nbr = 6000000000 boy.m_nbr girl.m_nbr man.m_nbr Person.m_nbr 6000000000 OK att skriva namnet på klassen här! 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)

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å

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!

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