Tarkvara arendamise etapid Klassikaline elutskkel koskmudel Valdkonna anals

  • Slides: 31
Download presentation
Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”) Valdkonna analüüs Süsteemianalüüs Ülesande täpne püstitus Nõuete analüüs

Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”) Valdkonna analüüs Süsteemianalüüs Ülesande täpne püstitus Nõuete analüüs Disain. Klassid Algoritmid Kodeerimine Programmitekstid Kavandamine Testimine Hooldus

Numeroloogia tarkvara Süsteemianalüüs • õnneliku arvu mõiste • ülesanne: leida õnnelikke arve; kontrollida, kas

Numeroloogia tarkvara Süsteemianalüüs • õnneliku arvu mõiste • ülesanne: leida õnnelikke arve; kontrollida, kas arv on õnnelik • leidub inimesi, keda huvitab arvude õnnelikkust uurida

Numeroloogia Täisarvu numbrite kaupa analüüsimine. Arvu märk ei oma tähtsust. Ristsumma: arvu numbrite summa.

Numeroloogia Täisarvu numbrite kaupa analüüsimine. Arvu märk ei oma tähtsust. Ristsumma: arvu numbrite summa. Arvu 12075 ristsumma on 15. Ristkorrutis: arvu nullist erinevate numbrite korrutis. Arvu 12075 ristkorrutis on 70. Õnnelik arv: nii arv ise kui ka tema ristsumma ja ristkorrutis koosnevad ainult paaritutest numbritest. Arv 12075 ei ole õnnelik. Arv 11537 ei ole õnnelik. Arv 11539 on õnnelik.

Nõuete analüüs: mida täpselt teha • vaadeldakse ainult mittenegatiivseid arve • suurim arv ei

Nõuete analüüs: mida täpselt teha • vaadeldakse ainult mittenegatiivseid arve • suurim arv ei ületa miljardit • ülesanne: leida ja väljastada konsoolile kõik õnnelikud arvud, mis asuvad antud lõigul • kui lõik on tühi, siis ei väljastata midagi • kasutajaliides (kasutamine): ainult väljastamine konsoolile • testiplaan: kontrollida (1) väikeste ja (2) suurte ja (3) mõnede vahepealsete arvude korral, (4) väikese ja (5) tühja lõigu korral

Kavandamine Alamülesanded • kontrollida, kas arv koosneb paaritutest numbritest • leida arvu ristsumma •

Kavandamine Alamülesanded • kontrollida, kas arv koosneb paaritutest numbritest • leida arvu ristsumma • leida arvu ristkorrutis • kontrollida, kas arv on õnnelik Arhitektuur üks klass: sisaldab alamülesannete lahendamise meetodeid teine klass: meetod antud lõigul olevate õnnelike arvude leidmiseks

Mudel Peaklass Onnelike. Otsing algus lõpp main( ) Numeroloogia meetodite klass Arvud ristsumma( )

Mudel Peaklass Onnelike. Otsing algus lõpp main( ) Numeroloogia meetodite klass Arvud ristsumma( ) ristkorrutis( ) onÕnnelik( ) koosneb. Paaritutest( )

Meetodite rakendamise skeem Onnelike. Otsing. main( ): iga arvu korral lõigul algus. . .

Meetodite rakendamise skeem Onnelike. Otsing. main( ): iga arvu korral lõigul algus. . . lõpp kontrollida, kas see arv on õnnelik. Kui on, siis teatada (väljastada see arv). Õnnelikkust kontrollib meetod Arvud. onÕnnelik( ), mis omakorda kasutab meetodeid Arvud. ristsumma( ), Arvud. ristkorrutis( ), Arvud. onÕnnelik( ) ja Arvud. koosneb. Paaritutest( ). Onnelike. Otsing. main( ) Arvud. onÕnnelik( ) Arvud. koosneb. Paaritutest( ) Arvud. ristsumma( ) Arvud. ristkorrutis( )

Kodeerimine Väärtused võib võtta tüüpi int (maks. > 2 miljardit). Klass Arvud, meetodite välised

Kodeerimine Väärtused võib võtta tüüpi int (maks. > 2 miljardit). Klass Arvud, meetodite välised spetsifikatsioonid: class Arvud static int ristsumma (n) --- Antud: täisarv n, n 0 --- Tulemus: tagastatakse arvu n ristsumma

static int ristkorrutis (n) --- Antud: täisarv n, n 0 --- Tulemus: tagastatakse arvu

static int ristkorrutis (n) --- Antud: täisarv n, n 0 --- Tulemus: tagastatakse arvu n ristkorrutis static boolean onÕnnelik(n) --- Antud: täisarv n --- Tulemus: tagastatakse JAH, kui arv n on õnnelik --- EI, vastasel korral

static boolean koosneb. Paaritutest (n) --- Antud: täisarv n --- Tulemus: tagastatakse true (JAH),

static boolean koosneb. Paaritutest (n) --- Antud: täisarv n --- Tulemus: tagastatakse true (JAH), kui arvu n kõik --- numbrid on paaritud, false (EI) vastasel korral (Arvud)

class Onnelike. Otsing static int algus = 570; // otsimislõigu algus static int lõpp

class Onnelike. Otsing static int algus = 570; // otsimislõigu algus static int lõpp = 580; // otsimislõigu lõpp public static void main(String[ ] args) väljastada(“Õnnelikud “ + algus + “ … “ + lõpp + “: ”); * n = algus, algus+1 … lõpp onÕnnelik(n) ? väljastada(n)

class Arvud{ static int ristsumma (n){ // Antud: täisarv n, n >= 0 //

class Arvud{ static int ristsumma (n){ // Antud: täisarv n, n >= 0 // Tulemus: tagastatakse arvu n ristsumma return 1; }//ristsumma static int ristkorrutis (n){ // Antud: täisarv n, n >= 0 // Tulemus: tagastatakse arvu n ristkorrutis return 1; }//ristkorrutis static boolean onÕnnelik (n){ // Antud: täisarv n // Tulemus: tagastatakse true (JAH), kui arvu n on õnnelik, // false (EI) vastasel korral return true; }//onÕnnelik

static boolean koosneb. Paaritutest (n){ // Antud: täisarv n // Tulemus: tagastatakse true (JAH),

static boolean koosneb. Paaritutest (n){ // Antud: täisarv n // Tulemus: tagastatakse true (JAH), kui arvu n kõik // numbrid on paaritud, false (EI) vastasel korral return true; }//koosneb. Paaritutest }//Arvud

Kompileerimine: javac Onnelike. Otsing. java Lahendamine: java Onnelike. Otsing Õnnelikud 100. . . 999:

Kompileerimine: javac Onnelike. Otsing. java Lahendamine: java Onnelike. Otsing Õnnelikud 100. . . 999: 111 113 115 117 119 131 133 135 151 153 157 171 175 191 313 315 331 355 359 395 511 513 517 531 535 539 553 557 571 575 593 711 715 751 755 911 935 953

Nimed ehk identifikaatorid Programmeerija poolt valitavad klasside, meetodite, väljade, lokaalmuutujate jmt. tähised Nõuded failinimedele

Nimed ehk identifikaatorid Programmeerija poolt valitavad klasside, meetodite, väljade, lokaalmuutujate jmt. tähised Nõuded failinimedele on Java-välised, määratud kasutatava operatsioonisüsteemiga.

Nimed (identifikaatorid) • REEGLID – võivad sisalduda tähed (ka täpitähed), numbrid, _ , $

Nimed (identifikaatorid) • REEGLID – võivad sisalduda tähed (ka täpitähed), numbrid, _ , $ – ei tohi alata numbriga – pikkusel reaalsel kasutamisel häirivaid piire pole – suured ja väikesed tähed (nt. A ja a) loetakse erinevateks (nt. ja. Ak ja j. Aak on erinevad, String ja string on erinevad). – ei saa sisaldada tühikuid – ei tohi olla võtmesõna (class, int, true, if … . . . ca 60 tükki, vt. Leksikon)

Nimed (identifikaatorid) • TAVAD klassi nimi - suur algustäht Klassi. Nimi meetodi nimi -

Nimed (identifikaatorid) • TAVAD klassi nimi - suur algustäht Klassi. Nimi meetodi nimi - väikesed tähed meetodi. Nimi muutuja nimi - väikesed tähed muutuja. Nimi alates teisest sõnast suure tähega . java-fail võiks sisaldada ainult ühte klassi ja selle faili nimi võiks olla sama, mis on klassi nimi (Klassi. Nimi) (mõnes keskkonnas peabki olema) . class-fail tekib siis faili Klassi. Nimi. java kompileerimisel ja nimeks on Klassi. Nimi. class http: //www. ut. ee/~jaanus/java/projektid/Java_koodistandard. html

Omistamine Avaldis A x= avaldis. B Operatsioon Avaldise A väärtuseks on x väärtus pärast

Omistamine Avaldis A x= avaldis. B Operatsioon Avaldise A väärtuseks on x väärtus pärast operatsiooni x++ x-- Arvutatakse avaldise B väärtus ja omistatakse see muutujale x x=x+1 x=x-1 ++x --x x=x+1 x=x-1 x väärtus pärast operatsiooni x väärtus enne operatsiooni

Avaldis Näiteavaldis 1. 5 (literaal) Väärtus 1, 5 x Muutuja x väärtus x +

Avaldis Näiteavaldis 1. 5 (literaal) Väärtus 1, 5 x Muutuja x väärtus x + y x ja y väärtuste summa meetod(a) Meetodi poolt tagastatav väärtus (argumentavaldise a korral) Muutuja y uus väärtus y = avaldis y += avaldis Sama, mis y = y + avaldis (avaldis) == avaldis

z = Math. sqrt(2*y)/(x = x + 1) ehk z = Math. sqrt(2*y)/(++x) ;

z = Math. sqrt(2*y)/(x = x + 1) ehk z = Math. sqrt(2*y)/(++x) ; avaldis avaldisdirektiiv avaldis

Avaldisdirektiivi erijuht (omistamistehteta): meetodi rakendus ehk meetodi väljakutse meetodi. Nimi(argumentide loetelu); Tavaline, kui meetodi

Avaldisdirektiivi erijuht (omistamistehteta): meetodi rakendus ehk meetodi väljakutse meetodi. Nimi(argumentide loetelu); Tavaline, kui meetodi tagastustüübiks on tühitüüp void. Näide: System. out. println();

Algtüübid

Algtüübid

Algtüübid Vt. Leksikon, märksõna: tüüp täisarvud int, byte, short, long ujupunktarvud float 32 -bitilised

Algtüübid Vt. Leksikon, märksõna: tüüp täisarvud int, byte, short, long ujupunktarvud float 32 -bitilised (7 tüvekohta) double 64 -bitilised (15 tüvekohta) -1, 7*10308… 1, 7*10308 char – 16 -bitilised Unicode-sümbolid boolean – true või false void – tühitüüp; kasutatakse ainult tagastustüübina, juhul kui tegelikult väärtust ei tagastata String ei ole algtüüp (on viittüüp)

MEETOD Meetodi kirjeldus (lühemalt: meetod): piiritlejad -- võivad puududa tagastustüüp meetodi. Nimi(formaalsete parameetrite loetelu)

MEETOD Meetodi kirjeldus (lühemalt: meetod): piiritlejad -- võivad puududa tagastustüüp meetodi. Nimi(formaalsete parameetrite loetelu) { lokaalmuutujad, direktiivid } Meetodi rakendus ehk väljakutse: Klassi nimi. või isendiviit. -- võib puududa meetodi. Nimi(argumentide loetelu)

int ruutude. Summa(int a, int b){ int c; c = a*a + b*b; return

int ruutude. Summa(int a, int b){ int c; c = a*a + b*b; return c; } Meetod int f(int a, int b, int c, int d){ int x, y; x = ruutude. Summa(a, b); y = ruutude. Summa(c, d); z = ruutude. Summa(x, y); return z; } void test(int a){ System. out. println(“Kui a = b = c = d = “ + a); System. out. println(“ siis f = “ + f(a, a, a, a)); }

Peameetod public static void main(String[] args) { } form. param. tüüp piiritlejad tagastustüüp nimi

Peameetod public static void main(String[] args) { } form. param. tüüp piiritlejad tagastustüüp nimi (formaalsete parameetrite loetelu) keha ehk sisu form. param. nimi

Programm Ruutude. Summad. java

Programm Ruutude. Summad. java

Arvuline meetod e. arvulist tüüpi (int, double, …) meetod static int m 1( …){

Arvuline meetod e. arvulist tüüpi (int, double, …) meetod static int m 1( …){ … leida vastus - arvuline tulemus (nt. a) // tagastada tulemus: return a; // üldiselt: return arvuline avaldis; } Loogiline meetod e. loogilist tüüpi (boolean) meetod static boolean m 2( …){ … leida vastus – kas JAH või EI (true või false) // tagastada tulemus: return true; või return false; // üldiselt: return loogiline avaldis; }

Loogilise meetodi näide boolean onÜhiklõigul(double x){ // Antud: arv x // Tulemus: tagastatakse true,

Loogilise meetodi näide boolean onÜhiklõigul(double x){ // Antud: arv x // Tulemus: tagastatakse true, kui 0 x 1 if(x < 0) return false; if(x > 1) return false; if((x < 0) || (x > 1)) return false; return true; } if((x >= 0) && (x <= 1)) return true; return false; return (x >= 0) && (x <= 1) ; return !((x < 0) || (x > 1)) ;

MUUTUJA väli või parameeter või lokaalmuutuja class A{ int meetod( } } ){

MUUTUJA väli või parameeter või lokaalmuutuja class A{ int meetod( } } ){

Arvuline e. arvulist tüüpi (int, double, …) muutuja omab arvulist väärtust int z, w,

Arvuline e. arvulist tüüpi (int, double, …) muutuja omab arvulist väärtust int z, w, i 1; double x, y; i 1 = 0; … z + w*2. . . Loogiline e. loogilist tüüpi (boolean) muutuja omab ühte kahest loogilisest väärtusest: true või false boolean k, m 3; boolean g; k = true; m 3 = (x <= 1); g = (c != (a + 2)); k = m 3 && g;