IAT 265 Lecture 7 Objects and ArrayList. May 19, 2016IAT 2652 Outline  Programming concepts –Super and this –Java SDK classes Lists Reading the Java.

Slides:



Advertisements
Similar presentations
Chapter 13 Abstraction and inheritance. This chapter discusses n Implementing abstraction. u extension u inheritance n Polymorphism/dynamic binding. n.
Advertisements

Week 8 Recap CSE 115 Spring Composite Revisited Once we create a composite object, it can itself refer to composites. Once we create a composite.
CS 106 Introduction to Computer Science I 04 / 11 / 2008 Instructor: Michael Eckmann.
Chapter 8 Inheritance Part 2. © 2004 Pearson Addison-Wesley. All rights reserved8-2 Outline Creating Subclasses Overriding Methods Class Hierarchies Inheritance.
Chapter 8 Improving Structure with Inheritance. The DoME Example The Database of Multimedia Entertainment We will be storing information about CDs and.
CS 106 Introduction to Computer Science I 11 / 26 / 2007 Instructor: Michael Eckmann.
CSM-Java Programming-I Spring,2005 Fundamental Data Types Lesson - 2.
CSE 115 Week 10 March , Announcements March 21 – Lab 7 Q & A in lecture March 21 – Lab 7 Q & A in lecture March 26 – Exam 7 March 26 – Exam.
Sep 26, Fall 2006IAT 800 Lecture 6 Methods and Classes.
CS 106 Introduction to Computer Science I 04 / 16 / 2010 Instructor: Michael Eckmann.
______________________________________________________________________________________ SCHOOL OF INTERACTIVE ARTS + TECHNOLOGY [SIAT] |
CPSC150 Abstract Classes and Interfaces Chapter 10.
CPSC150 Interfaces Chapter CPSC150 Inheritance Review No different than any other class. Has no access to or information about subclasses class.
Abstract Classes and Interfaces
IAT 800 Lecture Oct, Fall 2006IAT 8002 Outline  Programming concepts –Super and this –Java SDK classes Lists Reading the Java docs –Programming.
1 Java Inheritance. 2 Inheritance On the surface, inheritance is a code re-use issue. –we can extend code that is already written in a manageable manner.
1 Biggest issue!!! You can’t do questions on this topic correctly unless you draw variables, draw objects when they are created, and draw frames for method.
1 COSC3557: Object-Oriented Programming Haibin Zhu, Ph. D. Associate Professor of CS, Nipissing University.
RIT Computer Science Dept. Goals l Inheritance l Modifiers: private, public, protected l Polymorphism.
Chapter 3 Inheritance and Polymorphism Goals: 1.Superclasses and subclasses 2.Inheritance Hierarchy 3.Polymorphism 4.Type Compatibility 5.Abstract Classes.
QUEUES What are Queues? Creating a Queue Enqueuing and Dequeuing Testing for an Empty Queue.
1 CS 177 Week 11 Recitation Slides Class Design/Custom Classes.
LCC 6310 Computation as an Expressive Medium Lecture 6.
Lecture 8: Advanced OOP Part 2. Overview Review of Subtypes Interfaces Packages Sorting.
CS2102: Lecture on Abstract Classes and Inheritance Kathi Fisler.
Quick Review of OOP Constructs Classes:  Data types for structured data and behavior  fields and methods Objects:  Variables whose data type is a class.
Basic Concepts of OOP.  Object-Oriented Programming (OOP) is a type of programming added to php5 that makes building complex, modular and reusable web.
Subclassing, pt. 2 Method overriding, virtual methods, abstract classes/methods COMP 401, Fall 2014 Lecture 9 9/16/2014.
Basic Object-Oriented concepts. Concept: Classes describe objects Every object belongs to (is an instance of) a class An object may have fields –The class.
______________________________________________________________________________________ SCHOOL OF INTERACTIVE ARTS + TECHNOLOGY [SIAT] |
COP INTERMEDIATE JAVA Inheritance, Polymorphism, Interfaces.
Georgia Institute of Technology More on Creating Classes Barb Ericson Georgia Institute of Technology June 2006.
Comp1004: Object Oriented Design I Abstract Classes and Interfaces.
Class Inheritance Part II: Overriding and Polymorphism Corresponds with Chapter 10.
JAVA: An Introduction to Problem Solving & Programming, 5 th Ed. By Walter Savitch and Frank Carrano. ISBN © 2008 Pearson Education, Inc., Upper.
Lecture 5:Interfaces and Abstract Classes
Modern Programming Tools And Techniques-I
Computer Graphics: Rocket, Java: Class
Abstract Classes and Interfaces
Inheritance and Polymorphism
LCC 6310 Computation as an Expressive Medium
Computation as an Expressive Medium
LCC 6310 Computation as an Expressive Medium
Object Oriented Programming
Winter 2018 CMPE212 11/12/2018 CMPE212 – Stuff…
CS2102: Lecture on Abstract Classes and Inheritance
Object Oriented Programming (OOP) LAB # 8
CISC124 Assignment 4 on Inheritance due next Monday, the 12th at 7pm.
Chapter 9: Polymorphism and Inheritance
Inherited Classes in Java
Advanced Java Programming
Building Java Programs
Java – Inheritance.
OO Design with Inheritance
Java Inheritance.
Core Concepts.
Object Oriented Programming
CMSC 202 Generics.
Chapter 9 Carrano Chapter 10 Small Java
Inheritance and Polymorphism
1.4 ทบทวน JAVA OO Programming Concepts Declaring and Creating Objects
More on Creating Classes
Lecture 8 Inheritance CS140 Dick Steflik.
Lecture 6 Methods and Classes
Chapter 8 Inheritance Part 2.
Final and Abstract Classes
Abstract Classes and Interfaces
More on Creating Classes part 3
CMPE212 – Reminders Assignment 2 due next Friday.
Lecture 6 Methods, Classes, Inheritance
Presentation transcript:

IAT 265 Lecture 7 Objects and ArrayList

May 19, 2016IAT 2652 Outline  Programming concepts –Super and this –Java SDK classes Lists Reading the Java docs –Programming questions related to Projects?

May 19, 2016IAT 2653 Revisit our example  So far we have a rocket that flies around in a field of asteroids and fires  Now we want our missiles to blow up asteroids –This means we need a variable number of asteroids. –How do we do this with an array? –Use an ArrayList! –Also need to figure out when we have a collision

May 19, 2016IAT 2654 The Java SDK  Java comes with thousands of classes in the Java Platform API  Documentation is available on Sun’s website  Let’s look at ArrayList

May 19, 2016IAT 2655 ArrayList  It’s a resizeable list –Can add and delete things without worrying about declaring the size  The main methods we care about are add(), get(), and remove(), and size()  Steps in using ArrayList –Declare a variable of type ArrayList –Create a new ArrayList and assign it to the variable –Call add(), get() and remove() and size() on ArrayList as you need them

May 19, 2016IAT 2656 Parents and children  Remember that we declared a child class ArmedRocket whose parent was Rocket  Remember that classes are types –So ArmedRocket is a type and Rocket is a type  So, here are some legal assignments –ArmedRocket r1 = new ArmedRocket(50, 60, 0); –Rocket r2 = new Rocket(50, 60, 0); –Rocket r3 = new ArmedRocket(50, 60, 0);  But this is illegal –ArmedRocket r4 = new Rocket(50, 60, 0);  Same goes for method arguments as well…

May 19, 2016IAT 2657 Rocket Inheritance Rocket: xPos, YPos, velocityX, velocityY, rotation Rocket(x,y,rotation) drawMe() ArmedRocket extends Rocket xPos, YPos, velocityX, velocityY, rotation ArmedRocket(x,y,rotation) drawMe() fire() Inherits from

May 19, 2016IAT 2658 Using ArrayList.add()  The argument type of the add method is Object –Object is the parent class of all classes –With an object argument type, you can pass in an object of any class  So, to initialize our asteroids… ArrayList asteroids = new ArrayList(); for(int i = 0; i < numAsteroids; i++) asteroids.add(new Asteroid());

May 19, 2016IAT 2659 Getting things out of an ArrayList  asteroids.get(int i) – returns the ith object (starting with 0)  But this doesn’t work: asteroids.get(i).draw(); Why?

May 19, 2016IAT Need to cast back from Object  Since things are put in an ArrayList as Object, they come back out as Object –It’s like they forget their more detailed type –So, when using ArrayList (or any container class), need to cast back to the more detailed type Asteroid ast = (Asteroid)asteroids.get(i); if (!ast.collision(r1)) ast.draw();

Generics ArrayList  How do you type a type?  With a new notation in angle brackets  So, to initialize our asteroids… ArrayList rocks = new ArrayList (); for( int i = 0; i < numAsteroids; i++ ) rocks.add( new Asteroid() ); rocks.get(i).draw(); // works! rocks has a known type May 19, 2016IAT 26511

May 19, 2016IAT Pushing collision detection into the Asteroid  Collision detection could happen in draw()  But it is cleaner (more object-oriented) if Asteroid itself knows how to detect collision –Detecting collision depends on knowing the boundaries of the asteroid, which properly belongs in the asteroid class boolean collision(Rocket r) { if ((r.xPos >= xPos - 26 && r.xPos <= xPos + 22) && (r.yPos >= yPos - 24 && r.yPos <= yPos + 26)) return true; else return false; }

May 19, 2016IAT Destroying asteroids  When a missile hits an Asteroid, we need to destroy it –This was the whole reason for using ArrayList –Big asteroids turn into two small asteroids –Small asteroids disappear void destroy(ArrayList asteroids) { asteroids.remove(this); if (large) { asteroids.add(new Asteroid(false, xPos, yPos, lastDrawMillis)); }

May 19, 2016IAT Super and this  this is a special variable that always refers to the current instance (object) –Useful in methods to refer to yourself –this.method() – calls a method on yourself (but normally you just directly call the method) –this() – calls a constructor on yourself (useful for one version of a constructor to call another)  super is a special variable that always refers to the superclass portion of an object (the object cast into it’s superclass) –super.method() – calls the superclass’s method –super() – calls the superclass’s constructor

May 19, 2016IAT Summary  Learned how to use ArrayList, our first Java Platform class  Learned about super and subclasses as types –Any instance of a subclass is an instance of the superclass, but not visa-versa –Can cast more abstract classes (parents) into more concrete classes (children)  The Java keywords super and this –Special variables that can be used within a method to refer to yourself (the superclass portion of yourself and all of yourself)