You are on page 1of 11

OOP

GRUPA A

Prvi kolokvij, 10.12.2020.

1. Što je ispis iz programa?


public class A {
public A(){
System.out.println("A");
}
public static void main(String [] args){
new D(6);
}
}
class B extends A {
public B(){
System.out.println("B");
}
}
class C extends B {
public C(int a){
System.out.println("C "+a);
}
}
class D extends C {
public D(int m){
super(15);
System.out.println("D "+m);
}

2. Kreirajte klasu Macke koja ima tri (protected) člana: String ime, int starost i statički član int
broj. Osigurajte konstruktor koji dodjeljuje objektu ime, starost i evidenciju ukupnog broja
generiranih objekata (uvećavanje statičkog člana za 1). Neka imena mačaka budu unaprijed
određena iz skupa imena {“Micka“,“Kiki“,“Bucka“,“Lili“,“Fifi“}, koja se slijedno koriste za svaki
novi kreirani objekt klase. U main metodi kreirajte niz od 10 macaka. Neka starost bude
slučajan broj od 0-120 (starost u mjesecima), te neka se ispisuje ime i broj najstarije mačke
korištenjem metode toString() (metodu toString() implementirati u klasi na odgovarajući
način).

import java.util.Random;
public class Macke {
String imena[]={"Micka", "Lili","Fufi","Zuco","Cica"};
protected String ime;
protected int starost;
protected static int broj;

public Macke(int b){


broj++;
this.ime=imena[broj%5];
starost=b;
}
public String toString(){
return "Maca se zove "+ime+" a stara je "+starost;
}
public static void main(String[] args){
Random rnd = new Random();
Macke [] micke=new Macke[10];
Macke pom;
int i,j;
for(i=0;i<10;i++) {
int dob = rnd.nextInt(120);

micke[i] = new Macke(dob);


}

for(i=0;i<10;i++) {
System.out.println(micke[i].toString());
}
}
}

3. Kreirajte klasu Sijamska koja proširuje klasu Macke i ima dodatni clan int duljinaDlake. Klasa
Sijamska ima nadjačanu metodu toString() u kojoj se ispisuje i duljinaDlake. Osigurati
konstruktor koji inicijalizira vrijednost novog člana klase. Ponovno napisati metodu main u
kojoj se kreira niz od 10 mačaka koje nasumično pripadaju klasama Macke ili Sijamska i ispisati
karakteristike svakog kreiranog objekta.

class Sijamske extends Macke{


public int duljinaDlake;
public Sijamske(int a, int dob){
super(dob);
this.duljinaDlake=a;
}
public String toString(){
return super.toString()+" duljina dlake je:"+this.duljinaDlake;
}
}
public static void main(String[] args){
Random rnd = new Random();
Macke [] micke=new Macke[10];
Macke pom;
int i,j;
for(i=0;i<10;i++) {
int dob = rnd.nextInt(120);
int vrsta=rnd.nextInt(2);
if (vrsta==0)
micke[i] = new Macke(dob);
else
micke[i]=new Sijamske(rnd.nextInt(10),dob);
}
for(i=0;i<10;i++) {
for(j=0;j<10;j++) {
if (micke[i].starost>micke[j].starost){
pom=micke[i];
micke[i]=micke[j];
micke[j]=pom;
}
}
}
for(i=0;i<10;i++) {
System.out.println(micke[i].toString());
}
}
OOP

GRUPA B

Prvi kolokvij, 10.12.2020.

1. Što je ispis iz programa?

public class A {
public A(){
System.out.println("A");
}
public static void main(String [] args){
new D(6);
}
}
class B extends A {
public B(int k){
System.out.println("B "+k);
}
}
class C extends B {
public C(int a){
super(11);
System.out.println("C "+a);
}
}
class D extends C {
public D(int m){
super(5);
System.out.println("D "+m);
}
}

2. Kreirajte klasu Stozer koja ima tri člana: String ime, int broj_clanova i niz char[]
niz_za_ime={'A','B','C','D','E','F','G'}. Osigurajte konstruktor u kojem se objektu dodjeljuje ime
tako da se iz niza niz_za_ime, slučajnim odabirom zamijeni mjesto dva slova (primjerice slova
na mjestima s indeksom 3 i 5 – tako da niz glasi: {'A','B','C','F','E','D','G'}) i zatim se niz pretvori
u string (“ABCFEDG“). Član broj_članova neka se također generira kao slučajan broj od 1-20. U
main metodi kreirajte niz od 10 Stozera, te neka se ispisuje ime onog objekta koji ima najmanji
broj članova korištenjem metode toString() (metodu toString() implementirati u klasi na
odgovarajući način).

import java.util.Random;

public class Stozer {


private char []niz_za_ime={'A','B','C','D','E','F'};
protected String ime;
protected int brojClanova;

public Stozer(){
int b;
Random rnd=new Random();
int a=rnd.nextInt(6);
while((b=rnd.nextInt(6))==a);
char t;
t=niz_za_ime[a];
niz_za_ime[a]=niz_za_ime[b];
niz_za_ime[b]=t;
ime =new String (niz_za_ime);
this.brojClanova=rnd.nextInt(20)+1;
}
public String toString(){
return "Ime: "+ime+" brojClanova: "+brojClanova;
}
public static void main(String[] args){
Stozer []stozeri=new Stozer[10];
int i, index;
for(i=0;i<10;i++){
stozeri[i]=new Stozer();
}
int najmanji=stozeri[0].brojClanova;
index=0;
for(i=1;i<10;i++) {
if (stozeri[i].brojClanova < najmanji) {
najmanji = stozeri[i].brojClanova;
index = i;
}
}
for(i=1;i<10;i++) {
System.out.println(stozeri[i].toString());
}
System.out.println();
System.out.println(stozeri[index].toString());
}
}

3. Kreirajte klasu ZupanijskiStozer koja proširuje klasu Stozer i ima dodatni clan int populacija koja
predstavlja broj stanovnika za koje brigu vodi ZupanijskiStozer. Nadjačati metodu toString() u
kojoj se ispisuje i broj populacija. Osigurati konstruktor koji inicijalizira vrijednost novog člana
klase. Ponovno napisati metodu main u kojoj se kreira niz od 10 objekata koje nasumično
pripadaju klasama Stozer ili ZupanijskiStozer i ispisati karakteristike svakog kreiranog objekta.

class Zupanijski extends Stozer{


public int populacija;
public Zupanijski(){
super();
Random rnd=new Random();
this.populacija=rnd.nextInt(10000);

}
public String toString(){
return "Ime: "+ime+" brojClanova: "+brojClanova+" populacija:
"+this.populacija;
}
}

public static void main(String[] args){


Stozer []stozeri=new Stozer[10];
int i, index;
for(i=0;i<10;i++){
Random rnd=new Random();
NOVO!
int vrsta=rnd.nextInt(2);
if (vrsta==0)
stozeri[i]=new Stozer();
else
stozeri[i]=new Zupanijski();
}
int najmanji=stozeri[0].brojClanova;
index=0;
for(i=1;i<10;i++) {
if (stozeri[i].brojClanova < najmanji) {
najmanji = stozeri[i].brojClanova;
index = i;
}
}
for(i=1;i<10;i++) {
System.out.println(stozeri[i].toString());
}
System.out.println();
System.out.println(stozeri[index].toString());
}
OOP

GRUPA C

Prvi kolokvij, 10.12.2020.

1. Što je ispis iz programa?


public class A {
public A(){
System.out.println("A");
}
public static void main(String [] args){
new D();
}
}
class B extends A {
public B(int k){
System.out.println("B "+k);
}
}
class C extends B {
public C(int a){
super(9);
System.out.println("C "+a);
}
}
class D extends C {
public D(){
super(5);
System.out.println("D ");
}
}

2. Kreirajte klasu Pas koja ima (protected) član: String vrsta. Osigurajte konstruktor koji dodjeljuje
objektu vrstu iz unaprijed definiranog skupa imena {“Retriver“, “JackRussel“, “Buldog“,
“Jazavcar“, “Spic“, “Ovcar“}. Način odabira imena definirati proizvoljno (slijedno ili nasumičan
odabir). U main metodi kreirajte niz od 10 objekata klase Pas, te neka se ispisuje vrsta
korištenjem metode toString() (metodu toString() implementirati u klasi na odgovarajući
način).
3.
import java.util.Random;
import java.util.Scanner;
public class Pas {

private String[] vrste = {"Retriver", "JackRusser", "Buldog", "Jazavcar", "Spic", "Ovcar"};


protected String vrsta;
Random rnd = new Random();

public Pas() {
int indeks = rnd.nextInt(6);
this.vrsta = vrste[indeks];
}

public String toString() {


return "Vrsta: " + this.vrsta;
}
public static void main(String[] args) {
Pas[] psi = new Pas[10];
int i, j;
for (i = 0; i < 10; i++) {
psi[i] = new Pas();
System.out.println(psi[i].toString());
}
}
}

4. Kreirajte klasu Retriver koja proširuje klasu Pas i ima dodatne članove int starost i String ime.
Klasa Retriver ima nadjačanu metodu toString() u kojoj se ispisuje ime i starost psa. Osigurati
konstruktor koji inicijalizira vrijednost novih članova klase. Ponovno napisati metodu main u
kojoj se inicijalizira 10 objekata klase Retriver tako da korisnik unosi podatke za starost i ime
objekata koji pripadaju klasi Retriver, te ispisati karakteristike svih kreiranih objekata, ali
redom, od najstarijeg do najmlađeg.

import java.util.Random;
import java.util.Scanner;
public class Pas {
private String[] vrste = {"Retriver", "JackRusser", "Buldog",
"Jazavcar", "Spic", "Ovcar"};
protected String vrsta;
Random rnd = new Random();

public Pas() {
int indeks = rnd.nextInt(6);
this.vrsta = vrste[indeks];
}

public String toString() {


return "Vrsta: " + this.vrsta;
}

public static void main(String[] args) {

Retriver[] psi = new Retriver[10];


int i, j;
Retriver pom;
for (i = 0; i < 10; i++) {
psi[i] = new Retriver();
}
for (i=0;i<9;i++){
for (j=i+1;j<10;j++) {
if (psi[i].starost>psi[j].starost){
pom=psi[i];
psi[i]=psi[j];
psi[j]=pom;
}
}
}
for(i=0;i<10;i++){
System.out.println(psi[i].toString());
}

}
}
class Retriver extends Pas{
public String ime;
public int starost;
Scanner sc=new Scanner(System.in);
public Retriver(){
this.vrsta="Retriver";
System.out.println("Upisite ime retrivera");
this.ime=sc.nextLine();
System.out.println("Upisite starost retrivera");
this.starost=sc.nextInt();

}
public String toString(){
return "Retriver imena "+this.ime+" starost "+this.starost;
}
}
OOP

GRUPA D

Prvi kolokvij, 10.12.2020.

1. Što je ispis iz programa?


public class A {
public A(){
System.out.println("def A " );
}
public A(int a){
System.out.println("A "+a );
}
public static void main(String [] args){
new D();
}
}
class B extends A {
public B(int k){
System.out.println("B "+k);
}
}
class C extends B {
public C(int a){
super(22);
System.out.println("C "+a);
}
}
class D extends C {
public D(){
super(5);
System.out.println("D ");
}
}

2. Kreirajte klasu Voce koja ima dva člana: String ime, niz char[] vitamini. Osigurajte konstruktor
u kojem se objektu dodjeljuje ime preko parametra, a članovi niza vitamini određuju se
nasumičnim odabirom tri člana (vitamini ne smiju biti isti) iz unaprijed definiranog skupa
vitamina {'A','B','C','F','E','D','G'}. U main metodi kreirajte niz od 10 Voca, te neka se ispisuju
imena onih objekata koji imaju vitamine A i E korištenjem metode toString() (metodu
toString() implementirati u klasi na odgovarajući način).

import java.util.Random;
public class Voce {
private char[] vit = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
protected String ime;
protected char[] vitamini=new char[3];
Random rnd = new Random();

public Voce(String ime) {


this.ime = ime;
int p1, p2, p3;
p1 = rnd.nextInt(7); // prvi vitamin izabere se nasumično
vitamini[0] = vit[p1];
// drugi vitamin ne smije biti isti kao i prvi
while ((p2 = rnd.nextInt(7)) == p1) ;
vitamini[1] = vit[p2];
// treci vitamin ne smije biti isti kao prva dva
while ((p3 = rnd.nextInt(7)) == p1 || (p3 == p2)) ;
vitamini[2] = vit[p3];

}
public String toString(){
return "Ime: "+this.ime+" ima
vitamine:"+this.vitamini[0]+this.vitamini[1]+this.vitamini[2];
}
public static void main(String[] args){
// imena[] uvedeno da se izbjegne upisivanje
String imena[]={"Jabuka","Kruska","Sljiva"};
Random rnd=new Random();
int i;
for(i=0;i<10;i++) {
int flag_a=0;
int flag_e=0;
Voce v = new Voce(imena[rnd.nextInt(3)]);
for(int k=0;k<3;k++) {
if (v.vitamini[k] == 'A') flag_a = 1;
if (v.vitamini[k] == 'E') flag_e = 1;
}
if (flag_a==1 && flag_e==1)
System.out.println(v.toString());
}
}
}

3. Kreirajte klasu Jabuka koja proširuje klasu Voce i ima svoje članove String ime i char niz[]
vitamini sastavljen od 6 nasumično odabranih vitamina iz niza. Osigurati odgovarajući
konstruktor za kreiranje Jabuka. Ponovno napisati metodu main u kojoj se kreira niz od 10
objekata koje nasumično pripadaju klasama Voce ili Jabuka, te ispisati karakteristike kreiranih
objekata.

import java.util.Random;
import java.lang.StringBuilder;
public class Voce {
protected char[] vit = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
protected String ime;
protected char[] vitamini=new char[6];
Random rnd = new Random();

public Voce(String ime) {


this.ime = ime;
int p1, p2, p3;
p1 = rnd.nextInt(7);
vitamini[0] = vit[p1];
while ((p2 = rnd.nextInt(7)) == p1) ;
vitamini[1] = vit[p2];
while ((p3 = rnd.nextInt(7)) == p1 || (p3 == p2)) ;
vitamini[2] = vit[p3];

}
public String toString(){
return "Ime: "+this.ime+" ima vitamine:
"+this.vitamini[0]+this.vitamini[1]+this.vitamini[2];
}
public static void main(String[] args){
String imena[]={"Jabuka","Kruska","Sljiva"};
Random rnd=new Random();
Voce [] v=new Voce[30];
int i;
for(i=0;i<30;i++) {
int flag_a=0;
int flag_e=0;
int broj_vitamina;
String str=imena[rnd.nextInt(3)];

if (str=="Jabuka"){
v[i] = new Jabuka();
broj_vitamina=6;
}
else {
v[i] = new Voce(str);
broj_vitamina=3;
}

for(int k=0;k<broj_vitamina;k++) {
if (v[i].vitamini[k] == 'A') flag_a = 1;
if (v[i].vitamini[k] == 'E') flag_e = 1;
}
if (flag_a==1 && flag_e==1)
System.out.println(v[i].toString());
}
}
}
class Jabuka extends Voce{

public Jabuka() {
super("Jabuka");
int i,j;
int kraj=7;
int []pocetni={0,1,2,3,4,5,6};
int []p=new int[7];
for(i=0;i<6;i++){
p[i]=rnd.nextInt(kraj);
vitamini[i] = vit[pocetni[p[i]]];
// redukcija niza pocetni kako se izabrani vitamini ne bi
ponovno birali
for(j=p[i];j<kraj-1;j++)
pocetni[j] = pocetni[j + 1];
kraj=kraj-1;

}
public String toString(){
StringBuilder sb=new StringBuilder("Ime:" + this.ime +" ima
vitamine: ");
int i;
for(i=0;i<6;i++)
sb.append(this.vitamini[i]);
return sb.toString();
}
}

You might also like