6.092-4 Objects and classes in Java Programming
Lecture 4Classes and ObjectsReviewSolutions 1public static int getMinIndex(int[] values) {int minValue = Integer.MAX_VALUE;int minIndex = -1; for(int i=0; iclasses? • Why not just primitives? //little baby alex String nameAlex;double weightAlex;//little baby david String nameDavid;double weightDavid;Why use classes? • Why not just primitives? //little baby alex String nameAlex;double weightAlex;//little baby david String nameDavid;double weightDavid;//little baby david String nameDavid2;double weightDavid2;David2? Terrible • �Why use classes? • Why not just primitives? //little baby alex String nameAlex;double weightAlex;//little baby david String nameDavid;double weightDavid;//little baby david String nameDavid2;double weightDavid2;David2? Terrible • �500 Babies? That Sucks!Why use classes?Name Weight Sex … Baby1Why use classes?Name Weight Sex … 496 more Babies Name Weight Sex … Name Weight Sex … Name Weight Sex … Baby1 Baby2 Baby3 Baby4 … Why use classes?Baby1 Baby2 Baby3 Baby4 496 more Babies … NurseryWhy use classes?Baby1 Baby2 Baby3 Baby4 496 more Babies … Nurse1 Nurse2 Nurse3 Nurse4 More nurses… NurseryWhy use classes?Baby Nurse [] [] NurseryWhy use classes?Nurse []ER[] BabyNurseryHospitalDefining classesClass -overviewpublic class Baby {String name; boolean isMale; double weight; double decibels; int numPoops = 0; Class Definition void poop() { numPoops += 1; System.out.println(“Dear mother, ”+ “I have pooped. Ready the diaper.”);} } Class -overviewClassBaby myBaby = new Baby(); Instance Let’s declare a baby!public class Baby {}Let’s declare a baby!public class Baby {fields methods }Note• Class names are Capitalized • 1 Class = 1 file • Having a mainmethod means the class can be run Baby fieldspublic class Baby { TYPE var_name;TYPE var_name = some_value;} Baby fields public class Baby {String name; double weight = 5.0; boolean isMale; int numPoops = 0; } Baby Siblings? public class Baby {String name; double weight = 5.0; boolean isMale; int numPoops = 0;XXXXX YYYYY; } Baby Siblings? public class Baby {String name; double weight = 5.0; boolean isMale; int numPoops = 0;Baby[] siblings; } Ok, let’s make this baby!Baby ourBaby = new Baby();But what about it’s name? it’s sex?Constructorspublic class CLASSNAME{ CLASSNAME ( ) { } CLASSNAME ([ARGUMENTS]) { } } CLASSNAME obj1 = new CLASSNAME(); CLASSNAME obj2 = new CLASSNAME([ARGUMENTS]) 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 write one, defaults to CLASSNAME () {}Baby constructorpublic class Baby { String name; boolean isMale; Baby(String myname, boolean maleBaby){ name = myname; isMale = maleBaby; } } Baby methods public class Baby { String name = “Slim Shady”; ... void sayHi() { System.out.println( “Hi, my name is.. “ + name); }} Baby methodspublic class Baby { String weight = 5.0; void eat(double foodWeight) { if (foodWeight >= 0 && foodWeight < weight) { weight = weight + foodWeight; } } } Baby classpublic class Baby { String name; double weight = 5.0; boolean isMale; int numPoops = 0; Baby[] siblings; void sayHi() {…} void eat(double foodWeight) {…}} Using classesClasses and Instances//class Definition public class Baby {…} //class InstancesBaby shiloh = new Baby(“Shiloh Jolie-Pitt”, true);Baby knox = new Baby(“Knox Jolie-Pitt”, true);Accessing fields• Object.FIELDNAME Baby shiloh = new Baby(“Shiloh Jolie-Pitt”,true) System.out.println(shiloh.name); System.out.println(shiloh.numPoops); Calling Methods• Object.METHODNAME([ARGUMENTS]) Baby shiloh = new Baby(“Shiloh Jolie-Pitt”,true) shiloh.sayHi(); //“Hi, my name is ...” shiloh.eat(1); References vs ValuesPrimitives vs References• Primitive types are basic java types – int, long, double, boolean, char, short, byte, float – The actual values are stored in the variable • Reference types are arrays and objects – String, int[], Baby, … How java stores primitives• Variables are like fixed size cups • Primitives are small enough that they just fit into the cup int double char boolean How java stores objects• Objects are too big to fit in a variable – Stored somewhere else – Variable stores a number that locates the object Object How java stores objects• Objects are too big to fit in a variable – Stored somewhere else – Variable stores a number that locates the object Object Object Object Object Object Object Object’s location References• The object’s location is called a reference• == compares the references Baby shiloh1 = new Baby(“shiloh”); Baby shiloh2 = new Baby(“shiloh”); Does shiloh1 == shiloh2? References• The object’s location is called a reference• == compares the references Baby shiloh1 = new Baby(“shiloh”); Baby shiloh2 = new Baby(“shiloh”); Does shiloh1 == shiloh2? no ReferencesBaby shiloh1 = new Baby(“shiloh”);Baby shiloh2 = new Baby(“shiloh”);Name=“shiloh” Name=“shiloh” reference reference shiloh1 shiloh2ReferencesBaby mybaby = new Baby(“davy”, true)mybaby.name = “david” mybaby’s location name = ‘davy’ ismale = true … ReferencesBaby mybaby = new Baby(‘davy’, true)mybaby.name = ‘david’ mybaby’s location name = ‘david’ Ismale = true … References• Using = updates the reference.baby1 = baby2 baby2 location baby1 object baby2 object baby2 location baby1 baby2References• Using = updates the reference.baby1 = baby2 baby2 location baby1 object baby2 objectbaby1 baby2References• using [ ] or – Follows the reference to the object – May modify the object, but never the reference • Imagine – Following directions to a house – Moving the furniture around • Analogous to – Following the reference to an object – Changing fields in the object Methods and referencesvoid doSomething(int x, int[] ys, Baby b) { x = 99;ys[0] = 99;b.name = “99”; }...int i= 0;int[] j = {0};Baby k = new Baby(“50”, true);doSomething(i, j, k);i=? j=? k=? static types and methodsstatic• Applies to fields and methods • Means the field/method – Is defined for the class declaration, – Is not unique for each instancestaticpublic 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? static example• Keep track of the number of babies that have been made. public class Baby {int numBabiesMade = 0;Baby() {numBabiesMade += 1;}}static field• Keep track of the number of babies that have been made. public class Baby {static int numBabiesMade = 0;Baby() {numBabiesMade += 1;}}static methodpublic class Baby { static void cry(Baby thebaby) { System.out.println(thebaby.name + “cries”); } } Or public class Baby { void cry() { System.out.println(name + “cries”); } } 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);}} main• Why is main static? public static void main(String[] arguments) {} Assignment 4• Modeling Book and Libraries– class Book {} – class Library{} • Books can be – Borrowed – Returned • Library – Keeps track of books – Hint: use Book[] MIT OpenCourseWarehttp://ocw.mit.edu 6.092 Introduction to Programming in Java January (IAP) 2010 For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.
Description
This lecture notes explains waht is Object oriented programming. How to
Define Classes, Usage of Classes,References vs Values, Static types and methods.Object is an instance of a class. Class is a colection of similar type of items.
“Level:Undergraduate Instructors:Evan Jones,Adam Marcus,Eugene Wu ,6.092-4 Objects and classes 6.092 Introduction to Programming in Java,Electrical Engineering and Computer Science, Engineering, Massachusetts Institute of Technology: MIT Open Course Ware, http://ocw.mit.edu (22-08-2011).License: Creative Commons BY-NC-SA: http://ocw.mit.edu/terms/#cc".
Presentation Transcript
Your Facebook Friends on WizIQ