Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Variabler, klassevariabler, identitet og lighed, collections

Lignende præsentationer


Præsentationer af emnet: "Variabler, klassevariabler, identitet og lighed, collections"— Præsentationens transcript:

1 Variabler, klassevariabler, identitet og lighed, collections
Stort og småt om Java Variabler, klassevariabler, identitet og lighed, collections

2 Oversigt Variabler Klassevariabler og -metoder Identitet vs lighed
feltvariabler, parametre, lokale variabler Klassevariabler og -metoder static Identitet vs lighed identitet: samme som (==) lighed: magen til (equals) Array Statisk særudgave af List Collections a closer look dIntProg, E08

3 Variabler Feltvariabler Lokale variabler Parametre
tilstand for objekter levetid er den samme som objektets Lokale variabler hjælpevariabler i en metode levetid er metodekaldet Parametre parametrisering af metoder lokale variabler hvis startværdi leveres af kalderen dIntProg, E08

4 Klassevariabler og –metoder (static)
Instansvariabler og –metoder Ethvert objekter har egen version af ikke-static attributter Kald af en ikke-static metode er en besked sendt til et objekt Klassevariabler og –metoder Attributter og metoder kan erklæres static En static-komponent tilhører klassen, ej objekter af denne (klassemetode og –variabel) En klassemetode kan kun tilgå klassevariabler og kalde andre klassemetoder Benyttes til at modellere klasseegenskaber Eksempel: myndighedsalder for personer, fælles rentesats for alle konti dIntProg, E08

5 Eksempel public class Account { private static double interestRate;
private int balance; private Person owner; public static void setInterestRate (double rate) { interestRate = rate; } public void addInterest() { balance = (int) (balance * interestRate); ... dIntProg, E08

6 Eksempler fra java.lang.Math
public class Math { public static final double PI = ... /** 0.0 ≤ random() < 1.0 */ public static double random() {...} /** sqrt(a) == a */ public static double sqrt(double a) {...} /** pow(a, b) == ab */ public static double pow(double a, double b) {...} } dIntProg, E08

7 Undlad dette: interestRate ændres for alle konti
Kald af klassemetoder Klassemetoder kaldes via klassen Kan kaldes via objekt, men det er dårlig stil Math.PI Math.random() Account.setInterestRate(1.10); Math mathObject = new Math(); double d= mathObject.random() Account myAccount = new Account(...); myAccount.setInterestRate(1.10); Undlad dette: interestRate ændres for alle konti dIntProg, E08

8 Static vs. non-static Tilgang Variabel / Metode static ej static
+ + + dIntProg, E08

9 Identitet vs. lighed (1) Identitet  Samme som (==)
Lighed  Magen til (equals) dIntProg, E08

10 Identitet vs. lighed (2) person1 == person2 ? :Person :Person “Fred”
“Jill” person1 person2 == is not true here (of course) person1 == person2 ? dIntProg, E08

11 Identitet vs. lighed (3) person1 == person2 ? :Person :Person “Fred”
== is still not true here (different objects, == tests identity) person1 == person2 ? dIntProg, E08

12 Identitet vs. lighed (4) person1 == person2 ? :Person :Person “Fred”
== is still not true here (different objects, == tests identity) person1 == person2 ? dIntProg, E08

13 Identitet vs. lighed (Strings)
String input = reader.getInput(); if(input == "bye") { ... } == tester identitet :String :String == ? "bye" "bye" == is still not true here (different objects, == tests identity) input  (kan være) falsk! dIntProg, E08

14 Identitet vs. lighed (Strings)
String input = reader.getInput(); if(input.equals("bye")) { ... } equals tester lighed :String :String ? .equals( ) "bye" "bye" == is still not true here (different objects, == tests identity) input  sand! dIntProg, E08

15 Array List af fast størrelse T[] var;
var = new T[number]; //størrelse er altid number t: [4,1] int[] t; t = new int[2]; t[0] = 4; t[1] = 1; d: [ , ] Die[] d; d = new Die[2]; d[0] = new Die(); d[1] = new Die(); dIntProg, E08

16 Interfaces (specifikation) Klasser (implementation)
Collections Interfaces (specifikation) H V A D class CE { Collection<Integer> c; public CE(...) { ... } public void execute() { c.add(1); c.add(3); ... int sum = 0; for ( int i : c ) { sum += i; } HashSet impl Set TreeSet impl SortedSet ArrayList impl List LinkedList HashMap impl Map TreeMap impl SortedMap Klasser (implementation) H V O R D A N dIntProg, E08


Download ppt "Variabler, klassevariabler, identitet og lighed, collections"

Lignende præsentationer


Annoncer fra Google