Presentation is loading. Please wait.

Presentation is loading. Please wait.

The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie COMP 14 Introduction to Programming Adrian Ilie July 18, 2005.

Similar presentations


Presentation on theme: "The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie COMP 14 Introduction to Programming Adrian Ilie July 18, 2005."— Presentation transcript:

1 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie COMP 14 Introduction to Programming Adrian Ilie July 18, 2005

2 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 2 Review Homework 5 Algorithm How to solve the problem without objects ♦ not totally true, Strings are objects too How to solve the problem with objects

3 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 3 Algorithm Create teams Create semifinal games Output initial message Get score of semifinal 1 Determine finalist 1 Get score of semifinal 2 Determine finalist 2 Create final game Get score of final Determine winner

4 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 4 Without objects String UNC=“UNC”; String Duke=“Duke”; String semi1=UNC + “ Vs. ” + Duke; String finalist1; … if(score1 > score2) finalist1=UNC; else finalist1=Duke;

5 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 5 Add method String UNC=“UNC”; String Duke=“Duke”; String semi1=UNC + “ Vs. ” + Duke; String finalist1; … finalist1=gameWinner(score1, score2, UNC, Duke) ;

6 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 6 With objects Team UNC=new Team(“UNC”); Team Duke=new Team(“Duke”); Game semi1=new Game(UNC, Duke); Team finalist1; … finalist1=semi1.gameWinner(score1, score2) ;

7 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 7 What’s going on? String name=“UNC” String name=“Duke” Team objects Team team1 Team team2 Game object Team UNC Team Duke Game semi1 Team finalist1 Reference variables

8 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 8 What is different? We declare data inside objects, not directly in the main() method ♦ The Strings become data members of the Team objects We no longer need Strings for the games ♦ If we don’t use objects, we duplicate the data. ♦ The String for the game can be generated using the ones stored in the Teams. The method gameWinner is a method associated to a particular game object ♦ No need to pass the game as a parameter. ♦ No need to pass the teams as parameters Why does the code look almost the same? ♦ Because Strings and Teams and Games are ALL classes/objects ♦ Our classes are simply wrappers of Strings

9 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 9 Structure of a Team object Data ♦ String name Methods ♦ Constructors ♦ toString()

10 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 10 Structure of a Game object Data ♦ Pointer to team1 (Team team1) ♦ Pointer to team2 (Team team2) Methods ♦ Constructors ♦ toString() ♦ gameWinner() receives as parameter the score, and returns the pointer to the winner team.

11 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 11 Classes Objects are collections of data and operations (methods) We need to define the pattern/footprint of objects  classes!!!

12 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 12 Writing classes public class ClassName { //Data members private int a; … //Constructor(s) public ClassName { //Code of the method } //other methods public return_type method1(type param1, type param2, …) { //Code of the method }

13 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 13 Writing the main() public class MainClassName { //Data members Static BufferedReader keyboard=…; //main method public static void main(…) { //Code of the main method } //other methods public static return_type method1(type param1, …) { //Code of the method }

14 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 14 This is wrong!! public class ClassName { //Data members private int a; … //Constructor(s) … OtherClass obj=new OtherClass(); … //other methods public return_type method1(type param1, …) { //Code of the method } No instructions directly in the body of a class!!! They have to be inside a method Exception: initialization of a static variable (e.g. keyboard)

15 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 15 Review Arrays Declaration int[] counts; Instantiation counts = new int[50]; Initialization / Access for (int i=0; i<counts.length; i++) { counts[i] = 0; } Initializer List ♦ declaration, instantiation, and initialization double[] grades = {98.7, 72.4, 87.5}; int[] numbers = {num, num+1, num+2, num+3}; can use variables and expressions as initial values 01 23

16 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 16 Arrays and Assignment counter 0 1 2 3 4 int[] counter = new int[5]; int[] temp; temp temp = counter; doesn't make a copy of the array! temp == counter is true since the reference variables contain the same address

17 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 17 Copying Arrays counter 0 1 2 3 4 int[] counter = {1, 2, 3, 4, 5}; 1 2 3 4 5 int[] temp = new int[counter.length]; 0 1 2 3 4 temp for (int i=0; i<counter.length; i++) { temp[i] = counter[i]; } 1 2 3 4 5 i 0 1 2 3 4 5

18 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 18 References and Assignment counter 0 1 2 3 4 1 2 3 4 5 0 1 2 3 4 temp temp = counter; 1 2 3 4 5 Remember that arrays use reference variables just like objects.

19 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 19 References and null temp = null; null is a reserved word that means "empty/nothing” counter 0 1 2 3 4 1 2 3 4 5 0 1 2 3 4 temp temp = null; 1 2 3 4 5 Remember that arrays use reference variables just like objects.

20 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 20 Arrays as Parameters Entire array can be passed as a parameter ♦ method can change elements of the array permanently ♦ since we're passing a reference Elements of an array can be passed as parameters, too ♦ normal rules apply…

21 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 21 public class Tester { public static void swap (int[] scores, int x, int y) { int temp = scores[x]; scores[x] = scores[y]; scores[y] = temp; } public static void main (String[] args) { int[] grades = new int[4]; for (int i=0; i<grades.length; i++) { grades[i] = i*10; } swap (grades, 2, 3); } grades[2]: 20 grades[3]: 30 grades[2]: 30 grades[3]: 20 scores[2]: 20 scores[3]: 30 temp : 20 scores[2]: 30 scores[3]: 30 temp : 20 scores[2]: 30 scores[3]: 20 temp : 20

22 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 22 Arrays of Objects Can use arrays to manipulate objects Create array of objects Must instantiate each object in array classname[] array = new classname[size]; for(int j=0; j <array.length; j++) { array[j] = new classname(); }

23 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 23 Example 16 students Each student: String name int age String major int year Create arrays of all the data Problem: print the names according to increasing age Analyze: without objects or with objects? Why?

24 The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie 24 To do Homework 6 ♦ Start with requirements 1 and 4. Objects/classes. Exercise: ♦ Create classes House and Roommate. ♦ House will have an array of Roommates. ♦ Create methods to set number of Roommates, etc (whatever you come up with) ♦ Test the classes by writing calls to the methods in the main() method ♦ Come to discuss problems


Download ppt "The UNIVERSITY of NORTH CAROLINA at CHAPEL HILL Adrian Ilie COMP 14 Introduction to Programming Adrian Ilie July 18, 2005."

Similar presentations


Ads by Google