You are on page 1of 47

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И

КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Вовед во Java

Алгоритми и податочни структури


Аудиториска вежба 0
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Зошто Java?
• Развиена од Sun Microsystems, 1995 (James
Gosling)
• Објектно-ориентиран јазик за општа
намена
• Се базира на C/C++
• Дизајниран за лесни Web/Internet
апликации
• Широко распространет
• Нуди независност на платформа (ОС)
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Литература

• Thinking in Java, 4th edition


– by Bruce Eckel
– http://mindview.net/Books/TIJ4

Web resources…
• http://www.apl.jhu.edu/~hall/java/
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Особини на Java
• Едноставен
– Решава дел од проблемите на C++
– Нема покажувачи
– Автоматски garbage collection
– Богати предефинирани класни библиотеки
http://java.sun.com/j2se/1.4.2/docs/api/

• Објектно ориентиран
– Се фокусира на податоците (објектите) и методите (функциите) кои
манипулираат со податоците
– Сите функции се поврзани со објекти
– Скоро сите податочни типови се објекти (датотеки, стрингови, итн.)
– Потенцијално подобра организација на код и реискористливост

4
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Недостатоци на Java

• Поспор е од компајлираните јазици како C


– Експерименти покажуваат дека Java е 3 или 4 пати
поспор од C или C++
читајте: “Comparing Java vs. C/C++ Efficiency Issues to
Interpersonal Issues” (Lutz Prechelt)
– Погоден е за повеќето апликации, освен за оние кои се
временски критични

5
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Развојни околини
• За да вршите развој на софтвер во Java потребно е да
имате инсталирано Sun Java Development Kit (JDK)
• Постојат многу околини кои даваат поддршка за развој
на софтвер во Јава, вклучувајќи ги:
– Sun NetBeans
}Инсталирани се во лабораториите на ФИНКИ
– IBM Eclipse, GNU Eclipse
– Borland JBuilder
– MetroWerks CodeWarrior
– BlueJ
– jGRASP
• Иако овие околини се разликуваат во деталите,
основниот процес на компајлирање и извршување во
суштина е идентичен

6
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Eclipse

• Eclipse е графичко IDE развиено од страна


на Eclipse Foundation
• Цел код за Eclipse е напишан во Java
• Eclipse е развиен како платформа не само
за Java програмскиот јазик, туку за т.н plug-
ins (приклучоци) (еден од нив е самата Java)

7
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Лесна инсталација
• Може да го спуштите од www.eclipse.org
• Препорачливо е да се спушти Eclipse IDE for
Java ЕЕ Developers
• Најновата верзија е Eclipse 4.5.0 (Mars)
• Внимание!
• Пред да се инсталира Eclipse потребно е да
имате инсталирано JDK (Java Development
Kit)

8
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Лесна инсталација
• Нема потреба од инсталација
• Само unzip и го стартувате
• На првиот почеток Eclipse ќе ви побара да ја
наведете локацијата за вашиот работен
директориум (workspace directory) каде што
ќе се чуваат сите ваши проекти и датотеки

9
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Работа со Eclipse
• Како да напишете и извршите Java код во
Eclipse во 5 чекори:
– Направете нов проект (Java Project)
– Додадете нова класа на проектот (File->New->Class)
– Напишете го кодот
– Комајлирањето е автоматски, нема потреба вие
тоа да го правите
– Стартувајте го проектот (Run->Run…)
– Најдете ги грешките (Run->Debug…)

10
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Прва програма во Java


public class Zdravo
{
public static void main(String[] args)
{
System.out.println(“Zdravo studenti!\n");
} // kraj na metodot main
} // kraj na klasata Zdravo

- public static void main(String[] args) е дел од секоја Јава


програма
• Програмата започнува со извршување во main
• Малите загради укажуваат дека main е метод
• Јава апликациите содржат еден или повеќе методи
• Само еден метод може да се вика main
ВНИMАВАЈТЕ:
JAVA e чувствителна на големи и мали букви т.е.
System != system != SyStEM
11
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Важно за еден Java код


• Во една Јaвa програма МОРА да има ЕДНА јавна
класа (public class)

• public static void main (String [ ] a) e


задолжителен метод во јавната класа , во кој се
пишува кодот
Пр. public class test {
public static void main (String [] a)
{ test.java
овде се пишува кодот
} //крај на методот
} //крај на класата

12
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Се е објект
• Во Java, се е објект, па дури и програмите
• C++ е хибриден јазик
– Компатибилен со C
• Во Java, единствен начин на програмирање
е објектно – ориентираното програмирање
• Објект се креира со помош на клучниот
збор “new”
String s = new String(“Hello!”);

13
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Податочни типови
• Основни (примитивни) vs. Референцирачки
податочни типови
• Основни, примитивни типови
– boolean, byte, char, short, int, long, float, double
– сите тие имаат подразбирливи вредности
• Непримитивните податочни типови во Јава се
објектите и низите (array).
– Тие често се нарекуваат “референцни типови”
бидејќи до нив се достапува преку референца (by
reference)
– Подразбирлива вредност на секоја референцна
променлива е null
14
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Уништување на објекти
• Нема потреба од уништување на објектите !!!!
• Garbage Collection се грижи за тоа
– ЈВМ означува даден објект како „ѓубре кое треба да се
собере“ во моментот кога кон тој објект нема повеќе
референци
• Jaва програмерот е ослободен од должноста да ја
управува меморијата

15
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Правила
• Сите правила што важат за објектно-
ориентираната парадигма, важат и во Java
• Потсетете се што сте учеле во курсот ООП!!!
• Правилата се исти, само синтаксата на
јазикот е различна.

16
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

If-else структура
Пример 1: Програма која ги пресметува плоштината и периметарот
на круг или квадрат (во зависност од изборот). Страната на квадратот и
радиусот на кругот се читаат од тастатура.
import java.util.Scanner;
public class Zadaca {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Izbor: 1-Krug 2-Kvadrat \n");
short choice = input.nextShort();
if(choice == 1)
{
System.out.print("Vnesete radius na krug: \nR = ");
double r = input.nextDouble();
double plostinaKrug = r*r*Math.PI;
double perimetarKrug = 2*r*Math.PI;
System.out.println("Perimetarot na krug so radius" + r +
" e: " + perimetarKrug);
System.out.println("Plostinata na krug so radius " + r +
" e: " + plostinaKrug);
}
17
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

If-else структура
Пример 1: Продолжение ...
else if(choice == 2)
{
System.out.prinln("Vnesete strana na kvadrat: a = ");
int a = input.nextInt();
int plostinaKvadrat = a*a;
int perimetarKvadrat = 4*a;
System.out.println("Perimetarot na kvadrat so " + a +
" e: " + perimetarKvadrat);
System.out.println("Plostinata na kvadrat so " + a +
" e: " + plostinaKvadrat);
}
else
{
System.out.println("Nevaliden izbor !");
}
}
}

18
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Структури за повторување
Структура на for циклус:

for( <initialization> ; <condition> ; <statement> ){

<Block of statements>;

Структура на while циклус: Структура на do-while циклус:

while(<boolean condition>){ do{

<Block of statements>; <Block of statements>;

} }while(<boolean condition>);
19
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Структури за повторување
Пример 2: Програма која ги печати сите парни и непарни броеви во
даден опсег од броеви
import java.util.Scanner;
public class Zadaca {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Vnesi opseg na broevi: \n");
System.out.print("Start = ");
int start = input.nextInt();
System.out.println("End = ");
int end = input.nextInt();
System.out.print("Izbor: 1-Parni 2-Neparni \n");
short choice = input.nextShort();
if(choice == 1)
{
for(int i=start; i <= end; i++)
{
if( i % 2 == 0)
{
System.out.print(i + " ");
} 20
}}
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Структури за повторување
Пример 2: Продолжение ...

else if(choice == 2)
{
for(int i=start; i <= end; i++)
{
if( i % 2 != 0)
{
System.out.print(i + " ");
}
}
}
else
{
System.out.println("Nevaliden izbor !");
}
}
}

21
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Структури за повторување
Пример 2: Решена со while …
import java.util.Scanner;
public class Zadaca {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Vnesi opseg na broevi: \n");
System.out.print("Start = ");
int start = input.nextInt();
System.out.println("End = ");
int end = input.nextInt();
System.out.print("Izbor: 1-Parni 2-Neparni \n");
short choice = input.nextShort();
if(choice == 1){
int i = start;
while(i <= end)
{
if( i % 2 == 0)
{
System.out.print(i + " ");
}
i++; 22
}}
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Структури за повторување
Пример 2: Продолжение со while ...

else if(choice == 2)
{
int i = start;
while(i <= end)
{
if( i % 2 != 0)
{
System.out.print(i + " ");
}
i++;
}
}
else
{
System.out.print("Nevaliden izbor !");
}
}
}
23
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Структури за повторување
Пример 2: Решена со do-while …
import java.util.Scanner;
public class Zadaca {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Vnesi opseg na broevi: \n");
System.out.print("Start = ");
int start = input.nextInt();
System.out.println("End = ");
int end = input.nextInt();
System.out.print("Izbor: 1-Parni 2-Neparni \n");
short choice = input.nextShort();
if(choice == 1){
int i = start;
do
{
if( i % 2 == 0)
{
System.out.print(i + " ");
}
i++; 24
} while(i <= end); }
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Структури за повторување
Пример 2: Продолжение со do-while ...

else if(choice == 2)
{
int i = start;
do
{
if( i % 2 != 0)
{
System.out.print(i + " ");
}
i++;
}while(i<=end);
}
else
{
System.out.print("Nevaliden izbor !");
}
}
}
25
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Задача 1
Да се напише програма која ќе го испечати збирот на првите
100 прости броеви.
public class Zadaca {
public static void main(String[] args) {
int limit = 100;
int sum = 0;
for(int i=1; i < 100; i++){
boolean isPrime = true;
for(int j=2; j < i ; j++){
if(i % j == 0){
isPrime = false;
break;
}
}
if(isPrime)
sum += i;
}
System.out.println("Zbirot na prvite 100 broja e " + sum);
}
}
26
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Пакети во Java
• Java Application Programming Interface (API)
– Исто така познато и како Јава Библиотека со Класи (анг.
Java Class Library)
– Содржи предефинирани методи и класи
• Сродните класи се организирани во пакети (анг. packages)
• Вклучува методи за математички пресметки, манипулација со
знаци/стрингови, влез/излез, бази на податоци, мрежно
работење, процесирање на датотеки, проверка за грешки, итн.
• Колекција од класи и методи кои што ви ги нуди
Јава API (http://docs.oracle.com/javase/7/docs/api/)

27
1 // MaximumFinder.java
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО
2 // Кориснички деклариран метод maximum. Користење на пакет java.util
3 import java.util.Scanner;
4
5 public class MaximumFinder
6 {
7 // внесување на три floating-point вредности и определување на максимумот
8 public void determineMaximum()
9 {
10 // креирај Scanner за внесување од команден прозорец
11 Scanner input = new Scanner( System.in );
12
13 // читање на корисничкиот внес
14 System.out.print(
15 "Vnesete tri realni broja razdeleni so po edno prazno mesto: " );
16 double number1 = input.nextDouble(); // прочитај го првиот double број
17 double number2 = input.nextDouble(); // прочитај го вториот double број
18 double number3 = input.nextDouble(); // прочитај го третиот double број
19
20 // определи ја максималната вредност
21 double result = maximum( number1, number2, number3 );
22
23 // прикажи ја максималната вредност
24 System.out.println( "Maksimumot e: " + result );
25 } // крај на методот determineMaximum
26
28
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

27 // го враќа максималниот од неговите три double параметри


28 public double maximum( double x, double y, double z )
29 {
30 double maximumValue = x; // на почеток, претпостави дека x е најголемиот
31
32 // определи дали y е поголем од maximumValue
33 if ( y > maximumValue )
34 maximumValue = y;
35
36 // определи дали z е поголем од maximumValue
37 if ( z > maximumValue )
38 maximumValue = z;
39
40 return maximumValue;
41 } // крај на методот maximum
42 } // крај на класата MaximumFinder

29
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Наследување - потсетување
• Класата Б ја наследува класата А ако
објектите на класата Б ги имаат сите
карактеритики на класата А, дополнети со
сопствени карактеристики
• Во Јава се вели дека поткласата ја
проширува суперкласата.
• Наследност: “e”-релација

30
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

“is-a” наспроти “has-a”


• Една лоша употреба на наследноста е
мешањето на релацијата has-a со
релацијата is-a
• has-a значи дека една класа вклучува
објекти од друга класа како атрибути

Наследност Композиција
31
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Разлики во Java
• Терминологија
– Суперкласа, - A (основна, родителска класа)
– Поткласа – Б (изведена класа)

• Во Јава
– Единечна наследност – дрво на хиерархија
– НЕМА повеќекратно наследување
• Кога класа наследува од повеќе различни класи
• Се решава со Interface

32
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Класна хиерархија
• Поткласата наследува од суперкласата, но
додава и свои особености
– Додава свои променливи
– Додава свои методи
• Директна суперкласа
– Поткласите се веднаш под суперкласата
• Индиректна суперкласа
– Е секоја суперкласа која не е директно
поврзана со поткласата во класна хиерархија
33
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Основна класа во Java


• Класната хиерархија ги задава релациите помеѓу
класите
• Класната хиерархија започнува со класата Object
(во пакетот java.lang)
– .. Од која СЕКОЈА класа во Јава е наследена (директно
или индиректно)
• За надкласа на дадена класа Јава компајлерот ја
поставува класата Object во случај кога
декларацијата на класата не наведува
(експлицитно) дека се наследува некоја друга
класа.

34
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Задача 2
Да се развие класа Zadaca за која се чуваат следниве информации:
- опис (string)
- број на часови (int)
- статус (boolean)
За оваа класа да се имплементираат сите конструктори, get и set методи и да
се преоптовари toString() методот.
Потоа да се развие класа Vraboten во која се чуваат следниве променливи:
- Име (string)
- Презиме (string)
- Вредноста на еден бод (static double)
- Плата (double)
- Стаж (int)
- Број на бодови (int)
- Листа на задачи за една недела (zadaci[10])
- Број на задачи (int)

35
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Задача 2
Да се имплементира default конструктор и конструктор кој на влез ги прима
името, презимето, стажот и бројот на бодови, get и set методи и да се
преоптовари toString() методот.
Да се напише метод кој ќе овозможи додавање на нова задачи.
Дополнително да се креира метод којго враќа вкупниот број на часови потребни
за да се извршат задачите и метод кој го враќа процентот на завршени задачи.
Да се развие класа Kompanija која ќе содржи листа од вработени. Да се
имплементираат следниве методи:
- najangaziran() – го враќа вработениот со најголем вкупен број на часови
- pecatiPoUspesnost() – ги сортира вработените според успешноста и го печати нивното име,
презиме и успешноста
- pecati() – метод кој ги печати информациите за вработените

36
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение (1)
class Zadaca {
private String opis;
private int casovi;
private boolean status;

public Zadaca(){
}

public Zadaca(String opis, int casovi) {


this.opis = opis;
this.casovi = casovi;
}

public String getOpis() {


return opis;
}

public void setOpis(String opis) {


this.opis = opis;
}

37
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение (2)
public int getCasovi() {
return casovi;
}
public void setCasovi(int casovi) {
this.casovi = casovi;
}
public boolean getStatus() {
return status;
}

public void setStatus(boolean status) {


this.status = status;
}

@Override
public String toString() {
return "Opis: " + opis + "\ncasovi: " + casovi + "\nstatus: " +
(status ? "aktivna" : "zavrsena");
}
}

38
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение (3)
class Vraboten {

private static double BOD = 50;


private String ime;
private String prezime;
private double plata;
private int staz;
private int brBod;
private Zadaca[] zadaci;
private int brZadaci;

public Vraboten(){
zadaci = new Zadaca[10];
brZadaci=0;
}

39
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение (4)
public Vraboten(String ime, String prezime, int staz, int brBod) {
this();
this.ime = ime;
this.prezime = prezime;
this.staz = staz;
this.brBod = brBod;
plata = brBod * BOD;
}

public String getIme() {


return ime;
}

public void setIme(String ime) {


this.ime = ime;
}

public String getPrezime() {


return prezime;
}

40
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение (5)
public void setPrezime(String prezime) {
this.prezime = prezime;
}

public double getPlata() {


return plata;
}

public void setPlata(double plata) {


this.plata = plata;
}

public int getStaz() {


return staz;
}

public void setStaz(int staz) {


this.staz = staz;
}

41
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение (6)
public int getBrBod() {
return brBod;
}
public void setBrBod(int brBod) {
this.brBod = brBod;
}
public void dodadiZadaca(Zadaca z){
if(brZadaci == 10)
System.out.println("Ne moze da se dodade zadaca");
else{
zadaci[brZadaci++] = z;
}
}
public double procentZavrseni(){
int br = 0;
for(int i = 0;i<brZadaci;i++){
if(zadaci[i].getStatus())
br++;
}
return (float)br/brZadaci; }

42
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение (7)
public int vkupnoCasovi(){
int suma = 0;

for(int i = 0;i<brZadaci;i++)
suma += zadaci[i].getCasovi();

return suma;
}

@Override
public String toString() {
return ime + " " + prezime;
}

43
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение (8)
import java.util.Scanner;
public class Kompanija {

private Vraboten[] vraboteni;

public Kompanija(Vraboten[] vraboteni) {


this.vraboteni = vraboteni;
}

public Vraboten najangaziran(){


int max = 0,k = 0;
for(int i = 0;i<vraboteni.length;i++){
if(vraboteni[i].vkupnoCasovi() > max){
max = vraboteni[i].vkupnoCasovi();
k = i;
}
}
return vraboteni[k];
}

44
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение (9)
public void pecatiPoUspesnost(){

boolean flag = true;


while(flag){
flag = false;
for(int j = 0;j<vraboteni.length - 1;j++){
if(vraboteni[j].procentZavrseni() <
vraboteni[j+1].procentZavrseni()){
Vraboten pom = vraboteni[j];
vraboteni[j] = vraboteni[j+1];
vraboteni[j+1] = pom;
flag = true;
}
}
}
for(int i = 0;i<vraboteni.length;i++){
System.out.printf("Vraboten: " + vraboteni[i].getIme() + " " +
vraboteni[i].getPrezime() + " Uspesnost:
%.2f\n",(vraboteni[i].procentZavrseni() * 100));
}
}

45
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение (10)
public void pecati(){
for(Vraboten v : vraboteni){
v.toString();
}
}

public static void main(String[] args) {


Scanner input = new Scanner(System.in);
int n = input.nextInt();
Vraboten []pom = new Vraboten[n];
for(int i = 0;i<n;i++){
Vraboten v = new Vraboten();
v.setIme(input.next());
v.setPrezime(input.next());
v.setStaz(input.nextInt());
v.setBrBod(input.nextInt());
pom[i] = v;

46
ФАКУЛТЕТ ЗА ИНФОРМАТИЧКИ НАУКИ И
КОМПЈУТЕРСКО ИНЖЕНЕРСТВО

Решение (11)
int p = input.nextInt();
for(int j = 0;j<p;j++){
Zadaca z = new Zadaca();
z.setCasovi(input.nextInt());
z.setOpis(input.next());
z.setStatus(input.nextBoolean());
v.dodadiZadaca(z);
}
}
Kompanija k = new Kompanija(pom);
k.pecati();
k.pecatiPoUspesnost();
System.out.println("Najangaziran vraboten e: " +
k.najangaziran());
}
}

47

You might also like