Tutorials : Java by Example : Section 5 :
Section Five Contents
Introducing Classes and Objects
Using the Vector Class

Objects and Classes

Introducing Classes and Objects

This next applet uses a separate "Bubble" class (which is also a separate *.class file after compilation). This class is a kind of "black box" for the rest of the program. It has it's own variables and methods. To use a class, the program must create an instance, or "object" of that class: Bubble myBubble; and myBubble = new Bubble(x,y);. The first declared a variable name for our object, the second created the object itself. The arguments (x,y) are the arguments of the constructor. The constructor is a method that is called from the creating class in the moment an object is created. You can pass arguments from the creating class to the object here, or make any initializations. Via that object (you can create as much as you need), the program can call methods of that class. Use the "." operator between object name and method name, like this: myBubble.paint(gBuffer). You can also access variables of the objects directly: myBubble.x - but that is not recommended , to avoid accidentally changing data in your object. You would also have to declare them public to allow access from outside the class. Try to use only methods to access variables of an object.

//Sourcecode

import java.awt.*;
import java.applet.*;

//bubbles applet with a separate bubble class!

class Bubble
{
   //instance variables
   int x, y;
   Graphics g;

   //constructor
   public Bubble(int x, int y)
   {
        this.x=x;
        this.y=y;
   }

   public void drawRandomBubble(int x, int y)
   {
        int red=(int)(Math.random()*255);
        int green=(int)(Math.random()*255);
        int blue=(int)(Math.random()*255);

        Color randomColor=new Color(red, green, blue);
        g.setColor(randomColor);

        //generate a random number between 10 and 100
        int diameter=(int)(Math.random()*90)+10;

        //make mouse cursor the center of our random bubble
        g.fillOval(x-diameter/2,y-diameter/2,diameter,diameter);
    }


    public void paint(Graphics gr)
    {
        g=gr;
        drawRandomBubble(x, y);
    }
}

public class Project23 extends Applet
{
   Image Buffer;
   Graphics gBuffer;
   Bubble myBubble;

   public void init()
   {
      Buffer=createImage(size().width,size().height);
      gBuffer=Buffer.getGraphics();
   }

   public boolean mouseDown(Event evt,int x,int y)
   {
      myBubble = new Bubble(x,y);

      myBubble.paint(gBuffer);

      repaint();

      return true;
   }

   public void update(Graphics g)
   {
      paint(g);
   }

   public void paint(Graphics g)
   {
      gBuffer.setColor(Color.black);
      gBuffer.drawString("Click the applet to paint classy bubbles!", 30,20);
      g.drawImage (Buffer,0,0, this);
   }
}

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.