Erinevus lehekülje "ITI0011:harjutus 08" redaktsioonide vahel

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti
33. rida: 33. rida:
 
<code>Mission</code>:  
 
<code>Mission</code>:  
 
* <code>public Mission()</code> // Konstruktor, soovi korral võib ise kirjutada konstruktori, mille sisendiks on String codeName
 
* <code>public Mission()</code> // Konstruktor, soovi korral võib ise kirjutada konstruktori, mille sisendiks on String codeName
* <code>String codeName</code> // Missiooni koodnimetus
+
* <code>void setCodeName(String)</code> // Missiooni koodnimetus
* <code>boolean completed</code> // Kas missioon on tehtud või mitte
+
* <code>boolean isCompleted()</code> // Kas missioon on tehtud või mitte
* <code>int requiredMissionsCompleted</code> // Missiooni õnnestumiseks vajalik nõue. Tiimiliikmete keskmine õnnestunud missioonide arv peab olema vähemalt nii palju.
+
* <code>void setRequiredMissionsCompleted(int)</code> // Missiooni õnnestumiseks vajalik nõue. Tiimiliikmete keskmine õnnestunud missioonide arv peab olema vähemalt nii palju.
 
* <code>public boolean receiveTeam(Team team)</code> // Tagastab, kas tiim täidab selle missiooni nõudeid. Kui tiimi ei eksisteeri või tiimi liikmeid ei ole, tagastada <code>false</code>.
 
* <code>public boolean receiveTeam(Team team)</code> // Tagastab, kas tiim täidab selle missiooni nõudeid. Kui tiimi ei eksisteeri või tiimi liikmeid ei ole, tagastada <code>false</code>.
 
* <code>public String toString()</code> // Tagastab missiooni nime kujul ‘Operation koodnimetus’
 
* <code>public String toString()</code> // Tagastab missiooni nime kujul ‘Operation koodnimetus’
  
<code>SoldierOfFortune</code> klassi lisa järgmine väli:  
+
<code>SoldierOfFortune</code> klassi lisa järgmised meetodid:  
* <code>int numberOfMissionsCompleted</code> //Mitu missiooni sõdur on edukalt läbinud
+
* <code>int getNumberOfMissionsCompleted()</code> //Mitu missiooni sõdur on edukalt läbinud
 +
* <code>void setNumberOfMissionsCompleted(int)</code>
  
 
<code>Team</code> klassi lisa järgnev:
 
<code>Team</code> klassi lisa järgnev:
 
* <code>public double averageMissionsCompleted()</code> // Tagastab tiimi liikmete õnnestunud missioonide arvude aritmeetilise keskmise. Kasutatakse missiooni nõuete täitmise kontrollimisel. Kui liikmeid ei eksisteeri, tagastada 0.0
 
* <code>public double averageMissionsCompleted()</code> // Tagastab tiimi liikmete õnnestunud missioonide arvude aritmeetilise keskmise. Kasutatakse missiooni nõuete täitmise kontrollimisel. Kui liikmeid ei eksisteeri, tagastada 0.0
 
* <code>public boolean sendToMission(Mission mission)</code> // Kutsub missioonil välja * <code>receiveTeam</code> meetodi. Kui missioon õnnestub, lisatakse missioon õnnestunud missioonide listi. Kui missiooni ei eksisteeri, tagastada <code>false</code>.
 
* <code>public boolean sendToMission(Mission mission)</code> // Kutsub missioonil välja * <code>receiveTeam</code> meetodi. Kui missioon õnnestub, lisatakse missioon õnnestunud missioonide listi. Kui missiooni ei eksisteeri, tagastada <code>false</code>.
* <code>List<Mission> completedMissions</code> // Sisaldab tiimi õnnestunud missioone (objekte)
+
* <code>List<Mission> getCompletedMissions()</code> // Tagastab tiimi õnnestunud missioonide järjendi
  
 +
== Mall ==
 +
EX08.java:
 
<source lang="java">
 
<source lang="java">
 
public class EX08 {
 
public class EX08 {
public static void main(String[] args) {
+
    public static void main(String[] args) {
    SoldierOfFortune soldier1 = new SoldierOfFortune();
+
        SoldierOfFortune soldier1 = new SoldierOfFortune();
 
// SoldierOfFortune soldier1 = new SoldierOfFortune("Gerald Albert", "G.A.", "Garacus"); // Ise kirjutatud konstruktoriga
 
// SoldierOfFortune soldier1 = new SoldierOfFortune("Gerald Albert", "G.A.", "Garacus"); // Ise kirjutatud konstruktoriga
    soldier1.setFirstName(“Gerald Albert”);
+
        soldier1.setFirstName("Gerald Albert");
    soldier1.setLastName(“Garacus”);
+
        soldier1.setLastName("Garacus");
    soldier1.setCodeName(“G.A.);
+
        soldier1.setCodeName("G.A.");
  
SoldierOfFortune soldier2 = new SoldierOfFortune();
+
        SoldierOfFortune soldier2 = new SoldierOfFortune();
soldier2.setFirstName(“Templeton”);
+
        soldier2.setFirstName("Templeton");
    soldier2.setLastName(“Peck”);
+
        soldier2.setLastName("Peck");
    soldier2.setCodeName(“Bottom”);
+
        soldier2.setCodeName("Bottom");
  
    SoldierOfFortune soldier3 = new SoldierOfFortune();
+
        SoldierOfFortune soldier3 = new SoldierOfFortune();
    soldier3.setFirstName(“John”);
+
        soldier3.setFirstName("John");
    soldier3.setLastName(“Bro Hard”);
+
        soldier3.setLastName("Bro Hard");
    soldier3.setCodeName(“McClean”);
+
        soldier3.setCodeName("McClean");
  
    SoldierOfFortune soldier4 = new SoldierOfFortune();
+
        SoldierOfFortune soldier4 = new SoldierOfFortune();
soldier4.setFirstName(“John”);
+
        soldier4.setFirstName("John");
    soldier4.setLastName(“Rambro”);
+
        soldier4.setLastName("Rambro");
    soldier4.setCodeName(“Your Worst Nightmare”);
+
        soldier4.setCodeName("Your Worst Nightmare");
    SoldierOfFortune soldier5 = new SoldierOfFortune();  
+
        SoldierOfFortune soldier5 = new SoldierOfFortune();
    soldier5.setFirstName(“Arnie”);
+
        soldier5.setFirstName("Arnie");
    soldier5.setLastName(“Blackman”);
+
        soldier5.setLastName("Blackman");
    soldier5.setCodeName(“The Initiator”);
+
        soldier5.setCodeName("The Initiator");
   
 
    Team bTeam = new Team();
 
    bTeam.setCodeName(“B-Team”);
 
    Team cTeam = new Team();
 
    cTeam.setCodeName(“C-Team”);
 
   
 
    bTeam.addSoldierToTeam(soldier1);
 
    bTeam.addSoldierToTeam(soldier2);
 
    bTeam.addSoldierToTeam(soldier3);
 
    cTeam.addSoldierToTeam(soldier3); // Soldier 3 on kahes tiimis
 
    cTeam.addSoldierToTeam(soldier4);
 
    cTeam.addSoldierToTeam(soldier5);
 
  
    System.out.println(soldier1); // -> Gerald Albert “G.A.Garacus
+
        Team bTeam = new Team();
    System.out.println(bTeam); // -> B-Team: G.A, Bottom, Bro Hard
+
        bTeam.setCodeName("B-Team");
    System.out.println(bTeam.getNumberOfSoldiers()); // -> 3
+
        Team cTeam = new Team();
    System.out.println(cTeam.getNumberOfSoldiers()); // -> 3
+
        cTeam.setCodeName("C-Team");
   
+
 
    //Lisaosa näide
+
        bTeam.addSoldierToTeam(soldier1);
    Mission mission1 = new Mission();
+
        bTeam.addSoldierToTeam(soldier2);
    mission1.setCodeName(“Delta”);
+
        bTeam.addSoldierToTeam(soldier3);
    mission1.setRequiredMissionsCompleted(0);
+
        cTeam.addSoldierToTeam(soldier3); // Soldier 3 on kahes tiimis
    bTeam.sendToMission(mission1);  
+
        cTeam.addSoldierToTeam(soldier4);
    System.out.println(bTeam.getCompletedMissions().size()); // -> 1
+
        cTeam.addSoldierToTeam(soldier5);
}
+
 
 +
        System.out.println(soldier1); // -> Gerald Albert "G.A." Garacus
 +
        System.out.println(bTeam); // -> B-Team: G.A, Bottom, Bro Hard
 +
        System.out.println(bTeam.getNumberOfSoldiers()); // -> 3
 +
        System.out.println(cTeam.getNumberOfSoldiers()); // -> 3
 +
 
 +
        //Lisaosa näide
 +
        Mission mission1 = new Mission();
 +
        mission1.setCodeName("Delta");
 +
        mission1.setRequiredMissionsCompleted(0);
 +
        bTeam.sendToMission(mission1);
 +
        System.out.println(bTeam.getCompletedMissions().size()); // -> 1
 +
    }
 
}
 
}
 
</source>
 
</source>

Redaktsioon: 5. märts 2016, kell 01:35

Üldine

Ülesande tähtaeg: 9. - 11. märts 2016
Kaust git'is: EX08

Ülesanne

Sind kutsuti tipptaseme programmeerijana osa võtma ülisalajasest sõjaväelisest operatsioonist. Sinu ülesandeks on komplekteerida operatsiooni missioonidel osalevaid tiime ja neid manageerida. Kahjuks on maailma parimad sõdurid juba grupeerunud A-Teamiks ning valitsuse palgale tulemiseks on järgi jäänud vaid teisejärgulised sõdurid. Nemad ei saa ise oma rühmade moodustamisega hakkama ning sinu ülesanne on neid sellega aidata. Otsustad kasutada teadmisi objektorienteeritud programmeerimise vallast luues kõigest vajalikust klassid ja nende järgi objektid.

Põhiosa implementeerimiseks on vaja luua SoldierOfFortune klass, mis tähistab sõdurit ja Team klass, mis tähistab tiimi.

SoldierOfFortune klassis implementeeri järgmised väljad ja meetodid:

  • public SoldierOfFortune() // Konstruktor, soovi korral võib ise kirjutada konstruktori, mille sisendiks on String firstName, String codeName, String lastName
  • String firstName
  • String lastName
  • String codeName // Sõduri koodnimetus
  • public String toString() // Tagastab sõduri täisnime kujul ‘eesnimi “koodnimi” perenimi’. Kui ühtegi nime ei ole, tagastada "".

Team klassis implementeeri järgmised väljad ja meetodid:

  • public Team(); // Konstruktor, soovi korral võib ise kirjutada konstruktori, mille sisendiks on
  • String codeName
  • List<SoldierOfFortune> members // List, mis sisaldab sõduri objekte
  • public void addSoldierToTeam(SoldierOfFortune soldier) // Lisab liikmete listi uue sõduri. Sama sõdurit mitu korda lisada ei saa.
  • public String toString() // Tagastab tiimi nime ja tema liikmete koodnimetused kujul ‘tiimi nimi: liige1, liige2, ...’. Kui tiimil puudub koodnimi, siis printida tiimiliikmete koodnimetused eraldatuna koma + tühikuga. (Nt. "G.A., Bottom"). Kui tiimil pole liikmeid, printida tiimi koodnimetus kujul "koodnimi: ".
  • public int getNumberOfSoldiers() // Tagastab tiimiliikmete arvu

Kõik klassi väljad peavad olema privaatsed ning neile on vaja gettereid ja settereid.

Boonus

Lisaosa jaoks implementeeri lisaks ka Mission klass ning täienda olemasolevaid klasse SoldierOfFortune ja Team.

Mission:

  • public Mission() // Konstruktor, soovi korral võib ise kirjutada konstruktori, mille sisendiks on String codeName
  • void setCodeName(String) // Missiooni koodnimetus
  • boolean isCompleted() // Kas missioon on tehtud või mitte
  • void setRequiredMissionsCompleted(int) // Missiooni õnnestumiseks vajalik nõue. Tiimiliikmete keskmine õnnestunud missioonide arv peab olema vähemalt nii palju.
  • public boolean receiveTeam(Team team) // Tagastab, kas tiim täidab selle missiooni nõudeid. Kui tiimi ei eksisteeri või tiimi liikmeid ei ole, tagastada false.
  • public String toString() // Tagastab missiooni nime kujul ‘Operation koodnimetus’

SoldierOfFortune klassi lisa järgmised meetodid:

  • int getNumberOfMissionsCompleted() //Mitu missiooni sõdur on edukalt läbinud
  • void setNumberOfMissionsCompleted(int)

Team klassi lisa järgnev:

  • public double averageMissionsCompleted() // Tagastab tiimi liikmete õnnestunud missioonide arvude aritmeetilise keskmise. Kasutatakse missiooni nõuete täitmise kontrollimisel. Kui liikmeid ei eksisteeri, tagastada 0.0
  • public boolean sendToMission(Mission mission) // Kutsub missioonil välja * receiveTeam meetodi. Kui missioon õnnestub, lisatakse missioon õnnestunud missioonide listi. Kui missiooni ei eksisteeri, tagastada false.
  • List<Mission> getCompletedMissions() // Tagastab tiimi õnnestunud missioonide järjendi

Mall

EX08.java: <source lang="java"> public class EX08 {

   public static void main(String[] args) {
       SoldierOfFortune soldier1 = new SoldierOfFortune();

// SoldierOfFortune soldier1 = new SoldierOfFortune("Gerald Albert", "G.A.", "Garacus"); // Ise kirjutatud konstruktoriga

       soldier1.setFirstName("Gerald Albert");
       soldier1.setLastName("Garacus");
       soldier1.setCodeName("G.A.");
       SoldierOfFortune soldier2 = new SoldierOfFortune();
       soldier2.setFirstName("Templeton");
       soldier2.setLastName("Peck");
       soldier2.setCodeName("Bottom");
       SoldierOfFortune soldier3 = new SoldierOfFortune();
       soldier3.setFirstName("John");
       soldier3.setLastName("Bro Hard");
       soldier3.setCodeName("McClean");
       SoldierOfFortune soldier4 = new SoldierOfFortune();
       soldier4.setFirstName("John");
       soldier4.setLastName("Rambro");
       soldier4.setCodeName("Your Worst Nightmare");
       SoldierOfFortune soldier5 = new SoldierOfFortune();
       soldier5.setFirstName("Arnie");
       soldier5.setLastName("Blackman");
       soldier5.setCodeName("The Initiator");
       Team bTeam = new Team();
       bTeam.setCodeName("B-Team");
       Team cTeam = new Team();
       cTeam.setCodeName("C-Team");
       bTeam.addSoldierToTeam(soldier1);
       bTeam.addSoldierToTeam(soldier2);
       bTeam.addSoldierToTeam(soldier3);
       cTeam.addSoldierToTeam(soldier3); // Soldier 3 on kahes tiimis
       cTeam.addSoldierToTeam(soldier4);
       cTeam.addSoldierToTeam(soldier5);
       System.out.println(soldier1); // -> Gerald Albert "G.A." Garacus
       System.out.println(bTeam); // -> B-Team: G.A, Bottom, Bro Hard
       System.out.println(bTeam.getNumberOfSoldiers()); // -> 3
       System.out.println(cTeam.getNumberOfSoldiers()); // -> 3
       //Lisaosa näide
       Mission mission1 = new Mission();
       mission1.setCodeName("Delta");
       mission1.setRequiredMissionsCompleted(0);
       bTeam.sendToMission(mission1);
       System.out.println(bTeam.getCompletedMissions().size()); // -> 1
   }

} </source>