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

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti
 
(ei näidata sama kasutaja 8 vahepealset redaktsiooni)
3. rida: 3. rida:
 
Ülesande tähtaeg: 7. - 8. märts<br />
 
Ülesande tähtaeg: 7. - 8. märts<br />
 
Kaust git'is: EX07
 
Kaust git'is: EX07
 +
 +
'''git'i lisage kaks faili: EX07.java ja Friend.java'''
  
 
== Lisalugemist ==
 
== Lisalugemist ==
15. rida: 17. rida:
 
Selleks, et kõikide nimed meelde jätta, on Madis need kenasti failidesse kirja pannud. Nüüd tahaks Madis leida oma sõpru üles perekonnanimede järgi. Kuna Madis on kuulnud, et olete kõva progeja, siis palkab ta teid (pai eest(noa ähvardusel)) tegema talle programmi, mis loeks sisse sõbrad ja võimaldaks otsida perekonnanimede järgi.
 
Selleks, et kõikide nimed meelde jätta, on Madis need kenasti failidesse kirja pannud. Nüüd tahaks Madis leida oma sõpru üles perekonnanimede järgi. Kuna Madis on kuulnud, et olete kõva progeja, siis palkab ta teid (pai eest(noa ähvardusel)) tegema talle programmi, mis loeks sisse sõbrad ja võimaldaks otsida perekonnanimede järgi.
  
Luua klass <code>Friend</code>. Kõik selle klassi väljad peavad olema teiste klasside eest peidetud. Väljadele ligipääsuks on vaja luua <code>get</code> ja <code>set</code> meetodid. Klassil <code>Friend</code> peab olema konstruktormeetod, mis ei võta vastu ühtegi argumenti.
+
Luua klass <code>Friend</code>. Kõik selle klassi väljad peavad olema teiste klasside eest peidetud. Väljadele ligipääsuks on vaja luua <code>get</code> ja <code>set</code> meetodid.
 +
 
 +
Klassil <code>Friend</code> peab olema vähemalt need meetodid:
 +
* <code>String getLastName()</code> tagastab perekonnanime,  
 +
* <code>String getFullName()</code> tagastab eesnimedest ja perekonnanimest moodustatud stringi (täisnime), eesnimed peavad olema samas järjekorras mis lähtefailis, neile järgneb perenimi (kõik tühikutega eraldatud).
 +
* <code>List<String> getNames()</code> tagastab List tüüpi järjendi eesnimedest.
 +
 
 +
Klassi <code>EX07</code> meetod <code>List<Friend> readFriendsFromFile(String fileName)</code> loeb sisse argumendiga ette antud nimega failist loendi Madise sõpradest. Failis on sõbrad esitatud ridadena, st igal real on üks sõber ning sõbra nimed on lahutatud üksteisest tühikutega, viimane nimi on perenimi. Meetod peaks muutma failis olevad sõbrad <code>Friend</code> klassi objektideks ning lisama nad klassimuutujasse <code>friends</code>. Fail sisaldab vaid tähti (kaasa arvatud õ, ä jms) ja tühikuid ja reavahetusi (muid sümboleid pole).
 +
 
 +
Klassi <code>EX07</code> staatiline meetod <code>Friend findFriendByLastName(String lastName)</code> tagastab viite sõbrale, kelle perenimi on <code>lastName</code>. Kui sõpra ei leidu, tagastada <code>null</code>. Sõprade nimekiri on klassimuutujas <code>friend</code> ja loetud sisse eelnevalt <code>readFriendsFromFile</code> meetodiga.<br />
 +
 
 +
 
 +
 
 +
Näidisfail example.txt:
 +
<pre>
 +
Ain Ain
 +
Baul Punn
 +
Deiv Phentagon
 +
Kaera Jaan Rukis
 +
Drop Table User Tamm
 +
</pre>
 +
 
 +
Mall:
 +
 
 +
<source lang="java">
 +
public class EX07 {
 +
    private static List<Friend> friends;
 +
   
 +
    public static void main(String[] args) {
 +
        friends = readFriendsFromFile("EX07/example.txt");
 +
        System.out.println(findFriendByLastName("Ain").getFullName()); // Ain Ain
 +
        System.out.println(findFriendByLastName("Punn").getFullName()); // Baul Punn
 +
        System.out.println(findFriendByLastName("Rukis").getFullName()); // Kaera Jaan Rukis
 +
        System.out.println(findFriendByLastName("Tamm").getNames()); //[Drop, Table, User]
 +
        System.out.println(findFriendByLastName("Kaera")); //null
 +
    }
 +
 
 +
    public static List<Friend> readFriendsFromFile(String inputFilename) {
 +
        return friends;
 +
    }
 +
    public static Friend findFriendByLastName(String lastName) {
 +
        return null;
 +
    }
 +
</source>
 +
 
 +
=== Boonusülesanne ===
 +
 
 +
Tuleb välja, et osades failides on formaat läinud paigast ära. Mõne nime vahel on rohkem kui üks tühik.
 +
 
 +
Juhul kui sõprade hulgas on mitu sama perekonnanimega inimest (näiteks: Bilbo Baggins ja Frodo Baggins), tagastab meetod vaid Bilbo Bagginsi täisnime, ehk, tähestikus eespool oleva nime. Kusjuures järjestuse kontrollimine ei tohi olla tõstutundlik (ehk siis peab olema ''case-insensitive'', paul ja Paul on samaväärsed).
  
Klassil <code>Friend</code> '''peab''' olema kaks välja: <code>names, lastName</code>. Esimese andmetüüp on <code>List<String></code> ning teise andmetüüp on <code>String</code>.
+
Näidissisend:
Klassi <code>Friend</code> meetod <code>String getLastName()</code> tagastab perekonnanime, <code>String getFullName()</code> tagastab eesnimedest ja perekonnanimest moodustatud stringi (täisnime).<br />
+
<pre>
Klassi <code>EX07</code> staatiline meetod <code>String findFriendByLastName(String lastName)</code> tagastab sõbra täispika nime. <br />
+
  Mati Kaal
'''Boonusülesanne:''' Juhul kui sõprade hulgas on mitu sama perekonnanimega inimest (näiteks: Bilbo Baggins ja Frodo Baggins, tagastab meetod vaid Bilbo Bagginsi täisnime, ehk, tähestikus eespool oleva nime).
+
  mat    Kaal 
 +
</pre>
  
Klassi <code>EX07</code> meetod <code>List<Friend> readFriendsFromFile(String fileName)</code> loeb sisse argumendiga ette antud nimega failist loendi Madise sõpradest. Failis on sõbrad esitatud ridadena, st igal real on üks sõber ning sõbra nimed on lahutatud üksteisest tühikutega. Meetod peaks muutma failis olevad sõbrad <code>Friend</code> klassi objektideks.
+
<source lang="java">
 +
System.out.println(findFriendByLastName("Kaal").getFullName()); // mat Kaal
 +
</source>

Viimane redaktsioon: 2. märts 2016, kell 22:11

Üldine

Ülesande tähtaeg: 7. - 8. märts
Kaust git'is: EX07

git'i lisage kaks faili: EX07.java ja Friend.java

Lisalugemist

Ülesanne

Madisel on väga palju sõpru.
Väga väga palju.
Selleks, et kõikide nimed meelde jätta, on Madis need kenasti failidesse kirja pannud. Nüüd tahaks Madis leida oma sõpru üles perekonnanimede järgi. Kuna Madis on kuulnud, et olete kõva progeja, siis palkab ta teid (pai eest(noa ähvardusel)) tegema talle programmi, mis loeks sisse sõbrad ja võimaldaks otsida perekonnanimede järgi.

Luua klass Friend. Kõik selle klassi väljad peavad olema teiste klasside eest peidetud. Väljadele ligipääsuks on vaja luua get ja set meetodid.

Klassil Friend peab olema vähemalt need meetodid:

  • String getLastName() tagastab perekonnanime,
  • String getFullName() tagastab eesnimedest ja perekonnanimest moodustatud stringi (täisnime), eesnimed peavad olema samas järjekorras mis lähtefailis, neile järgneb perenimi (kõik tühikutega eraldatud).
  • List<String> getNames() tagastab List tüüpi järjendi eesnimedest.

Klassi EX07 meetod List<Friend> readFriendsFromFile(String fileName) loeb sisse argumendiga ette antud nimega failist loendi Madise sõpradest. Failis on sõbrad esitatud ridadena, st igal real on üks sõber ning sõbra nimed on lahutatud üksteisest tühikutega, viimane nimi on perenimi. Meetod peaks muutma failis olevad sõbrad Friend klassi objektideks ning lisama nad klassimuutujasse friends. Fail sisaldab vaid tähti (kaasa arvatud õ, ä jms) ja tühikuid ja reavahetusi (muid sümboleid pole).

Klassi EX07 staatiline meetod Friend findFriendByLastName(String lastName) tagastab viite sõbrale, kelle perenimi on lastName. Kui sõpra ei leidu, tagastada null. Sõprade nimekiri on klassimuutujas friend ja loetud sisse eelnevalt readFriendsFromFile meetodiga.


Näidisfail example.txt:

Ain Ain
Baul Punn
Deiv Phentagon
Kaera Jaan Rukis
Drop Table User Tamm

Mall:

<source lang="java"> public class EX07 {

   private static List<Friend> friends;
   
   public static void main(String[] args) {
       friends = readFriendsFromFile("EX07/example.txt");
       System.out.println(findFriendByLastName("Ain").getFullName()); // Ain Ain
       System.out.println(findFriendByLastName("Punn").getFullName()); // Baul Punn
       System.out.println(findFriendByLastName("Rukis").getFullName()); // Kaera Jaan Rukis
       System.out.println(findFriendByLastName("Tamm").getNames()); //[Drop, Table, User]
       System.out.println(findFriendByLastName("Kaera")); //null
   }
   public static List<Friend> readFriendsFromFile(String inputFilename) {
       return friends;
   }
   public static Friend findFriendByLastName(String lastName) {
       return null;
   }

</source>

Boonusülesanne

Tuleb välja, et osades failides on formaat läinud paigast ära. Mõne nime vahel on rohkem kui üks tühik.

Juhul kui sõprade hulgas on mitu sama perekonnanimega inimest (näiteks: Bilbo Baggins ja Frodo Baggins), tagastab meetod vaid Bilbo Bagginsi täisnime, ehk, tähestikus eespool oleva nime. Kusjuures järjestuse kontrollimine ei tohi olla tõstutundlik (ehk siis peab olema case-insensitive, paul ja Paul on samaväärsed).

Näidissisend:

  Mati Kaal
  mat     Kaal  

<source lang="java"> System.out.println(findFriendByLastName("Kaal").getFullName()); // mat Kaal </source>