Creating Classes part 1 Barb Ericson Georgia Institute
Creating Classes part 1 Barb Ericson Georgia Institute of Technology Oct 2005 Georgia Institute of Technology
Learning Goals • Computing concepts – Identifying objects and classes – Declaring a class – Declaring fields – Default field values – Inherited methods – Overriding an inherited method Georgia Institute of Technology
Identifying Objects and Classes • Object-oriented programs – Consist of interacting objects • Which are defined by and created by classes • To identify the objects in a task – What are things that are doing the work or being acted upon? – How do you classify them? – What data (fields) do they need to know to do the task? – What procedures (methods) do they need? Georgia Institute of Technology
Identifying the Objects and Classes • Say that we want to write a program to track the grades of students. • One way to start is to underline the nouns – grades, student – Grades is a list of numbers that belongs to a student • Simple data like numbers and strings are fields in a class • So this would be a field in a student class – A student has grades and a name • So it needs to be a class • With fields for grades and name Georgia Institute of Technology
Class Definition • Each class is defined in a file – With the same name as the class: Student. java • Class names – – Are singular (Student not Students) Start with an uppercase letter The rest of the word is lowercase Uppercase the first letter of each additional word • The syntax for a class definition is: – visibility class Name {} • Inside the class definition goes: – Fields, constructors, and methods Georgia Institute of Technology
Class Declaration • To declare a Student class – Click on the New button in Dr. Java • Type in: public class Student { } • Save it in Student. java – Click on File then Save • Click the Compile All button to compile it Georgia Institute of Technology
Student Fields • A student should have a name and some grades – What type should we use for each of these? • The Field name can be a String object • Maybe we will have at most 20 grades and they can have a decimal point in them – Since they can have a decimal point let’s use double as the type – We could name them grade 1, grade 2, grade 3 … – Or, we can use an array Georgia Institute of Technology
Declaring Fields • Syntax – visiblity type name; – visibility type name = expression; • Usually use private for the visibility – So that other classes can’t access it directly • The type is any of the primitive types, a class name , or an interface name • Arrays are declared with [] after the type or after the name – type[] name; or type name[]; • Names start with a lowercase letter – The first letter of each additional word is uppercased Georgia Institute of Technology
Default Field Values • If you don’t specify an initial value for a field – It will get one anyway when it is created • Numbers = 0 • Objects = null (not referring to any object yet) • boolean = false public class Student { //////// fields //////// private String name; private double[ ] grade. Array; } Initial value will be null Georgia Institute of Technology
Testing the Student Class • Add the fields to the Student class definition and compile it • Try the following in the interactions pane – Student student. Obj = new Student(); – System. out. println(student. Obj); • What happens? – Student@2 bd 3 a • you may not get the exact same thing Georgia Institute of Technology
What Happened? (Inherited Methods) • When you executed – System. out. println(student. Obj); • The class Student was checked for a to. String method – Since it didn’t have one the parent class was checked for a to. String method • The one in Object was executed – Which prints the hash code for the object • The Student class inherited the to. String method from the Object class Georgia Institute of Technology
How Inheritance Works • When a method is invoked on an object • We first check for that method in the object that defines the object’s class • If it isn’t there we look in the parent of that class Georgia Institute of Technology
All Classes Inherit from Object • If you don’t specify the parent class when you declare a class – The class with inherit from java. lang. Object • You can specify the parent class – Add extends Parent to the class declaration public Student extends Object • A declaration of public class Student • Is the same as public class Student extends Object Georgia Institute of Technology
Getting the Class • An object keeps a reference to the class that created it – You can get this class with • Class curr. Class = obj. get. Class(); • Each class keeps a reference to its parent class – You can get this class with • Class parent. Class = curr. Class. get. Superclass(); • Try: – – – Student student 1 = new Student(); Class student. Class = student 1. get. Class(); Sytem. out. println(student. Class); Class parent. Class = student. Class. get. Superclass(); System. out. println(parent. Class); Georgia Institute of Technology
Overriding an Inherited Method • If a class defines a method with the same name and parameter list as an inherited method – This method will be called instead of the parent method • To override Object’s to. String add this one to Student: public String to. String() { return “Student object named “ + this. name; } Georgia Institute of Technology
Testing to. String • Compile Student. java • Type the following in the interactions pane Student student. Obj = new Student(); System. out. println(student. Obj); • What do you get this time? Georgia Institute of Technology
Summary • Object-oriented programs – Have interacting objects • To decide what classes to create – Identify the objects doing the action or being acted upon • And classify them (what type of thing are they? ) • To declare a class – public class Student {} • To declare a field – private type field. Name; • All classes inherit from Object – Inherit the to. String() method • Add a to. String() method to your own classes – To override the inherited method Georgia Institute of Technology
- Slides: 17