1 / 39

Luku 8 – Edistyneitä aiheita

Luku 8 – Edistyneitä aiheita. Sisältö ❸. C#-kielen tehokas käyttö Asynkroninen ohjelmointi LINQ-kyselykieli Visual Studio 2013 ja Blend 2013 Versionhallinta pilvestä XAML-vinkkejä Marginaalit ja sopimukset Sovellusten lokalisointi Tehtäviä Kysymyksiä ja vastauksia.

michon
Download Presentation

Luku 8 – Edistyneitä aiheita

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. Luku 8 – Edistyneitä aiheita

  2. Sisältö❸ • C#-kielen tehokas käyttö • Asynkroninen ohjelmointi • LINQ-kyselykieli • Visual Studio 2013 ja Blend 2013 • Versionhallinta pilvestä • XAML-vinkkejä • Marginaalit ja sopimukset • Sovellusten lokalisointi • Tehtäviä • Kysymyksiä ja vastauksia

  3. C#-kielen tehokas käyttö • Ohjelmointikielenä C#-kieli on tehokas ja monipuolinen • Paljon nykyaikaisia ominaisuuksia • Esimerkiksi geneerisettietotyypit, tuki asynkroniselle ohjelmoinnille ja rinnakkaisuudelle, integroitu kyselykieli, jne. • Seuraavassa tutustutaan muutamiin C#-kielen hyödyllisiin ominaisuuksiin

  4. Asynkroninen ohjelmointi • Asynkronisuus tarkoittaa ohjelmoinnissa sitä, että kaksi tai useampaa toimintoa suoritetaan rinnakkain eli yhtä aikaa • Eikä peräkkäin kuten ohjelmoinnissa perinteisesti • Asynkronisen ohjelmoinnin avulla ratkaistaan ongelma, jossa sovellus näyttää pysähtyvän paikalleen tehdessään jotain • Esimerkiksi silloin, kun sovellus ollaan lataamassa kookasta tiedostoa verkosta

  5. C# ja asynkronisuus • C#-ohjelmointkieli tekee asynkronisesta ohjelmoinnista helppoa uusien async- ja await-avainsanojen avulla • Apuna käytetään runsaasti Task-luokkaa, joka on osa Windows 8:n luokkakirjastoja

  6. Koodiesimerkki private async void StartButton_Click( object sender, RoutedEventArgs e) { try { Task<int> intTask = ExampleMethodAsync(); ResultsTextBox.Text+= "Tehdäänjotainsamalla " + "kun metodiasuoritetaan"; intintResult = awaitintTask; ResultsTextBox.Text+= String.Format( "Length: {0}\n\n", intResult); } catch (Exception) { //... } }

  7. LINQ-kyselykieli • Lyhenne sanoista Language IntegratedQuery • Äännetään ”link” tai ”lin-quu” • LINQ on C#-ohjemointikieleen integroitu kyselykieli, jonka avulla helpotetaan tietojen hakemista ja etsimistä erilaisista tietolähteistä • Syntaksi muistuttaa SQL-kieltä • Jos tunnet jo SQL-kieltä, on LINQ helppo oppia

  8. Esimerkki LINQ-kyselystä int[] luvut = {5,3,9,7,1,6,10,4,2}; var lajiteltuna = from l in luvut where l > 5 orderby l select l; foreach (int luku in lajiteltuna) { // näytä luku ruudulla... }

  9. LINQ-kielen tukema tietolähteet • Edellisessä esimerkissä näytettiin LINQ-kysely, joka hakee lukuja taulukosta (engl. array) • Taulukkojen tai sovelluksen sisäisten olioiden lisäksi LINQ osaa hakea tietoja esimerkiksi SQL-tietokannoista • Muita tuettuja tietolähteitä ovat esimerkiksi XML-tiedostot ja webistä löytyvät tietolähteet

  10. Toinen esimerkki NorthwindEntitiesentities = newNorthwindEntities(); varsuomalaisetAsiakkaat = from c in entities.Customers where c.Country == "Finland" orderbyc.CompanyName select c; foreach (var asiakas in suomalaisetAsiakkaat) { int tilausmäärä = asiakas.Orders.Count; // muuta käsittelyä... }

  11. Visual Studio 2013 ja Blend • Visual Studio ja Blend ovat työvälinepari, joita kumpaakin tarvitset Windows 8 -sovellusten kehittämiseen • Välineet on suunniteltu niin, että niiden yhteiskäyttö on vaivatonta • Kun olet avannut Windows 8 -sovelluksen Visual Studioon, voit helposti siirtyä muokkaamaan mitä tahansa XAML-tiedostoa Blendiin • Helpoiten tämä onnistuu Visual Studion Solution Explorer -ikkunan kautta, jonka pikavalikosta voit valita komennon ”Open in Blend”.

  12. Blendin käynnistäminen

  13. Versionhallinnan käsite • Versionhallinta on olennainen osa mitä tahansa ohjelmistoprojektia • Versionhallinnan avulla useamman kehittäjän yhtäaikaiset muutokset pysyvät järjestyksessä • Tarvittaessa jo kertaalleen muutettu tai poistettu ohjelmakoodi saadaan palautettua takaisin • Versionhallintajärjestelmien perusteiden hallinta on hyvä taito kaikille ohjelmistokehittäjille

  14. Microsoftin ratkaisu • Visual Studio toimii hyvin yhteen valmistajan oman versionhallintapalvelun kanssa • Palvelun nimi on Team Foundation Service, lyhyesti TFS • Palvelu on pilvipalvelu, jota käytetään suoraan Visual Studiosta tai web-selaimella

  15. Team Foundation Service

  16. TFS:n käyttö Visual Studiosta • Rekisteröityessäsi TFS-pilvipalveluun voit valita palvelulle haluamasi nimen • Tästä nimestä muodostuu sinulle varatun palvelun internet-osoite, jonka Visual Studio haluaa tietää • Yhdistäminen tehdään Visual Studion Team Explorer -ikkunan kautta • Kun yhdistäminen on kerran tehty, voit käyttää versionhallintaan jatkossakin ilman eri määrityksiä

  17. TFS-palvelimen tiedot

  18. CodePlex-palvelu • CodePlex on kaikille avoin web-palvelu, jossa voidaan kehittää avoimen lähdekoodin ratkaisuja yhteisöllisesti • CodePlex-palveluun kuuluu TFS-pohjainen versionhallinnan kevytversio • CodePlex-palvelulla on kymmeniä tuhansia aktiivisia käyttäjiä, ja sieltä löydätkin monia mielenkiintoisia projekteja

  19. XAML-vinkkejä • Windows 8 -sovellusten käyttöliittymien kuvaamiseen käytetään XAML-kieltä • Kielen ominaisuuksien hyvä hallinta auttaa kehittämään parempia sovelluksia nopeammin • Seuraavassa esitetään kolme vinkkiä parempaan XAML-ohjelmointiin

  20. Komponenttien marginaalit • Monien käyttöliittymäkomponenttien sijainti ja koko määritellään Margin-nimisellä ominaisuudella • Margin-ominaisuuden arvot ovat suhteellisia, ja riippuvat siitä minkä toisen komponentin sisällä toinen komponentti on

  21. Esimerkki • XAML-koodissa marginaalit voidaan määritellä esimerkiksi näin:<RectangleMargin="7,7,40,20" /> • Margin-ominaisuuden muodostaa neljä lukua, jotka edustavat komponentin kunkin reunan etäisyyttä äiti-elementin reunoista • Lukujen järjestys on vasen, ylä, oikea, ala

  22. Margin-asetus Visual Studiossa

  23. Sopimukset (engl. contracts) • Windows 8 -sovellukset voivat käyttää niin sanottuja sopimuksia kytkeytyäkseen osaksi käyttöjärjestelmän toimintoja • Sopimusten avulla käyttöjärjestelmä ja sovelluksesi (tai muut sovellukset) voivat vaihtaa tietoja keskenään • Näin tiettyjä perustoimintoja ei tarvitse toteuttaa jokaisessa sovelluksessa erikseen

  24. Haku-sopimus • Yksi esimerkki tällaisesta kytkeytymisestä on Windows-käyttöjärjestelmän hakutoiminto • Haku-sopimuksen avulla sovelluksesi sisältämät tiedot tulevat mukaan hakutuloksiin, kun käyttäjä hakee tietoja käyttöjärjestelmän omalla hakutoiminnolla • Sisältö voi olla tekstiä, kuvia, videoita, jne.

  25. Käyttöjärjestelmän hakutoiminto

  26. Sovellusten lokalisointi • Kun kehitettävä Windows 8 -sovellus tai peli on sellainen, että sitä voitaisiin käyttää myös Suomen rajojen ulkopuolella, on pohdittava, pitäisikö sovelluksen käyttöliittymä kääntää eri kielille • Windows 8 -sovellukset voidaan pienellä vaivalla kääntää useille kielille

  27. Kääntämisen kaksi osa-aluetta • Kääntämiseen liittyy kaksi eri asiaa, joista käytetään nimityksiä lokalisaatio ja globalisaatio (engl. localization, globalization) • Lokalisaatio • Sovelluksen kääntämistä ja sovittamista kohdekulttuuriin (esimerkiksi värimaailma ja ikonit, pelien sanaleikit, ja niin edelleen) • Globalisaatio • Suomen-tai englanninkielinen sovellus ohjelmoidaan tukemaan erilaisia päivämäärä-, valuutta- ja lukujen desimaalierottimia ilman, että käyttöliittymän tekstejä käännetään

  28. Ohjelmallinen selvittäminen • Ohjelmakoodissa voit selvittää käyttäjän valitseman kielen sekä käyttöjärjestelmän kielen • Kirjastoluokat • Windows.Globalization.Language • System.Globalization.CultureInfo

  29. Esimerkki string näppäimistö = Windows. Globalization.Language. CurrentInputMethodLanguageTag; string käyttöjärjestelmä = System. Globalization.CultureInfo. CurrentCulture.Name;

  30. Käyttöliittymän kääntäminen • Käyttöliittymän kääntämiseen eri kielille kannattaa käyttää niin sanottuja resurssitiedostoja (engl. resourcefiles) • Ajatuksena on, että vaikkapa TextBlock- ja Button-komponenttien näyttämää tekstiä ei kirjoiteta suoraan xaml-koodiin, vaan tekstit syötetään kullekin kielelle tarkoitettuun resurssitiedostoon • Resurssitiedostot tunnistaa Visual Studion Solution Explorer -ikkunassa .resw-tiedostopäätteestä

  31. Resurssitiedostojen tallennuspaikka • Resurssitiedostot tallennetaan Strings-nimiseen alikansioon projektissa • Kansio on luotava tarvittaessa itse • Tämän kansion alle perustetaan edelleen alikansioita kutakin kielikoodia varten • Kielikoodit ovat muotoa ”xx-XX” • Esimerkiksi suomenkielisellä sovelluksella alikansion nimi on ”fi-FI”

  32. Tallennuskansio

  33. Resurssitiedostojen muokkaus • Resurssitiedostoja muokataan Visual Studiossa Excelin kaltaisessa taulukossa, jossa vasemmalla on niin sanottu avain (engl. key) ja oikealla arvo (value) • Leikepöydän kautta tiedot voidaan tarvittaessa viedä Exceliin, jolloin tiedoston voi lähettää vaikkapa käännöstoimistoon käännettäväksi • Avain muodostuu kahdesta osasta, ensin halutusta yksilöivästä nimestä (esimerkiksi komponentin nimi) ja tämän jälkeen pisteellä erotetusta ominaisuuden nimestä, joka halutaan lokalisoida • Esimerkiksi ”Nappi.Content”

  34. Visual Studion muokkausnäkymä

  35. Lokalisoitu XAML-määritys • Jotta lokalisointi resurssitiedostojen kautta saataisiin toimimaan, määritellään kullekin käyttöliittymäkomponentille niin sanottu Uid-attribuutti • Huomaa, että XAML-koodiin voidaan jättää alkuperäinen määritys kuten vaikkapa painikkeen (engl. button) ruudulla näyttämä teksti • Kun sovellusta ajetaan, käyttöjärjestelmä hakee resurssitiedostosta käyttäjän kielen mukaisen tekstin, ja korvaa XAML-koodissa olleen arvon automaattisesti

  36. Esimerkki Uid-arvo <Button x:Uid="OmaNappi" Content="Painike" /> Lokalisoitava ominaisuus Name-ominaisuudesta saadaan selville mitä komponenttia arvo koskee (Uid-arvo) sekä mikä ominaisuus tulisi lokalisoida.Muoto on ”komponentti.ominaisuus”.

  37. Tehtäviä • Keksi esimerkkejä tilanteista, joissa asynkronisuudesta on apua Windows 8 -sovelluksissa. • Blend sopii Windows 8 -sovellusten graafisten ominaisuuksien kehittämiseen, mutta se ei kuitenkaan ole kuvankäsittelyväline. Selvitä, mitä yleisiä tiedostomuotoja Blend tukee grafiikan tuomiseksi muista sovelluksista, esimerkiksi Photoshopista. • Perusta ystäviesi, koulukavereittesi tai kollegoittesi kanssa avoimen lähdekoodin projekti CodePlexiin, ja jakaa sen kautta lähdekoodia koko maailmalle. Mitä havaintoja teit?

  38. Kysymyksiä ja vastauksia 1 LINQ-kyselykieli vaikuttaa mielenkiintoiselta. Mihin kaikkeen sitä voi käyttää? • Lyhyesti sanottuna LINQ-kyselykieli ja siihen liittyvät kirjastot ovat hyvin monipuolisia ja soveltuvat moneen käyttötarkoitukseen. • Kun aiemmista esimerkeistä kävi ilmi, voit käyttää LINQ-kieltä hakeaksesi, suodattaaksesi (engl. filter) ja lajitellaksesi tietoa monesta eri lähteestä. • Tällaisia lähteitä ovat esimerkiksi sovelluksesi sisäiset oliot (kuten taulukot ja listat), sql-tietokannat, xml-tiedostot ja niin edelleen.

  39. Kysymyksiä ja vastauksia 2 Yritän käyttää C#-kielen await-avainsanaa, mutta kääntäjä ilmoittaa virheestä siinä metodissa, jossa await-avainsana on? • Mitä todennäköisimmin virhe johtuu siitä, että olet unohtanut async-avainsanan itse metodin määrittelystä. • Jos olet määritellyt metodin esimerkiksi ”privatevoidButton_Click”, sinun pitää lisätä async-avainsana private-sanan jälkeen: ”privateasyncvoidButton_Click”.

More Related