advanced computer science lesson 5: classes and objects

43
Advanced Computer Science Lesson 5: Classes and Objects

Upload: catherine-hicks

Post on 13-Dec-2015

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Advanced Computer Science Lesson 5: Classes and Objects

Advanced Computer Science

Lesson 5: Classes and Objects

Page 2: Advanced Computer Science Lesson 5: Classes and Objects

Today’s Topics

Object oriented programmingDefining Classes

Using ClassesReferences vs Values

Static types and methods

Page 3: Advanced Computer Science Lesson 5: Classes and Objects

Object Oriented Programming

• Represent the real world

Baby

Page 4: Advanced Computer Science Lesson 5: Classes and Objects

Object Oriented Programming

• Represent the real world

BabyName

SexWeight

Decibels# poops so far

Page 5: Advanced Computer Science Lesson 5: Classes and Objects

Object Oriented Programming

• Objects group together– Primitives (int, double, char, etc…)– Objects (String, etc…)

BabyString nameBoolean isMaleDouble weightDouble decibelsInt numPoops

Page 6: Advanced Computer Science Lesson 5: Classes and Objects

Why use classes?

• Why not just primitives?// little baby alex

String nameAlex;double weightAlex;// little baby davidString nameDavid;double weightDavid;

Page 7: Advanced Computer Science Lesson 5: Classes and Objects

Why use classes?

• Why not primitives?// little baby alex

String nameAlex;double weightAlex;// little baby davidString nameDavid;double weightDavid;// little baby davidString nameDavid2;double weightDavid2;

Page 8: Advanced Computer Science Lesson 5: Classes and Objects

Why use classes?

• Why not just primitives?// little baby alex

String nameAlex;double weightAlex;// little baby davidString nameDavid;double weightDavid;// little baby davidString nameDavid2;double weightDavid2;

500 Babies? That Sucks!

Page 9: Advanced Computer Science Lesson 5: Classes and Objects

Why use classes?

Baby1

NameWeight

Sex…

Page 10: Advanced Computer Science Lesson 5: Classes and Objects

Why use classes?

496 more Babies

Baby 1 Baby2 Baby3 Baby4 …

NameWeight

Sex…

NameWeight

Sex…

NameWeight

Sex…

NameWeight

Sex…

Page 11: Advanced Computer Science Lesson 5: Classes and Objects

Why use classes?

496 more Babies

Baby 1 Baby2 Baby3 Baby4 …

NameWeight

Sex…

NameWeight

Sex…

NameWeight

Sex…

NameWeight

Sex…

Nursery

Page 12: Advanced Computer Science Lesson 5: Classes and Objects

Why use classes?

496 more Babies

Baby 1 Baby2 Baby3 Baby4 …

NameWeight

Sex…

NameWeight

Sex…

NameWeight

Sex…

NameWeight

Sex…

Nursery

Nurse 1 Nurse 2 Nurse 3 Nurse 4

MoreNurses…

Page 13: Advanced Computer Science Lesson 5: Classes and Objects

Why use classes?

Baby

NameWeight

Sex…

Nursery

Nurse

[ ]

[ ]

Page 14: Advanced Computer Science Lesson 5: Classes and Objects

Why use classes?

NameWeight

Sex…

Nursery

Nurse

[ ]

[ ]Hospital

Hospital

ER

Page 15: Advanced Computer Science Lesson 5: Classes and Objects

Defining classes

Page 16: Advanced Computer Science Lesson 5: Classes and Objects

Class – overviewpublic class Baby {

String name;boolean isMaledouble weight;double decibels;int numPoops = 0;

void poop () { numPoops += 1; System.out.println(“Dear mother,”+ “I have pooped. Ready the diaper.”);}

}

ClassDefinition

Page 17: Advanced Computer Science Lesson 5: Classes and Objects

Class - overview

Baby myBaby = new Baby();

ClassInstance

Page 18: Advanced Computer Science Lesson 5: Classes and Objects

Let’s declare a baby!

public class Baby {

}

Fields

Methods

Page 19: Advanced Computer Science Lesson 5: Classes and Objects

Note

• Class names are Capitalized

• 1 Class = 1 file

• Having a main method means the class can be run

Page 20: Advanced Computer Science Lesson 5: Classes and Objects

Baby fields

public class Baby {

TYPE var_nameTYPE var_name = some_value;

}

Page 21: Advanced Computer Science Lesson 5: Classes and Objects

Baby fields

public class Baby {String name;double weight = 5.0;boolean isMale;int numPoops = 0;

}

Page 22: Advanced Computer Science Lesson 5: Classes and Objects

Baby Siblings?

public class Baby {String name;double weight = 5.0;boolean isMale;int numPoops = 0;XXXXX YYYYY;

}

Page 23: Advanced Computer Science Lesson 5: Classes and Objects

Baby Siblings?

public class Baby {String name;double weight = 5.0;boolean isMale;int numPoops = 0;Baby[] siblings;

}

Page 24: Advanced Computer Science Lesson 5: Classes and Objects

Ok, let’s make this baby!

Baby ourBaby = new Baby();

But what about it’s name? it’s sex?

Page 25: Advanced Computer Science Lesson 5: Classes and Objects

Constructors

public class CLASSNAME{CLASSNAME ( ) {}

CLASSNAME ([ARGUMENTS]) {}

}

CLASSNAME obj1 = new CLASSNAME ():CLASSNAME obj2 = new CLASSNAME ([ARGUMENTS])

Page 26: Advanced Computer Science Lesson 5: Classes and Objects

Constructors

• Constructor name == the class name• No return type – never returns anything• Usually initialize fields• All classes need at least one constructor– If you don’t writ one, defaults to

CLASSNAME () {}

Page 27: Advanced Computer Science Lesson 5: Classes and Objects

Baby constructor

public class Baby {String name;boolean isMale;Baby(String myname, boolean maleBaby)

{name = myname;isMale = maleBaby;

}}

Page 28: Advanced Computer Science Lesson 5: Classes and Objects

Baby methods

public class Baby { String name = “Slim Shady”;...void sayHi () {

System.out.println (“Hi, my name is..” + name);

}}

Page 29: Advanced Computer Science Lesson 5: Classes and Objects

Baby methods

public class Baby {String weight = 5.0;

void eat(double foodWeight) {if (foodWeight >= 0 && foodWeight < weight) {

weight = weight + foodWeight;

}}

}

Page 30: Advanced Computer Science Lesson 5: Classes and Objects

Baby class

public class Baby {String name;double weight = 5.0;boolean isMale;int numPoops = 0;Baby[] siblings;

void sayHi () {…}void eat (double foodWeight) {…}

}

Page 31: Advanced Computer Science Lesson 5: Classes and Objects

Using classes

Page 32: Advanced Computer Science Lesson 5: Classes and Objects

Classes and Instances

// class Definitionpublic class Baby {…}

// class InstancesBaby shiloh = new Baby(“Shiloh Jolie-Pitt”, true);Baby knox = new Baby)(“Knox Jolie-Pitt”, true);

Page 33: Advanced Computer Science Lesson 5: Classes and Objects

Accessing fields

• Object.FIELDNAME

Baby shiloh = new Baby(“Shiloh Jolie-Pitt”, true)

System.out.println(shiloh.name);System.out.println(shiloh.numPoops);

Page 34: Advanced Computer Science Lesson 5: Classes and Objects

Calling Methods

• Object.METHODNAME([ARGUMENTS])

Baby shiloh = new Baby(“Shiloh Jolie-Pitt”, true)

shiloh.sayHi(); // “Hi, my name is …”shiloh.eat(1);

Page 35: Advanced Computer Science Lesson 5: Classes and Objects

Static types and methods

Page 36: Advanced Computer Science Lesson 5: Classes and Objects

static

• Applies to fields and methods• Means the field/method– Is defined for the class declaration,– Is not unique for each instance

Page 37: Advanced Computer Science Lesson 5: Classes and Objects

static

public class Baby {static int numBabiesMade = 0;

}Baby.numBabiesMade = 100;Baby b1 = new Baby();Baby b2 = new Baby();Baby.numBabiesMade = 2;

What is b1.numBabiesMade? b2.numBabiesMade?

Page 38: Advanced Computer Science Lesson 5: Classes and Objects

static example

• Keep track of the number of babies that have been made.

public class Baby {int numBabiesMade = 0;Baby() {

numBabiesMade += 1;}

}

Page 39: Advanced Computer Science Lesson 5: Classes and Objects

static field

• Keep track of the number of babies that have been made.

public class Baby {static int numBabiesMade = 0;Baby() {

numBabiesmade +=1;}

}

Page 40: Advanced Computer Science Lesson 5: Classes and Objects

static method public class Baby { static void cry(Baby thebaby) {

System.out.println(thebaby.name + “cries”); } }

Or public class Baby { void cry() {

System.out.println(name + “cries”); } }

Page 41: Advanced Computer Science Lesson 5: Classes and Objects

static notes

• Non-static methods can reference static methods, but not the other way around– Why?

public class Baby {String name = “DMX”;static void whoami () {

System.out.println(name);}

}

Page 42: Advanced Computer Science Lesson 5: Classes and Objects

main

• Why is main static?

public static void main(String[] arguments) { }

Page 43: Advanced Computer Science Lesson 5: Classes and Objects

Assignment 5

• Modeling Book and Libraries– class Book {}– class Library {}

• Books can be– Borrowed– Returned

• Library– Keeps track of books– Hint: use Book[]