Presentation is loading. Please wait.

Presentation is loading. Please wait.

SOFTWARE AND PROGRAMMING 1 Lecture 4: 2.2.11 Ticketing machine details: Constructor, method, static/instance variables Instructor: Prof. Boris Mirkin

Similar presentations


Presentation on theme: "SOFTWARE AND PROGRAMMING 1 Lecture 4: 2.2.11 Ticketing machine details: Constructor, method, static/instance variables Instructor: Prof. Boris Mirkin"— Presentation transcript:

1 SOFTWARE AND PROGRAMMING 1 Lecture 4: 2.2.11 Ticketing machine details: Constructor, method, static/instance variables Instructor: Prof. Boris Mirkin http://www.dcs.bbk.ac.uk/~mirkin/sp109 Course Assistant: Lab/WebCT/Tests/Assignments: Mr Martin O’Shea E-mail: martin@dcs.bbk.ac.ukmartin@dcs.bbk.ac.uk Test next week: open-book IN-CLASS: only those registered at B12 Cruciform will be marked (Pls, NOTE THIS)

2 2 Test1 9/2/11 awareness Test1 subjects: Variable: type, declaration, initialisation Expression Loop for Loop while if( )… else if( )... else Simple class structure Strings Simple methods

3 3 Ticket Machine Imitates issuing flat-rate tickets Three variables needed: price – for ticket price balance – for the user’s money total – for money received from customers Three assessor methods for getting each of the variables Three mutator methods for - entering customer’s money - issuing a ticket - getting refunded

4 4 Organising a menu //--- ‘menu’ method for choosing action----------- public static int menu() { TextIO.putln(); TextIO.putln("Please enter a number: "); TextIO.putln(" 0 - to quit "); TextIO.putln(" 1 - to get a ticket price "); TextIO.putln(" 2 - to put money and get a ticket "); TextIO.putln(" 3 - to get refunded "); TextIO.putln(" 4 - to get statistics "); int action=TextIO.getInt(); return action; }

5 5 Main method using menu: right? public static void main(String[ ] args){ int MeItem=1; while (MeItem!=0){ MeItem=menu();// a method if (MeItem==1){ int pp=getPrice(); // a method System.out.println("The ticket price is "+pp+" pence ");} else if (MeItem==2) { System.out.println("Please key in the money inserted, in pence"); int money.insert=TextIO.getInt(); insertMoney(money_insert); printTicket();} else if (MeItem==3) { int refund=refundBalance(); System.out.println("Please take your refund " + refund);} else {int tt=getTotal(); int bb=getBalance(); System.out.println("The total for tickets: "+tt);} }//end of while for choosing action } //end of main

6 6 Main method using menu: WRONG! WHY? There are some deficiencies in the program: no difference between option 4 and !(1 | 2 | 3) – but this wouldn’t make the class fail Because main method is static, but other methods and variables are not: A Java Commandment : You shalt not utilise non static items in a static method! What to do? Either –Make other methods and variables static too; this works but may be at odds with flexibility considerations –Introduce an instance of the class into main method – make the constructor working – and use all methods and variables from the instance – let us do this!

7 7 Main method using menu: Right (I) public static void main(String[ ] args){ System.out.println("Please enter a ticket price "); int pi=TextIO.getInt(); TM atm=new TM(pi); int MeItem=1; while (MeItem!=0){ MeItem=menu();// a method if (MeItem==1){ int pp=atm.getPrice(); // a method System.out.println("Ticket price is "+pp);} // continued next page

8 8 Main method using menu: Right (II) else if (MeItem==2) { System.out.println(“Key in the money inserted in pence"); int money_insert=TextIO.getInt(); atm.insertMoney(money_insert); atm.printTicket();} else if (MeItem==3) { int refund=atm.refundBalance(); System.out.println("Please take your refund " + refund);} else {int tt=atm.getTotal(); int bb=atm.getBalance(); System.out.println("The total for tickets: "+tt);} }//end of loop while for choosing action } //end of main

9 9 Constructor Constructor is a special method that –Has the same name as the class –No return type (nor “return”) –Is called with modifier “new” to reserve a memory space for an object of class type (an instance) List of parameters, as well as the block, can be user defined The constructor with no parameters is available by default (like Const(){ }; )

10 10 Static and instance variables Static variable:belongs to its class, and it is shared by all class instances, with the same value Instance variable:a class variable without the “static” modifier, is shared by all class instances, but its values can differ in different instances Local variable: is created within a method or instance in a { } block. Its scope is limited within the block.

11 11 Example (1) public class TesNum { int instVar = 1; static int statVar = 10; TesNum() { System.out.println("test: " + instVar + " and " + statVar); instVar = 7; statVar = 5; } \\ constructor

12 12 Example(2) public static void main(String[] args) { TesNum alpha1 = new TesNum(); alpha1.instVar = 3; alpha1.statVar = 6; //syn. to: TesNum.statVar = 6; TesNum alpha2 = new TesNum(); System.out.println("inst: " + alpha1.instVar + " and " + alpha2.instVar); System.out.println("stat: " + alpha1.statVar + " and " + alpha2.statVar); //System.out.print("mix: " + instVar + " and " + statVar); wrong } //end of main } //end of class

13 13 What’s going on in TesNum instVar statVar 1. With the class: 1 (in class) 10 2. At the constructo r in class (virtual): 75 3. After alpha1 :Constructor prints:1 and 10 3 (within alpha1)6 4. After alpha2 :Constructorprints:1 and6 7 (within alpha2)5 5. Method main prints:3 and 7 5 and 5

14 14 A method added: public int SS(int a){ int b=instVar; int sum=0; if (a>b){ //swap a and b int c=b; b=a; a=c;} for(int i=a;i<=b;i++) sum=sum+i; return sum; } // computes the sum of integers from a to b int b1=alpha1.SS(statVar); int b2=alpha2.SS(statVar); System.out.println("sum : " + b1 + " and " + b2);

15 15 Sums to be printed From alpha1: a=5, b=3 The sum: 3+4+5=12, that is, b1=12 From alpha2: a=5, b=7 The sum: 5+6+7=18, that is, b2=18 The print: sum: 12 and 18

16 16 References to object variables and methods Examples from TesNum alpha1.statVar alpha2.instVar TesNum.statVar from TesNMod alpha1.SS(statVar)


Download ppt "SOFTWARE AND PROGRAMMING 1 Lecture 4: 2.2.11 Ticketing machine details: Constructor, method, static/instance variables Instructor: Prof. Boris Mirkin"

Similar presentations


Ads by Google