Olio-ohjelmointi Syntaksikokoelma

Samankaltaiset tiedostot
12 Mallit (Templates)

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat:

Olio-ohjelmointi 2. välikoe HYV5SN

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Olio-ohjelmointi Javalla

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmointi 1 Taulukot ja merkkijonot

Demo 6 vastauksia. 1. tehtävä. #ifndef #define D6T1 H D6T1 H. #include <iostream> using std::ostream; using std::cout; using std::endl;

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Tehtävä 1. TL5302 Olio-ohjelmointi Koe Malliratkaisuja. Tässä sekä a)- että b)-kohdan toimiva ratkaisu:

ITKP102 Ohjelmointi 1 (6 op)

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

9. Periytyminen Javassa 9.1

Geneeriset luokat. C++ - perusteet Java-osaajille luento 6/7: Template, tyyppi-informaatio, nimiavaruudet. Geneerisen luokan käyttö.

13 Operaattoreiden ylimäärittelyjä

Periytyminen (inheritance)

2. Olio-ohjelmoinista lyhyesti 2.1

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Luokan sisällä on lista

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

4. Olio-ohjelmoinista lyhyesti 4.1

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

9. Periytyminen Javassa 9.1

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Osoitin ja viittaus C++:ssa

Sisältö. 22. Taulukot. Yleistä. Yleistä

Mikä yhteyssuhde on?

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

19. Olio-ohjelmointia Javalla 19.1

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

15. Ohjelmoinnin tekniikkaa 15.1

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Operaattoreiden uudelleenmäärittely

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

13. Loogiset operaatiot 13.1

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

7. Oliot ja viitteet 7.1

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Listarakenne (ArrayList-luokka)

18. Abstraktit tietotyypit 18.1

Taulukot. Jukka Harju, Jukka Juslin

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

4. Luokan testaus ja käyttö olion kautta 4.1

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Luokan muodostimet (Constructors)

Java-kielen perusteet

Metodien tekeminen Javalla

1. Mitä tehdään ensiksi?

Olio-ohjelmointi Geneerisyys. 1. Johdanto

A TIETORAKENTEET JA ALGORITMIT

UML ja luokkien väliset suhteet

12. Monimuotoisuus 12.1

Virtuaalifunktiot ja polymorfismi

ITKP102 Ohjelmointi 1 (6 op)

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Table of Contents. T Olio-ohjelmointi C/C++ perusteita Jukka Jauhiainen OAMK Tekniikan yksikkö 2010, 2011

Taulukoiden käsittely Javalla

TTY Ohjelmointi I & II C++-kirjastoreferenssi versio 2.2

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

16. Javan omat luokat 16.1

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. V Geneerisyys

STL:n uudistukset. Seppo Koivisto TTY Ohjelmistotekniikka

Ohjelmoinnin jatkokurssi, kurssikoe

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Mallit standardi mallikirjasto parametroitu tyyppi

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

Rakenteiset tietotyypit Moniulotteiset taulukot

int puts(char *buff) Kirjoittaa puskurissa buff \0 :lla päätetyn merkkijonon standarditulostukseen. Formatoitu konsoli-i/o Tiedostot

UNIVERSITY OF OULU DEPARTMENT OF INFORMATION PROCESSING SCIENCE

C++11 lambdat: [](){} Matti Rintala

\+jokin merkki tarkoittaa erikoismerkkiä; \n = uusi rivi.

15. Ohjelmoinnin tekniikkaa 15.1

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

KOHDELUOKAN MÄÄRITTELY

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

7/20: Paketti kasassa ensimmäistä kertaa

1. Omat operaatiot 1.1

Java-kielen perusteita

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

13. Loogiset operaatiot 13.1

TIETORAKENTEET JA ALGORITMIT

Ohjelmointi 1 C#, kevät 2013, 2. tentti

C++-KIELI. Versio 4.0

Transkriptio:

C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja tilan varaus: tyyppi *muuttuja = new tyyppi; Taulukon tilanvaraus: tyyppi tyyppi *taulukko = NULL; taulukko = new tyyppi[lkm]; Yhden muuttujan tilanvapautus delete muuttuja; muuttuja = NULL; Taulukon tilanvapautus delete [] taulukko; taulukko=null; Muuttujaparametrillinen funktiokutsu (myös C-kielessä): Esittely: tietotyyppi nimi(tietotyyppi *muuttuja, tietotyyppi *tietue, tietotyyppi *taulukko, tietotyyppi *tietuetaulukko ); Määrittely eli runko-osa: tietotyyppi nimi(tietotyyppi *muuttuja, tietotyyppi *tietue, tietotyyppi *taulukko, tietotyyppi *tietuetaulukko ) paikallisten muuttujien määrittelyt; lauseita; return muuttuja; Kutsuminen: paluuarvo=nimi(&muuttuja, &tietue, taulukko,tietuetaulukko...); Viittausparametrillinen funktiokutsu: Esittely: tietotyyppi nimi(tietotyyppi &muuttuja) Määrittely eli runko-osa tietotyyppi nimi(tietotyyppi &muuttuja) paikallisten muuttujien määrittelyt; lauseita; return muuttuja; Kutsuminen: paluuarvo=nimi(muuttuja);

C++ standardikirjaston funktioita <iostream> cout << vakiomerkkijono << muuttuja << endl; cin >> muuttuja; cin.get(merkki); cin.getline(merkkijono,_merkkijonon_koko); <string> Muuttujan määrittely: string s1,s2; Sijoitus: s1=s2; Vertailu: if (s1 == s2) //lauseet ; Merkkijonon n:nnen alkion indeksointi: s[n]= c ; c=s[n]; Merkkijonon pituus: pituus=s.length(); Onko tyhjä (totuusarvo)? if(s.empty()) lauseet; Yhdistäminen: string s3=s1+s2; Korvaus: s.replace(4,3, x ); Korvaa merkkijonosta s 3 merkkiä lähtien indeksistä 4, arvolla x. Poisto: s.erase(4,5); Poistaa 5 merkkiä alkaen indeksistä 4. Osoitin alkuun: s.begin(); Osoitin loppuun: s.end(); <vector> ja <list> Määrittely: vector <tyyppi> muuttuja; list <tyyppi> muuttuja; Iteraattori: vector <tyyppi>::iterator pos; list <tyyppi>::iterator pos; Osoitin alkuun: muuttuja.begin(); Osoitin loppuun: muuttuja.end();

Alkioiden lukumäärä: muuttuja.size(); Lisäys loppuun (lista ja vektori): muuttuja.push_back(alkio); Poisto lopusta (lista ja vektori): muuttuja.pop_back(); Lisäys alkuun (lista): muuttuja.push_front(alkio); Poisto alusta (lista): muuttuja.pop_front(); Poisto väliltä (lista): muuttuja.erase(iterator pos); (poisto kohdasta pos listan loppuun) muuttuja.erase(iterator first, iterator last); (poisto väliltä first last) Koko listan tai vektorin tyhjennys: muuttuja.clear(); Ehdollinen poisto listalta: muuttuja.remove(arvo); muuttuja.remove_if(funktio); (funktio kirjoitettava erikseen) <algorithm> Lajittelu: void sort ( iterator first, iterator last ); Haku: iterator find(iterator first, iterator last, haettava_arvo); Find palauttaa osoittimen (iteraattorin) vektorin tai listan kohtaan, josta haettu arvo löytyi. Lukumäärän laskenta: int count (iterator first, iterator last, const T& value ); Kääntö: void reverse(iterator first,iterator last); Alkiot satunnaiseen järjestykseen: srand(unsigned(time(null))); void random_shuffle ( iterator first,iterator last ); Kahden alkion sisällön vaihto: void swap ( T& a, T& b ); Taulukon läpikäynti alkioittain: for_each(iterator first, iterator last, funktio); HUOM: Funktio on kirjoitettava erikseen. Korvaus: replace(iterator first,iterator last,vanha_arvo,uusi_arvo); Korvaa kaikki vektorin alkiot, jotka sisältävät arvon vanha_arvo arvolla uusi_arvo. <cstdlib> ja <ctime> Satunnaislukujen arpominen: srand(unsigned(time(null))); //Generaattorin alustus, tehdään kerran int arvo=rand()%10+1; Arpoo satunnaisluvun väliltä 1 10.

Luokkatyyppi (Class) Määritelmä: class luokan_nimi //yksityiset jäsenet protected: //aliluokalle periytyvät jäsenet //Muodostimet luokan_nimi(); //Parametrillinen muodostin luokan_nimi(parametrilista); //Kopiointimuodostin luokan_nimi(luokan_nimi &); //Hajotin ~luokan_nimi(); //Palvelut tietotyyppi palvelun_nimi(parametrilista); ; Metodit: tietotyyppi luokan_nimi::palvelun_nimi(parametrilista) //Tee mahdollisesti jotain, return paluuarvo; Olion luonti pääohjelmassa: luokan_nimi olion_nimi; Palvelun kutsuminen: paluuarvo = olion_nimi.palvelun_nimi(parametrilista); Mallit (Templates) Aliohjelmamalli: template <typename identifier> function_declaration; Esimerkki: template <typename T> T suurempi(t &x,t &y) return (x>y? x : y); cout << Suurempi << suurempi( a, b ); Luokkamalli: template <class identifier> function_declaration;

Esimerkki: template <class T> class pari T a,b; pari(t x,t y)a=x;b=y; ; pari <int> x(2,3); Operaattorien ylikuormaus (Operator overloading) Palvelu: tyyppi operator operaattorimerkki (parametrilista); Metodi: tyyppi tyyppi::operator operaattorimerkki(parametrilista) //Teejotain Esimerkki: bool operator ==(const suorakulmio &); bool suorakulmio::operator ==(const suorakulmio &s) return ((this -> x == s.x && this -> y == s.y)? true : false); Public-periytyminen class yliluokka //Kantaluokan yksityiset tietojäsenet protected: //Johdetulle luokalle periytyvät tietojäsenet //Julkiset aliohjelmajäsenet ; class aliluokka : public yliluokka //Johdetun luokan yksityiset tietojäsenet protected: //Aliluokalle periytyvät tietojäsenet //Julkiset aliohjelmajäsenet ;