1 / 31

Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

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

alaire
Télécharger la présentation

Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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 rist- korrutis koosnevad ainult paaritutest numbritest. Arv 12075 ei ole õnnelik. Arv 11537 ei ole õnnelik. Arv 11539 on õnnelik.

  4. 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

  5. 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

  6. Mudel Peaklass Numeroloogia meetodite klass OnnelikeOtsing algus lõpp main( ) Arvud ristsumma( ) ristkorrutis( ) onÕnnelik( ) koosnebPaaritutest( )

  7. Meetodite rakendamise skeem OnnelikeOtsing.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.koosnebPaaritutest( ). OnnelikeOtsing.main( ) Arvud.onÕnnelik( ) Arvud.koosnebPaaritutest( ) Arvud.ristsumma( ) Arvud.ristkorrutis( )

  8. 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

  9. 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

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

  11. class OnnelikeOtsing 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)

  12. 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

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

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

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

  16. 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. jaAk ja jAak on erinevad, String ja string on erinevad). • ei saasisaldada tühikuid • ei tohi olla võtmesõna (class, int, true, if … ... ca 60 tükki, vt. Leksikon)

  17. Nimed (identifikaatorid) • TAVAD • klassi nimi - suur algustäht KlassiNimi • meetodi nimi - väikesed tähed meetodiNimi • muutuja nimi - väikesed tähed muutujaNimialates 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 (KlassiNimi) • (mõnes keskkonnas peabki olema) • .class-fail tekib siis faili KlassiNimi.java • kompileerimisel ja nimeks on KlassiNimi.class • http://www.ut.ee/~jaanus/java/projektid/Java_koodistandard.html

  18. Omistamine

  19. Avaldis (avaldis) == avaldis

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

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

  22. Algtüübid

  23. 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 Stringei ole algtüüp (on viittüüp)

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

  25. Meetod int ruutudeSumma(int a, int b){ int c; c = a*a + b*b; return c; } int f(int a, int b, int c, int d){ int x, y; x = ruutudeSumma(a, b); y = ruutudeSumma(c, d); z = ruutudeSumma(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)); }

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

  27. Programm RuutudeSummad.java

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

  29. 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; return true; } 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));

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

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

More Related