1 / 10

Lab 8: Image and Color Effects with 2D Arrays

This lab explores image and color effects using 2D arrays in Java. It covers topics such as inheritance, dynamic dispatch, abstract classes, and interfaces. Resources and examples are provided.

annamariem
Télécharger la présentation

Lab 8: Image and Color Effects with 2D Arrays

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lab 8 Due Thursday Image and color effects with 2D arrays Read: Chapter 9 Cahoon & Davidson Chapter 9 Regis & Stepp Additional Reading: http://java.sun.com/docs/books/tutorial/java/concepts/inheritance.html Last Time Review Inheritance Dynamic dispatch Today Dynamic dispatch Abstract Classes Announcements & Review Lecture 28: Abstract Classes & Inheritance

  2. Inheritance in Java ... • All classes inherit from Object • Rectangle inherits from Object • ColoredRectangle inherits from • Rectangle Object provides these methods: toString() equals() // more on these clone() // later... instanceof() Object Transformation Graph Rectangle ColoredRectangle Lecture 28: Abstract Classes & Inheritance

  3. Super class:Rectangle public class Rectangle { protected int width; // the instance variables protected int height; public Rectangle() { width = 0; height = 0; } public Rectangle(int w, int h) { width = w; height = h; } public void draw(...) {} Lecture 28: Abstract Classes & Inheritance

  4. Syntax of InheritanceExample: ColoredRectangle public class ColoredRectangle extends Rectangle { private Color myColor; // additional instance variables public ColoredRectangle() { super(); // optional myColor = Color.white; } /* Is the same as: public ColoredRectangle() { implicitly first calls super, because the signatures match myColor = Color.white; } */ public ColoredRectangle(int w, int h, Color newColor) { super(w,h); // required: why do we need this one? myColor = newColor; } Lecture 28: Abstract Classes & Inheritance

  5. Dynamic Dispatch • Declare variables of supertype and they can be the supertype or the subtype Rectangle r = new ColoredRectangle(); • Declare variables of a subtype and they can only be of type subtype or lower. • Test type with instanceof <variable instanceof TypeName> returns a boolean if (r instanceof Rectangle) {...} if (r instanceof ColoredRectangle) {...} • BlueJ Lecture 28: Abstract Classes & Inheritance

  6. Abstract Classes • Want to partially declare a class • Force an implementation of a method but do not offer a default implementation it • require a draw method, but have not default draw Lecture 28: Abstract Classes & Inheritance

  7. Syntax for Abstract Classes public abstract class Shapes { protected static String name; // e.g., Rectangle, Triangle, ... // Subclass must implement draw public abstract void draw(DrawingBox box); public String getName() { // Subclass need not implement getName return name; } } public class Rectangle extends Shapes { protected static String name = “Rectangle”; .... public void draw(DrawingBox box) { box.drawRect(...) } } Lecture 28: Abstract Classes & Inheritance

  8. BlueJ examples ... Lecture 28: Abstract Classes & Inheritance

  9. Interfaces • Want to partially specify a behavior that can apply to lots of classes • For example, adding Color • Enforces a consistant application of a “feature” across lots of classes Lecture 28: Abstract Classes & Inheritance

  10. Interfaces Interface Colorable { public void setColor(Color c); public Color getColor(); } public class ColorRectangle extends Shapes implements Colorable{ Color myColor; public void setColor(Color c) { myColor = c; } public Color getColor() { return myColor; } Lecture 28: Abstract Classes & Inheritance

More Related