Cilj programa je da pokaze kako stvarno radi OOP, objasnili su sta su klase, objekti nesto malo o metodama i to je to. Napomenuli su da je ovo program koji ima u cilju da prikaze kako radi OOP i da nam mozda nece sve biti najjasnije i da ce se ostatak nejasnoca pokriti u daljim poglavljima.
Ja mislim da sam ja shvatio kako radi ceo program pa ako bih mogao da vam napisem kako to izgleda iz mog ugla da mi vi kazete da li sam u pravu ili ne.
Takodje ima jedna samo mala nejasnoca zbog koje ce mi trebati vasa pomoc.
Ovo su tri klase programa.
Svrha programa je to da imamo tri igraca kojima je cilj da pogode zadati broj.
Code:
public class GuessGame
{
// GuessGame has three instance variables for the three Player object
Player p1;
Player p2;
Player p3;
public void startGame()
{
// Create three player objects and assign them to the three Player instance variables
p1 = new Player();
p2 = new Player();
p3 = new Player();
// declare three variables to hold the three guesses the player make
int guessp1 = 0;
int guessp2 = 0;
int guessp3 = 0;
// declare three variables to hold a true or false based on player's answer
boolean p1isRight = false;
boolean p2isRight = false;
boolean p3isRight = false;
// Make a 'target' number that the player have to guess
int targetNumber = (int) (Math.random() * 10);
System.out.println("I'm thinking of a number between 0 and 9...");
while(true)
{
System.out.println("Number to guess is "+targetNumber);
// call each player's guess() method
p1.guess();
p2.guess();
p3.guess();
// get each player's guess ( the result of their guess() method running) by accessing the number variable of each player
guessp1 = p1.number;
System.out.println("Player one guessed "+guessp1);
guessp2 = p2.number;
System.out.println("Player two guessed "+guessp2);
guessp3 = p3.number;
System.out.println("Player three guessed "+guessp3);
// Check each player's guess to see if it matches the target number.If a player is right then set that players variable to be true (we set it false by default);
if(guessp1 == targetNumber)
{
p1isRight = true;
}
if(guessp2 == targetNumber)
{
p2isRight = true;
}
if(guessp3 == targetNumber)
{
p3isRight = true;
}
// if player one OR player two OR player three is right.. (the || operator means OR)
if(p1isRight || p2isRight || p3isRight)
{
System.out.println("We have a winner1");
System.out.println("Player one got it right ? "+p1isRight);
System.out.println("Player two got it right ? "+p2isRight);
System.out.println("Player three got it right ? "+p3isRight);
System.out.println("Game is over.");
break;
}
else
// otherwise stay in the loop and ask the players for another guess
{
System.out.println("Players will have to try again.");
}
}
}
}
public class GuessGame
{
// GuessGame has three instance variables for the three Player object
Player p1;
Player p2;
Player p3;
public void startGame()
{
// Create three player objects and assign them to the three Player instance variables
p1 = new Player();
p2 = new Player();
p3 = new Player();
// declare three variables to hold the three guesses the player make
int guessp1 = 0;
int guessp2 = 0;
int guessp3 = 0;
// declare three variables to hold a true or false based on player's answer
boolean p1isRight = false;
boolean p2isRight = false;
boolean p3isRight = false;
// Make a 'target' number that the player have to guess
int targetNumber = (int) (Math.random() * 10);
System.out.println("I'm thinking of a number between 0 and 9...");
while(true)
{
System.out.println("Number to guess is "+targetNumber);
// call each player's guess() method
p1.guess();
p2.guess();
p3.guess();
// get each player's guess ( the result of their guess() method running) by accessing the number variable of each player
guessp1 = p1.number;
System.out.println("Player one guessed "+guessp1);
guessp2 = p2.number;
System.out.println("Player two guessed "+guessp2);
guessp3 = p3.number;
System.out.println("Player three guessed "+guessp3);
// Check each player's guess to see if it matches the target number.If a player is right then set that players variable to be true (we set it false by default);
if(guessp1 == targetNumber)
{
p1isRight = true;
}
if(guessp2 == targetNumber)
{
p2isRight = true;
}
if(guessp3 == targetNumber)
{
p3isRight = true;
}
// if player one OR player two OR player three is right.. (the || operator means OR)
if(p1isRight || p2isRight || p3isRight)
{
System.out.println("We have a winner1");
System.out.println("Player one got it right ? "+p1isRight);
System.out.println("Player two got it right ? "+p2isRight);
System.out.println("Player three got it right ? "+p3isRight);
System.out.println("Game is over.");
break;
}
else
// otherwise stay in the loop and ask the players for another guess
{
System.out.println("Players will have to try again.");
}
}
}
}
Code:
public class Player
{
int number = 0; // where the guess goes
public void guess()
{
number = (int) (Math.random() * 10);
System.out.println("I'm guessing "+number);
}
}
public class Player
{
int number = 0; // where the guess goes
public void guess()
{
number = (int) (Math.random() * 10);
System.out.println("I'm guessing "+number);
}
}
Code:
public class GameLauncher
{
public static void main(String[] args)
{
GuessGame game = new GuessGame();
game.startGame();
}
}
public class GameLauncher
{
public static void main(String[] args)
{
GuessGame game = new GuessGame();
game.startGame();
}
}
Po koracima:
Deo koji stavim pod crtom mi je malo nejasan
Main klasa: GameLauncher
1 - Ovaj deo mi je jasan pravimo objekat tipa klase
2 - Ovaj deo mi je jasan objekat game poziva metodu startGame()
Prelazimo na klasu GuessGame
3 - Ovde deklarisemo tri promenljive p1, p2 i p3 klase Player. Tacnije samo im dajemo referencu da upucuju na klasu Player ?
Ovaj deo me malo zbunjuje ? Ovde klasa pravi novi objekat ili sta se vec ovde desava, moze li iko ovaj korak malo da mi pojasni ?
Code:
Player p1;
Player p2;
Player p3;
Player p1;
Player p2;
Player p3;
4 - Ovaj deo mi je jasan Ulazimo u metodu startGame()
5 - Sada promenljivama p1, p2 i p3 stvarno dodeljujemo objekte tipa Player ?
Code:
p1 = new Player();
p2 = new Player();
p3 = new Player();
p1 = new Player();
p2 = new Player();
p3 = new Player();
6 - Ovaj deo mi je jasan pravimo tri promenljive tipa boolean koje sadrze vrednost false.
7 - Ovaj deo mi je jasan promenljivoj targetNumber dajemo broj koji je tipa int i broj mora biti izmedju 0 - 9 dodeljuje se pomocu metode random
8 - Ulazimo u while petlju, koja ce non stop imati vrednost true sve dok se u kasnijem toku programa ne prekine naredbom break;
9 - preko objekta p1, p2 i p3 ulazimo u metodu guess u klasi Player
Code:
p1.guess();
p2.guess();
p3.guess();
p1.guess();
p2.guess();
p3.guess();
10 - Promenljiva number dobija vrednost izmedju 0 i 9 zatim se ispisuje koji broj pogadja.
Code:
public void guess()
{
number = (int) (Math.random() * 10);
System.out.println("I'm guessing "+number);
}
public void guess()
{
number = (int) (Math.random() * 10);
System.out.println("I'm guessing "+number);
}
11 - guessp1 dobija vrednost p1.number. Promenljiva number je dobila random vrednost kada smo bili usli u metodu guess() iz koraka 10, i sada je zadrzala tu vrednost ?
Code:
guessp1 = p1.number;
System.out.println("Player one guessed "+guessp1);
guessp2 = p2.number;
System.out.println("Player two guessed "+guessp2);
guessp3 = p3.number;
System.out.println("Player three guessed "+guessp3);
guessp1 = p1.number;
System.out.println("Player one guessed "+guessp1);
guessp2 = p2.number;
System.out.println("Player two guessed "+guessp2);
guessp3 = p3.number;
System.out.println("Player three guessed "+guessp3);
12 - Ovo mi je jasno.
Code:
if(guessp1 == targetNumber)
{
p1isRight = true;
}
if(guessp2 == targetNumber)
{
p2isRight = true;
}
if(guessp3 == targetNumber)
{
p3isRight = true;
}
if(guessp1 == targetNumber)
{
p1isRight = true;
}
if(guessp2 == targetNumber)
{
p2isRight = true;
}
if(guessp3 == targetNumber)
{
p3isRight = true;
}
13 - Ovo mi je jasno
Code:
if(p1isRight || p2isRight || p3isRight)
if(p1isRight || p2isRight || p3isRight)
Ovo je kraj programa, ja sam sada vama ispisao kako sam ja shvatio da program radi, nejasnoce sam stavio pod crtom koje me malo zbunjuju.
Takodje imam jos jedno pitanje u vezi ovog programa koje me zbunjuje.
Zasto umesto ovog dela koda
Code:
Player p1;
Player p2;
Player p3;
Player p1;
Player p2;
Player p3;
i ovog
Code:
p1 = new Player();
p2 = new Player();
p3 = new Player();
p1 = new Player();
p2 = new Player();
p3 = new Player();
Nismo mogli da spojimo u jedno i da napisemo jednostavno
Code:
Player p1 = new Player();
Player p2 = new Player();
Player p3 = new Player();
?Player p1 = new Player();
Player p2 = new Player();
Player p3 = new Player();
Na internetu sam procitao da kada bi smo to uradili da to onda ne bi bio pravi primer OOP programiranja ? Mozete li da mi objasnite zasto ?
Mozda sam postavio previse pitanja, ali samo sam pokusao da budem sto detaljniji. Hvala vam svima dobre volje ko izdvoji malo vremena da mi pomogne. :-) :-) :-)