Letalo

Letalo

Avtor: Vera Kabanova

Navodila

Sestavi razred Letalo, ki naj vsebuje naslednje privatne lastnosti: doseg (int), maxVisina (int), maxHitrost (int), tip (string) in nosilnost (int). Razred naj bo opremljen s konstruktorjem, ki sestavi novo letalo iz danega dosega, maksimalne visine, maksimalne hitrosti, tipa in nosilnosti.

  • Izpiši tipe vseh letal, s katerimi se lahko odpravimo na polet, dolg 1500km.
  • Ugotovili so, da so pri vnosu podatkov vsem letalom, katerih tip se začne na črke od 'A' do 'M', vnesli za 500m prenizko makimalno višino. Popravi podatke za vsa taka letala v tabeli.
  • Izpiši tipa tistih letal s katerimi lahko kar se da hitro prepelješ m ton tovora. Pri odločanju, katera letala boš uporabil, uporabi naslednji postopek: Najprej vzamemo najhitrejše letalo in ga polno naložimo. Če je ostalo še kaj tovora, vzamemo naslednje najhitrejše letalo. Če še ni ves tovor naložen, vzemi naslednje najhitrejše letalo ...
  • Za polet od Brnika do Muenchna bo potrebno preleteti Alpe. Zaradi varnostnih predpisov mora letalo leteti vsaj na višini 3000m. Koliko letal imamo na izbiro, če moramo prepeljati 5 potnikov s prtljago vred. Letalska družba, lastnica letal v tabeli, ki je parameter metode, za težo letala s potnikom vzame 105kg. ---------------------------------------------------------------------------------------
  • MOJ PRIMER1: izračunaj povprečno nosilnost letal v tabeli.
  • MOJ PRIMER2: letala, ki ne letijo višje kot en kilometer so zastarela. Prav tako so zastarela tudi tista letala, ki ne letijo hitreje kot 500km/h. Ugotovi koliko bo firma zgubila nosilnosti, če jih bo prenehala uporabljati.

Koda - definicija, lastnosti, konstruktor...

Ustvarimo razred Letalo. Navedmo lastnosti: doseg , maxVisina, maxHitrost, tip in nosilnost objektov. Vse te lastnosti so privatne.

(letalo_koda1.jpg)

Nato napišemo polni konstruktor, ki kot argumente sprejme: število kilometrov (int stKm), maksimalno hitrost(int maxH), maksimalno višino (int maxV), tip(string t) in nosilnost (int nos). Iz teh podatkov konstruktor ustvari objekt tipa letalo.
Ko pišemo polni konstruktor, dodajamo ustrezne vlajdacije - doseg, maxVisina, maxHitrost in nosilnost ne morejo biti negativni. Prav tako maksimalna hitrosti in višine imajo omejitev navzgor.Sicer prigram sproži izjemo ArgumntException.

Koda - ...konstruktor

         public Letalo(int stKm, int maxVis, int maxH, string t, int nos)
        //polni konstruktor
        {
            if (stKm < 0)//validacija
            {
                throw new ArgumentException("Doseg ne sme biti negativen!");
            }
            else
            {
                this.doseg = stKm;
            }
            if (maxVis < 0) //validacija
            {

                throw new ArgumentException("Maksimalna višina ne sme biti negativna!");
            }
            else if (maxVis > 35000)
            {

                throw new ArgumentException("Previsoka maksimalna višina!");
            }
            else
            {
                this.maxVisina = maxVis;
            }
            if (maxH < 0) //validacija
            {
                throw new ArgumentException("Maksimalna hitrost ne sme biti negativna!");
            }
            else if (maxH > 1000)
            {
                throw new ArgumentException("Maksimalna hitrost ne sme presegati 1000km/h!");
            }
            else
            {
                this.maxHitrost = maxH;
            }
            this.tip = t;
            if (nos < 0) //validacija
            {
                throw new ArgumentException("Nosilnost ne sme biti negativna!");
            }
            else
            {
                this.nosilnost = nos;
            }

        }

Koda - get/set metode

Razred opremimo tudi z get in set metodami, ki imajo seveda tudi ustrezno validacijo. Get in set metode za vse lastnosti napišemo bolj kot ne na enaki način. Primer get/set metode za maksimalno hitrost:

(letalo_koda2.jpg)

Koda - metode za izpis

Za testiranje pravilnosti tega razreda je zelo pomembno, da dodamo tudi metode za izpis.
Metoda za izpis:

(letalo_koda3.jpg)

Metoda za bolj eleganten način klicanja metode za izpis:

(letalo_koda4.jpg)

Koda - metode za delo z datotekami

Razredu dodamo tudi metode za zapis na datoteko in branje z datotek. T metode dodamo zato, da lažje testiramo druge metode, ki jih bomo napisali.
Metoda za zapis na datotekoko objekt this doda v tekstovno datoteko kot vrstico, s tem, da so vsi podatki objekta med sabo ločeni z znakom ';'. Datoteko odpremo za pisanje, nanjo s pomočjo metode ToString izpišemo izpis objekte ter jo zapremo.

(letalo_koda5.jpg)

Metoda za branje z datoteke vrne tabelo objektov, kjer posamezni objekt vsebuje podatke, ki so zapisani v posamezni vrstici datoteke, med sabo ločeni z znakom ';'. Datoteko odpremo za branje, z while zanko preštejemo vrstice ter jo zapremo. Ustvarimo tabelo dolžine števila vrstic v datoteki. Datoteko še enkrat odpremo za branje, iz vsake vrstice ustvarimo objekt tipa Letalo s pomočjo konstruktorja. Novonastale objekte dodamo v tabelo, datoteko zapremo.

(letalo_koda6.jpg)

Koda - letala za dolge polete

Metoda, ki iz tabele objektov tipa Letalo izpiše tipe vseh letal, s katerimi se lahko odpravimo na polet, dolg 1500km. Za vsak element vhodne tabele pogledamo, če je vrednost njegove lastnosti doseg večja od števila 1500. Če to velja, v konzolo izpišemo vrednost lastnosti tip tega objekta.

(letalo_koda7.jpg)

Koda - poprava prenizkih maksimalnih višin

Metoda, ki v dani tabeli objektov tipa Letalo popravi vnose višin za letala, katerih tip se začne na črke od 'A' do 'M'. Vrednost lastnosti Visina tem letalom povečamo za 500.Za vsak element vhodne tabele pogledamo, če je prvi znak vrednosti lastnosti tip večji ali enak znaku 'A' in hkrati manjši ali enak zanku 'M'. Če to velja, vrednosti lastnosti Visina tega objekta prištejemo 500.

(letalo_koda8.jpg)

Koda - najhitrejši transport tovora

Metoda, ki iz dane tabele letal izpiše vsa, ki jih uporabimo za čim hitrejši transport m ton tovora. Metoda najprej uredi tabelo po največjih hitrostih letal. To naredimo tako, da se v zunanji zanki se sprehodimo po elementih tabele – gledamo podatek o maksimalni hitrosti. Vsak trenutni podatek spravimo v maksimum, v notranji zanki, se sprehodimo po elementih, ki v tabeli sledijo trenutnemu (glede na zunanjo zanko), ter ob vsakem elementu, ki je večji od trenutnega (glede na zunanjo zanko), ta element spravimo v spremenljivko maksimum – notranjo zanko končamo. Še vedno v zunanji zanki preverimo, če je indeks maksimalnega elementa enak indeksu trenutnega elementa – če ni, ju zamenjamo, v nasprotnem primeru ne storimo nič. Zamenjavo elementov opravimo s pomočjo pomožnega objekta tipa Letalo, v katerega shranjujemo vrednost enega od elementov, ki ju med samo menjamo, medtem, ko drugega prestavljamo na njegovo mesto.
Ko je tabela urejena, uvedemo novo spremenljivko teza tipa int in vanjo spravimo koliko vrednost teže tovora v kilogramih. Nato se sprehodimo po elementih urejene tabele in prverjamo, če je vrednost spremenljivke teza več od nič. Če to velja od njene vrednosti odštejemo vrednost lastnosti nosilnost trenutnega elementa. Vrednost lastnosti tip tega elementa pa izpišemo na zaslon. 'M'. Če to velja, vrednosti lastnosti Visina tega objekta prištejemo 500.

(letalo_koda9.jpg)

Koda - transport petih potnikov čez Alpe

Metoda vrne koliko letal imamo na razpolago v tabeli, s katerimi lahko transporetiramo 5 pitnikov čez Alpe.
Ustvarimo spremenljivko stevilo in jo nastavimo na nič. Nato za vsak element vhodne tabele pogledamo, če je vrednost njegove lastnosti višina večja od 3000 in če je vrednost njegove lastnosti nosilnost večja od vrednosti 105*5. Če oba pogojaa veljata, stevvilo povečamo za ena.

(letalo_koda10.jpg)

Koda - povprečna nosilnost

Metoda vrne povprečno nosilnost letal v tabeli.
Ustvarimo spremenljivki stevilo in skupnaNosilnost ter ju nastavimo na nič. Za vsak element vhodne tabele, spremenljivki skupnaNosilnost prištejemo vrednost lastnosti nosilnost trenutnega elementa. Spremenljivki stevilo pa povečamo za ena. Vrnemo (1.0*skupnaNosilnost)/stevilo, ker more biti tipa double.

(letalo_koda11.jpg)

Koda - zastarela letala

Letala, ki ne letijo višje kot en kilometer so zastarela. Prav tako so zastarela tudi tista letala, ki ne letijo hitreje kot 500km/h. Prodram določi koliko nosilnosti bo zgubila firma, če jih bo prenehala uporabljati.
Ustvarimo spremenljivko izguba in jo nastavimo na nič. Za vsak element vhodne tabele prverimo, če je vrednost njegove lastnosti višina manjša ali enaka od 1000 in če je vrednost njegove lastnosti hitrost manjša ali enaka od 500. Če obe lastnosti veljata, spremenljivki izguba prištejemo vrednost lastnosti nosilnost tekočega elementa. Vrnemo spremenljivko izguba.

(letalo_koda12.jpg)

Testni primeri

Najprej testiramo konstruktor, in če veljajo naše validacije. To naredimo tako, da probamo ustvariti nekaj objektov tipa Letalo - eni poskusi bodo z veljavnimi podatki, drugi pa ne. Ostale metode testiramo na tabeli šestih elementov tipa Letalo. S tem, da vemo kaj tabela vsebuje, tudi vemo kaj moramo pričakovati v rezultatih. Tabelo sestavimo s pomočjo metode PreberiZDatoteke. S tem smo avtomatično stestirali tudi delovanje konstruktorja. Nato pa s pomočjo te novonastale tabele testiramo delovanje metod letalaZaDolgePolete, transportTovora, cezAlpe, povprecnaNosilnost, izgZastLet in poprava. Podatki, ki jih bomo uporabili v tabeli:

(letalo_koda13.jpg)

Test

0%
0%