Web järjestelmän ohjelmointi Kevät 2012 Hans Nieminen
|
|
- Pertti Toivonen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Harjoitus 1 Käsiteltävät aiheet: C# kielen kertaus luokat, oliot ja periytyminen poikkeukset ja niiden käsittely tapahtumat ja niiden käsittely C# 3.0 uudet ominaisuudet Visual Studio projektin kansiot Visual Studio 2010 projekteihin liittyvät tiedostot tallentuvat kansioihin, jotka on määriteltävissä käyttäjäkohtaisesti toiminnolla Tools Opons: Projektitiedostojen (.sln ja.suo) sijaintikansio. Projekti Tehdään uusi Windows ohjelma WJOH1. File New Project Valitse Windows Forms Application ja anna nimeksi WJOH1. Tallenna projekti C levyn johonkin kansioon. Anna Solution name: kenttään sama nimi WJOH1. 1
2 Luokat Lisää nyt Solutioniin WJOH1 uusi projekti, johon toteutetaan harjoituksen luokat. Valitse Solution Explorer ikkunassa Solution WJOH1 ja avaa hiiren oikealla sen pikavalikko. Valitse vaihtoehto Add New Project... Valitse Class Library ja anna nimeksi WJOH1Luokat. 2
3 Poista WJOH1Luokat projektista sinne oletuksena tehty luokka Class1.cs ( hiiren oikealla pikavalikko, josta Delete). Toteuta WJOH1Luokat projektiin seuraavan luokkakaavion mukaiset luokat Henkilo, Tyontekija ja Osasto. 3
4 Uusi luokka lisätään projektiin toiminnolla Project Add Class... (tai Solution Explorer ikkunassa pikavalikosta Add Class...): Henkilo luokassa: Luokan näkyvyysmääreenä public. Kenttien näkyvyysmääreenä protected. Ominaisuudet EtuNimi, SukuNimi ja SyntymaAika kapseloivat vastaavat kentät. Ominaisuudessa Ika vain get metodi palauttaen syntymäajan ja kuluvan päivän perusteella lasketun iän vuosina. Konstruktoria ei tarvitse koodata. ToString() ylikirjoitetaan (override) palauttamaan henkilön nimen muodossa etunimi sukunimi. Tyontekija luokassa: Luokan näkyvyysmääreenä public. Periytetään luokasta Henkilo. Kenttien näkyvyysmääreenä private. Ominaisuudet Palkka, PalkkausPvm ja PaattymisPvm kapseloivat vastaavat kentät. Konstruktoreita kaksi: o kolme parametria, joiden arvot sijoitetaan ominaisuuksiin EtuNimi, SukuNimi ja SyntymaAika. o neljä parametria, joiden arvot sijoitetaan ominaisuuksiin EtuNimi, SukuNimi, SyntymaAika ja Palkka. Lisäksi ominaisuuteen PalkkausPvm sijoitetaan arvoksi kuluva päivämäärä. ToString() ylikirjoitetaan (override) palauttamaan työntekijän tiedot muodossa etunimi sukunimi ( syntymäpäivä). Osasto luokassa: Luokan näkyvyysmääreenä public. Ominaisuudet Nimi ja Tyontekijat kapseloivat vastaavat kentät. Ominaisuudessa HenkiloLkm on vain get metodi palauttaen Tyontekijat ominaisuuden sisältämän listan alkioiden määrän. Konstruktori, jonka parametri n sijoitetaan Nimi ominaisuuteen. Lisäksi ominaisuuteen Tyontekijat sijoitetaan uusi List<Tyontekija> olio. 4
5 ToString() ylikirjoitetaan (override) palauttamaan osaston nimen ja henkilömäärän muodossa nimi (henkilömäärä). Metodi Palkkaa(), jonka parametri h (Tyontekija olio) lisätään ominaisuuden Tyontekijat listalle ja parametri p sijoitetaan parametrin h sisältämän olion ominaisuuteen Palkka. Lisäksi sijoitetaan parametrissa välitetyn Tyontekija olion PalkkausPvm ominaisuuteen kuluva päivä. Metodi Erota(), jonka parametri h (Tyontekija olio) poistetaan ominaisuuden Tyontekijat listalta. Lisäksi sijoitetaan parametrissa välitetyn Tyontekija olion PaattymisPvm ominaisuuteen kuluva päivä. Poikkeusluokka ja poikkeuksen nostaminen Työntekijällä on palkka, jonka tulee olla ei negatiivinen desimaaliluku. Luodaan oma poikkeus NegatiivinenPalkkaException, joka synnytetään, jos palkaksi annetaan negatiivinen arvo. Lisää WJOH1Luokat projektiin luokka, joka periytetään luokasta ApplicationException ja joka sisältää neljä konstruktoria: public class NegatiivinenPalkkaException : ApplicationException public NegatiivinenPalkkaException() public NegatiivinenPalkkaException(string message) public NegatiivinenPalkkaException(string message, System.Exception inner) public NegatiivinenPalkkaException( System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) Muuta Tyontekija luokan Palkka ominaisuuden set metodin logiikka seuraavaksi: Jos uusi palkka on ei negatiivinen, sijoita arvo kenttään _palkka, muuten nosta (throw) NegatiivinenPalkkaException poikkeus luomalla olio konstruktorilla, johon argumentiksi merkkijono Palkka ei saa olla negatiivinen. Tapahtumat Luokkaan Osasto lisätään tapahtuma Palkkaaminen, joka syntyy aina uuden työntekijän palkkaamisen yhteydessä. tapahtuma Erottaminen, joka syntyy aina työntekijän erottamisen yhteydessä. Tavoitteena on mahdollistaa Osasto oliokohtainen reagointi palkkaamiseen ja erottamiseen. Tapahtumien määrittely Tee tiedostoon Osasto.cs seuraavat lisäykset: 5
6 Ota käyttöön nimiavaruus System.ComponentModel (tarvitaan luokan CancelEventArgs käytön takia). Määrittele ennen luokan Osasto määrittelyä tapahtumien tarvitsemat delegaattityypit näkyvyysmääreellä public: o delegaattityyppi PalkkaaminenHandler, joka määrittelee tapahtumakäsittelijöiden rakenteeksi: paluuarvo: ei ole parametrit: object tyyppinen sender, Tyontekija tyyppinen t ja CancelEventArgstyyppinen e o delegaattityyppi ErottaminenHandler, joka määrittelee tapahtumakäsittelijöiden rakenteeksi: paluuarvo: ei ole parametrit: object tyyppinen sender, Tyontekija tyyppinen t ja EventArgstyyppinen e Määrittele luokkaan Osasto tapahtumat: o Palkkaaminen, jonka tyyppinä on PalkkaaminenEventHandler o Erottaminen, jonka tyyppinä on ErottaminenEventHandler Tapahtumien synnyttäminen Lisää luokan Osasto metodin Palkkaa() olemassa olevan koodin eteen seuraava koodi: Jos tapahtumalla Palkkaaminen on arvo (vertaa arvoon null), o Määrittele paikallinen CancelEventArgs tyyppinen muuttuja ja sijoita sen arvoksi ko. tyypin olio. o Kutsu tapahtumaan sijoitettua metodia viittaamalla tapahtuman nimeen Palkkaaminen ja antamalla argumenteiksi nykyinen Osasto olio (eli merkintä this), palkattava Tyontekija olio (saatu argumenttina metodiin Palkkaa()) ja edellä luotu CancelEventArgs olio. o Jos CancelEventArgs olion ominaisuuden Cancel arvoksi on tullut tosi (true), lopeta metodin Palkkaa() suoritus tähän lauseella return. Tällöin varsinaista palkkaamista ei siis tapahdu. Näin tapahtumakäsittelijä voi estää metodin varsinaisen toiminnan. Lisää luokan Osasto metodin Erota() olemassa olevan koodin eteen seuraava koodi: Jos tapahtumalla Erottaminen on arvo (vertaa arvoon null), o Kutsu tapahtumaan sijoitettua metodia viittaamalla tapahtuman nimeen Erottaminen ja antamalla argumenteiksi nykyinen Osasto olio (eli merkintä this), erotettava Tyontekija olio (saatu argumenttina metodiin Palkkaa()) ja tässä luomasi EventArgs olio. Muokkaa vielä ToString() metodia niin, että sen palauttaman merkkijonon loppuun lisätään merkkijono PI, jos tapahtumalla Palkkaaminen on arvo ja merkkijono EI, jos tapahtumalla Erottaminen on arvo. Käyttöliittymä Lisää projektiin WJOH1 (eli Windows ohjelma) viittaus edellä tehtyyn luokkakirjastoon WJOH1Luokat: Valitse Solution Explorer ikkunassa WJOH1 projektin References kohdan pikavalikosta (hiiren oikea) Add Reference... 6
7 Valitse Add Reference ikkunassa projekti WJOH1Luokat ja paina OK. Siirry Windows ikkunan muokkaamiseen (välilehti Form1.cs[Design]*). Suurenna ikkunan kokoa vetämällä sitä reunoista ( muuta lisää tarpeen mukaan myöhemmin). 7
8 Siirry Properties ikkunaan (oletuksena oikessa reunassa) ja vaihda siinä ikkunan ominaisuuden Text arvoksi: Työntekijät Osastot. Tällöin muutos näkyy heti: Siirry sitten Toolbox ikkunaan (oletuksena vasemmassa reunassa). Toolbox ikkunan saa jäämään näkyviin nasta painikkeesta, josta ikkuna voidaan myös poistaa näkyvistä. Vedä ikkunaan seuraavat kontrollit: 8
9 TextBox Label Button ListBox CheckBox Siirry ikkunaa vastaavaan C# tiedostoon Form1.cs (esimerkiksi valitsemalla Design ikkunassa pikavalikosta View Code). Tarkasteltaessa koodia huomataan, että Windows ikkunaa vastaa Form luokasta (System.Windows.Forms.Form) periytetty luokka Form1. Luokan määrittely on jaettu kahteen eri tiedostoon (partial class): o Toiseen tiedoistoista kirjoitetaan omat koodit (Form1.cs) ja o toiseen muodostaa Visual Studio koodin (Form1.Designer.cs). Konstruktorissa kutsutaan metodia InitializeComponent(), jonka määrittely löytyy luokan toisesta tiedostosta (Form1.Designer.cs). Tutki myös tiedoston Form1.Designer.cs sisältöä. Huomaa, että jokainen lisätty kontrolli on Form1 luokan kenttä. InitializeComponent metodissa luodaan kenttiin oliot ja asetetaan olioiden ominaisuuksia ja tapahtumia. 9
10 Tarkastele myös Program.cs tiedoston sisältöä. Täältä huomaat, että ohjelman suoritus (= Program luokan staattisen Main metodin suoritus) sisältää muutaman Application luokan metodin kutsumisen, joista viimeistä kutsuttaessa luodaan Form1 olio. Osasto olioiden tapahtumakäsittelijät Ohjelmoi kaksi metodia, joita voidaan käyttää Osasto olioiden tapahtumien Palkkaaminen ja Erottaminen yhteydessä. Tapahtumalle Palkkaaminen mahdollisesti käytettävä metodi (paluuarvo ja parametrit on säädetty delegaattityypillä aiemmin) o_palkkaaminen: Metodin otsikko osa: private void o_palkkaaminen(object sender, Tyontekija h, CancelEventArgs e) Jos työntekijän (parametrissa h) sukunimi on Aaltonen, ei palkkausta suoriteta. Tällöin asetetaan CancelEventArgs olion ominaisuus Cancel arvoon tosi (true), mikä aiheuttaa Tyontekija luokan Palkkaa() metodissa (koodattiin aikaisemmin) toiminnan keskeytymisen. Muuten lisää ilmoitustaululle (ListBox) uusi rivi (Items.Add() metodilla), jossa tekstinä o vakio Osastolle o osaston nimi, joka saadaan metodin parametrista sender (sisältää Osasto olion) o vakio palkattu o henkilön tiedot, jotka saadaan metodin parametrin h (Tyontekija olio) metodilla ToString() Tapahtumalle Erottaminen mahdollisesti käytettävä metodi (paluuarvo ja parametrit on säädetty delegaattityypillä aiemmin) o_palkkaaminen: Metodin otsikko osa: private void o_erottaminen(object sender, Tyontekija h, EventArgs e) Lisää ilmoitustaululle (ListBox) uusi rivi (Items.Add() metodilla), jossa tekstinä o vakio Osastolta o osaston nimi, joka saadaan metodin parametrista sender (sisältää Osasto olion) o vakio erotettu o henkilön tiedot, jotka saadaan metodin parametrin h (Tyontekija olio) metodilla ToString() Ikkunan tapahtumakäsittelijät Windows Forms ohjelmassa itse ikkuna on Form luokasta periytetyn luokan (esim. Form1) olio. Tämä olio sisältää kenttiensä arvoina kaikki siihen sisällytetyt kontrollit. Jokaista kontrollia vastaa siis yksi kenttä ja sen arvona oleva olio. Jokaisella kontrollioliolla on valmiina monia eri tapahtumia, joille voidaan ohjelmoida tarpeen mukaan tapahtumakäsittelijöitä. Esimerkiksi ikkunan painikkeet ovat (System.Windows.Forms.)Button olioita. Button oliolla on Clicktapahtuma, joka syntyy käyttäjän napsauttaessa painiketta. Toteutetaan tapahtumakäsittelijä jokaiseen ikkunan viidestä painikkeesta. Tee Osasto olio Lisää painikkeen Tee Osasto olio Click tapahtumalle käsittelijä kaksoisnapsauttamalla sitä Design ikkunassa. Tällöin Form1.cs tiedostoon ilmestyy uusi metodi: private void button1_click(object sender, EventArgs e) 10
11 Lisäksi Form1.Designer.cs tiedostoon on button1 kentän sisältämän olion tapahtumalle Click sijoitettu arvoksi edellä mainittu metodi: this.button1.click += new System.EventHandler(this.button1_Click); Ohjelmoi tapahtumakäsittelijään seuraava toiminta: Määrittele paikallinen Osasto tyyppinen muuttuja o ja sijoita sen arvoksi uusi Osasto olio käyttäen konstruktorissa argumenttina TextBox kontrollin ominaisuutta Text (esim. textbox1.text = kontrollissa textbox1 näkyvä teksti). Ole tarkka, että viittaat oikeaan TextBox kontrolliin. Jos vaihtoehto Näytä palkkaukset ilmoitustaululla on valittuna (CheckBox kontrollin ominaisuus Checked), sijoita Osasto olion o tapahtumalle Palkkaaminen arvoksi uusi tapahtumakäsittelijä: o.palkkaaminen += new PalkkaaminenHandler(o_Palkkaaminen); Jos vaihtoehto Näytä erottamiset ilmoitustaululla on valittuna (CheckBox kontrollin ominaisuus Checked), sijoita Osasto olion o tapahtumalle Erottaminen arvoksi uusi tapahtumakäsittelijä: o.erottaminen += new ErottaminenHandler(o_Erottaminen); Lisää Osastot kontrollin (ListBox) Items kokoelmaan uusi olio metodilla Add() (esim. listbox1.items.add(o)). Poista teksti Osaston nimi TextBox kontrollista. Poista valinnat molemmista CheckBox kontrolleista. Tee Tyontekija olio Kaksoisnapsauta jälleen painiketta saadaksesi tapahtumakäsittelijän Click tapahtumalle. Ohjelmoi tapahtumakäsittelijään seuraava toiminta: Koska Tyontekija olion tekemisessä tarvitaan DateTime oliota ja koska arvo annetaan kuitenkin merkkijonona (olisi voitu käyttää myös Calendar kontrollia), voi käyttäjä antaa syntymäajaksi mitä tahansa. Mahdollisen virhetilanteen takia toteuta seuraavat try catch lauseella: o Määrittele paikallinen Tyontekija tyyppinen muuttuja t ja sijoita sen arvoksi uusi Tyontekija olio käyttäen konstruktorissa argumenttina TextBox kontrolleihin Työntekijän etunimi, Työntekijän sukunimi ja Syntymäaika syötettyjä arvoja. Huomaa, että syntymäaika tulee aikaansaada DateTime olioksi metodilla DateTime.Parse(). o Lisää ikkunan Työntekijät kontrollin (ListBox) Items kokoelmaan edellä tehty uusi Tyontekija olio metodilla Add(). o Jos edellisissä tuli jokin virhe (poikkeus), näytä viesti ikkunassa virheilmoituksena teksti Työntekijää ei voida tehdä: ja itse virheen syy. Viesti ikkuna saadaan näytettyä luokan MessageBox luokkametodilla Show antamalla esitettävä teksti argumenttina. Virheen syy saadaan catch osan Exception tyyppisen parametrin ominaisuudesta Message (esim. ex.message). Poista teksti Työntekijän etunimi, Työntekijän sukunimi ja Syntymäaika TextBox kontrolleista. Palkkaa Kaksoisnapsauta jälleen painiketta saadaksesi tapahtumakäsittelijän Click tapahtumalle. 11
12 Ohjelmoi tapahtumakäsittelijään seuraava toiminta: Määrittele paikallinen Osasto tyyppinen muuttuja o ja aseta sen arvoksi Osastot listalla valittuna oleva osasto, johon pääset käsiksi ListBox kontrollin SelectedItem ominaisuuden kautta. Huomaa, että SelectedItem on object tyyppinen, joten se täytyy tyyppimuuntaa Osasto tyyppiseksi. Määrittele vastaavasti paikallinen Tyontekija tyyppinen muuttuja t ja sen arvoksi Tyontekijat listalla valittuna oleva työntekijä. Koska palkka annetaan TextBox kontrollin avulla, voi käyttäjä jälleen syöttää mitä tahansa. Varaudutaan jälleen virheeseen kirjoittamalla toiminta try catch lauseeseen. try osassa: o kutsu Osasto olion Palkkaa() metodia antamalla argumenteiksi Tyontekija olio ja palkka (TextBox kontrollin Text ominaisuudesta muodostettu double arvo > Double.Parse()). o poista Osastot listalta käsiteltävänä oleva Osasto olio ja lisää se sitten heti takaisin listalle ( näin saadaan Osasto olion työntekijämäärä päivittymään). catch osia on nyt kaksi: o käsittele poikkeus NegatiivinenPalkkaException, joka syntyy yritettäessä sijoittaa Palkkaominaisuuteen negatiivista arvoa (ks. Tyontekija luokka). Käsittelynä tulostetaan viestiikkunaan teksti Palkka ei saa olla negatiivinen.. o käsittele kaikki muut poikkeukset (yleisesti Exception). Käsittelynä tulostetaan viestiikkunaan teksti Palkkaus epäonnistui: ja varsinainen virheen syy (ominaisuus Message). Poista teksti Palkka TextBox kontrollista. Erota Kaksoisnapsauta jälleen painiketta saadaksesi tapahtumakäsittelijän Click tapahtumalle. Ohjelmoi tapahtumakäsittelijään seuraava toiminta: Määrittele paikallinen Osasto tyyppinen muuttuja o ja aseta sen arvoksi Osastot listalla valittuna oleva osasto (samoin kuin painikkeen Palkkaa kohdalla). Määrittele vastaavasti paikallinen Tyontekija tyyppinen muuttuja t ja sen arvoksi Tyontekijat listalla valittuna oleva työntekijä. try osassa: o Jos Osasto olion o Tyontekijat ominaisuuden sisältämässä geneerisessä listassa (List<Tyontekija>) on Tyontekija olio t (o.tyontekijat.contains(t)) kutsu Osasto olion o metodia Erota antamalla argumentiksi Tyontekiija olio t. poista Osastot listalta käsiteltävänä oleva Osasto olio ja lisää se sitten heti takaisin listalle ( näin saadaan Osasto olion työntekijämäärä päivittymään). o Muuten tulosta viesti ikkunaan ilmoitus: Työntekijä x ei ole osastolla y, missä x on Tyontekija olion t metodi ToString() ja y on Osasto olion o ominaisuus Nimi. catch osassa: o käsittele kaikki poikkeukset (yleisesti Exception). Käsittelynä tulostetaan viesti ikkunaan teksti Erottaminen epäonnistui: ja varsinainen virheen syy (ominaisuus Message). Näytä työntekijät Kaksoisnapsauta jälleen painiketta saadaksesi tapahtumakäsittelijän Click tapahtumalle. Ohjelmoi tapahtumakäsittelijään seuraava toiminta: 12
13 Määrittele paikallinen Osasto tyyppinen muuttuja o ja aseta sen arvoksi Osastot listalla valittuna oleva osasto (samoin kuin edellä). Jos muuttuja sisältää arvon (vertaa arvoon null), o aseta otsikkoteksti Label kontrolliin (Text ominaisuuteen) yhdistämällä vakioteksti Osasto ja Osasto olion metodi ToString(). o Tyhjennä ListBox kontrollin aiempi sisältö kutsumalla Items kokoelman metodia Clear(). o Lisää Osasto olion o sisältämät Tyontekija oliot ListBox kontrolliin. Käytä esimerkiksi foreach lausetta. Ohjelman toiminta Lisää ensin uusi osasto antamalla nimi ja rastimalla molemmat kohdat sekä napsauttamalla lopuksi Tee Osasto olio: Lisää vielä toinen osasto niin, että rastit vain ylemmän vaihtoehdon. Esimerkiksi: Lisää sitten työntekijöitä antamalla nimi ja syntymäaika sekä napsauttamalla lopuksi Tee Työntekijä olio: Tee vielä kolme muuta työntekijää: 13
14 Palkkaa osastolle työntekijä valitsemalla osasto ja työntekijä sekä antamalla palkka: sekä napsauttamalla Palkkaa, jolloin ilmoitustaululle ilmestyy tieto palkkaamisesta (tapahtuma Palkkaa syntyy ja sen tapahtumakäsittelijä o_palkkaaminen suorittuu): Palkkaa muutkin työntekijät. Anna jonkun työntekijän kohdalla negatiivinen palkka, jolloin tulee virheilmoitus: Näytä osaston työntekijät valitsemalla osasto ja napsauttamalla Näytä työntekijät: Erota sitten lopuksi yksi työntekijä molemmista osastoista valitsemalla osasto ja työntekijä sekä napsauttamalla Erota: 14
15 Huomaa, että vain toisen osaston erottamiset näkyvät ilmoitustaululla: Toinen Windows ohjelmaprojekti (LinqTesti) Lisää ensin WJOH1Luokat projektin luokkiin Osasto ja Tyontekija konstruktori, jossa ei ole parametreja eikä suoritettavia lauseita. Tämä tehdään C# 3.0:n olion uutta alustustapaa varten. Lisää Solutioniin toinen Windows ohjelma: Valitse Solution Explorer ikkunassa Solution WJOH1 ja avaa hiiren oikealla sen pikavalikko. Valitse vaihtoehto Add New Project... Valitse Windows Forms Application ja anna nimeksi LinqTesti. Aseta tämä Windows ohjelma käynnistyväksi ohjelmaksi valitsemalla Solution Explorer ikkunassa projektin LinqTesti pikavalikosta (hiiren oikea) vaihtoehto Set as Startup Project. 15
16 Lisää LinqTesti projektin viittauksiin (References) viittaus projektiin WJOH1Luokat. o Valitse Solution Explorer ikkunassa LinqTesti projektin References kohdan pikavalikosta (hiiren oikea) Add Reference... o Valitse Add Reference ikkunassa projekti WJOH1Luokat ja paina OK. Olioiden ja kokoelmien alustus Lisää LinqTesti ohjelmaan Form_Load tapahtumakäsittelijä: Valitse Properties ikkunassa Form1. Valitse sitten Events välilehti. Kaksoisnapsauta Load tapahtuman vieressä olevaa ruutua. Tällöin syntyy Form1_Load tapahtumakäsittelijä (metodi) ja avautuu Form1.cs koodi ikkunaan. Lisää Form1.cs tiedostoon nimiavaruus WJOH1Luokat. Lisää Form1.cs tiedoston luokkaan tyyppiä List<Osasto> oleva kenttä osastot. 16
17 Kirjoita Form1_Load metodiin seuraava koodi: luo kenttään osastot uusi List<Osasto> olio käyttäen C# 3.0:n olioiden ja kokoelmien alustamistapaa: osastot = new List<Osasto> new Osasto Nimi = "Hallinto", Tyontekijat = new List<Tyontekija> new Tyontekija EtuNimi = "Matti", SukuNimi = "Mainio", Palkka = 2100, SyntymaAika = new DateTime(1965,3,13), PalkkausPvm = new DateTime(1990,7,1), new Tyontekija EtuNimi = "Jussi", SukuNimi = "Juonio", Palkka = 2500, SyntymaAika = new DateTime(1964,9,7), PalkkausPvm = new DateTime(1988,5,1), new Tyontekija EtuNimi = "Matti", SukuNimi = "Meikäläinen", Palkka = 1990, SyntymaAika = new DateTime(1972,3,13), PalkkausPvm = new DateTime(1997,7,1), new Tyontekija EtuNimi = "Jussi", SukuNimi = "Juurela", Palkka = 2500, SyntymaAika = new DateTime(1974,12,29), PalkkausPvm = new DateTime(1997,5,1), new Osasto Nimi = "Varasto", Tyontekijat = new List<Tyontekija> new Tyontekija EtuNimi = "Matti", SukuNimi = "Mattila", Palkka = 1800, SyntymaAika = new DateTime(1958,3,13), PalkkausPvm = new DateTime(1985,7,1), new Tyontekija EtuNimi = "Maija", SukuNimi = "Mattila", Palkka = 1850, SyntymaAika = new DateTime(1961,9,7), PalkkausPvm = new DateTime(1983,5,1), 17
18 ; new Tyontekija EtuNimi = "Matti-Pekka", SukuNimi = "Mattila", Palkka = 1690, SyntymaAika = new DateTime(1981,3,13), PalkkausPvm = new DateTime(2005,9,1), new Tyontekija EtuNimi = "Kaija", SukuNimi = "Mattila", Palkka = 1500, SyntymaAika = new DateTime(1983,12,29), PalkkausPvm = new DateTime(2008,1,1), new Tyontekija EtuNimi = "Pentti", SukuNimi = "Pekkala", Palkka = 1850, SyntymaAika = new DateTime(1966,9,7), PalkkausPvm = new DateTime(1985,5,1), new Tyontekija EtuNimi = "Eija", SukuNimi = "Laakso-Pekkala", Palkka = 1690, SyntymaAika = new DateTime(1971,3,13), PalkkausPvm = new DateTime(2000,9,1), new Tyontekija EtuNimi = "Mikael", SukuNimi = "Pekkala", Palkka = 1100, SyntymaAika = new DateTime(1993,12,29), PalkkausPvm = new DateTime(2010,1,1) Lisää Form1 ikkunaan kontrollit: LinkLabel kontrolli, johon teksti Kaikki osastot. DataGridView kontrolli, jonka Anchor ominaisuus asetetaan seuraavasti: 18
19 Lisää sitten LinkLabel kontrollille tapahtuman Click käsittelijä ( toimi samalla idealla kuin Form_Loadkäsittelijän kanssa): aseta DataGridView kontrollin ominaisuuden DataSource arvoksi osastot kentän sisältämä lista Testaa. Linq kyselyt Lisää Form1 ikkunaan Label, johon tekstiksi Osasto TextBox LinkLabel kontrolli, johon teksti Hae osasto (LINQ). LinkLabel kontrolli, johon teksti Hae osasto (laajennusmetodein). Lisää sitten molemmille LinkLabel kontrolleille tapahtuman Click käsittelijä. Hae osasto (LINQ) linkin tapahtumakäsittelijässä: if (textbox1.text.length > 0) var q = (from o in osastot where o.nimi.toupper() == textbox1.text.toupper() 19
20 select o).tolist(); datagridview1.datasource = q; else MessageBox.Show("Osaston nimi puuttuu."); huomaa implisiittinen tietotyyppi var kyselylauseke from where select tuloksen muuttaminen listaksi ToList() metodilla o IEnumerable rajapinnan metodi voidaan kutsua kaikkien LINQ kyselyjen yhteydessä Hae osasto (laajennusmetodein) linkin tapahtumakäsittelijässä: if (textbox1.text.length > 0) var q = osastot.where(o => o.nimi.toupper() == textbox1.text.toupper()).tolist(); datagridview1.datasource = q; else MessageBox.Show("Osaston nimi puuttuu."); huomaa laajennusmetodin Where() käyttäminen huomaa metodin Where() argumentti: lambda lauseke (parametri on siis delegaattityyppinen: metodi, joka palauttaa totuusarvon) o kääntäjä osaa päätellä parametrin o tyypin o koska lauseita on vain yksi, se tulkitaan automaattisesti return lauseeksi o käy läpi oliokokoelman (tässä tapauksessa Osasto listan osastot) oliot ja suorittaa jokaiselle lambda lausekkeen, jos paluuarvo on tosi, lisää olion uudelle Osasto listalle valitsee siis oliot ehtolausekkeen perusteella. Lisää Form1 ikkunaan LinkLabel kontrolli, johon teksti Osaston työntekijät. LinkLabel kontrolli, johon teksti Kaikki työntekijät. 20
21 Lisää sitten molemmille LinkLabel kontrolleille tapahtuman Click käsittelijä. Osaston työntekijät linkin tapahtumakäsittelijässä: if (textbox1.text.length > 0) var q = (from o in osastot from t in o.tyontekijat where o.nimi.toupper() == textbox1.text.toupper() select t).tolist(); datagridview1.datasource = q; else MessageBox.Show("Osaston nimi puuttuu."); huomaa kaksi peräkkäistä from osaa ristiliitos Kaikki työntekijät linkin tapahtumakäsittelijässä: var q = (from o in osastot from t in o.tyontekijat orderby t.ika descending select new OsastoNimi = o.nimi, TyöntekijäNimi = t.etunimi + " " + t.sukunimi, Ikä = t.ika ).ToList(); datagridview1.datasource = q; huomaa olioiden järjestäminen eli orderby osa huomaa select osan anonyymin tyypin käyttö 21
22 Lisää taas Form1 ikkunaan LinkLabel kontrolli, johon teksti Osastokohtainen keski ikä. Tee tälle Click tapahtuman käsittelijä, jossa var q = (from o in osastot from t in o.tyontekijat group t by o.nimi into osastogroup select new Osasto = osastogroup.key, KeskiIka = osastogroup.average(t => t.ika) ).ToList(); datagridview1.datasource = q; huomaa ryhmittelyn käyttäminen eli group osa anonyymissä tyypissä keski iän laskemiseen käytetään laajennusmetodia Average, jossa lambdalauseke Lisää jälleen Form1 ikkunaan LinkLabel kontrolli, johon teksti Yli 30 vuotiaita työntekijöitä. Tee Click tapahtuman käsittelijässä, jossa var q = (from o in osastot select new Osasto = o.nimi, 22
23 Yli30v = o.tyontekijat.count(t => t.ika > 30) ).ToList(); datagridview1.datasource = q; 23
Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:
Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int
LisätiedotWeb Services tietokantaohjelmoinnin perusteet
ASP.NET Web Services Web Services tietokantaohjelmoinnin 2 (22) Sisällys Harjoitus 1: Tietokannat ja Web Services... 3 Harjoitus 2: Windows Client... 10 Harjoitus 3: Datan päivitys TableAdapterin avulla...
LisätiedotC# Windows ohjelmointi perusopas
Paavo Räisänen C# Windows ohjelmointi perusopas www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta ei saa
LisätiedotOlio-ohjelmointi Javalla
1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi
Lisätiedot14. Poikkeukset 14.1
14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.
LisätiedotSisällys. 14. Poikkeukset. Johdanto. Johdanto
Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.
LisätiedotJypelin käyttöohjeet» Ruutukentän luominen
Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen
LisätiedotMetodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen
Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus
LisätiedotListarakenne (ArrayList-luokka)
Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen
LisätiedotMikä yhteyssuhde on?
1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String
LisätiedotOhjelmoinnin jatkokurssi, kurssikoe 28.4.2014
Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.
Lisätiedot14. Poikkeukset 14.1
14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla
LisätiedotSisällys. 14. Poikkeukset. Johdanto. Johdanto
Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla
LisätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja
LisätiedotTaulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu
Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on
Lisätiedoton ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä
LUOKAN MÄÄRITTELY Luokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion muodostimet ja luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Olion kopioiminen
LisätiedotJAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?
JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,
LisätiedotOperaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta
C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus
LisätiedotRajapinta (interface)
1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä
LisätiedotSisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2
4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely
LisätiedotMicrosoft Visual Studio 2005
Sovelluksen jako palvelimiksi: Palvelin on sille annettuun vastuulliseen tehtävään erikoistunut sovellusosa. Käyttöliittymäpalvelin (Web-palvelin) vastaa käyttöliittymän toteuttamisesta. Web-palvelin toteuttaa
LisätiedotSisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista
Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma
LisätiedotJavan perusteita. Janne Käki
Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).
Lisätiedot1. Omat operaatiot 1.1
1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma
LisätiedotHarjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
LisätiedotInformaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006
TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa
LisätiedotTaulukot. Jukka Harju, Jukka Juslin 2006 1
Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti
LisätiedotKOHDELUOKAN MÄÄRITTELY
KOHDELUOKAN MÄÄRITTELY Kohdeluokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Taulukon alkiona
LisätiedotOlion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();
Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio
LisätiedotOhjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:
1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri
LisätiedotJUnit ja EasyMock (TilaustenKäsittely)
OHJELMISTOJEN TESTAUS JA HALLINTA Syksy 2015 / Auvo Häkkinen JUnit ja EasyMock (TilaustenKäsittely) Tehtävässä tarvittava koodi löytyy osoitteella http://users.metropolia.fi/~hakka/oth/mockesimerkki.zip
LisätiedotVertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004
Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;
LisätiedotTietokannat II -kurssin harjoitustyö
Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen
Lisätiedot1 Tehtävän kuvaus ja analysointi
Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
LisätiedotSisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2
4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat
LisätiedotPeriytyminen (inheritance)
1 Periytyminen (inheritance) Mitä periytyminen on? Yli- ja aliluokka Konstruktorit Get- ja set-metodi Muut metodit tostring Yksinkertainen pääohjelma 1 Mitä periytyminen on? Periytymisen avulla olemassa
LisätiedotPong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi
Muilla kielillä: English Suomi Pong-peli, vaihe 7 Tässä vaiheessa lisäämme peliin pistelaskun. Pong-pelissä pelaaja saa pisteen kun pallo ohittaa toisen pelaajan mailan. 1. Aliohjelmakutsu laskureita varten
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman
Lisätiedot9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.
LisätiedotKompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma
1 Kompositio Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä kompositio on? Tili - : String - : double 1 1 Kayttoraja
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.
LisätiedotOhjelmointikielet ja -paradigmat 5op. Markus Norrena
Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja
LisätiedotGraafisen käyttöliittymän ohjelmointi
TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Luento 2 Tapahtumapohjainen ohjelmointi Juha-Matti Vanhatupa Sisältö Tapahtumapohjainen ohjelmointi Tapahtumakuuntelijoiden
Lisätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:
LisätiedotAjokorttimoduuli Moduuli 2. - Laitteenkäyttö ja tiedonhallinta. Harjoitus 1
Ajokorttimoduuli Moduuli 2 - Laitteenkäyttö ja tiedonhallinta Harjoitus 1 Tämän harjoituksen avulla opit alustamaan levykkeesi (voit käyttää levykkeen sijasta myös USBmuistitikkua). Harjoitus tehdään Resurssienhallinnassa.
Lisätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien
LisätiedotHaaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:
Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Microsoft SQL käyttö Yleistä VisualStudiosta Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: - sovellushallintaan -
LisätiedotSähköposti ja uutisryhmät 4.5.2005
Outlook Express Käyttöliittymä Outlook Express on windows käyttöön tarkoitettu sähköpostin ja uutisryhmien luku- ja kirjoitussovellus. Se käynnistyy joko omasta kuvakkeestaan työpöydältä tai Internet Explorer
Lisätiedot815338A Ohjelmointikielten periaatteet
815338A Ohjelmointikielten periaatteet 2015-2016 VIII Poikkeusten ja tapahtumien käsittely Sisältö 1. Poikkeusten käsittelyn käsitteitä ja suunnittelukriteerejä 2. Poikkeusten käsittely C++:ssa 3. Poikkeusten
LisätiedotA) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)
1(37) PERIYTYMINEN (inheritance) YLILUOKKA (superclass) ALILUOKKA (subclass) A) on käytännöllinen ohjelmointitekniikka = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) B) on käsitteiden
LisätiedotPoikkeustenkäsittely
1 Poikkeustenkäsittely Mitä poikkeustenkäsittely tarkoittaa? Poikkeuksen käsitteleminen Poikkeusluokkien hierarkia Poikkeuksen heittäminen 1 Mitä poikkeustenkäsittely tarkoittaa? Poikkeus (Exception) on
LisätiedotOhjelmointi 2 / 2010 Välikoe / 26.3
Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään
LisätiedotSisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)
Sisällys JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys Periytyminen (inheritance) Näkyvyys (visibility) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E. Hyvönen: Java Osa
LisätiedotApuja ohjelmointiin» Yleisiä virheitä
Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti
LisätiedotMuistitikun liittäminen tietokoneeseen
Muistitikun käyttäminen 1 Muistitikun liittäminen tietokoneeseen Muistitikku liitetään tietokoneen USB-porttiin. Koneessa voi olla useita USB-portteja ja tikun voi liittää mihin tahansa niistä. USB-portti
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä
812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus
Lisätiedot19. Olio-ohjelmointia Javalla 19.1
19. Olio-ohjelmointia Javalla 19.1 Sisällys Olioiden esittely ja alustus. Metodit Yleistä metodeista. Mihin metodeja tarvitaan? Metodien määrittely. Omat metodit: nimeäminen, paikka, kutsuminen, parametrit
LisätiedotInternet Explorer 7 & 8 pop-up asetukset
Sivu 1(8) Internet Explorer 7 & 8 pop-up asetukset www.procountor.com Internet Explorer 7 ja 8 sisältää pop-up ikkunoiden esto toiminnon. ProCountor -Taloushallintoohjelmistossa voidaan raportit tulostaa
LisätiedotInteraktiivinen tarinankerronta
Interaktiivinen tarinankerronta Tehtävä 1: Tarinan alku pääohjelmaan Main. java ei tehdä muutoksia tulostusrivit tiedostoon Kayttoliittyma.java tulostus lyhyesti sout + tab komennolla Tiedoston Kayttoliittyma.java
Lisätiedot5 Näppäimistö. 5.1 Näppäimistön eventit
5 Näppäimistö Näppäimistö (Keyboard) on Windows Forms -ohjelmissa keskeisessä asemassa. Erityisesti erilaisissa tekstinkäsittelyohjelmissa ja ohjelmissa, joissa tarvitaan datan syöttämistä esimerkiksi
LisätiedotOlio-ohjelmointi Virhetilanteiden käsittely
Olio-ohjelmointi 2016 Virhetilanteiden käsittely Poikkeustilanteet n Java-järjestelmässä voidaan ottaa kiinni ohjelman suoritusaikana tapahtuvia virhetilanteita, joita ei saada kiinni tavanomaisilla ohjausrakenteilla
Lisätiedot10 Lock Lock-lause
10 Lock Avainsanan lock (Lock keyword) avulla voidaan toteuttaa prosessien ja säikeiden välisessä keskinäisessä kommunikoinnissa käytettäviä synkronointi- ja poissuljentarakenteita. Tämän niin sanotun
LisätiedotSisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus
Sisällys 19. Olio-ohjelmointia Javalla Olioiden esittely ja alustus. Metodit Yleistä metodeista. Mihin metodeja tarvitaan? Metodien määrittely. Omat metodit: nimeäminen, paikka, kutsuminen, parametrit
LisätiedotJava kahdessa tunnissa. Jyry Suvilehto
Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,
LisätiedotYHTEYSSUHDE (assosiation)
YHTEYSSUHDE (assosiation) -Mikä on yhteyssuhde? -Miten toteutan yhteyssuhteen? 1 Mikä on yhteyssuhde? Yhteyssuhde kuvaa kahden olion välistä suhdetta: Esim. Auto Henkilö, omistussuhde Tili Asiakas, omistussuhde
Lisätiedot815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.
LisätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero
LisätiedotAlkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)
Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,
LisätiedotUML ja luokkien väliset suhteet
UML ja luokkien väliset suhteet -Luokan kuvaaminen UML-tekniikalla -Yhteyssuhde ja koostumussuhde 1 Luokan kuvaaminen UML-tekniikalla : Luokka - attribuutti1 : tietotyyppi # attribuutti2 : tietotyyppi
LisätiedotSisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä
Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
LisätiedotSQL-perusteet, SELECT-, INSERT-, CREATE-lauseet
SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin
LisätiedotPong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana
Muilla kielillä: English Suomi Pong-peli, vaihe 2 Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Laitetaan pallo liikkeelle Tehdään kentälle reunat Vaihdetaan kentän taustaväri Zoomataan
LisätiedotTimeEdit opiskelijan ohje TimeEdit-instructions for students from this link
TimeEdit opiskelijan ohje TimeEdit-instructions for students from this link TimeEdit on työjärjestys- (lukujärjestys) ja tilanvarausohjelmisto. Sisältö 1 Oikeudet... 2 2 TimeEdit Web... 2 3 Kirjautuminen...
LisätiedotJava-kielen perusteet
Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet
Lisätiedot9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
LisätiedotSisältö. 2. Taulukot. Yleistä. Yleistä
Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä
LisätiedotSisältö. 22. Taulukot. Yleistä. Yleistä
Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä
Lisätiedot3.3 Kurssin palauttaminen
3.3 Kurssin palauttaminen Yleistä kurssin palauttamisesta Kurssipohjan tulee olla luotuna Moodleen ennen kuin sen päälle voi palauttaa varmuuskopion. Yleensä palauttaminen kannattaa tehdä siten, että entisen
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle
LisätiedotMetodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet
Metodit Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin return; -lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua Metodi voi palauttaa alkeistyypin tai olion Tällöin
LisätiedotOpenOffice.org Base 3.1.0
OpenOffice.org Base 3.1.0 Sisällysluettelo 1 Tietokannan luominen...1 2 Taulukon eli taulun luominen...3 3 Kysely...9 4 Raportti...14 1 Tietokannan luominen Tietokanta on kokoelma tietoja, joilla on yhteys
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 8.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 8.2.2010 1 / 38 Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta ohjelma
LisätiedotHarjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016)
Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Tietokoneavusteinen opetus -kurssilla opetetaan Adobe Flash CS6:n käyttämistä neljänä kertana: 11.3.2016, 15.3.2016, 18.3.2016 ja 1.4.2016. Harjoituskerroilla
Lisätiedot812341A Olio-ohjelmointi Peruskäsitteet jatkoa
812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää
LisätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Poikkeukset Poikkeuksella tarkoitetaan yllättävää ajonaikaista tilannetta, joka
LisätiedotDialogit. Juha Järvensivu 2008
Dialogit Juha Järvensivu juha.jarvensivu@tut.fi 2008 Yleistä 2 vaihtoehtoista toteutusmekanismia Layoutteihin perustuva dialogi Absoluuttisiin koordinaatteihin perustuva dialogi Haasteita 1. Dialogin selkeä
LisätiedotWilman käyttöohje huoltajille
Wilman käyttöohje huoltajille Sisällysluettelo: Sisään kirjautuminen... 1 Oma etusivu... 2 Pikaviestit... 3 Tiedotteet... 5 Suoritukset... 6 Poissaolot... 6 Palaute... 8 Opettajat... 9 Salasanan vaihto...
Lisätiedot4. Luokan testaus ja käyttö olion kautta 4.1
4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään
LisätiedotTukipyyntö-toiminnon ohje
Tukipyyntö-toiminnon ohje Diagnoosilaitteen teknisen tukipyyntötoiminnon avulla avataan teknistä tukea koskeva asiakirja, joka sisältää tietoja ongelmatilanteen ratkaisemiseksi. Sen kautta saadaan käyttöön
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat
LisätiedotC# olio-ohjelmointi perusopas
Paavo Räisänen C# olio-ohjelmointi perusopas www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta ei saa
LisätiedotCollector for ArcGIS. Ohje /
Collector for ArcGIS Ohje / 10.5.2019 2 (11) Sisältö 1. Collector for ArcGIS... 3 2. Kartan luominen ArcGIS Onlinessa... 3 2.1 Karttatason luominen... 3 2.2 Ominaisuustietotaulun kenttien määrittäminen...
LisätiedotHYVÄKSILUKEMISEN TEKEMINEN ILMAN ENNAKKOPÄÄTÖSTÄ
HYVÄKSILUKEMISEN TEKEMINEN ILMAN ENNAKKOPÄÄTÖSTÄ Valitse Opintojen rekisteröinti -valikosta komento. Ikkuna aukeaa. Voit valita Näytettävät opinnot - osiosta, mitkä opiskelijan suorituksista näkyvät aktiivisina
LisätiedotLuokan sisällä on lista
1 Luokan sisällä on lista Luokan sisällä lista Listan sisältävä luokka Konstruktorit get-metodi Lista muissa metodeissa addxx-metodi Yksinkertainen pääohjelma Kertauksen List-luokan metodeja 1 Luokan sisällä
LisätiedotSisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä
Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat
Lisätiedot