VISER, Beograd
Ласло Краус
Објекнто програмирање 2 - колоквијуми
Први колоквијум
1. 12. 2013

Задатак | Напомене | Решење

Поставка задатка (решење | садржај)

Написати на језику Java следећи пакет типова (грешке пријављивати изузецима опремљеним текстовима порука):

Написати на језику Java програм који:

Користити константне параметре (не треба ништа учитавати с главног улаза).


Напомене (садржај)


Решење задатка (поставка | садржај)

// Pomerljiv.java

package figure;

public interface Pomerljiv {
  Pomerljiv pomeri(double dx, double dy);
}

// Figura.java

package figure;

public abstract class Figura implements Pomerljiv {
  public abstract char vrsta();
  public abstract Tacka teziste();
  public String toString() { return vrsta() + ""; }
}

// Tacka.java

package figure;

public class Tacka extends Figura {
  private double x, y;
  
  public Tacka(double a, double b) { x = a; y = b; }
  public Tacka() {}
  
  public double x() { return x; }
  public double y() { return y; } 
  
  public Tacka pomeri(double dx, double dy) { x += dx; y += dy; return this; }
  
  public char vrsta() { return 'T'; }
  
  public Tacka teziste() { return this; }
  
  public String toString() { return super.toString() + "(" + x + "," + y + ")"; }
}

// GPun.java

package figure;

public class GPun extends Exception {
  public String toString() { return "*** Niz je pun!"; }
}

// GIndeks.java

package figure;

public class GIndeks extends Exception {
  public String toString() { return "*** Indeks izvan opsega!"; }
}

// Niz.java

package figure;

public class Niz<E> {
  E[] niz; int n = 0;
  
  public Niz(int kap) { niz = (E[]) new Object[kap]; }
  public Niz() { this(10); }
  
  public int duz() { return n; }
  
  public Niz<E> dodaj(E e) throws GPun {
    if (n == niz.length) throw new GPun();
    niz[n++] = e;
    return this;
  }
  
  public E dohv(int i) throws GIndeks {
    if (i<0 || i>=n) throw new GIndeks();
    return niz[i];
  }
  

  public String toString() {
    StringBuilder sb = new StringBuilder("[");
    for (int i=0; i<n; i++) {
      if (i > 0) sb.append(',');
      sb.append(niz[i]);
    }
    return sb.append(']').toString();
        
  }
}

// Mnogougao.java

package figure;

public class Mnogougao extends Figura {
  Niz<Tacka> tem;
  
  public Mnogougao(int brTem) { tem = new Niz<Tacka>(brTem); }
  public Mnogougao() { this(3); }
  
  public Mnogougao dodaj(Tacka t) throws GPun { tem.dodaj(t); return this; }

  public Mnogougao pomeri(double dx, double dy) {
    try {
      for (int i=0; i<tem.duz(); tem.dohv(i++).pomeri(dx, dy));
    } catch (GIndeks g) {}
    return this;
  }

  public char vrsta() { return 'M'; }

  public Tacka teziste() {
    double x = 0, y = 0;
    int n = tem.duz();
    try {
      for (int i=0; i<n; i++) { x+=tem.dohv(i).x(); y+=tem.dohv(i).y(); }
    } catch (GIndeks g) {}
    return new Tacka(x/n, y/n);
  }
  
  public String toString() { return super.toString() + tem; }
}

// Program.java

import figure.*;

public class Program {
  public static void main(String[] varg) {
    Mnogougao mu = new Mnogougao(4);
    try {
      mu.dodaj(new Tacka())
        .dodaj(new Tacka(0, 2))
        .dodaj(new Tacka(2, 2))
        .dodaj(new Tacka(2, 0));
      System.out.println(mu + " " + mu.teziste());
      mu.pomeri(-1, -1);
      System.out.println(mu + " " + mu.teziste());
    } catch (GPun g) { System.out.println(g); }
  }
}

M[T(0.0,0.0),T(0.0,2.0),T(2.0,2.0),T(2.0,0.0)] T(1.0,1.0) M[T(-1.0,-1.0),T(-1.0,1.0),T(1.0,1.0),T(1.0,-1.0)] T(0.0,0.0)
(садржај)
         
Аутор: Ласло Краус
Е-пошта: kraus@etf.rs

Copyright © 2014, Laslo Kraus
Последња ревизија: 19.1.2014.