Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
CS 115 OBJECT ORIENTED PROGRAMMING I LECTURE 5 GEORGE KOUTSOGIANNAKIS Copyright: FALL 2015 Illinois Institute of TechnologyGeorge Koutsogiannakis 1 PREVIOUS TOPICS • • • • • Mixed Type Arithmetic Typecasting-Implicit/Explicit Classes – What is a class? What is an object of a class? Template Classes – – – – Attributes (also called Fields or Instance Variables) Constructor methods Accessor methods Mutator Methods 2 New Topics • Client Classes for Service (Template) classes. – What is an object? – Object instantiation (creation) – How we use a template class in a client class. – Method invocation. 3 Classes • A class represents a category i.e The category Student. • The class (the category) has attributes that characterize the category i.e. Student can be characterized in general by: first name , last name , student id etc. • The attributes can take values and thus identify a specific participant of the class. • Attributes are also called instance variables of the class. 4 What is an Object? • New terms: – Object – Instance • We say that an object of a class is a particular instance of that class i.e. 5 What is an Object? – Consider class Student. Class Student can have many objects. A particular object represents a set of data for the attributes of the class. – The data is particular to a specific student that we can identify with an identifier (the name we give to the specific object of that class) – i.e we may use the identifier st1 for a specific student whose attributes have the values: • firstName=“John” • lastName=“Brown” • studentID=3456723 • The term instance is used to indicate that we have created a particular object of a class. 6 What is an Object? – Therefore when we say object of the class , it is the same as saying: A particular member of the category and the data that goes with that member. • That particular member is represented by certain data. What is the data for object identified as st1 in previous slide? • A class has methods. The methods of a class can operate on the data (for example the values of the various attributes). • The methods, for example, can be responsible for accessing the values of the instance variables of the class and returning those values to whoever called for them. Or • They can be responsible for changing the values of the instance variables of the class when called to do so. 7 What is an Object? • Therefore, a particular object of a class can use the methods of that class to manipulate (access or change) its data. We say that the “object invokes a method”. • Objects of the class (category) will be created in another class other than the one that defines the instance variables of the category under consideration: 8 Example • Let us take the category Student: • We are going to need two classes: – One that defines the attributes (instance variables) of a student and provides methods to access or change the values of those attributes. – The general name for a class of that type is : SERVICE CLASS. • We are going to need a second class that uses the Student class to create objects of Student and give values to each of the attributes of an object. – This general name for a class of this type that use a Service type class is: CLIENT CLASS 9 Example • Therefore, we are going to have to separate files (two programs). One for the Service class and one for the Client class. Each needs to be compiled by itself. Remember that because the client class uses the Service class it is required that the Service class be compiled first. • Keep in mind that Service classes DO NOT require a main method. They are not intended to be run by themselves. They have other methods (like the accessor and mutator methods – the methods that change values of attributes- we discussed). • Keep in mind that the Client class needs a main method (it can have more methods ). That is because the Client class needs to be run. 10 Example • In our Student example we want to name each of the two classes with names that remind us of the kind of data that we are tracking. – We could name the Service class: Student public class Student { – We could name the client class: StudentClient public class StudentClient { 11 Questions • I have created a service class People and inside it I have declared 3 instance variables: String firstName String lastName int socialSecNum • I have also created a class PeopleClient. Inside the main method of the class I have created an object of class People using the identifier george for it. • What kind of data am I tracking for object : george? • Where do I get the data for the object? In other words how do the values appear in memory and how they relate to george object only? 12 Answers • I am tracking data pertaining to object’s george : first name, last name and social security number. These attributes will have specific values for george only i.e: firstName=“George” lastName=”Kay” socSecNum=1234 • When I creat ed the object george in the main method of the Client class PeopleClient I had to also set the value of each one of the attributes (each one of the instance variables). 13 Objects Terminology • Object reference – an identifier of the object. Objects need to be identified by a name that we choose (similar to identifiers for the instance variables in the initial programs that you have done thus far). • Instantiating an object – creating an object of a class; assigns initial values to the object data. – Objects need to be instantiated before being used. • Instance of the class – an object after instantiation. 14 Class Members • Members of a class – the class's fields (attributes or instance variables as otherwise can be called) and methods • Fields – instance variables and static variables (we'll define static later) – Instance variables • variables defined in the class and given a value in each object fields can be: – any primitive data type (int, double, etc.) – objects of the same or another class • Methods – the code to manipulate the object data 15 Object Oriented Programming • The previous concepts of class, objects, members of class etc. constitute the foundation principles for a particular technique of programming called: – Object Oriented Programming (abreviated: OOP) 16 How are the OOP Concepts used in a Java Program? • First: Every Java program must represent a class (a category) • Second: Every Java program will have: – Data represented by : • Identifiers for one or more data types that characterize the class (we called them attributes or instance variables earlier) • Third: Every Java program can have one or more methods that can manipulate the data of the class. 17 Example Of Java Class Attributes • Let us say that we want to create a Java program that represents the category People. We will have to decide on the attributes that we want to use to represent the category i.e. • public class People { //The attributes I chose are (with initial values of empty Strings and zero for int and double data types in this example): String firstName=" "; String lastName=" "; int socialSecurity=0; double height=0.0; 18 Example Of Java Class • Next we will have to include various methods that allow the manipulation of data • First we need methods that allow the creation of participants of the class (creation of objects) – These methods are called constructors. – There can be more than one constructor method. – Their primary function is to reinitialize the values of the attributes to some know value – Continuing our example of People class, we can show two constructors: 19 Example Of Java Class Constructor Methods public People() { firstName="AnyName"; lastName="AnyName"; socialSecurity=123456789; height=5.8; } public People(String fn, String ln, int ssn, double ht) { firstName=fn; lastName=ln; socialSecurity=ssn; height=ht; } 20 Example Of Java Class Constructor Methods • Observations: – Constructor methods must have the same name as the class. – Constructor methods do not have a term like void between the keyword public and the name of the constructor method. – The first constructor method takes no arguments (in other words it is followed by the two parentheses () with nothing written between). This is called the default constructor. – The second constructor method takes arguments which means that there is something written between the two parentheses. This is called the non-default constructor (another name is: overloaded constructor). 21 Example Of Java Class Constructor Methods • Let us take another look at the two constructor methods and try to answer the following questions: – What is the default constructor doing with the attributes of the class? – What is the non-default constructor doing with the attributes of the class? 22 Answers • The default constructor initializes the attributes (instance variables) of the class with some pre determined values that are fixed by the programmer in the Service class. • The non default constructor initializes the attributes (instance variables) with values that the Client program dictates when the object is created (instantiated) 23 Answer • A constructor does two tasks: – Reserves space in memory for the data of a particular object of the class under a specific identifier that the programmer chooses when he/she creates the object in the Client class. – Initializes the data with some initial values for that object. These values can be changed to actual values later on by the Client program. 24 Example Of Java Class Accessor Methods • The class People can have other methods besides the constructors i.e. public String getFirstName() { return firstName; } public String getLastName() { return lastName; } public int getSocialSecurity() { return socialSecurity; } 25 Example Of Java Class Accessor Methods • The methods in the previous slide are called accessor methods. • Other accessor methods can follow, They are called accessor methods because all they do is to retrieve the value of a particular attribute. • Notice the get part of the name of the method followed by the name of the instance variable (attribute) 26 Example Of Java Class Mutator Methods public void setFirstName(String fina) { firstName=fina; } public void setLastName(String lana) { lastName=lana; } public void setSocialSecurity(int sosec) { socialSecurity=sosec; } They are called mutator methods because they can change the values of the attributes. 27 Example Of Java Class • There can be other methods in the class besides the accessor and mutator methods. – For example we can have a method that calculates the salary of a People object based on the number of hours worked. • Let us look at one of the accessor method like: public String getFirstName() This line of code is called the signature of the method. What is the meaning of String data type in the signature of the method? 28 Example Of Java Class • What is the meaning of the keyword return? • What is the signature of the mutator method that can change the values of the attribute lastName ? • What is the meaning of void and what is meaning of (int sosec) in : public void setSocialSecurity(int sosec) 29 Example Of Java Class • Now we can finish our class People by inserting } at the end of the class. • Notice that we can compile this Java program even though we did not include a main method. • We CAN NOT, however, Interpret a compiled Java class (program) that does not have a main method. • Now that we have a Java program that represents the class People what do we do with it? How do we create objects of People and where? 30 Example Of Java Class • Well, we can try to create another class ( a new Java program in a different file) that uses the class People. – In other words this second class will be responsible for creating objects (instances) of the class People. – Let us call this new class (the new Java program) PeopleClient – We will create objects of People in this new class and use them. 31 Example Of Java Class • This new class can have a main method like in the first Java programs we created in Lab 1. • Inside the main method of the class PeopleClient, for example, we can try to create objects of class People. • We need to create object references by giving names (identifiers) to the various objects that we want to create (remember that the term is instantiate). 32 FIRST Declare an Object Reference • An object reference holds the address of the object in memory. – • That address is the beginning in memory where the data for the fields (attributes) of the object are stored. Syntax to declare an object reference: ClassName objectReference; or ClassName objectRef1, objectRef2…; • Example: People peo1; (one object reference is declared) or People peo1, peo2, peo3; (3 object references are declared) 33 SECOND Instantiate an Object • Objects must be instantiated before they can be used • Call a constructor using the new keyword. • Remember that a • constructor: special method that creates an object and assigns initial values to data • Constructor has the same name as the class • Syntax: objectReference = new ClassName( arg list ); (Arg list (argument list) is comma-separated list of initial values to assign to the object data) 34 Object Instantiation Example • . public class PeopleClient{ public static void main (String [] args) { People p1=new People(); People p2=new People(); People p3=new People(“George”, “Kay”, 345, 5.9); What have we coded thus far? 1. 2. We used the default constructor of People class to create two objects of that class: p1 and p2. Is there a difference in the two objects p1 and p2? What is the differnces if any? The non default constructor of People class was used to create a third People object p3 What data do the objects p1 , p2, p3 are encapsulating as of now? Can that data be changed? How? 35 Memory for Objects • In our example we have created objects p1,p2 and p3. The system allocates memory space for each of the objects under the specific identifier name, and stores the values of the attributes for each object. • The keyword new is responsible for creating the memory space for each object. • The constructor sets the values of the attributes to be stored in each object’s allocated memory 36 Memory for Objects P1 -> P3 -> AnyName AnyName 123456789 5.8 George Kay 345 5.9 P2 -> AnyName AnyName 123456789 5.8 Why these values for each object? See slides 20 and 35!! 37 Graphical Explanation (What happens in memory) • Suppose that we have a class called Date • The Date class has attributes: – month – day – year • Suppose that in a DateClient class we instantiate 3 objects of Day class using the non default constructor independenceDay graduationDay defaultDay 38 Objects After Instantiation Question • What are the arguments of the non default constructor of Date class? 40 Invoking Methods • An object can be used from the Client class to invoke (call) a method of the template class. • Suppose Student class has an accessor method called setFirstName • Suppose that in StudentClient class we instantiate an object of Student class: – Student stud=new Student(); – We can now can use the identifier for the object (stud) and an operator called the dot (.) to invoke the method setFirstName of Student class stud.setFirstName(“George”); 41 Method Return Values • Can be a primitive data type, class type, or void • A value-returning method – The method returns a value. – Thus the method call is used in an expression. – When the expression is evaluated, the return value of the method replaces the method call. • Methods with a void return type – Have no value – Method call is complete statement (ends with ;) • • • • What is the method setFirstName called? Which class is that method a member of? What is the argument data type for setFirstName? What does the methdo firstName return? 42 Client Class Example • • Suppose that we have the class People as in your lab 3. Now we want to use it in another class. We assume that People.class and the new file PeopleClient.class are in the same folder. • public class PeopleClient { public static void main(String[] args) { People peo=new People(); People anotherpeo=new People(“Helen”, “Moore”, 5.5) peo.setFirstName(“George”); String fstnm=peo.getFirstName(); System.out.println(“The first name of the first person is:”+fstm); } } What is the output? 43 Another Example • public class PeopleClient { public static void main(String[] args) { People peo=new People(); People anotherpeo=new People(“Helen”, “Moore”, 5.5) peo.setFirstName(“George”); String anotherfstnm=anotherpeo.getFirstName(); String fstnm=peo.getFirstName(); System.out.println(“The first name of the first person is:”+anotherfstnm); } } • What is the output now? 44 More terminology • The class People and some of the other classes in this presentation have no main method. They are called template or service classes. They are intended to be used by another class that has a main method!! 45 Study Guide • Chapter 3 Section 3.2, 3.3, 3.4, 3.5 46