View
230
Download
3
Embed Size (px)
Citation preview
1
UniS
Object-Oriented Software Engineering
CS288
2
UniS
Java OO Fundamentals
Contents
• Classes and Objects
• Making new objects
• Method declarations
• Encapsulating fields
• Manipulating object field values
3
UniS
Classes and Objects
Class: Template that defines how to make an object.Object: Is an instance of a class.
Car
int numDoorsDouble engineSizeString make
void start ( ) { code }void stop ( ) { code }
Car bigFlashJag
numDoors = 5engineSize = 3.5lmake = Jaguar
start ( )stop ( )
Car ecoCar
numDoors = 2engineSize = 0.5lmake = Smart
start ( )stop ( )
Class
Object
Object
4
UniS
Building Objects
Computer MemoryClass Definition(acts like template for
new objects)
Object1 Object2 Object3 Object4
Each object has copies of fields and methods defined by class template, but initialised differently each time
5
UniS
Very Simple Class Example
public class SimpleClass {
public SimpleClass(String newFieldVal) { uselessField = newFieldVal; }
private String uselessField;
public static void main(String[ ] args) { /* Code Goes Here */ }
}Main method executed first.
This is where objects can first be setup.
Constructor, defines how new objectsare initialised.
6
UniS
Syntax for defining new object
SimpleClass ob1 = new SimpleClass("Fluffy");
object type object name
new keyword
class constructor to set up object semicolon terminatesALL statements(just like C++)
7
UniS
Very Simple Class Example
public class SimpleClass {
public SimpleClass(String newFieldVal) { uselessField = newFieldVal; }
private String uselessField;
public static void main(String[ ] args) { SimpleClass ob1 = new SimpleClass("Fluffy"); SimpleClass ob2 = new SimpleClass(“I like chocolate"); SimpleClass ob3 = new SimpleClass(“Why cant I go home"); SimpleClass ob4 = new SimpleClass("Flobber Worms Taste Nice"); SimpleClass ob5 = new SimpleClass("Guildford"); }
}
8
UniS
Executing the Code
Five new objects are created in memory, each with their owncopy of ‘uselessField’, and each copy has a different value.
9
UniS
Setter and Getter Methods
public class SimpleClass { /* declare class field */ /* define class constructor */
public String getUselessField () { return uselessField; }
public void setUselessField (String newUselessField) { uselessField = newUselessField; } /* main method */}
10
UniS
Getter method for field
public String getUselessField () { return uselessField; }
public keywordallows this method to be called from other classes
type of object returned by method
name and parameters of method
body of method,what it does
11
UniS
Setter method for field
public void setUselessField (String newUselessField) { uselessField = newUselessField; }
has String object parameterdoes not return value
changes value of field
12
UniS
Extending main method
public static void main(String[ ] args) { SimpleClass ob1 = new SimpleClass("Fluffy"); SimpleClass ob2 = new SimpleClass("I like chocolate"); SimpleClass ob3 = new SimpleClass("Why cant I go home"); SimpleClass ob4 = new SimpleClass("Flobber Worms Taste Nice"); SimpleClass ob5 = new SimpleClass("Guildford"); ob1.setUselessField ("I wish I'd done C instead"); String aStrVar = ob2.getUselessField (); ob1.setUselessField (aStrVar); }
13
UniS
Execution of main method public static void main(String[] args) { SimpleClass ob1 = new SimpleClass("Fluffy"); SimpleClass ob2 = new SimpleClass("I like chocolate"); SimpleClass ob3 = new SimpleClass("Why cant I go home"); SimpleClass ob4 = new SimpleClass("Flobber Worms Taste Nice"); SimpleClass ob5 = new SimpleClass("Guildford"); ob1.setUselessField ("I wish I'd done C instead"); String aStrVar = ob2.getUselessField (); ob1.setUselessField (aStrVar); }
When execution gets to hereobjects have these values
14
UniS
Execution of main method public static void main(String[] args) { SimpleClass ob1 = new SimpleClass("Fluffy"); SimpleClass ob2 = new SimpleClass("I like chocolate"); SimpleClass ob3 = new SimpleClass("Why cant I go home"); SimpleClass ob4 = new SimpleClass("Flobber Worms Taste Nice"); SimpleClass ob5 = new SimpleClass("Guildford"); ob1.setUselessField ("I wish I'd done C instead"); String aStrVar = ob2.getUselessField (); ob1.setUselessField (aStrVar); }
When execution gets to hereobjects have these values
15
UniS
Execution of main method public static void main(String[] args) { SimpleClass ob1 = new SimpleClass("Fluffy"); SimpleClass ob2 = new SimpleClass("I like chocolate"); SimpleClass ob3 = new SimpleClass("Why cant I go home"); SimpleClass ob4 = new SimpleClass("Flobber Worms Taste Nice"); SimpleClass ob5 = new SimpleClass("Guildford"); ob1.setUselessField ("I wish I'd done C instead"); String aStrVar = ob2.getUselessField (); ob1.setUselessField (aStrVar); }
When execution finishes hereobjects have these values
16
UniS
Backup Method for Field Value
Modify SimpleClass to include new field and methods:
private String previousVal;
public void setUselessField (String newUselessField) { previousVal = uselessField; uselessField = newUselessField; }
public void restoreField () { uselessField = previousVal; }
17
UniS
Experiment with main method
public static void main (String[ ] args) { SimpleClass ob1 = new SimpleClass ("Fluffy"); ob1.setUselessField ("I wish I'd done C instead"); String aStrVar = "Eat Cabbage"; ob1.setUselessField (aStrVar); ob1.restoreField (); } When execution gets to
hereobjects have these values
18
UniS
Experiment with main method
public static void main (String[ ] args) { SimpleClass ob1 = new SimpleClass ("Fluffy"); ob1.setUselessField ("I wish I'd done C instead"); String aStrVar = "Eat Cabbage"; ob1.setUselessField (aStrVar); ob1.restoreField (); } When execution gets to
hereobjects have these values
19
UniS
Experiment with main method
public static void main (String[ ] args) { SimpleClass ob1 = new SimpleClass ("Fluffy"); ob1.setUselessField ("I wish I'd done C instead"); String aStrVar = "Eat Cabbage"; ob1.setUselessField (aStrVar); ob1.restoreField (); }
When execution gets to hereobjects have these values
20
UniS
Experiment with main method
public static void main (String[ ] args) { SimpleClass ob1 = new SimpleClass ("Fluffy"); ob1.setUselessField ("I wish I'd done C instead"); String aStrVar = "Eat Cabbage"; ob1.setUselessField (aStrVar); ob1.restoreField (); }
When execution gets to hereobjects have these values
21
UniS
Is there a problem with the restore method?
public static void main (String[ ] args) { SimpleClass ob1 = new SimpleClass ("Fluffy"); SimpleClass ob2 = new SimpleClass("I like chocolate"); ob1.setUselessField ("I wish I'd done C instead"); ob2.restoreField (); }
When execution gets to hereobjects have these values
22
UniS
Summing Up
• Every object has copies of the class fieldsand methods.
• We have seen example field values for multiple objects.
• Seen examples of methods for accessing and changing field values.
• We have seen how objects are created and manipulated during execution of the main method.