Objektno

21
package lekcija1; /** * Klasa Pravougaonik. Polja a i b su stranice pravougaonika. Poseduje metode * za izracunavanje obima i povrsine. */ public class Pravougaonik { private double a; private double b; public Pravougaonik(double a, double b) { //this je referenca na objekat nad kojim se poziva metoda (ne postoje pokazivaci) this.a = a; this.b = b; } public Pravougaonik(Pravougaonik p) { this.a = p.a; this.b = p.b; } public double getA() { return a; } public void setA(double a) { this.a = a; } public double getB() { return b; } public void setB(double b) { this.b = b; } public double getO() { return 2*a + 2*b; } public double getP() { return a * b; } //izvrsavanje programa krece od main metode public static void main(String[] args) { //promenljiva p je referenca na objekat klase Pravougaonik Pravougaonik p = new Pravougaonik(3, 4); System.out.println(p.getA() + "\t" + p.getB()); } } ........................................................................................................................... package lekcija1; /** * Primer nizova u javi. */ public class TestNiz { public static void main(String[] args) { //kreiranje niza double a[] = new double[3]; //kreiranje i inicijalizacija niza int[] b = {1, 7, 9, 3, 4}; //operator [] koristimo za pristup elementu niza a[0] = 2.5; //iteracija kroz niz //koristimo polje length koje poseduje svaki niz for (int i = 0; i < b.length; i++) { System.out.println("Element na poziciji "+ i + " je “+ b[i]); } //nizovi objekata Pravougaonik p1 = new Pravougaonik(10,2); Pravougaonik p2 = new Pravougaonik(3,4); Pravougaonik pravougaonici[] = new Pravougaonik[2]; pravougaonici[0] = p1; pravougaonici[1] = p2; for (int i = 0; i < pravougaonici.length; i++) { System.out.println("Pravougaonik na poziciji " + i + " ima povrsinu " + pravougaonici[i].getP()); } } }

description

Primeri zadataka

Transcript of Objektno

  • package lekcija1;

    /**

    * Klasa Pravougaonik. Polja a i b su stranice pravougaonika. Poseduje

    metode

    * za izracunavanje obima i povrsine.

    */

    public class Pravougaonik {

    private double a;

    private double b;

    public Pravougaonik(double a, double b) {

    //this je referenca na objekat nad kojim se poziva metoda (ne

    postoje pokazivaci)

    this.a = a;

    this.b = b;

    }

    public Pravougaonik(Pravougaonik p) {

    this.a = p.a;

    this.b = p.b;

    }

    public double getA() {

    return a;

    }

    public void setA(double a) {

    this.a = a;

    }

    public double getB() {

    return b;

    }

    public void setB(double b) {

    this.b = b;

    }

    public double getO() {

    return 2*a + 2*b;

    }

    public double getP() {

    return a * b;

    }

    //izvrsavanje programa krece od main metode

    public static void main(String[] args) {

    //promenljiva p je referenca na objekat klase Pravougaonik

    Pravougaonik p = new Pravougaonik(3, 4);

    System.out.println(p.getA() + "\t" + p.getB());

    }

    }

    ...........................................................................................................................

    package lekcija1;

    /**

    * Primer nizova u javi.

    */

    public class TestNiz {

    public static void main(String[] args) {

    //kreiranje niza

    double a[] = new double[3];

    //kreiranje i inicijalizacija niza

    int[] b = {1, 7, 9, 3, 4};

    //operator [] koristimo za pristup elementu niza

    a[0] = 2.5;

    //iteracija kroz niz

    //koristimo polje length koje poseduje svaki niz

    for (int i = 0; i < b.length; i++) {

    System.out.println("Element na poziciji "+ i + " je + b[i]);

    }

    //nizovi objekata

    Pravougaonik p1 = new Pravougaonik(10,2);

    Pravougaonik p2 = new Pravougaonik(3,4);

    Pravougaonik pravougaonici[] = new Pravougaonik[2];

    pravougaonici[0] = p1;

    pravougaonici[1] = p2;

    for (int i = 0; i < pravougaonici.length; i++) {

    System.out.println("Pravougaonik na poziciji " + i +

    " ima povrsinu " + pravougaonici[i].getP());

    }

    }

    }

  • package lekcija2.interfejsi;

    /**

    * Definicija interfejsa GeometrijskaFigura. Sadrzi dve apstraktne metode

    * za izracunavanje obima i izracunavanje povrsine

    */

    public interface GeometrijskaFigura {

    //apstraktna metoda

    //nema telo i ima rezervisanu rec abstract

    //ali se kod interfejsa ne mora pisati jer su sve metode u interfejsu

    apstraktne

    //u javi je svaka metoda virtualna (ne treba dodatno pisati)

    public double getObim();

    public double getPovrsina();

    }

    ............................................................................................................................

    package lekcija2.interfejsi;

    /**

    * Klasa Krug. Polje r je poluprecnik kruga. Poseduje metode

    * za izracunavanje obima i povrsine. Implementira GeometrijskuFiguru

    */

    public class Krug implements GeometrijskaFigura {

    protected double r;

    public Krug(double r) {

    this.r = r;

    }

    public double getR() {

    return r;

    }

    public void setR(double r) {

    this.r = r;

    }

    @Override

    public String toString() {

    return "Krug(r=" + r + ")";

    }

    //klasa Math sadrzi matematicke funkcije i konstante

    @Override

    public double getObim() {

    return 2 * r * Math.PI;

    }

    //funkcija pow dize r na stepen 2

    @Override

    public double getPovrsina() {

    return Math.pow(r, 2) * Math.PI;

    }

    }

    ............................................................................................................................

  • package lekcija2.interfejsi;

    /**

    * Klasa Pravougaonik. Polja a i b su stranice pravougaonika. Poseduje

    metode

    * za izracunavanje obima i povrsine. Implementira GeometrijskuFiguru

    */

    //rezervisana rec implements predstavlja implementaciju interfejsa

    public class Pravougaonik implements GeometrijskaFigura {

    protected double a;

    protected double b;

    public Pravougaonik(double a, double b) {

    this.a = a;

    this.b = b;

    }

    public double getA() {

    return a;

    }

    public void setA(double a) {

    this.a = a;

    }

    public double getB() {

    return b;

    }

    public void setB(double b) {

    this.b = b;

    }

    //anotacija @Override oznacava da je metoda nasledjena

    //ukoliko postoji anotacija a mi nismo napisali dobro prototip metode

    kompajler javlja gresku

    //moze i da se ne navede

    @Override

    public double getObim() {

    return 2 * (a + b);

    }

    @Override

    public double getPovrsina() {

    return a * b;

    }

    @Override

    public String toString() {

    return "Pravougaonik(a=" + a + ", b=" + b + ")";

    }

    }

    ............................................................................................................................

    package lekcija2.interfejsi;

    /**

    * Klasa Kvadrat. Nasledjuje klasu Pravougaonik. Obe stranice su iste

    */

    public class Kvadrat extends Pravougaonik {

    public Kvadrat(double a) {

    super(a, a);

    }

    @Override

    public void setA(double a) {

    super.setA(a);

    super.setB(a);

    }

    @Override

    public void setB(double b) {

    super.setA(b);

    super.setB(b);

    }

    @Override

    public String toString() {

    return "Kvadrat(a=" + a + ")";

    }

    }

    ............................................................................................................................

  • package lekcija2.interfejsi;

    /**

    * Testira ostale klase u ovom paketu.

    */

    public class Test {

    public static void main(String[] args) {

    Test t = new Test();

    t.testiraj();

    }

    private void testiraj() {

    Pravougaonik p = new Pravougaonik(2,3);

    Krug k = new Krug(4);

    ispisiPovrsinu(p);

    ispisiPovrsinu(k);

    }

    private void ispisiPovrsinu(GeometrijskaFigura g) {

    //getPovrsina - pozvace se prava metoda jer su sve metode u

    javi virtuelne

    System.out.println("Povrsina je: " + g.getPovrsina());

    }

    }

    package lekcija2.kompozicija;

    import zadatak1.Krug;

    import lekcija1.Pravougaonik;

    /**

    * KLasa Valjak. Sadrzi osnovu koja je krug i omotac modelovan pomocu

    pravougaonika.

    * Sadrzi metode za izracunavanje povrsine i zapremine.

    */

    public class Valjak {

    //kompozicija

    private Krug b;

    private Pravougaonik m;

    public Valjak(double r, double h) {

    //inicijalizacija objekata clanova

    this.b = new Krug(r);

    this.m = new Pravougaonik(b.getO(), h);

    }

    public Valjak(Valjak v) {

    //inicijalizacija objekata clanova

    this.b = new Krug(v.b.getR());

    this.m = new Pravougaonik(v.m);

    }

    public double getR() {

    return b.getR();

    }

    public double getH() {

    return m.getB();

    }

    public double getP() {

    return 2*b.getP() + m.getP();

    }

    public double getV() {

    return b.getP() * getH();

    }

    //testiramo klasu

    public static void main(String[] args) {

    Valjak v = new Valjak(2,4);

    System.out.println("Povrsina valjka je: " + v.getP());

    System.out.println("Zapremina valjka je: " + v.getV());

    }

    }

    ....

  • package lekcija2.nasledjivanje;

    /**

    * Definicija apstraktne klase GeometrijskaFigura. Sadrzi dve apstraktne

    metode

    * za izracunavanje obima i izracunavanje povrsine

    */

    public abstract class GeometrijskaFigura {

    //apstraktna metoda

    //nema telo i ima rezervisanu rec abstract

    //u javi je svaka metoda virtualna (ne treba dodatno pisati)

    public abstract double getObim();

    public abstract double getPovrsina();

    }

    ............................................................................................................................

    package lekcija2.nasledjivanje;

    /**

    * Klasa Krug. Polje r je poluprecnik kruga. Poseduje metode

    * za izracunavanje obima i povrsine. Nasledjuje GeometrijskuFiguru

    */

    public class Krug extends GeometrijskaFigura {

    protected double r;

    public Krug(double r) {

    this.r = r;

    }

    public double getR() {

    return r;

    }

    public void setR(double r) {

    this.r = r;

    }

    @Override

    public String toString() {

    return "Krug(r=" + r + ")";

    }

    //klasa Math sadrzi matematicke funkcije i konstante

    @Override

    public double getObim() {

    return 2 * r * Math.PI;

    }

    //funkcija pow dize r na stepen 2

    @Override

    public double getPovrsina() {

    return Math.pow(r, 2) * Math.PI;

    }

    }

    ............................................................................................................................

  • package lekcija2.nasledjivanje;

    /**

    * Klasa Pravougaonik. Polja a i b su stranice pravougaonika. Poseduje

    metode

    * za izracunavanje obima i povrsine. Nasledjuje GeometrijskuFiguru

    */

    //rezervisana rec extends predstavlja nasledjivanje

    public class Pravougaonik extends GeometrijskaFigura {

    protected double a;

    protected double b;

    public Pravougaonik(double a, double b) {

    this.a = a;

    this.b = b;

    }

    public double getA() {

    return a;

    }

    public void setA(double a) {

    this.a = a;

    }

    public double getB() {

    return b;

    }

    public void setB(double b) {

    this.b = b;

    }

    //anotacija @Override oznacava da je metoda nasledjena

    //ukoliko postoji anotacija a mi nismo napisali dobro prototip metode

    kompajler javlja gresku

    //moze i da se ne navede

    @Override

    public double getObim() {

    return 2 * (a + b);

    }

    @Override

    public double getPovrsina() {

    return a * b;

    }

    @Override

    public String toString() {

    return "Pravougaonik(a=" + a + ", b=" + b + ")";

    }

    }

    ............................................................................................................................

    package lekcija2.nasledjivanje;

    /**

    * Klasa Kvadrat. Nasledjuje klasu Pravougaonik. Obe stranice su iste

    */

    public class Kvadrat extends Pravougaonik {

    public Kvadrat(double a) {

    super(a, a);

    }

    @Override

    public void setA(double a) {

    super.setA(a);

    super.setB(a);

    }

    @Override

    public void setB(double b) {

    super.setA(b);

    super.setB(b);

    }

    @Override

    public String toString() {

    return "Kvadrat(a=" + a + ")";

    }

    }

    ............................................................................................................................

  • package lekcija2.nasledjivanje;

    /**

    * Testira ostale klase u ovom paketu.

    */

    public class Test {

    public static void main(String[] args) {

    Pravougaonik p = new Pravougaonik(2,3);

    Krug k = new Krug(4);

    Kvadrat kv = new Kvadrat(3);

    ispisiPovrsinu(p);

    ispisiPovrsinu(k);

    ispisiPovrsinu(kv);

    ((Pravougaonik)kv).setB(1);

    ispisiPovrsinu(kv);

    }

    private static void ispisiPovrsinu(GeometrijskaFigura g) {

    //getPovrsina - pozvace se prava metoda jer su sve metode u javi virtuelne

    System.out.println(g);

    System.out.println("Povrsina je: " + g.getPovrsina());

    }

    }

    package lekcija3;

    import java.io.BufferedReader;

    import java.io.IOException;

    import java.io.InputStreamReader;

    /**

    * Pokazuje upotrebu try catch bloka i unosa sa tastature

    */

    public class Test {

    public static void main(String[] args) {

    Help h = new Help();

    h.ispis();

    h.ispis();

    }

    }

    ............................................................................................................................

    package lekcija3;

    import java.io.BufferedReader;

    import java.io.IOException;

    import java.io.InputStreamReader;

    public class Help {

    public Help(){};

    public void ispis(){

    System.out.println("TEST");

    System.out.println("Unesite identifikacioni broj:");

    BufferedReader br = null;

    try {

    br = new BufferedReader(new

    InputStreamReader(System.in));

    int id = Integer.parseInt(br.readLine());

    System.out.println("Uneli ste identifikacioni broj: " + id);

    } catch (NumberFormatException nfe) {

    System.out.println("Identifikacioni broj mora biti celobrojna

    vrednost!");

    nfe.printStackTrace();

    } catch (Exception e) {

    System.out.println("Dogodio se neki drugi izuzetak.");

    e.printStackTrace();

    } finally {

    //zatvaranje readera

    //i zatvaranje moze da baci izuzetak pa odatle novi try/catch

    try {

    br.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    }

  • package lekcija4;

    import java.io.BufferedInputStream;

    import java.io.BufferedOutputStream;

    import java.io.BufferedReader;

    import java.io.BufferedWriter;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import java.io.FileReader;

    import java.io.FileWriter;

    import java.io.ObjectInputStream;

    import java.io.ObjectOutputStream;

    import java.util.Scanner;

    /**

    * Rad sa fajlovima.

    * Pisanje objekata u fajl i citanje objekata iz fajla.

    * Upis teksta u fajl i citanje teksta iz fajla.

    */

    public class Files {

    @SuppressWarnings("resource")

    public static void main(String[] args) {

    Osoba o = new Osoba("Marko", "Markovic");

    System.out.println("Upis osobe u datoteku...");

    save("C:\\javaObject.raw", o); //moze i druga fajl ekstenzija

    System.out.println("Citanje osobe iz datoteke...");

    Osoba retO = load("C:\\javaObject.raw"); //moze i druga fajl

    ekstenzija

    System.out.println(retO);

    System.out.println("-------------------------------------");

    int redovi = unesiBroj();

    System.out.println("Broj redova je: " + redovi);

    System.out.println("Unesite zeljeni tekst:");

    String[] niz = new String[redovi];

    Scanner in = new Scanner(System.in);

    for(int i=0; i

  • } finally {

    if(out != null)

    try {

    out.close();

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    }

    //metoda koja cita objekat klase Osoba iz fajla

    public static Osoba load(String file){

    ObjectInputStream in = null;

    Osoba ret = null;

    try {

    in = new ObjectInputStream(new

    BufferedInputStream(new FileInputStream(file)));

    ret = (Osoba) in.readObject();

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    if(in != null)

    try {

    in.close();

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    return ret;

    }

    //metoda koja snima multiline tekst u fajl

    public static void saveText(String file, String[] text) {

    BufferedWriter out = null;

    try {

    out = new BufferedWriter(new FileWriter(file));

    for(int i=0; i

  • package lekcija4;

    import java.io.Serializable;

    /**

    * Klasa Osoba koja ce se pisati u fajl i citati iz fajla.

    */

    @SuppressWarnings("serial")

    public class Osoba implements Serializable { //mora implementirati

    Serializable kako bi se mogao sacuvati u fajl

    private String ime = "";

    private String prezime = "";

    public Osoba(String ime, String prezime) {

    this.ime = ime;

    this.prezime = prezime;

    }

    public String getIme() {

    return ime;

    }

    public void setIme(String ime) {

    this.ime = ime;

    }

    public String getPrezime() {

    return prezime;

    }

    public void setPrezime(String prezime) {

    this.prezime = prezime;

    }

    @Override

    public String toString() {

    return "Osoba [ime=" + ime + ", prezime=" + prezime + "]";

    }

    }

    ............................................................................................................................

    package lekcija4;

    import java.util.Scanner;

    /**

    * Testira metode klase String

    */

    public class TestString {

    public static void main(String[] args) {

    //inicijalizacija stringa

    String name = "Scala"; //prvi String objekat

    String name_1 = "Scala"; //isti objekat kao prvi, dodeljena mu

    samo referenca na postojeci

    String name_2 = new String("Scala"); //novi String objekat

    char[] nameArray = { 'S', 'c', 'a', 'l', 'a'};

    String name_3 = new String(nameArray);

    System.out.println(name_3);

    //vratice true

    if(name==name_1){ //poredi adrese

    System.out.println("both name and name_1 is

    pointing to same string object");

    }

    //vratice false

    if(name==name_2){ //poredi adrese

    System.out.println("both name and name_2 is

    pointing to same string object");

    }

    //vratice true

    if(name.equals(name_1)){ //poredi sadrzaj stringova

    System.out.println("name and name_1 are equal

    String by equals method");

    }

    //vratice true

    if(name.equals(name_2)){ //poredi sadrzaj stringova

    System.out.println("name and name_2 are equal

    String by equals method");

  • }System.out.println("-------------------------------------");

    //Odredjivanje duzine stringa

    String palindrome = "Dot saw I was Tod";

    int len = palindrome.length();

    System.out.println("String Length is : " + len);

    System.out.println("-------------------------------------");

    //Koriscenje Skenera za unos sa tastature, citanje karaktera sa

    odredjene pozicije u stringu

    String original, reverse = "";

    Scanner in = new Scanner(System.in);

    System.out.println("Enter a string to reverse");

    original = in.nextLine();

    in.close();

    int length = original.length();

    for ( int i = length - 1 ; i >= 0 ; i-- )

    reverse = reverse + original.charAt(i);

    System.out.println("Reverse of entered string is: " + reverse);

    System.out.println("-------------------------------------");

    //konkatenacija sa metodom concat

    String s2 = name.concat(name_2);

    System.out.println(s2);

    //konkatenacija sa operatorom +

    String s3 = name + " " + name_2;

    System.out.println(s3);

    System.out.println("-------------------------------------");

    //testiranje metoda indexOf, lastIndexOf i matches

    String str = "Java is best programming language";

    if(str.indexOf("Java") != -1){

    System.out.println("String contains Java at index :" +

    str.indexOf("Java"));

    }

    if(str.matches("J.*")){

    System.out.println("String Starts with J");

    }

    str ="Do you like Java ME or Java EE";

    if(str.lastIndexOf("Java") != -1){

    System.out.println("String contains Java lastly at: " +

    str.lastIndexOf("Java"));

    }

    System.out.println("-------------------------------------");

    //testiranje substring metode

    //vratice deo stringa str od indeksa 0 do 12

    String subString = str.substring(0,12);

    System.out.println("Substring: " + subString);

    System.out.println("-------------------------------------");

    String str2 = " String Trim Example ";

    System.out.println("Original String :" + str2);

    System.out.println("After trim :" + str2.trim());

    //zamena karaktera karakterom

    String str3 = new String("Welcome to Tutorialspoint.com");

    System.out.println("Return Value :" + str3.replace('o', 'T'));

  • //zamena niza karaktera nizom karaktera

    String replaceSample = "String replace Example of replacing

    Character Sequence";

    System.out.println("Return Value :" +

    replaceSample.replace("re", "RE"));

    //replaceAll(String regex, String replacement)

    String replaceSample2 = "String replace Example with

    regular expreSsion";

    System.out.println("Return Value :" +

    replaceSample2.replaceAll("^S","R"));

    //replaceFirst(String regex, String replacement)

    String replaceSample3 = "String replace Example with

    replaceFirst";

    System.out.println("Return Value :" +

    replaceSample3.replaceFirst("re","RE"));

    System.out.println("-------------------------------------");

    //testiranje split metode

    String assetClasses = "Gold:Stocks:Fixed

    Income:Commodity:Interest Rates";

    String[] splits = assetClasses.split(":");

    System.out.println("splits.size: " + splits.length);

    for(String asset: splits){

    System.out.println(asset);

    }

    System.out.println("- - - - - - - - - - - - - - - - - - -");

    //testiranje split metode sa specijalnim karakterom |

    String assetTrading = "Gold Trading|Stocks Trading|Fixed

    Income Trading|Commodity Trading|FX trading";

    String[] splits2 = assetTrading.split("\\|"); // two \\ is required

    because "\" itself require escaping

    for(String trading: splits2){

    System.out.println(trading);

    }

    System.out.println("- - - - - - - - - - - - - - - - - - -");

    //testiranje split metode sa specijalnim karakterom .

    String smartPhones = "Apple IPhone.HTC Evo3D.Nokia

    N9.LG Optimus.Sony Xperia.Samsung Charge";

    String[] smartPhonesSplits = smartPhones.split("\\.");

    for(String smartPhone: smartPhonesSplits){

    System.out.println(smartPhone);

    }

    System.out.println("-------------------------------------");

    //testiranje split metode sa ogranicenjem

    String places = "London.Switzerland.Europe.Australia";

    String[] placeSplits = places.split("\\.",2);

    System.out.println("placeSplits.size: " + placeSplits.length );

    for(String contents: placeSplits){

    System.out.println(contents);

    }

    System.out.println("-------------------------------------");

    //testitanje formatiranja stringa

    float floatVar = 3.6f;

    int intVar = 6;

    String stringVar = "Sest";

    System.out.printf("The value of the float variable is " +

  • "%f, while the value of the integer " +

    "variable is %d, and the string " +

    "is %s" + "\n", floatVar, intVar, stringVar);

    String fs;

    fs = String.format("The value of the float variable is " +

    "%f, while the value of the integer " +

    "variable is %d, and the string " +

    "is %s", floatVar, intVar, stringVar);

    System.out.println(fs);

    }

    }

    package lekcija5;

    public class CDDisk {

    private String naziv;

    private String izvodjac;

    private int id;

    public CDDisk() {

    naziv = "nepoznat";

    izvodjac = new String("nepoznat");

    id = -1;

    }

    public CDDisk(String naziv, String izvodjac, int id) {

    this.naziv = naziv;

    this.izvodjac = izvodjac;

    this.id = id;

    }

    public CDDisk(CDDisk cd) {

    this.naziv = cd.naziv;

    this.izvodjac = cd.izvodjac;

    this.id = cd.id;

    }

    public String getNaziv() {

    return naziv;

    }

    public void setNaziv(String naziv) {

    this.naziv = naziv;

    }

    public String getIzvodjac() {

    return izvodjac;

    }

    public void setIzvodjac(String izvodjac) {

    this.izvodjac = izvodjac;

    }

    public int getId() {

  • return id;

    }

    public void setId(int id) {

    this.id = id;

    }

    public boolean equals(Object obj) {

    if (obj == null)

    return false;

    if (this == obj)

    return true;

    CDDisk d = (CDDisk) obj;

    return (naziv.equals(d.naziv) && izvodjac.equals(d.izvodjac)

    && id == d.id);

    }

    public String toString() {

    return "CD[ " + naziv + ", " + izvodjac + ", " + id + " ]";

    }

    public static void main(String[] args) {

    CDDisk d1 = new CDDisk("Novi disk", "Pevac hitova", 3);

    CDDisk d2 = new CDDisk("Hitovi", "Pevac", 1);

    CDDisk d3 = new CDDisk(d1);

    System.out.println(d1);

    System.out.println(d2);

    System.out.println(d3);

    if(d1.equals(d2))

    System.out.println("Diskovi su jednaki.");

    else

    System.out.println("Diskovi su razliciti.");

    if(d1.equals(d3))

    System.out.println("Diskovi su jednaki.");

    else

    System.out.println("Diskovi su razliciti.");

    }

    }

    ............................................................................................................................

    package lekcija5;

    import java.util.ArrayList; // probati sa LinkedList i Vector

    public class XCDStorage {

    private ArrayList arhiva;

    public XCDStorage() {

    arhiva = new ArrayList();

    }

    public boolean addCD(CDDisk d) {

    for(int i = 0; i < arhiva.size(); i++)

    if((arhiva.get(i)).getId() == d.getId())

    return false;

    return arhiva.add(new CDDisk(d.getNaziv(), d.getIzvodjac(),

    d.getId()));

    }

    public CDDisk removeCD(int id) {

    for(int i = 0; i < arhiva.size(); i++)

    if((arhiva.get(i)).getId() == id)

    return arhiva.remove(i);

    return null;

    }

    public CDDisk searchCD(int id) {

    for(int i = 0; i < arhiva.size(); i++)

    if((arhiva.get(i)).getId() == id)

    return arhiva.get(i);

    return null;

    }

    public String toString() {

    if(arhiva.isEmpty()) return "U arhivi nema diskova!";

    String retVal = "Sadrzaj CD arhive je:\n";

    for(int i = 0; i < arhiva.size(); i++)

    retVal += arhiva.get(i) + "\n";

    //alternativni oblik prethodne for petlje

    // for(CDDisk d: arhiva)

    // retVal += d + "\n";

  • return retVal;

    }

    public void clear(){

    arhiva.clear();

    }

    public static void main(String[] args) {

    XCDStorage cds = new XCDStorage();

    CDDisk d1 = new CDDisk("Stari disk", "Orkestar", 1);

    CDDisk d2 = new CDDisk("Novi disk", "Orkestar", 2);

    System.out.println(cds);

    cds.addCD(d1);

    cds.addCD(d2);

    System.out.println(cds);

    CDDisk removed = cds.removeCD(2);

    if(removed != null)

    System.out.println("Uklonjen disk: " + removed);

    CDDisk nadjen = cds.searchCD(1);

    if(nadjen != null)

    System.out.println("Nadjen disk: " + nadjen);

    }

    }

    ............................................................................................................................

    package lekcija5;

    import java.util.HashMap; // probati sa LinkedHashMap

    public class XCDStorageMap {

    private HashMap arhiva;

    public XCDStorageMap() {

    arhiva = new HashMap();

    }

    public boolean addCD(CDDisk d) {

    if(arhiva.containsKey(d.getId()))

    return false;

    arhiva.put(d.getId(), new CDDisk(d.getNaziv(),

    d.getIzvodjac(), d.getId()));

    return true;

    }

    public CDDisk removeCD(int id) {

    return arhiva.remove(id);

    }

    public CDDisk searchCD(int id) {

    return arhiva.get(id);

    }

    public String toString() {

    if(arhiva.isEmpty()) return "U arhivi nema diskova!";

    String retVal = "Sadrzaj CD arhive je:\n";

    for(CDDisk d: arhiva.values())

    retVal += d + "\n";

    return retVal;

    }

    public void clear(){

    arhiva.clear();

    }

    public static void main(String[] args) {

    XCDStorageMap cds = new XCDStorageMap();

    CDDisk d1 = new CDDisk("Stari disk", "Orkestar", 1);

  • CDDisk d2 = new CDDisk("Novi disk", "Orkestar", 2);

    System.out.println(cds);

    cds.addCD(d1);

    cds.addCD(d2);

    System.out.println(cds);

    CDDisk removed = cds.removeCD(2);

    if(removed != null)

    System.out.println("Uklonjen disk: " + removed);

    CDDisk nadjen = cds.searchCD(1);

    if(nadjen != null)

    System.out.println("Nadjen disk: " + nadjen);

    }

    }

    package zadatak1;

    /**

    * Klasa JSTrougao. Polje a je duzina stranica trougla. Poseduje metode

    * za izracunavanje obima i povrsine.

    */

    public class JSTrougao {

    private double a;

    public JSTrougao(double a) {

    this.a = a;

    }

    public double getA() {

    return a;

    }

    public void setA(double a) {

    this.a = a;

    }

    public double getO() {

    return a*3;

    }

    public double getP() {

    double s = getO()/2;

    return Math.sqrt(s*Math.pow((s-a),3));

    }

    }

    ............................................................................................................................

  • package zadatak1;

    /**

    * Klasa Krug. Polje r je poluprecnik kruga. Poseduje metode

    * za izracunavanje obima i povrsine.

    */

    public class Krug {

    private double r;

    public Krug(double r) {

    this.r = r;

    }

    public double getR() {

    return r;

    }

    public void setR(double r) {

    this.r = r;

    }

    public double getO() {

    return 2 * Math.PI * r;

    }

    public double getP() {

    return Math.pow(r, 2) * Math.PI;

    }

    }

    ............................................................................................................................

    package zadatak1;

    /**

    * Klasa za testiranje Kruga i JSTrougla. Kreira nekoliko objekata i ispisuje

    njihovu

    * povrsinu i obim.

    */

    public class Test {

    public static void main(String[] args) {

    Krug k = new Krug(5);

    System.out.println("Obim kruga je: " + k.getO() +

    "\nPovrsina kruga je: " + k.getP());

    JSTrougao t = new JSTrougao(3);

    System.out.println("Obim trougla je: " + t.getO() +

    "\nPovrsina trougla je: " + t.getP());

    }

    }

  • package zadatak2;

    //moramo importovati klase koje nisu u istom paketu

    //navodi se puna putanja do tih klasa

    import lekcija1.Pravougaonik;

    /**

    * Testiramo niz pravougaonika. Trazimo pravougaonik sa najvecom

    povrsinom.

    */

    public class TestNiz {

    public static void main(String[] args) {

    Pravougaonik p[] = new Pravougaonik[5];

    p[0] = new Pravougaonik(10,2);

    p[1] = new Pravougaonik(5,8);

    p[2] = new Pravougaonik(3,9);

    p[3] = new Pravougaonik(7,1);

    p[4] = new Pravougaonik(6,11);

    double max = p[0].getP();

    int pos = 0;

    for (int i = 0; i < p.length; i++) {

    if (p[i].getP() > max) {

    max = p[i].getP();

    pos = i;

    }

    }

    System.out.println("Pravougaonik sa najveom povrinom je

    pravougaonik(" + p[pos].getA() +"," +

    p[pos].getB() + ")");

    }

    }

    package zadatak3;

    import lekcija1.Pravougaonik;

    import zadatak1.JSTrougao;

    /**

    * Klasa prizma. Omotac je pravougaonik, baza je jednakostranicni trougao.

    * Poseduje metode za izracunavanje povrsine i zapremine.

    */

    public class PP3Prizma {

    private JSTrougao b;

    private Pravougaonik m;

    public PP3Prizma(double a, double h) {

    this.b = new JSTrougao(a);

    this.m = new Pravougaonik(b.getO(), h);

    }

    public double getA() {

    return b.getA();

    }

    public double getH() {

    return m.getB();

    }

    public double getP() {

    return 2 * b.getP() + m.getP();

    }

    public double getV() {

    return b.getP() * getH();

    }

    public static void main(String[] args) {

    PP3Prizma p = new PP3Prizma(2,4);

    System.out.println("Povrsina prizme je: " + p.getP());

    System.out.println("Zapremina prizme je: " + p.getV());

    }

    }

  • package zadatak4;

    /**

    * Definicija apstraktne klase GeometrijskoTelo. Sadrzi dve apstraktne metode

    * za izracunavanje zapremine i izracunavanje povrsine tela

    */

    public abstract class GeometrijskoTelo {

    public abstract double getZapremina();

    public abstract double getPovrsina();

    }

    ............................................................................................................................

    package zadatak4;

    import lekcija2.nasledjivanje.Pravougaonik;

    /**

    * Klasa Kvadar. Polja a, b i h su stranice kvadra. Poseduje metode

    * za izracunavanje zapremine i povrsine. Nasledjuje GeometrijskoTelo

    */

    public class Kvadar extends GeometrijskoTelo {

    protected Pravougaonik b;

    protected Pravougaonik m;

    public Kvadar(double a, double b, double h) {

    this.b = new Pravougaonik(a, b);

    this.m = new Pravougaonik(this.b.getObim(), h);

    }

    public double getA() {

    return b.getA();

    }

    public double getB() {

    return b.getB();

    }

    public double getH() {

    return m.getB();

    }

    @Override

    public double getPovrsina() {

    return 2*b.getPovrsina() + m.getPovrsina();

    }

    @Override

    public double getZapremina() {

    return b.getPovrsina() * getH();

    }

    @Override

    public String toString() {

    return "Kvadar(a=" + b.getA() + ", b=" + b.getB() + ", h=" +

    m.getB() + ")";

    }

    }

    ............................................................................................................................

  • package zadatak4;

    /**

    * Klasa Kocka. Nasledjuje klasu Kvadar. Sve stranice su iste.

    */

    public class Kocka extends Kvadar{

    public Kocka(double a) {

    super(a, a, a);

    }

    @Override

    public String toString() {

    return "Kocka(a=" + getA() + ")";

    }

    }

    .....................................................................................................................

    package zadatak4;

    public class Test {

    /**

    * @param args

    */

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    Kvadar kv = new Kvadar(3, 4, 5);

    Kocka k = new Kocka(6);

    System.out.println(kv);

    System.out.println("P = " + kv.getPovrsina());

    System.out.println();

    System.out.println(k);

    System.out.println("P = " + k.getPovrsina());

    }

    }

    package zadatak5;

    /**

    * Definicija interfejsa GeometrijskoTelo. Sadrzi dve apstraktne metode

    * za izracunavanje zapremine i izracunavanje povrsine tela

    */

    public interface GeometrijskoTelo {

    public double getZapremina();

    public double getPovrsina();

    }

    ......................................................................................................................

    package zadatak5;

    import lekcija2.nasledjivanje.Pravougaonik;

    /**

    * Klasa Kvadar. Polja a, b i h su stranice kvadra. Poseduje metode

    * za izracunavanje zapremine i povrsine. Implementira GeometrijskoTelo

    */

    public class Kvadar implements GeometrijskoTelo {

    protected Pravougaonik b;

    protected Pravougaonik m;

    public Kvadar(double a, double b, double h) {

    super();

    this.b = new Pravougaonik(a, b);

    this.m = new Pravougaonik(2*a+2*b, h);

    }

    public double getA() {

    return b.getA();

    }

    public double getB() {

    return b.getB();

    }

    public double getH() {

    return m.getB();

    }

  • @Override

    public double getPovrsina() {

    return 2*b.getPovrsina() + m.getPovrsina();

    }

    @Override

    public double getZapremina() {

    return b.getPovrsina() * getH();

    }

    @Override

    public String toString() {

    return "Kvadar(a=" + b.getA() + ", b=" + b.getB() + ", h=" +

    m.getB() + ")";

    }

    }

    ............................................................................................................................

    package zadatak5;

    import lekcija2.interfejsi.GeometrijskaFigura;

    /**

    * Klasa Kocka. Nasledjuje klasu Kvadar. Sve stranice su iste.

    */

    public class Kocka extends Kvadar {

    public Kocka(double a) {

    super(a, a, a);

    }

    @Override

    public String toString() {

    return "Kocka(a=" + getA() + ")";

    }

    }

    ............................................................................................................................

    package zadatak5;

    public class Test {

    /**

    * @param args

    */

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    Kvadar kv = new Kvadar(3, 4, 5);

    Kocka k = new Kocka(6);

    System.out.println(kv);

    System.out.println("P = " + kv.getPovrsina());

    System.out.println();

    System.out.println(k);

    System.out.println("P = " + k.getPovrsina());

    }

    }