Klassevariable- og metoder Tilstand og opførsel på klasseniveau
Michael E. Caspersen, 2000Introducerende objektorienteret programmeringKlasseopførsel.2 Forholdet objekt/klasse Af en given klasse kan der instantieres vilkårligt mange objekter Account Customer name = “Michael” balance = 230 owner = balance = owner =
Michael E. Caspersen, 2000Introducerende objektorienteret programmeringKlasseopførsel.3 Renteberegning Vi udvider Account så den kan foretage rentetilskrivning Account balance:int interest: double withdraw() deposit() addInterest() public class Account { // percentage double interestRate = 0,75; public void addInterest() { balance += interest/100.0; }
Michael E. Caspersen, 2000Introducerende objektorienteret programmeringKlasseopførsel.4 Ændring af rentesats Account balance = 230 interestRate = 0,75 owner = balance = interestRate = 0.75 owner = Problemet er at rentesatsen er gemt i hver eneste objekt. Hvad vi ønsker er, at kunne ændre rentesatsen for alle objekter af klassen Account som helhed.
Michael E. Caspersen, 2000Introducerende objektorienteret programmeringKlasseopførsel.5 Klassevariable og -metoder Java tillader at erklære variabler og metoder på klasseniveau, dvs. disse er delt mellem alle objekter af den givne klasse. (Det er klassens, ikke objektets variable/metoder.) En variabel eller metode erklæres til at være på klasseniveau vha. static (af historiske årsager, suk…) De “normale” variabler og metoder benævnes instansvariable og instansmetoder.
Michael E. Caspersen, 2000Introducerende objektorienteret programmeringKlasseopførsel.6 Eksempel class Account {... static double interestRate = 0.75;... public static void changeInterestRate( double newValue ) { interestRate = newValue; } Brugseksempel: Account.changeInterestRate( 10.0 ); beatles.addInterest(); johnsAccount.addInterest(); paulsAccount.addInterest(); System.out.println(beatles.balance);
Michael E. Caspersen, 2000Introducerende objektorienteret programmeringKlasseopførsel.7 Regler Klassemetoder kan kun tilgå klassevariable og andre klassemetoder. [Hvorfor er dette en oplagt regel???]
Michael E. Caspersen, 2000Introducerende objektorienteret programmeringKlasseopførsel.8 Tilgang Klassemetoder/variable tilgås via klassens eller et objekts navn: Account.changeInterestRate( 10.0 ); Math.abs(-32); System.out.println(...); Account a = new Account(...); a.changeInterestRate(10.0 );