Ohjelmointikielet ja -paradigmat - kalvot 2014Jouni Smed
油
Kurssilla tarkastellaan ohjelmointikieli辰 ja paradigmoja teoreettiselta, tekniselt辰 ja historialliselta kannalta. Aihetta konkretisoidaan tutustumalla eri ohjelmointiparadigmoja edustaviin ohjelmointikieliin. Kurssi luo kokonaiskuvan ohjelmointikielten kehitykseen, mink辰 j辰lkeen tarkastellaan l辰hemmin eri ohjelmointiparadigmoja. Imperatiivisen ohjelmoinnin osalta luodaan kokonaiskuva ohjelmarakenteisiin ja olio-ohjelmoinnin osalta syvennet辰辰n ymm辰rryst辰 periytymismekanismin ja geneerisyyden toiminnasta. Deklaratiivinen ohjelmoinnin osalta keskityt辰辰n erityisesti funktionaaliseen ohjelmointiin ja sen teoreettiseen taustaan (mm. lambda-kalkyyliin) sek辰 logiikkaohjelmointiin.
Mac lappari tutuksi (Oskari Niitamo, Espoon Ty旦v辰enopisto) Oskari Niitamo
油
T辰ss辰 tutustutaan oman Mac-l辰pp辰rin k辰ytt旦旦n. Miten koneeni toimii? Mit辰 ohjelmia koneessa on valmiiksi? Miten tieto koneessani j辰rjestyy? Tutustumme my旦s Internetiin.
Kurssia opetti Oskari Niitamo kev辰辰ll辰 2014 (oskari.niitamo@gmail.com). T辰ss辰 lyhytlinkki Google Docs -versioon aineistosta: http://bitly.com/lapparitutuksi
Datajalostamo-seminaari 5.6.2014: Sovelluskehitt辰j辰t ja data kehitt辰j辰yhtei...Digitalmikkeli
油
Datajalostamo-seminaari 5.6.2014: Sovelluskehitt辰j辰t ja data kehitt辰j辰yhteis旦n mahdollistaminen / Kalle Launiala, ProtonIT
http://datajalostamo.fi/2014/05/keskusteluseminaari/
BD2226 Tietoj辰rjestelmien integrointi - Johdanto EAI:hin.
(Kiinnostaako koulutuksemme tai materiaalimme k辰ytt辰minen omassa opetuksessa? l辰 ep辰r旦i tai 辰l辰 k辰yt辰 kysym辰tt辰, vaan ota rohkeasti yhteytt辰 - jarmo.talvivaara@pkamk.fi)
Koulutusmateriaali. Kev辰t 2013. Erilaiset extranet-konseptit ja tyypilliset teknologiavaihtoehdot. Katsauksessa mainittuna mm. SharePoint, Confluence, Liferay, Drupal.
Download Study Resources for Solution Manual for C++ How to Program 10th by D...glunapumpui
油
Get Solution Manual for C++ How to Program 10th by Deitel instantly upon payment at https://testbankmall.com/product/solution-manual-for-c-how-to-program-10th-by-deitel. Access more solution manuals and test banks in https://testbankmall.com Download complete chapter PDF.
Access Solution Manual for C++ How to Program 10th by Deitel All Chapters Imm...dunukhaili
油
Access Solution Manual for C++ How to Program 10th by Deitel immediately after payment at https://testbankmall.com/product/solution-manual-for-c-how-to-program-10th-by-deitel. Explore more solution manuals and test banks in https://testbankmall.com Download full PDF chapter.
Vincit Teatime 2015 - Heikki Salo: Case ZenRobotics: JavaScriptin 辰辰rirajoillaVincitOy
油
Modernit selainymp辰rist旦t sis辰lt辰v辰t optimoituja JavaScipt-moottoreita, mutta ovatko nek辰辰n tarpeeksi vahvoja py旦ritt辰m辰辰n interaktiivista 3D-robottivisualisaatioita? Saavatko reaaliaikainen kuvank辰sittely ja laskenta selaimen kuin selaimen polvilleen, vai ovatko uudet JavaScript-rajapinnat tuoneet jo ratkaisuja n辰ihin ongelmiin? Ja jos teknologia onnistuisikin jo vastaamaan n辰ihin haasteisiin, kuinka v辰ltt辰辰 perinteisemm辰t ongelmat isoja JavaScript-ohjelmia rakentessa?
Johdatus ohjelmoinnin ajattelutapaan. Java-kielen perusajatukset. Kalvoja Java-tietorakenteista ja k辰ytt旦liittym辰n rakentamisesta Swingin ja AWT:n avulla.
Mac lappari tutuksi (Oskari Niitamo, Espoon Ty旦v辰enopisto) Oskari Niitamo
油
T辰ss辰 tutustutaan oman Mac-l辰pp辰rin k辰ytt旦旦n. Miten koneeni toimii? Mit辰 ohjelmia koneessa on valmiiksi? Miten tieto koneessani j辰rjestyy? Tutustumme my旦s Internetiin.
Kurssia opetti Oskari Niitamo kev辰辰ll辰 2014 (oskari.niitamo@gmail.com). T辰ss辰 lyhytlinkki Google Docs -versioon aineistosta: http://bitly.com/lapparitutuksi
Datajalostamo-seminaari 5.6.2014: Sovelluskehitt辰j辰t ja data kehitt辰j辰yhtei...Digitalmikkeli
油
Datajalostamo-seminaari 5.6.2014: Sovelluskehitt辰j辰t ja data kehitt辰j辰yhteis旦n mahdollistaminen / Kalle Launiala, ProtonIT
http://datajalostamo.fi/2014/05/keskusteluseminaari/
BD2226 Tietoj辰rjestelmien integrointi - Johdanto EAI:hin.
(Kiinnostaako koulutuksemme tai materiaalimme k辰ytt辰minen omassa opetuksessa? l辰 ep辰r旦i tai 辰l辰 k辰yt辰 kysym辰tt辰, vaan ota rohkeasti yhteytt辰 - jarmo.talvivaara@pkamk.fi)
Koulutusmateriaali. Kev辰t 2013. Erilaiset extranet-konseptit ja tyypilliset teknologiavaihtoehdot. Katsauksessa mainittuna mm. SharePoint, Confluence, Liferay, Drupal.
Download Study Resources for Solution Manual for C++ How to Program 10th by D...glunapumpui
油
Get Solution Manual for C++ How to Program 10th by Deitel instantly upon payment at https://testbankmall.com/product/solution-manual-for-c-how-to-program-10th-by-deitel. Access more solution manuals and test banks in https://testbankmall.com Download complete chapter PDF.
Access Solution Manual for C++ How to Program 10th by Deitel All Chapters Imm...dunukhaili
油
Access Solution Manual for C++ How to Program 10th by Deitel immediately after payment at https://testbankmall.com/product/solution-manual-for-c-how-to-program-10th-by-deitel. Explore more solution manuals and test banks in https://testbankmall.com Download full PDF chapter.
Vincit Teatime 2015 - Heikki Salo: Case ZenRobotics: JavaScriptin 辰辰rirajoillaVincitOy
油
Modernit selainymp辰rist旦t sis辰lt辰v辰t optimoituja JavaScipt-moottoreita, mutta ovatko nek辰辰n tarpeeksi vahvoja py旦ritt辰m辰辰n interaktiivista 3D-robottivisualisaatioita? Saavatko reaaliaikainen kuvank辰sittely ja laskenta selaimen kuin selaimen polvilleen, vai ovatko uudet JavaScript-rajapinnat tuoneet jo ratkaisuja n辰ihin ongelmiin? Ja jos teknologia onnistuisikin jo vastaamaan n辰ihin haasteisiin, kuinka v辰ltt辰辰 perinteisemm辰t ongelmat isoja JavaScript-ohjelmia rakentessa?
Johdatus ohjelmoinnin ajattelutapaan. Java-kielen perusajatukset. Kalvoja Java-tietorakenteista ja k辰ytt旦liittym辰n rakentamisesta Swingin ja AWT:n avulla.
1. .NET ohjelmointi
A-ITY04-2000
kertaus
Timo Tanila
Tampere University of Applied Sciences
2. .NET sovelluskehys
.NET rakentuu:
CLR, Common Language Runtime kerros. Ensisijaisena
teht辰v辰n辰 on eri tietotyyppien k辰sittely. Huolehtii useista
matalan tason yksityiskohdista, kuten muistinhallinnasta,
sovellusten ajamisesta, s辰ikeiden k辰sittelyst辰, ja suorittaa
erilaisia turvatarkastuksia.
CTS, Common Type System - kuvaa tietotyypit ja
ohjelmakoodirakenteet, joita runtime tukee
CLS, Common Language Specification - m辰辰rittelee sen
osajoukon tavallisimmista tietotyypeist辰 ja
ohjelmakoodirakenteista, joika kaikki. NET
ohjelmointikielet tukevat.
Kaikki .NET kielet k辰辰nnet辰辰n ensin CIL-kielisiksi, Common
Intermediate Language. Vasta CIL k辰辰nt辰j辰 tekee bin辰辰ri辰.
3. C# ohjelmointikieli
Microsoft laati uuden ohjelmointikielen, C# -kielen, erityisesti .NET-alustaa
varten
C# syntaksi on hyvin samankaltainen Javaan verrattuna. Molemmat
kuuluvat C-kielien perheeseen.
C# yksityiskohtia:
Ei osoittimia! C# ohjelmat eiv辰t tyypillisesti tarvitse suoraa osoitin
manipulointia
Automaattinen muistinhallinta = roskien ker辰ys. Ei tarvitse deallokoida muistia.
Mahdollisuus k辰ytt辰辰 yleisi辰 tyyppej辰, generics <T>. Linkki
partial keyword mahdollistaa luokan jakamisen useisiin eri kooditiedostoihin.
Lambda-ilmaisu yksinkertaistaa delegaattien k辰ytt旦辰. Mahdollistaa
nimett旦m辰n funktion m辰辰rittelyn. customers.Where(c => c.City == "London");
LINQ-kieliset lauseet yksinkertaistavat merkitt辰v辰sti tietol辰hteiden ja tiedon
k辰sittely辰. Linkki
4. Visual Studio 2010 / Useimmiten
k辰yt旦ss辰 olevat n辰pp辰inyhdistelm辰t
Ctrl+Space IntelliSense valinnat
Ctrl+Tab selaa avoimia koodi- yms. ikkunoita
Ctrl+E F muotoilee valitun koodin
Ctrl+E C kommentoi valitun koodin
Ctrl+E U poistaa kommentoinnin
Ctrl+H Searchn replace valitulle koodille
Listaus valmiista yhdistelmist辰
5. WPF, Windows Presentation Foundation
Microsoft mainostaa: Windows Presentation Foundation (WPF) on tarkoitettu
uuden sukupolven graafisten k辰ytt旦liittymien ja sovellusten rakentamiseen, ja saat
tehty辰 sen avulla visuaalisesti upeita k辰ytt旦kokemuksia.
WPF:n ydin on vektoripohjainen kuvank辰sittelyj辰rjestelm辰, joka on resoluutiosta
riippumaton.
Osaa hy旦dynt辰辰 nykyaikaisia n辰yt旦nohjaimia.
WPF sis辰lt辰辰 laajan valikoiman aputoimintoja sovellusten kehitt辰miseen.
Extensible Application Markup Language (XAML)
Kontrollit
Tietojen sitominen (Data Binding)
2D ja 3D grafiikka ja animaatiot
Tyylit (Styles), mallit (Templates)
Koska WPF sis辰ltyy Microsoft. NET Framework:iin, on sovelluskehityksess辰
hy旦dynnett辰viss辰 koko .NET Framework luokkakirjasto.
6. Yleisimm辰t WPF kontrollit
Painikkeet: Button ja RepeatButton.
Data n辰yt旦t: DataGrid, ListView, ja TreeView.
P辰iv辰ys ja sen valinta: Calendar ja DatePicker.
Valintaikkunat: OpenFileDialog, SaveFileDialog
K辰ytt辰j辰n teksti input: TextBox
Layoutin tekeminen: DockPanel, Grid, GridView, Panel,
ScrollBar, StackPanel, Window,
Navigointi: Hyperlink
Valinta: CheckBox, ComboBox, ListBox, RadioButton
Tietokent辰t: Label, Popup, ProgressBar, TextBlock, ja ToolTip.
Menu ja ty旦kalupalkki: Menu, Toolbar,
7. ASP.NET
ASP.NET on Microsoftin web-kehitysalusta
ASP.NET-sovellus on kokoelma tiedostoja kuten esimerkiksi C#-koodia,
aspx-tiedostoja, resurssitiedostoja (kuvat jne.), jotka on tallennettu
palvelimelle, yleens辰 IIS-palvelimelle. (Apachelle Mono-projekti)
HTTP request/response on se v辰line, jolla selain ja ASP.NET-sovellus
keskustelevat kesken辰辰n. Keskustelu on HTML-muotoista.
Esimerkki aspx -> (X)HTML muunnoksesta:
<asp:Button ID=painike" runat="server"
Text=Painike" BorderColor="Blue
BorderStyle="Solid" BorderWidth="5px" />
=>
<input type="submit" name=painike" value=Painike"
id=painike style="border-color:Blue;border-
width:5px;border-style:Solid;" />
Visual Studiolla kun kehitet辰辰n ASP.NET sovelluksia, on yleens辰 oikean IIS-
palvelimen sijasta k辰yt旦ss辰 Visual Studio Development Server.
8. Silverlight
Silverlight-applikaatioiden kehitt辰minen on hyvin
samankaltaista kuin WPF applikaatioidenkin. Silverlight
tarjoaa kuitenkin vain osan WPF:n ominaisuuksista ja
luokkakirjastoista k辰ytt旦旦n.
Silverlight-sovellusta voi ajaa miss辰 tahansa modernissa
selaimessa, kunhan Silverlight plug-in l旦ytyy (kuten
IE, Firefox, Google Chrome tai Safari).
Tyypillisesti ASP.NET-verkkosovelluksessa on mukana
Silverlight-applikaatioita.
On my旦s mahdollista ajaa Silverlight-sovellusta selaimen
ulkopuolella muissakin k辰ytt旦j辰rjestelmiss辰 kuin
Windowsissa. Riitt辰辰, ett辰 Silverlight runtime on asennettu.
(Linux, Mac OS, ...).
Silverlightin tavoitteena on tarjota vaihtoehto Adoben
Flashille.
9. XAML (Extensible Application Markup Language),
Yleist辰
XAML on merkint辰kieli, jolla voi esitell辰 ja alustaa .NET olioita
XAMLia voi soveltaa monissa eri tarkoituksissa, mutta ensisijaisesti
se on tarkoitettu WPF-k辰ytt旦liittymien rakentamiseen (K辰yt旦ss辰
kuitenkin my旦s Silverlight ja ASP.NET -kehityksess辰)
XAML tiedostossa voidaan siis m辰辰ritell辰 k辰ytt旦liittym辰
asetteluineen, painikkeineen ja muine kontrolleineen jne.
XAMLia voi kirjoittaa k辰sin tai k辰ytt辰辰 sen generoimiseen
ty旦kaluja, esimerkiksi Visual Studion designeria toolboxeineen tai
Expression Blend ohjelmaa. Yksi XAMLin tarkoitus onkin, ett辰
sovelluskehitysty旦 voidaan helpommin jakaa graafikoiden ja
ohjelmoijien kesken = ohjelmoija tekee code-behindin ja graafikko
XAMLin.
Kuitenkin, ohjelmoijana on useimmiten helpompaa kirjoittaa
XAMLia k辰sin, ainakin viimeistell辰 se k辰sin, jotta saa aikaan
halutunlaisen lopputuloksen.
10. XAML (Extensible Application Markup Language),
Yleist辰
XAML ei ollut viel辰 k辰yt旦ss辰 aiemmin Windows Forms
applikaatiokehityksess辰. Kaikki k辰ytt旦liittym辰koodi oli
teht辰v辰 C#-koodina.
Huom. WPF applikaatioitakin voi koodata ilman
XAMLia, tekem辰ll辰 kaikki koodi C#.koodina kuten
ennenkin. Se ei ole kuitenkaan tarkoituksenmukaista.
WPF sovelluskehityksess辰 k辰辰nt辰j辰 muuttaa XAML-
koodin BAML-koodiksi (Binary Application Markup
Language) ja lis辰辰 BAMLin mukaan applikaation
resurssiksi. Ajonaikana on nopeampaa tulkita
bin辰辰rimuotoista merkint辰kielt辰.
11. XAML (Extensible Application Markup Language),
Rakenne
Jokainen elementti XAML merkint辰kieless辰 vastaa
jotakin .NET luokkaa. Ne on nimetty siis tarkalleen
samalla nimell辰.
XAMLin elementti <Button> aiheuttaa siis sen, ett辰
k辰辰nt辰j辰 luo WPF sovellukseen Button olion.
Kuten XML-dokumenteissakin, XAMLissakin voi
kirjoittaa sis辰kk辰isi辰 elementtej辰. Siis k辰yt辰nn旦ss辰, jos
esim. DockPanel -elementin sis辰lle on kirjoitettu
Button, on k辰ytt旦liittym辰n DockPanel osiossa jossain
kohtaa Button.
XAMLissa voi alustaa olioiden propertyj辰.
12. XAML (Extensible Application Markup Language),
Rakenne
XAML tiedostossa on aina yksi ylimm辰n tason elementti, joka on
esimerkiksi WPF sovelluksissa:
Window
Application
Se, ett辰 on yksi ylimm辰n tason elementti tarkoittaa siis k辰yt辰nn旦ss辰
sit辰, ett辰 kun kirjoittaa sulkevan elementin, esim. </Window>, ei sen
per辰辰n voi kirjoittaa en辰辰 uusia elementtej辰.
XAML k辰辰nt辰j辰n t辰ytyy my旦s tiet辰辰 miss辰 on m辰辰ritelty XAMLissa k辰ytetyt
luokat, joten nimiavaruudet on merkitty XAMLin ensimm辰iseen
elementtiin tageilla, esim. xmlns. (Huom. Notaatio muistuttaa
webbilinkki辰). N辰in XAML k辰辰nt辰j辰 l旦yt辰辰 esim. Window-luokan jne.
*presentation, sis辰lt辰辰 WPF luokat kuten kontrollit yms.
*xaml, sis辰lt辰辰 XAML tulkaukseen liittyvi辰 luokkia (huom. m辰p辰tty x:ll辰)
Oma luokka, jonka osa XAML tiedosto on, on merkitty x:Class tagilla
(partial avainsana tarvitaan code-behindissa, koska osa luokan
m辰辰rittelyst辰 on XAMLissa)
13. K辰ytt旦liittym辰n tekeminen / container-luokat
Aiemmin Windows Forms -sovelluksia teht辰ess辰 oli k辰yt旦ss辰
koordinaatteihin perustuva asettelu.
Todellinen haaste oli varmistaa, ett辰 ulkoasu pysyi hyv辰nn辰k旦isen辰, vaikka
ikkunan kokoa muutettiin.
WPF sovelluksissa on k辰yt旦ss辰 muutama erilainen container-luokka,
joiden avulla k辰ytt旦liittym辰n elementtej辰 voi sijoitella ja asetella k辰tev辰sti.
Asettelun saa tehty辰 helposti sellaiseksi, ett辰 ikkunan koon muuttaminen
pit辰辰 ulkoasun ryhdiss辰.
container-luokat voidaan mielt辰辰 s辰ili旦iksi, joiden sis辰lle varsinaiset
kontrollit ja datataulut ym. loppuk辰ytt辰j辰lle n辰kyv辰t elementit asetellaan.
Ideana on, ett辰 kun kontrollit on aseteltu containereihin, ei ole tarpeen
asettaa itse kontrollin kokoa tai koordinaattia kiinte辰ksi.
Kaikki containerit periytyv辰t Panel -luokasta.
T辰rkeimm辰t asetteluun tarkoitetut container-luokat ovat:
StackPanel
WrapPanel
DockPanel
Grid
14. Data Binding
Data Binding eli tietojen sidonta tarkoittaa,
ett辰 on olemassa l辰hde- ja kohdeobjektien
v辰lille tehty sidonta, joka kertoo systeemille,
ett辰 l辰hdeobjektista tulee asettaa jotakin
tietoja kohdeobjektiin.
Kohdeobjekti on aina dependency property.
T辰rkein k辰ytt旦tarkoitus sovelluksissa on jonkin
tiedon n辰ytt辰minen k辰ytt旦liittym辰ss辰.
L辰hdeobjekti voi olla melkein mit辰 tahansa,
kuten toinen elementti tai jokin tietorakenne.
15. Tietorakenteet
Visual C# tarjoaa useita erilaisia
tietorakenteita. Sopivan tietorakenteen valinta
riippuu luonnollisesti k辰ytt旦tarkoituksesta.
K辰yt辰nn旦ss辰 muutaman osaaminen riitt辰辰 jo
pitk辰lle: lista (List<T>), hash (Hashtable).
Kun tietorakenne on olemassa, sit辰 voidaan
k辰sitell辰 todella n辰pp辰r辰sti LINQ-lauseilla.
16. List<T>
Tyypitetty indeksoitu lista. Tarjoaa valmiiksi runsaasti metodeja esim.
listan alkioiden etsimiseen, lajitteluun, k辰sittelyyn jne.
List<T> -luokka pohjautuu ArrayList-luokkaan.
List<T> luokan alkioita voidaan verrata kesken辰辰n. Oleellista on, ett辰
<T>, siis listan alkioiden tietotyyppi, toteuttaa tarvittavia rajapintoja:
IEquatable<T> rajapintaa vertailutoiminnolle Equals<T> (Jos tyyppi ei tue
t辰t辰 rajapintaa, niin k辰ytt辰辰 yleist辰 Object.Equals(Object) vertailua).
IComparable<T> rajapinta tarpeen, jos esim. lajitellaan (Sort), jotta
k辰yt旦ss辰 CompareTo metodi.
Kuten ArrayList-listassakin:
Lista ei ole oletusarvoisesti miss辰辰n tietyss辰 j辰rjestyksess辰. Lajittele lista ennen
k辰ytt旦辰, jos tarpeen.
Listan alkioita voidaan k辰sitell辰 indeksin kautta, joka alkaa 0:sta.
Listassa voi olla saman alkion duplikaatteja.
T辰rke辰 ero ArrayList-listaan on, ett辰 List<T> -listan alkioina voi olla vain
samantyyppisi辰 alkioita => yleens辰 hy旦dyllinen ominaisuus.
17. Hashtable
Hashtable on kokoelma avain/arvo-pareja, jotka j辰rjestet辰辰n
avaimen perusteella.
Jokainen hash-taulun elementti on avain/arvo-pari, joka on
tallennettu DictionaryEntry objektiin.
Avain t辰ytyy olla m辰辰ritelty. Taulussa ei ole duplikaatteja samalla
avain-arvolla.
Avain-arvoja ei voi muuttaa sen j辰lkeen kun ne on asetettu.
Hash-taulu on tehokas tietorakenne, vaikka kyseess辰 olisi hyvin
suurikin taulu. Kunhan avain tiedet辰辰n, saadaan elementti haettua
nopeasti.
Hash-taulun koko kasvaa dynaamisesti kun uusia elementtej辰
lis辰t辰辰n.
Foreach-lauseessa C#-kielell辰 saadaan yksi kerrallaan jokainen
DictionaryEntry ei siis suoraan arvoja.
18. LINQ
Sovellukset k辰ytt辰v辰t tyypillisesti monenlaisia tietovarastoja
toiminnoissaan. Tieto voi olla esimerkiksi XML-tiedostoissa,
relaatiotietokannoissa tai erilaisissa sovelluksen sis辰isiss辰
tietorakenteissa kuten listoissa tai taulukoissa ym.
Perinteisesti ohjelmoijan on tarvinnut k辰ytt辰辰 eri tyyppisi辰
tietol辰hteit辰 varten eri rajapintoja ja tehd辰 tiedon luku- ja
kirjoitustoiminnot tietol辰hteen m辰辰r辰辰m辰ll辰 tavalla.
Language Integrated Query (LINQ)-tekniikka tuli mukaan
.NET 3.5 versiossa, joten se on suht tuore lis辰ominaisuus
.NET ymp辰rist旦旦n ja C# kieleen. (.NET 3.5 julkaistiin 2007
lopulla). LINQ-lauseet helpottavat tietol辰hteiden k辰ytt旦辰
merkitt辰v辰sti.
19. LINQ rakennuspalikat
C# -kieleen on m辰辰ritelty muutama LINQ-
lauseisiin liittyv辰 apuominaisuus:
Implisiittisesti m辰辰ritellyt paikalliset muuttujat
Objektin / kokoelman alustussyntaksi
Lambda-ilmaisu
Extension Methods
Anonyymit tyypit
20. Implisiittisesti m辰辰ritellyt paikalliset
muuttujat
var avainsanan avulla voi esitell辰
muuttujan, jonka tyyppi辰 ei ole m辰辰ritelty
Tyyppi on kuitenkin m辰辰ritelty sen j辰lkeen, kun
k辰辰nt辰j辰 huomaa, ett辰 muuttujaa k辰ytet辰辰n
ensimm辰ist辰 kertaa = k辰辰nt辰j辰 m辰辰rittelee ja
asettaa sopivan tyypin
Muuttujan tyyppi辰 ei siis voi vaihtaa en辰辰 t辰m辰n
j辰lkeen toiseksi
LINQ-lauseissa on yleens辰 tarpeen, ett辰 k辰辰nt辰j辰
saa m辰辰ritell辰 sopivan tyypin.
demo
21. Objektin / kokoelman alustussyntaksi
Alustussyntaksi mahdollistaa luokan olion tai
tietorakenteen alustamisen helposti yhdell辰
lauseella.
Alustussyntaksin k辰ytt辰minen on
vapaaehtoista eli alustus voidaan toki tehd辰
perinteiseen tapaan rakentajan avulla tai
asettamalla alkuarvot yksitellen.
Kuitenkin, alustussyntaksi tekee koodista
luettavampaa ja tiiviimp辰辰
demo
22. Lambda-ilmaisu
C# Lambda-ilmaisun avulla voidaan rakentaa
delegaatti. Siis tilanteessa, jossa jokin metodi vaatisi
parametrina delegaatin, voimmekin k辰ytt辰辰 lambda-
ilmaisua.
Lambda-ilmaisun k辰ytt辰minen yleens辰 yksinkertaistaa
kirjoitettavan koodin ulkoasua ja m辰辰r辰辰.
Lambda-ilmaisu koostuu k辰yt辰nn旦ss辰:
(arg1,arg2,...) => koodi
Lambda-ilmaisun k辰ytt旦 selkeytt辰辰 erityisesti LINQ-
lauseita
demo
23. Extension Methods
Extension Methodsien avulla voi tehd辰 laajennuksen
johonkin olemassa olevaan luokkaan ilman uuden
aliluokan tekemist辰.
Lis辰ksi, voit lis辰t辰 uusia toimintoja sinet旦ityihin
(sealed) luokkiin ja rakenteisiin, joita ei siis voida
peri辰.
K辰yt辰nn旦ss辰 Extension Methodsit pit辰辰 aina
m辰辰ritell辰 static avainsanaa k辰ytt辰en
Extension Methods-m辰辰rityksi辰 ei yleens辰 tarvitse
tehd辰 LINQ-lauseille, mutta on hyv辰 tiet辰辰, ett辰 LINQ-
lauseissa on niit辰 yleens辰 tiet辰m辰tt辰mme k辰yt旦ss辰
Microsoftin tarjoamina
demo
24. Anonyymit tyypit
Anonyymin tyypin avulla voidaan mallintaa
uusi dataluokka ilman varsinaista
luokkam辰辰rittely辰.
K辰辰nt辰j辰 luo uuden luokan k辰辰nn旦svaiheessa
T辰t辰 ominaisuutta k辰ytet辰辰n paljon LINQ-
lauseissa, kun olemassa olevasta dataluokasta
otetaan vaikkapa vain osa j辰senmuuttujista
talteen
demo
25. LINQ operaattorit
from, in K辰ytet辰辰n m辰辰rittelem辰辰n LINQ-ilmaisun kohdeobjektit
where K辰ytet辰辰n m辰辰rittelem辰辰n ehdot, joilla haluttu osajoukko
saadaan
select K辰ytet辰辰n halutun osajoukon valitsemiseen jatkotoimenpiteit辰
varten
join, on, equals, K辰ytet辰辰n toisen tietol辰hteen liitt辰miseen samaan LINQ-
into lauseeseen
orderby, ascending, K辰ytet辰辰n valitun osajoukon lajitteluun
descending
group, by K辰ytet辰辰n valitun osajoukon ryhmittelyyn
26. Tapahtuma (Event),
Yleist辰 .NET eventeist辰
Event on C#-kielen keino v辰litt辰辰 oliolle
tapahtunut asia muille siit辰 kiinnostuneille olioille
(client).
Tyypillisesti event on keino v辰litt辰辰 jokin
k辰ytt旦liittym辰n tapahtuma muille ohjelman osille.
Eventtej辰 voi toki k辰ytt辰辰 muutenkin,
esimerkiksi v辰litt辰m辰辰n jokin tilanne tai
tapahtuma k辰ytt旦liittym辰n ulkopuoleltakin.
Eventtien toteutus perustuu delegaatteihin.
Jokaisen Eventin argumentit periytyv辰t
EventArgs luokasta. (Esim. MouseEventArgs)
27. Routed Events
Routed Event -tapahtumia reititet辰辰n tietyss辰
j辰rjestyksess辰 elementilt辰 toiselle.
Kun tapahtuma on k辰sitelty, se voidaan
merkit辰 k辰sitellyksi.
Voimme siis k辰yt辰nn旦ss辰 k辰sitell辰 tapahtuman
siin辰 kohtaa ohjelmaamme kuin haluamme.
Jotta voimme k辰sitell辰 tapahtuman, meid辰n
t辰ytyy tehd辰 tapahtumank辰sittelij辰 (event
handler).
28. Routed Events,
WPF
Routed event tapahtumia on kolmea eri tyyppi辰:
1. Suorat tapahtumat, direct events:
N辰m辰 ovat tavanomaisia .NET eventtej辰 eli ne ovat per辰isin yhdest辰
elementist辰 eik辰 niit辰 v辰litet辰 muualle. Esimerkiksi MouseEnter event on
t辰llainen tapahtuma se on yhden elementin tapahtuma, kun hiiren osoitin
siirtyy elementin p辰辰lle.
2. Nousevat tapahtumat, bubbling events:
N辰m辰 tapahtumat l辰htev辰t liikkeelle kohde-elementist辰, mutta nousevat
hierarkiassa yl旦sp辰in. Esimerkiksi MouseDown on nouseva tapahtuma eli se
tulee ensin elementille, jota napsautetaan. Seuraavaksi se nousee hierarkiassa
yl旦s eli jos Button on StackPanelin sis辰ss辰, niin Buttonin j辰lkeen StackPanelille.
Tapahtuma nousee ylimm辰lle tasolle asti, joka siis usein Window.
3. Tunneloidut tapahtumat, Tunneling events:
N辰m辰 kulkevat vastaavasti ylh辰辰lt辰 alas, p辰辰tyen lopulta kohde-
elementtiin, siis esim Button. Tarkoituksena on, ett辰 yl辰puoliset elementit
voivat k辰sitell辰 tapahtuman ensin ja olla vaikkapa p辰辰st辰m辰tt辰 eventti辰 kohde-
elementille asti. Esimerkiksi PreviewKeyDown on t辰llainen ja kaikki Preview*
eventit.
29. Liit辰nn辰istapahtumat, attached events
Nouseva tapahtuma bubbling event on
mahdollista k辰sitell辰 hierarkian yl辰puolella
vain, jos tapahtuma on sellainen, jota yl辰puoliset
elementit tukevat.
Ent辰 jos tapahtuma on sellainen, ett辰 vain
kyseinen kontrolli tukee sit辰? L旦ytyyk旦
StackPanelista esimerkiksi Click-tapahtumaa?
Jos StackPanelissa on useita painikkeita ja
haluamme k辰sitell辰 Click-tapahtuman yhteisesti
StackPanel-tasolla, tulee avuksi attached event.
Esim. ButtonBase.Click on siis ButtonBase
luokasta, josta Button periytyy.
30. Elementin elinkaareen liittyv辰t tapahtumat,
Lifetime events
Initialized
T辰m辰 l辰hetet辰辰n kun elementin olio on luotu
Loaded
T辰m辰 l辰hetet辰辰n kun elementti, esim. ikkuna
(Window), on muuten valmis, mutta ei viel辰 piirretty
n辰yt旦lle
Unloaded
T辰m辰 l辰hetet辰辰n kun kyseinen elementtiolio
vapautetaan eli kun koko ikkuna suljetaan tai kyseinen
elementti poistetaan ikkunasta
N辰m辰 kolme ovat kaikille elementeille
yhteisi辰, lis辰ksi on elementtikohtaisia
elinkaaritapahtumia.
31. Sy旦tteeseen liittyv辰t tapahtumat, Input events
Keyboard
N辰pp辰imist旦st辰 Keydown, TextInput, KeyUp ja
niiden Preview vastineet
Mouse
Hiiren k辰yt旦st辰 lukuisia esim.
MouseMove, MouseWheel, Mouse*Button*, Mou
seDoubleClick, jne. Ja Preview-vastineet
Stylus
Tablet PC:n kyn辰lle tarkoitettuja
Multitouch
Tuettu vain Windows 7 ja jatkossa ?.
32. Tyylit (Styles),
Yleist辰
Tyylit ovat v辰line, joilla saa m辰辰ritetty辰
yhteisi辰 tyyliohjeita, joita voi k辰ytt辰辰
applikaatiossaan useammassa kuin yhdess辰
paikassa.
Meid辰n ei siis tarvitse m辰辰ritell辰 XAMLissa
tyyli辰 jokaiselle kontrollille tai muulle
elementille erikseen.
Tyyleill辰 voidaan m辰辰ritell辰 marginaalit,
taustat, v辰rit ja fontit jne.
33. Tyylit (Styles),
WPF
WPF:n tyylien idea on samanlainen kuin
Cascading Style Sheets (CSS)-tyylien, joita
k辰ytet辰辰n paljon web-kehityksess辰.
Kuten CSS-tyyleill辰kin, my旦s WPF tyyleill辰 voit
m辰辰ritt辰辰 applikaatiolle yhteisi辰 tyylej辰.
Edelleen CSS:n kaltaisesti, WPF tyylit voit
kohdistaa automaattisesti tiettyihin
elementteihin tai tiettyyn osioon.
WPF tyylit tukevat her辰tteit辰 (Triggers), joiden
avulla voit aktivoida tyylin kun jokin toinen
elementti muuttuu esim. K辰ytt辰j辰 clikkaa
kontrollia tms.
34. Shapes
Yksinkertaisin tapa tehd辰 2-D graafista sis辰lt旦辰
k辰ytt旦liittym辰辰n on k辰ytt辰辰 muotoelementtej辰
(Shapes)
Ne ovat luokkia, jotka edustavat yksinkertaisia viivoja,
ellipsej辰, suorakulmioita ja monikulmioita.
N辰it辰 yhdistelem辰ll辰 voi tehd辰 toki
monimutkaisempaakin grafiikkaa.
Oleellista muotoelementeist辰:
Luokkia, jotka osaavat piirt辰辰 itse itsens辰
Muotoelementtej辰 voi asetella containereihin. Usein
muotojen kanssa hyv辰 container on Canvas, koska sen
sis辰ll辰 muotoja voi asettaa koordinaateilla.
Muotoelementit tukevat samoja tapahtumia (events) kuin
muutkin valmiit elementit
35. Brushes ja Transform
T辰ytev辰rin (Brush-luokka) voi asettaa kiinte辰ksi
tai liukus辰vyll辰
SolidColorBrush
LinearGradientBrush
RadialGradienBrush
Transform-luokkien avulla voidaan muokata
muotoelementtej辰.
37. Applikaatio luokka,
WPF
K辰ynniss辰 oleva WPF sovellus edustaa yht辰 ilmentym辰辰
System.Windows.Application luokasta
Application olio seuraa kaikkia avoimia ikkunoita ja
kontrolloi sovelluksen sulkemista ja l辰hett辰辰
sovellukseen liittyvi辰 elinkaaritapahtumia (event).
Visual Studio generoi meille valmiiksi Main-metodin (ja
muutakin) kun aloitamme uuden WPF projektin.
Uudessa WPF projektissa tiedostossa:
/obj/x86/Debug/App.g.i.cs
StartupUri-propertyll辰 kerrotaan p辰辰ikkuna eli meid辰n
ei tarvitse itse kirjoittaa p辰辰ikkunan k辰ynnistyskoodia.
38. Applikaation kontrollointi
Voimme asettaa Application-oliomme sulkeutumislogiikan
ShutDownMode propertyll辰:
OnLastWindowClose, oletusarvo
OnMainWindowClose
OnExplicitShutDown, t辰ytyy kutsua Application.Shutdown() metodia
(joka toimii aina)
Applikaatiolla on elinkaaritapahtumia (events), joille voi tehd辰
k辰sittelij辰t. Esim. Startup, Exit, Activated, Deactivated, ym.
(kokeillaan)
Voimme my旦s ylikirjoittaa n辰iden eventtien l辰hetykseen liittyv辰t
metodit. Metodin nimi on sama kuin tapahtuman nimi siten, ett辰
siin辰 on etuliite eli Startup-metodi on OnStartup(), Exit-metodi on
OnExit(), ja niin edelleen. (BTW, t辰m辰 nime辰misk辰yt辰nt旦 on yleinen
.NET-ymp辰rist旦ss辰. Poikkeuksia kuitenkin on eli ihan jokaiselle
eventille ei v辰ltt辰m辰tt辰 ole vastaavaa metodia ei esim.
DispatcherExceptionUnhandled -tapahtumalle)
Sovelluksen komentoriviargumentit voisimme k辰sitell辰 Application-
luokan Startup-tapahtumak辰sittelij辰ss辰.
39. Useita ikkunoita
Applikaatiolla voi olla auki useita ikkunoita
Ikkunoiden hallintaa helpottaa staattinen
Application.Current property.
Kaikilla ikkunoilla on mahdollisuus k辰ytt辰辰 Application.Current
property辰 ja k辰sitell辰 sen MainWindow ja Windows tietoja
K辰yt辰nn旦ss辰 sovellukset tarvitsevat usein kommunikointia
ikkunoiden v辰lill辰 ja t辰m辰 vuorovaikutus t辰ytyy toteuttaa
jotenkin.
Pitk辰ik辰isten ikkunoiden v辰linen kommunikointi voi olla
j辰rkev辰辰 toteuttaa tekem辰ll辰 oma Application-luokka
toteutus, joka hallitsee ikkunoita, siis esimerkiksi tuo esiin
oikeat ikkunat oikealla hetkell辰 jne.
Huom. Muista, ett辰 omaa ikkunaa ei ole tarpeen rakentaa
joka asialle -> l旦ytyy esim. valmiita dialogeja ym.
40. Window- luokka,
Yleist辰
Ikkunat ovat jokaisen ty旦p旦yt辰sovelluksen
k辰ytt旦liittym辰n runko. (kuten ASP.NET
sovelluksissa sivut)
Vaikka WPF sovelluksen voisi tehd辰 vain yht辰
ikkunaa k辰ytt辰en ja kontrolleja dynaamisesti
vaihtaen, on ikkunoiden tekeminen useimmiten
oikeampi ja k辰ytett辰v辰mpi toteutustapa.
Ikkunoita voidaan hallita hyvin vapaasti
k辰ytt旦liittym辰ss辰: Niit辰 voidaan n辰ytt辰辰 ja
piilottaa halutulla tavalla, niiden sijaintia voidaan
muuttaa, ulkon辰k旦辰 ja tyyli辰 vaihdella jne.
41. Window- luokka,
Yleist辰
Window-luokka periytyy ContentControl-
luokasta.
T辰m辰 tarkoittaa, ett辰 Window-olio voi sis辰lt辰辰
yhden lapsiolion (yleens辰 Container
esimerkiksi Grid).
Sis辰lt辰辰 tuttuja propertyj辰:
Background, BorderBrush, BorderThickness.
42. Window- luokka,
Propertyj辰
Window-luokan omia propertyj辰:
AllowsTransparency
Aseta true jos tarkoituksena tehd辰 osittain l辰pin辰kyv辰 ikkuna. (Background Transparent ja
WindowStyle None)
Icon
Pieni ikoni ikkunaa varten
Top, Left
Ikkunan paikka
ResizeMode
T辰ll辰 voi vaikka est辰辰 ikkunan koon muuttamisen kokonaan
ShowInTaskbar
Yleens辰 aktiivinen vain p辰辰ikkunalle
SizeToContent
Ikkuna muuttaa kokoaan sis辰ll旦n koon mukaan
Title
Ikkunan otsikko
Topmost
T辰ll辰 saa ikkunan pysym辰辰n muiden kyseisen applikaation ikkunoiden p辰辰ll辰
WindowStartupLocation
Ikkunan paikka kun uusi ikkuna avataan
WindowState
Kertoo onko ikkuna esim minimoitu task bar:iin
WindowStyle
Ikkunan tyylin valinta tietyist辰 valmiista tyyleist辰
43. Window- luokka,
Metodeja
Ikkunan n辰ytt辰minen:
Show()
Ei blokkaa, modeless window
ShowDialog()
Blokkaa, modal window. DialogResult propertyll辰
voimme palauttaa jonkin dialogin paluuarvon, jos
haluamme.
Activate()
Saadaan aktivoitua haluttu ikkuna. Huom. IsActive
property kertoo meille, onko ikkuna aktiivinen.
45. ASP.NET sovellus
ASP.NET hy旦dyt verrattuna HTML-kehitykseen
Mahdollisuuden palvelimella ajettavaan koodiin ja
koodin laittamisen code behindiin = k辰ytt旦liittym辰
XAMLina ja muu toiminta esim. C#-koodina.
Helppo uudelleen k辰ytt辰辰 C#-koodia
K辰ytt旦liittym辰n rakentaminen on samantapaista
kuin esim. WPF kehitys, ja k辰yt旦ss辰 esim. monia
WPF kehitt辰jille tuttuja kontrolleja yms.
Data Binding systeemi
Mahdollisuuden MVC-arkkitehtuurin (Model-
View-Controller, esimerkki 2) k辰ytt旦旦n.
46. ASP.NET
Global.asax
Sis辰lt辰辰 Global-luokan, joka periytyy HttpApplication-luokasta
Luokka sis辰lt辰辰 tapahtumak辰sittelij辰t:
Application_Start()
Kutsutaan kun web-sovellus k辰ynnistet辰辰n. Ajetaan siis kerran web-
sovelluksen elinkaaren aikana. Voisimme alustaa t辰辰ll辰 jotain sovellukseen
liittyvi辰 pysyvi辰 tietorakenteita yms.
Application_End()
Kutsutaan, kun sovellus suljetaan.
Session_Start()
Ajetaan kun uusi k辰ytt辰j辰 saapuu. T辰辰ll辰 voisimme siis luoda
k辰ytt辰j辰kohtaisia tietorakenteita tms.
Session_End()
Ajetaan kun k辰ytt辰j辰n istunto on p辰辰ttynyt (usein siis aikakatkaisun takia).
Application_Error()
Kutsutaan kun web-sovellukselta tulee k辰sittelem辰t旦n poikkeus.
T辰辰ll辰 olisi fiksua ottaa kiinni siis k辰sittelem辰t旦n poikkeus:
Server.GetLastError() -> k辰sittely -> Server.ClearError();
47. ASP.NET sivu
ASP.NET Page luokka
Periytyy Control luokasta
Oleelliset propertyt:
Application
Applikaatiotason dataobjekti, jota voidaan k辰ytt辰辰 milt辰 tahansa sivulta
Cache
V辰limuisti
IsPostBack
Osoittaa, onko sivu ladattu ensimm辰ist辰 kertaa
MasterPageFile
M辰辰ritt辰辰 kyseisen sivun pohjan
Request
Tarjoaa p辰辰syn nykyiseen HTTP pyynt旦旦n
Response
Voit vaikuttaa l辰htev辰辰n HTTP-vastaukseen
Server
Tarjoaa p辰辰syn HttpServerUtility objektiin, joka sis辰lt辰辰 useita palvelimen aputoimintoja
Session
Voit tallentaa ja lukea istunnon tietoja
Theme
Teema nykyiselle sivulle
Trace
Treisaus
48. ASP.NET sivu
Sivun elinkaari, t辰rkeimm辰t eventit
PreInit
T辰ss辰 vaiheessa tehd辰辰n sivupohja. Tarpeen ottaa kiinni, jos t辰ytyy p辰辰st辰
tekem辰辰n jotain ennen kuin suoritus etenee.
Init
T辰ss辰 vaiheessa alustetaan kontrollit ja niiden propertyt edellisiin arvoihin
Load
T辰h辰n tultaessa on sivu jo alustettu, joten voimme k辰sitell辰 sivun elementtej辰
ym.
<nykyinen event k辰sitell辰辰n>
Tulee siis k辰sittelyyn se tapahtuma, joka aiheutti selaimen tekem辰辰n
postbackin
PreRender
Tapahtumat on k辰sitelty ym. ja aloitetaan sivun render旦iminen Responseen.
Unload
Sivu on render旦ity ja HTTP Response tehty. Page-olio voidaan tuhota. T辰ss辰
voisimme viel辰 sulkea tiedostoja tai tietokantayhteyksi辰 ym.
Sivun virhetilanteiden/poikkeuksien k辰sittely:
Sivun virheet voi ottaa kiinni Page_Error tapahtumak辰sittelij辰ll辰
49. ASP.NET sivun tila
HTTP protokolla ei tue web-sovelluksen tilatiedon
yll辰pit辰mist辰
ASP.NET Page-olio tuhotaan aina jokaisen yksitt辰isen
sivunmuodostuksen j辰lkeen.
Web-kehitys on siis hyvin erilaista verrattuna
paikallisten sovellusten, esimerkiksi
ty旦p旦yt辰sovellusten kehitykseen, joissa ohjelman
tila tyypillisesti s辰ilyy koko suorituksen ajan.
Tilatiedon yll辰pit辰minen ei ole pelk辰st辰辰n
ASP.NET sovellusten ongelma, vaan koskee kaikkia
web-kehitysalustoja kuten Java Web sovelluksia ja
PHP sovelluksia ym., joissa tilanhallinta t辰ytyy
kaikissa toteuttaa jotenkin
50. ASP.NET
ViewState
ASP.NET runtime lis辰辰 automaattisesti piilotetun
lomakekent辰n (nimelt辰辰n __VIEWSTATE) mukaan
muodostamalleen sivulle. Se sis辰lt辰辰 nimi/arvo
pareja, joilla sivulla olevien elementtien sis辰lt旦
saadaan t辰ytetty辰 automaattisesti postbackien
v辰lill辰.
__VIEWSTATE on Base64-koodattu merkkijono
System.Web.UI.Page luokan Init-
tapahtumank辰sittelij辰 lukee__VIEWSTATE arvot
ja p辰ivitt辰辰 arvot Page-olioon.
T辰m辰n takia elementtien arvoja ei kannata k辰sitell辰
itse viel辰 Init-vaiheessa.
51. ASP.NET
Cache
Cache eli v辰limuisti tarjoaa joustavan tavan k辰sitell辰 web-
sovelluksen sis辰ist辰 tietoa
V辰limuistissa voi s辰ilytt辰辰 tietoja tietyn ajanjakson ajan.
Voisimme esimerkiksi s辰ilytt辰辰 tietokannasta haettua dataa
voimassa muutaman minuutin ja hakea datan uudelleen
vasta sen j辰lkeen.
System.Web.Caching.Cache (saatavilla Context.Cache
kautta)
V辰limuistin dataobjektit ovat kaikkien k辰ytt辰jien ulottuvilla
kaikilta sivuilta kiinte辰n ajan.
Jos data ei ole en辰辰 Cachessa kun yrit辰mme sit辰 lukea, palautuu
null.
K辰yt辰nn旦ss辰 v辰limuistiin asetetaan dataa k辰ytt辰m辰ll辰 Cache-luokan
Insert-metodia. Voimme asettaa datan voimassaoloajan ja oman
tapahtumank辰sittelij辰n datan vanhentumiselle.
52. ASP.NET
Session
Session on k辰ytt辰j辰kohtainen
Yksi istunto on siis tietyn k辰ytt辰j辰n vuorovaikutusta
web-sovelluksemme kanssa
HttpSessionState
Tietyn k辰ytt辰j辰n Session-data voitaisiin alustaa
Application-tasolla (Global.asax).
Klassinen esimerkki k辰ytt辰j辰datan s辰ilytt辰misest辰 on
verkkokaupan ostoskorin s辰ilytt辰minen istuntojen v辰lill辰.
Sessioilla on automaattisesti uniikki Session ID, joka
yksil旦i olemassaolevan HttpSessionState-oliot
(istunnot), ja voimassaoloaika (oletus 20 min), jonka
voimme asettaa, Session.Timeout. (t辰m辰n voi vaihtaa
my旦s kaikille k辰ytt辰jille Web.configin kautta)
53. ASP.NET
Cookie
Yksi tapa s辰ilytt辰辰 tilatietoa on ev辰ste (Cookie)
Se on usein toteutettu tekstitiedostona (tai
joukkona tiedostoja), jotka on tallennettu
k辰ytt辰j辰n koneelle.
Kun k辰ytt辰j辰 siirtyy tietylle sivustolle, selain
tarkistaa, onko k辰ytt辰j辰n koneella ev辰ste
kyseiselle Urlille, ja jos on, selain liitt辰辰 tiedot
HTTP pyynt旦旦n.
Vastaanottava palvelin voi lukea ev辰steen tiedot
ja luoda sivun tallennettuihin tietoihin perustuen.
Ev辰steet ovat tekstitiedostoja. Ne ovat siis huono
paikka arkaluontoisille tiedoille. (kuten
luottokortin numero ym.)
54. .NET kurssin loppusanat
Ohjelmointi on hauskaa: My旦s .NET ohjelmointi
Ohjelmoinnin oppiminen vaatii ty旦t辰: Vasta itse
tekem辰ll辰 ja kokeilemalla (ja ty旦n kautta) oppii
ohjelmoimaan.
Ohjelmistokehitt辰j辰n ty旦ura on jatkuvaa uuden
oppimista: Kuten useimpiin muihinkin
ohjelmistotekniikoihin, my旦s .NET ohjelmointiin
kehitet辰辰n uusia asioita jatkuvasti.