Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Classes are one of the most important programming constructs of Java and many other languages. They are the abstract model or blueprint for an object. One could We can also see understand classes as extended data types. Unlike the primitive data types we have already looked at, classes define both variables and functions. Programmers call class variables attributes, and class functions are as methods, but otherwise they work much the same to the variables and functions we already know. But in order to get access to these attributes and methods we need to user dot syntax: a "." must be placed after the object name, followed by the name of the attribute or the method.

...

Code Block
class BouncingBall
{
  PVector _pos;
  PVector _dir;
  float   _dampV;
  PShape  _shape;
  int     _w;
  int     _h;
   
  // constructor konstruktor
  BouncingBall(int shapeWidth,int shapeHeight)
  {
    _pos = new PVector(width/2, height/2);
    _dir = new PVector(0,0);
    _dampV = 1;
     
    _w = shapeWidth;
    _h = shapeHeight;
     
    _shape = loadShape("ball1.svg");
  }
   
  // setztset diethe neuenew posposition + richtungdirection + daempfungdampening
  void set(PVector pos,PVector dir,float dampV)
  {
    _pos = pos.get();
    _dir.add(dir);
    _dampV = dampV;
  }
   
  // erneuertupdate diethe aktuellecurrent position
  void calcPos()
  {
    // aktuellecurent position verschiebenshifted
    _pos.add(_dir);
     
    // bewegungsmovement vektorvector veraendertmodified
    _dir.mult(_dampV);
     
    // testetest horizontalhorisontal 
    if(_pos.x + _w/2 > width)
    {
      _dir.x *= -1;
      _pos.x = width - _w/2;
    }
    else if(_pos.x - _w/2 < 0)
    {
      _dir.x *= -1;
      _pos.x = _w/2;
    }
     
    // testetest vertikalvertical 
    if(_pos.y + _h/2 > height)
    {
      _dir.y *= -1;
      _pos.y = height - _w/2;
    }
    else if(_pos.y - _h/2 < 0)
    {
      _dir.y *= -1;
      _pos.y = _h/2;
    }
     
  }
   
  // zeichnetdraw denthe ball
  void draw()
  {
    calcPos();
     shape(_shape,
          _pos.x,_pos.y,
          _w,_h);
  }
}
 
class BallEx extends BouncingBall
{
  BallEx(int size)
  {
     super(size,size);
  }
 
  void draw()
  {
    super.draw();
    line(0,0,_pos.x,_pos.y);
  }
 
}

...