DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Storlek: px
Starta visningen från sidan:

Download "DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye"

Transkript

1 DD2310 Javaprogrammering för Pythonprogrammerare Johan Boye

2 James Gosling pappa till Java Hej.java

3 public class Hej { public static void main( String[] args ) { System.out.println( "Hej" );

4 Java basics Klamrar { och grupperar koden i block Python: Indentering Semikolon avslutar varje instruktion Python: Radslut Java kompileras Python interpreteras Java är statiskt typat Python är dynamiskt typat Average.java

5 public class Average { public static void main( String[] args ) { int x = 10; double y = 20.2; double z = (x+y)/2; System.out.println( z );

6 Primitiva typer Heltal: int, long, short, byte Reella tal float, double Tecken: char Sanningsvärden: boolean Max.java

7 import java.util.scanner; public class Max { public static void main( String[] args ) { Scanner scan = new Scanner( System.in ); System.err.print( "Mata in tal 1: " ); int n1 = scan.nextint(); System.err.print( "Mata in tal 2: " ); int n2 = scan.nextint(); if ( n1 >= n2 ) { System.out.println( "Max: " + n1 ); else { System.out.println( "Max: " + n2 );

8 Utmatning System.out och System.err System.out.println( x ); System.out.print( Svar: ); System.err.println( x );

9 Inmatning - Scanner Scanner scan = new Scanner(System.in); int i = scan.nextint(); float f = scan.nextfloat(); boolean b = scan.nextboolean(); String s = scan.next(); String line = scan.nextline(); Finns många andra sätt att göra inmatning på

10 Instruktioner if (cond) { else { while (cond) { do { while (cond) for (init; condition; step){ Fact.java

11 import java.util.scanner; public class Fact { public static void main( String[] args ) { Scanner scan = new Scanner( System.in ); System.err.print( "Mata in n: " ); int n = scan.nextint(); int result = 1; for ( int i=1; i<=n; i++ ) { result *= i; System.out.println( n + "! = " + result );

12 Villkor Är av typ boolean x==y x>y x<y x>=y x<=y x!=y p&&q, p q,!p Villkor evalueras bara så långt det behövs: if (x!=0 && y/x>1) { SumSquares.java

13 import java.util.scanner; public class SumSquares { public static int square( int n ) { return n*n; public static void main( String[] args ) { Scanner scan = new Scanner( System.in ); System.err.print( "Summera kvadrater upp till: " ); int n = scan.nextint(); while ( n>=0 ) { int result = 0; for ( int i=0; i<=n; i++ ) { result += square(i); System.out.println( "Resultat: " + result ); System.err.print( "Summera kvadrater upp till: " ); n = scan.nextint();

14 Metoder public int square( int x ) { return x*x;

15 Metoder Synlighet Resultat-typ Namn Parameterlista public int square( int x ) { return x*x;

16 Metoder boolean isodd( int n ) { return (n%2 == 1); void sayhello() { System.our.println( Välkommen );

17 Metoder // Detta program är buggigt private void addfive( int n ) { n += 5; public void printresult() { int n = 3; addfive( n ); System.out.println( n ); Voting.java

18 Arrayer int[] candidate = new int[10];

19 import java.util.scanner; public class Voting { public static void main( String[] args ) { int[] candidate = new int[10]; Scanner scan = new Scanner( System.in ); System.err.print( "En röst på kandidat nr: " ); int n = scan.nextint(); while ( n>=0 && n<candidate.length ) { candidate[n]++; System.err.print( "En röst på kandidat nr: " ); n = scan.nextint(); for ( int i=0; i<candidate.length; i++ ) { System.out.println( candidate[i] + " röster på kand " + i );

20 Metoder private void addfive( int[] n ) { n[0] += 5; public void printresult() { int[] n = new int[10]; addfive( n ); System.out.println( n[0] ); Candidate.java NewVoting.java

21 Objekt Ett objekt är en paketering av data och beteenden (metoder). T.ex. i rösträknings-uppgiften: En Candidate har ett namn och ett antal röster Ett objekt är alltid en instans av en klass Candidate name votes Klass name = kalle votes = 27 name = eva votes = 15 Objekt

22 Tillstånd Ett objekts tillstånd bestäms av värdena på dess instansvariabler Kalle får en röst till name = kalle votes = 27 name = kalle votes = 28 Samma objekt men nytt tillstånd

23 public class Candidate { private String name; private int votes; public Candidate( String n ) { name = n; public void addvote() { votes++; public int getvotes() { return votes; public String getname() { return name;

24 Klasser public class Candidate { private String name; private int votes; public Candidate( String n ) { name = n; public void addvote() { votes++; Instansvariabler Metod Konstruktor FlexibleVoting.java BetterVoting.java

25 Konstruktor Har samma namn som klassen Ingen resultat-typ Initierar objekt Anropas när objektet skapas (när new anropas) public Candidate( String n ) { name = n;

26 Deklarera och skapa objekt Candidate k; k null referens till en Candidate k = new Candidate( kalle ); k name = kalle votes = 0

27 Arrayer av objekt Candidate[] k = new Candidate[5]; k null null null null null k[0] = new Candidate( kalle ); k null null null null name = kalle votes = 0

28 public class VoteCounter { public static void main( String[] args ) { Scanner scanner = new Scanner( System.in ); Candidate[] cand; /* * Läs in kandidater */ System.err.print( "Hur många kandidater? " ); int k = scanner.nextint(); cand = new Candidate[k]; for ( int i=0; i<k; i++ ) { System.err.print("Namn på kandidat +i+": ); String n = scanner.next(); cand[i] = new Candidate( n ); fortsättning på nästa bild

29 /* * Läs in röster */ System.err.print( "En röst på kandidat nr: " ); int n = scanner.nextint(); while ( n>=0 && n<cand.length ) { cand[n].addvote(); System.err.print("En röst på kandidat nr: ); n = scanner.nextint(); /* * Skriv ut resultat */ for ( int i=0; i<cand.length; i++ ) { System.out.println( cand[i].getvotes() + " röster på " + cand[i].getname() );

30 Klassvariabler Klassvariabler är gemensamma för alla objekt av en klass. static double PI = ; Konstanter (kan inte ändras) deklareras som static final static final double PI = ;

31 public class Circle { public static final double PI = ; private double radius; public Circle( double r ) { radius = r; public double circumference() { return 2*radius*PI; public double area() { return radius*radius*pi;

32 Statiska metoder Även metoder kan deklareras som static till exempel sqrt i klassen Math Då kan de anropas utan att först skapa en instans, till exempel double x = Math.sqrt(2.0);

33 Återanvändning av kod Skriv all kod från scratch Hitta en klass som gör exakt det du vill ha gjort Bygg ditt program från existerade, vältestade klasser t.ex. Scanner Utöka en existerande klass genom ärvning

34 Ärvning Man kan skapa subklasser till klasser med nyckelordet extends public class PartisanCandidate extends Candidate { private String party; public PartisanCandidate( String n, String p ) { super( n ); party = p; String getparty() { return party;

35 public class Candidate { private String name; private int votes; public Candidate( String n ) { name = n; public void addvote() { votes++; public int getvotes() { return votes; public String getname() { return name;

36 Ärvning En delklass ärver alla egenskaper från superklassen. PartisanCandidate p = new PartisanCandidate( kalle, S ); String n = p.getname();

37 Klass-hierarkin Man kan definiera subklasser till subklasser, osv.

38 Multipel ärvning är inte möjlig public class hasname { public String name; FEL! public class hasparty { public String party; public class Candidate extends hasname, hasparty {

39 Interface Ett interface är en samling deklarationer av variabler och metoder Interface hasname { String getname(); En klass kan implementera ett eller flera interface public class Candidate implements hasname { String name; public String getname() { return name;

40 Interface Klasser som inte är relaterade till varandra i hierarkin av klasser kan ändå implementera samma interface public class Candidate implements hasname { public class University implements hasname { hasname h; String name = h.getname();

41 Interface Ett välanvänt interface är Comparable (används i lab 5) Används för att jämföra vilket av två objekt som är störst

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel Objekt Instansvariabler Instansmetoder Klassvariabler Klassmetoder Inkapsling Föreläsning 6 Vad är ett objekt? Ett objekt har egenskaper, som kallas för objektets attribut Egenskaperna beskriver tillsammans

Läs mer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer Föreläsning 4 Metodanrop switch-slingor Rekursiva metoder Repetition av de första föreläsningarna Inför seminariet Nästa föreläsning Metodanrop - primitiva typer Vid metodanrop kopieras värdet av en variabel

Läs mer

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt: 8. Objektorientering Skälet till att C++ är ett av de mest använda programspråken är att det är objektorienterat. Detta bygger vidare på begreppet struct (ursprungligen från språket C som inte är objektorienterat),

Läs mer

Föreläsning 4: for, while, do-while

Föreläsning 4: for, while, do-while TDA 545: Objektorienterad programmering Föreläsning 4: for, while, do-while Magnus Myréen Chalmers, läsperiod 1, 2014-2015 Evaluering Det är viktigt att ni kan se hur kod körs. ( se = simulera på papper,

Läs mer

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde. Programmering hh.se/db2004 Föreläsning 7: Funktioner Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Funktioner Statiska metoder 1 Kan ta 0 eller flera argument. 2 Kan producera

Läs mer

Heltal(int) Programmeringsteknik 54

Heltal(int) Programmeringsteknik 54 Heltal(int) Datatypen int används tillsammans med char, short int och long int för att lagra heltal i C. Matematisk sett finns det oändligt många heltal. På en dator måste det införas en begränsning på

Läs mer

PROV. 10 Uppräknade datatyper

PROV. 10 Uppräknade datatyper 10 10.1 10.2 Definition 10.3 Användning och regler 10.4 switch-satsen 10.5 Iteration över samtliga värden 10.6 Instansvariabler och instanstjänster 10.7 Värdespecifika implementationer 10.1 Hur ser vi

Läs mer

Roboten Karel lär sig Java

Roboten Karel lär sig Java Verónica Gaspes Högskolan i Halmstad 23 augusti 2010 Roboten Karel lär sig Java Tacksägelse Detta är en översättning och en anpassning till Högskolan i Halmstads programmeringsmiljö av delar av Karel the

Läs mer

7 GRUNDERNA I PROGRAMMERING

7 GRUNDERNA I PROGRAMMERING Grunderna i programmering 7 GRUNDERNA I PROGRAMMERING Detta kapitel är bokens största kapitel och kanske det viktigaste. Vi kommer här att gå igenom grunderna för sekventiell programmering. Det vi går

Läs mer

Laboration 12, Arrayer

Laboration 12, Arrayer Laboration 12, Arrayer Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration12 i ditt laborationsprojekt innan du fortsätter på denna laboration. Uppgift 1

Läs mer

Input. Programmering. Andra källor

Input. Programmering. Andra källor Programmering hh.se/db2004 Föreläsning 13: Undantag - med exempel från input klassen Scanner Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Input Standard Input Med standard

Läs mer

3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Föreläsning 3

3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Föreläsning 3 Föreläsning 3 3.3 for-satsen I programmering talar man om tre sätt på vilket ett programflöde kan vara beskaffat: 1. Saker kan hända efter varandra, i sekvens. 2. Flödet kan innebära att ett val görs,

Läs mer

Föreläsning 5 Mer om funktioner, villkor

Föreläsning 5 Mer om funktioner, villkor Föreläsning 5 Mer om funktioner, villkor Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 15.9.2011 Varför? Det finns sammanhang där ett

Läs mer

Att svara på en remiss

Att svara på en remiss Att svara på en remiss Varje år skickar Regeringskansliet betänkanden, utredningar och andra förslag på remiss. Det betyder att myndigheter, organisationer och personer har möjlighet att svara på vad de

Läs mer

Kommentarer till Person

Kommentarer till Person TDDC76 PoD OH Föreläsning C++ 97 Härledda klasser TDDC76 PoD OH Föreläsning C++ 98 --Manager-Consultant en polymorf klasshierarki C++ har en relativt komplett och därmed komplicerad modell för härledning/arv

Läs mer

Hur använder du som elev Fronter?

Hur använder du som elev Fronter? Hur använder du som elev Fronter? Fronter är en lärplattform. Det är ett digitalt verktyg som du som elev ska använda dig av för att hitta uppgifter, länkar och dokument från alla dina lärare, lämna in

Läs mer

BILAGA F till Programvaruprojekt BRISTFÄLLIGT GRÄNSSNITT. multipc_logic_c Rev 1.

BILAGA F till Programvaruprojekt BRISTFÄLLIGT GRÄNSSNITT. multipc_logic_c Rev 1. BRISTFÄLLIGT GRÄNSSNITT 1(6) BILAGA F till Programvaruprojekt BRISTFÄLLIGT GRÄNSSNITT. multipc_logic_c Rev 1. Gränssnittet öppnar för att anropas på fel sätt. Jämför med delkapitlet om gränssnittstest

Läs mer

Mer om reella tal och kontinuitet

Mer om reella tal och kontinuitet Kapitel R Mer om reella tal och kontinuitet I detta kapitel formulerar vi ett av de reella talens grundläggande axiom, axiomet om övre gräns, och studerar några konsekvenser av detta. Med dess hjälp kommer

Läs mer

Introduktion till MATLAB

Introduktion till MATLAB c 2004 Liber AB, Lennart Harnefors, Johnny Holmberg, Joop Lundqvist Signaler och system med tillämpningar Introduktion till MATLAB 1 Inledning MATLAB (för Matrix laboratory) är ett interaktivt programpaket

Läs mer

Hur många registreringsskyltar finns det som inte innehåller samma tecken mer än en

Hur många registreringsskyltar finns det som inte innehåller samma tecken mer än en Föreläsning 10 Multiplikationsprincipen Additionsprincipen Permutationer Kombinationer Generaliserade permutationer och kombinationer. Binomialsatsen Multinomialsatsen Lådprincipen (Duvslagsprincipen)

Läs mer

Skapa din egen kanal på Youtube

Skapa din egen kanal på Youtube Skapa din egen kanal på Youtube - för dina uppladdade filmer eller som portal som visar din spellista En kanal är en sida som den allmänna publiken kan titta på och som innehåller en användares profilinformation,

Läs mer

For-sats/slinga. Notis

For-sats/slinga. Notis Notis I koden för exemplen förekommer kommentarer. Kommentarer i Matlabkoden identieras med prexet %. Kommentarer är text/kod som Matlab bortse från. Alltså all text/kod som ligger till höger och på samma

Läs mer

Referentiell transparens. Programmeringsmetodik DV1 Programkonstruktion 1. Moment 10 Om sidoeffekter In/utmatning och imperativ programmering

Referentiell transparens. Programmeringsmetodik DV1 Programkonstruktion 1. Moment 10 Om sidoeffekter In/utmatning och imperativ programmering Programmergsmetodik DV1 Programkonstruktion 1 Moment 10 Om sidoeffekter In/utmatng och imperativ programmerg Referentiell transparens I ren funktionell programmerg kan man byta lika mot lika utan att programmets

Läs mer

Tentamen Objektorienterad Programutveckling med C++

Tentamen Objektorienterad Programutveckling med C++ Tentamen Objektorienterad Programutveckling med C++ Datum 2001-06-08. Tid 14:30-19:30 Ordinarie Tentamen CD 5250 Ansvarig: Martin Skogevall Omtentamen CD 5250 Ansvarig: Daniel Flemström Omtentamen CD 5050

Läs mer

Bildanalys. Introduktion

Bildanalys. Introduktion Bildanalys Introduktion Ett konstverk kan läsas på många olika sätt, ur flera olika perspektiv. Det finns inte en bestämd betydelse utan flera. Utgångspunkten för all tolkning är den personliga, egna upplevelsen,

Läs mer

Talmönster och algebra. TA

Talmönster och algebra. TA Talmönster och algebra. TA Diagnoserna i området avser att kartlägga om eleverna kan upptäcka talmönster samt på olika sätt bearbeta algebraiska uttryck och ekvationer. Förståelse av koordinatsystem och

Läs mer

NATIONELLT KURSPROV I MATEMATIK KURS A HÖSTEN 2001. Del II

NATIONELLT KURSPROV I MATEMATIK KURS A HÖSTEN 2001. Del II Skolverket hänvisar generellt beträffande provmaterial till bestämmelsen om sekretess i 4 kap 3 Sekretesslagen. För detta material gäller sekretessen till och med utgången av 2011. Anvisningar Provtid

Läs mer

Att presentera sig. 4-8 elever 60 min Social Färdighetsträning

Att presentera sig. 4-8 elever 60 min Social Färdighetsträning Att presentera sig Syfte med lektionen Förberedelser 4-8 elever 60 min Social Färdighetsträning Syftet med lektionen är att eleverna får möjlighet att reflektera kring vad som är viktigt att tänka på när

Läs mer

Barnhack! kom igång med Scratch del 1

Barnhack! kom igång med Scratch del 1 Måns Jonasson Barnhack! kom igång med Scratch del 1 välkommen till kom igång med scratch! 3 Om den här kursen 3 Vad är Scratch? 3 grunderna i scratch vad är vad? 3 block script i olika kategorier 5 Rörelse

Läs mer