22
1 UniS Object-Oriented Software Engineering CS288

UniS 1 Object-Oriented Software Engineering CS288

  • View
    230

  • Download
    3

Embed Size (px)

Citation preview

Page 1: UniS 1 Object-Oriented Software Engineering CS288

1

UniS

Object-Oriented Software Engineering

CS288

Page 2: UniS 1 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

Page 3: UniS 1 Object-Oriented Software Engineering CS288

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

Page 4: UniS 1 Object-Oriented Software Engineering CS288

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

Page 5: UniS 1 Object-Oriented Software Engineering CS288

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.

Page 6: UniS 1 Object-Oriented Software Engineering CS288

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++)

Page 7: UniS 1 Object-Oriented Software Engineering CS288

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"); }

}

Page 8: UniS 1 Object-Oriented Software Engineering CS288

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.

Page 9: UniS 1 Object-Oriented Software Engineering CS288

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 */}

Page 10: UniS 1 Object-Oriented Software Engineering CS288

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

Page 11: UniS 1 Object-Oriented Software Engineering CS288

11

UniS

Setter method for field

public void setUselessField (String newUselessField) { uselessField = newUselessField; }

has String object parameterdoes not return value

changes value of field

Page 12: UniS 1 Object-Oriented Software Engineering CS288

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); }

Page 13: UniS 1 Object-Oriented Software Engineering CS288

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

Page 14: UniS 1 Object-Oriented Software Engineering CS288

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

Page 15: UniS 1 Object-Oriented Software Engineering CS288

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

Page 16: UniS 1 Object-Oriented Software Engineering CS288

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; }

Page 17: UniS 1 Object-Oriented Software Engineering CS288

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

Page 18: UniS 1 Object-Oriented Software Engineering CS288

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

Page 19: UniS 1 Object-Oriented Software Engineering CS288

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

Page 20: UniS 1 Object-Oriented Software Engineering CS288

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

Page 21: UniS 1 Object-Oriented Software Engineering CS288

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

Page 22: UniS 1 Object-Oriented Software Engineering CS288

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.