LCC 6310 Computation as an Expressive Medium

Slides:



Advertisements
Similar presentations
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.
Advertisements

Asteroids Games and Simulations O-O Programming in Java The Walker School The Walker School – Games and Simulations
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.
CS 106 Introduction to Computer Science I 11 / 26 / 2007 Instructor: Michael Eckmann.
Sep 26, Fall 2006IAT 800 Lecture 6 Methods and Classes.
______________________________________________________________________________________ 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.
IAT 800 Lecture Oct, Fall 2006IAT 8002 Outline  Programming concepts –Super and this –Java SDK classes Lists Reading the Java docs –Programming.
Week 4-5 Java Programming. Loops What is a loop? Loop is code that repeats itself a certain number of times There are two types of loops: For loop Used.
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.
JAVA COLLECTIONS LIBRARY School of Engineering and Computer Science, Victoria University of Wellington COMP T2, Lecture 2 Marcus Frean.
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.
APCS Java AB 2004 Review of CS1 and CS2 Review for AP test #1 Sources: 2003 Workshop notes from Chris Nevison (Colgate University) AP Study Guide to go.
PART 3. You have been using static methods in your programs before and methods are the building blocks of procedural programming. In this part of the.
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.
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.
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.
______________________________________________________________________________________ SCHOOL OF INTERACTIVE ARTS + TECHNOLOGY [SIAT] |
COP INTERMEDIATE JAVA Inheritance, Polymorphism, Interfaces.
Lecture 5:Interfaces and Abstract Classes Michael Hsu CSULA.
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.
IAT 265 Lecture 7 Objects and ArrayList. May 19, 2016IAT 2652 Outline  Programming concepts –Super and this –Java SDK classes Lists Reading the Java.
Lecture 5:Interfaces and Abstract Classes
Inheritance Modern object-oriented (OO) programming languages provide 3 capabilities: encapsulation inheritance polymorphism which can improve the design,
Computer Graphics: Rocket, Java: Class
Objects as a programming concept
Inheritance and Polymorphism
03/10/14 Inheritance-2.
Object-Oriented Programming & Design Lecture 18 Martin van Bommel
Computation as an Expressive Medium
Chapter 3: Using Methods, Classes, and Objects
LCC 6310 Computation as an Expressive Medium
Inheritance Modern object-oriented (OO) programming languages provide 3 capabilities: encapsulation inheritance polymorphism which can improve the design,
Programming Language Concepts (CIS 635)
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.
slides created by Ethan Apter
Inherited Classes in Java
Advanced Java Programming
Building Java Programs
Variables Title slide variables.
slides created by Ethan Apter
Java – Inheritance.
OO Design with Inheritance
Core Concepts.
Inheritance and Polymorphism
1.4 ทบทวน JAVA OO Programming Concepts Declaring and Creating Objects
Programming with inheritance Based on slides by Alyssa Harding
More on Creating Classes
Lecture 6 Methods and Classes
Chapter 8 Inheritance Part 2.
Chapter 13 Abstract Classes and Interfaces Part 01
Final and Abstract Classes
More on Creating Classes part 3
LCC 6310 Computation as an Expressive Medium
slides created by Ethan Apter and Marty Stepp
CMPE212 – Reminders Assignment 2 due next Friday.
Lecture 6 Methods, Classes, Inheritance
Coming up Variables Quick look at scope Primitives Objects
Presentation transcript:

LCC 6310 Computation as an Expressive Medium Lecture 6

Outline Programming concepts Discuss reading Programming questions related to Project 2? Super and this Java SDK classes Lists Reading the Java docs Discuss reading Happenings in the New York Scene The Cut-up Method of Brion Gysin Six Selections of the Oulipo

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

The Java SDK Java comes with thousands of classes in the Java Platform API Documentation is available on Sun’s website You may want to download the documentation… Let’s look at ArrayList

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

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…

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… asteroids = new ArrayList(); for(int i = 0; i < numAsteroids; i++) asteroids.add(new Asteroid());

Getting things out of an ArrayList ArrayList.get(int i) – returns the ith object (starting with 0) But this doesn’t work! asteroids.get(i).draw(); Why?

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 asteroid = (Asteroid)asteroids.get(i); if (!asteroid.collision(r1)) asteroid.draw();

Pushing collision detection into the Asteroid In the current code, detecting collision takes place in loop() 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; }

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

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 a method on the superclass super() – calls a constructor on the superclass

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)