OO praktikum - 12.03.1999

Sõnetöötlus

Traditsioonilised struktuursed programmeerimiskeeled (Basic, C, Pascal jne.) esitavad sõne (ingl.k. string) kui andmetüüpi. Programmeerija võib sõnega manipuleerida, nii kuidas talle mugavam on (klassikalised programmivead on seotud C-keele ja '\0' sümboliga, mis tähistab sõne lõppu).

Mõningates objektorienteeritud keeltes (nt. C++, Java) on sõne realiseeritud objektina. See tagab selle, et sõnega opereerimine toimub ainult läbi nende meetodite, mida sõneklass võimaldab.

Java sisaldab sõnedega opereerimise jaoks kaks põhilist klassi String ja StringBuffer, sõnede sõelumise (ingl.k. parsing) jaoks on olemas ka klass StringTokenizer. Klass String on mõeldud eelkõige konstantsete sõnede jaoks (töö käigus klassi String kuuluvaid objekte muuta ei saa), klass StringBuffer aga nende sõnede jaoks, mis võivad muutuda.

Alljärgnevalt on kirjeldatud nende kolme klassi meetodeid, täpsemalt saab igaüks ise API (ingl. k. Application Programming Interface) kirjeldusest järele vaadata.

java.lang.String

API kirjeldab üksteist klassi String konstruktorit. Suuremat osa neist enamus juhtudel vaja ei lähe, küll aga oleks kasulik nendega hariduse mõttes tutvuda. Meetodid: NB! Erilist tähelepanu tuleks pöörata meetoditele equals, compareTo ja valueOf.

java.lang.StringBuffer

API kirjeldab kolme klassi StringBuffer konstruktorit. Meetodid:

java.util.StringTokenizer

API kirjeldab kolme klassi StringTokenizer konstruktorit. Meetodid:

Ülesanded

Näidislahendus: kui parameetriks on sõne
"·TooMas·viIRSAlu:····gunNAr·kuDRJAVets·:·uRMET·Liin·····:···AIas·Saia····:···tARgo···teNNISBerg·:···aHTo···trUu··"
, siis peab programm väljastama teksti:
Viirsalu·Toomas
Kudrjavets·Gunnar
Liin·Urmet
Saia·Aias·-·palindroom
Tennisberg·Targo
Truu·Ahto
NB! Ülesande lahendamisel tasuks püüelda modulaarsuse suunas - iga alamülesande lahendamise jaoks on mõttekas luua eraldi klass või meetod, mida oleks võimalik kasutada teiste sarnaste ülesannete lahendamisel.


Gunnar Kudrjavets [gk@aprote.ee]
Tõravere, 10.03.1999