You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: data/osa-5/index.md
+1-4Lines changed: 1 addition & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,10 +34,7 @@ hidden: false
34
34
</only-for-not-logged-in>
35
35
36
36
37
-
TODO: kirjoita uudestaan, teemana olio-ohjelmointi ja tiedon väliset yhteydet (viittaaminen tiedosta toiseen sekä viitteen välittäminen)
38
-
39
-
Tässä osassa jatkat matkaasi olio-ohjelmoinnin saloihin. Opit Javan alkeis- ja viittaustyyppisistä muuttujista sekä niiden eroista. Opit kuormittamaan konstruktoreja ja metodeja eli luomaan useita konstruktoreja ja useita samannimisiä metodeja. Tutustut olioiden samankaltaisuuden vertailuun ja opit luomaan olioiden vertailussa käytettävän equals-metodin omiin luokkiisi. Harjoittelet olioiden käyttöä oliomuuttujina ja metodien paluuarvona. Opettelet lisäksi listojen käyttöä oliomuuttujina sekä harjoittelet yksikkötestien kirjoittamista.
40
-
37
+
Kurssimateriaalin viides osa jatkaa neljännestä osasta alkaneen olio-ohjelmoinnin parissa.
Copy file name to clipboardExpand all lines: data/osa-6/4-ongelmasta-kokonaisuuteen-ja-takaisin-osiin.md
+42Lines changed: 42 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -851,3 +851,45 @@ The Stinky Cheese Man and Other Fairly Stupid Tales, Penguin Group, 1992
851
851
# TODO: isompi tehtävä
852
852
853
853
854
+
855
+
856
+
## Sovellus ja sen osat
857
+
858
+
859
+
Edellä puhuimme kommenteista sekä ohjelman pilkkomisesta luokkiin ja metodeihin, jotka kuvaavat ohjelman rakennetta. Seuraava katkelma on [Edsger W. Dijkstran](https://en.wikipedia.org/wiki/Edsger_W._Dijkstra) artikkelista [On the role of scientific thought](https://www.cs.utexas.edu/users/EWD/ewd04xx/EWD447.PDF).
860
+
861
+
862
+
_Let me try to explain to you, what to my taste is characteristic for all intelligent thinking. It is, that one is willing to study in depth an aspect of one's subject matter in isolation for the sake of its own consistency, all the time knowing that one is occupying oneself only with one of the aspects. We know that a program must be correct and we can study it from that viewpoint only; we also know that it should be efficient and we can study its efficiency on another day, so to speak. In another mood we may ask ourselves whether, and if so: why, the program is desirable. But nothing is gained - on the contrary! - by tackling these various aspects simultaneously. It is what I sometimes have called "**the separation of concerns**", which, even if not perfectly possible, is yet the only available technique for effective ordering of one's thoughts, that I know of. This is what I mean by "focusing one's attention upon some aspect": it does not mean ignoring the other aspects, it is just doing justice to the fact that from this aspect's point of view, the other is irrelevant. It is being one- and multiple-track minded simultaneously._
863
+
864
+
865
+
866
+
Ohjelmointia harjoitellessa kehittyy luomiensa ohjelmien (sekä muiden luomien ohjelmien) tarkastelussa. Huomaat kurssilla edetessäsi, että voit tarkastella ohjelmaa eri näkökulmista ilman, että muut ohjelman osa-alueet vievät keskittymistä. Tulet esimerkiksi huomaamaan, että ohjelman "käyttöliittymä" -- eli lukeminen ja kirjoittaminen -- tulee erottumaan sovelluksen ydinlogiikasta -- eli vaikkapa ohjelmassa tehtävästä laskennasta. Opimme tähän ohjelman jakamiseen osiin erilaisia tekniikoita kurssin edetessä.
867
+
868
+
869
+
Edsger W. Dijkstran ajatusta voidaan jatkaa myös ohjelmien vastuiden näkökulmasta. Robert "Uncle Bob" C. Martin kuvaa [blogissaan](https://8thlight.com/blog/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html) termiä "**single responsibility principle**" seuraavasti.
870
+
871
+
872
+
_When you write a software module, you want to make sure that when changes are requested, those changes can only originate from a single person, or rather, a single tightly coupled group of people representing a single narrowly defined business function. You want to isolate your modules from the complexities of the organization as a whole, and design your systems such that each module is responsible (responds to) the needs of just that one business function._
873
+
874
+
875
+
_[..in other words..] Gather together the things that change for the same reasons. Separate those things that change for different reasons._
876
+
877
+
878
+
Selkeys ohjelmaan luodaan sopivalla ohjelman rakenteella sekä nimeämiskäytänteiden seuraamisella. Tulet myöhemmin huomaamaan, että jokaiselle ohjelman osalle voidaan määritellä yksi selkeä vastuu.
879
+
880
+
881
+
## Harva ohjelma kirjoitetaan vain kerran
882
+
883
+
TODO: tämä varmaankin ihan kurssin loppuun?
884
+
885
+
Ohjelmistoja kehittäessä keskitytään tyypillisesti niihin ohjelmiston ominaisuuksiin, jotka tuovat eniten arvoa ohjelmiston käyttäjälle. Nämä ominaisuudet sovitaan yhdessä ohjelmiston kehittäjän sekä loppukäyttäjän kanssa, mikä mahdollistaa ominaisuuksien järjestämisen tärkeysjärjestykseen.
886
+
887
+
888
+
Ohjelmistoille on tyypillistä se, että ohjelmistoon liittyvät toiveet sekä ominaisuuksien tärkeysjärjestys muuttuu ohjelmiston elinkaaren aikana. Tämä johtaa siihen, että osia ohjelmistosta kirjoitetaan uudestaan, osia siirrellään paikasta toiseen ja osia poistetaan kokonaan.
889
+
890
+
891
+
Ohjelmoijan näkökulmasta tämä tarkoittaa ensisijaisesti sitä, että ohjelmisto kehittyy jatkuvasti. Uudelleenkirjoitettavat osat tulevat tyypillisesti paremmiksi, sillä ohjelmoija oppii ongelma-alueesta siihen liittyviä ratkaisuja kehittäessään. Samalla tämä tarkoittaa sitä, että ohjelmoijan tulee myös säilyttää kokonaiskuva ohjelman rakenteesta, sillä joitain osia saatetaan myös uudelleenkäyttää muissa osissa ohjelmistoa.
892
+
893
+
894
+
Voidaan todeta, että hyvin harva ohjelma kirjoitetaan vain kerran. Tätä ajatusta jatkaen on hyvä pyrkiä tilanteeseen, missä ohjelman käyttäjä pääsee kokeilemaan sitä mahdollisimman nopeasti -- tällöin muutostoiveiden kerääminen myös alkaa nopeasti. Ohjelmistoja tehdessä onkin hyvä usein luoda ensin [Proof of Concept](https://en.wikipedia.org/wiki/Proof_of_concept)-sovellus, jolla voidaan kokeilla idean toimivuutta. Jos idea on hyvä, sitä jatkokehitetään -- samalla myös ohjelma kehittyy.
Copy file name to clipboardExpand all lines: data/osa-6/index.md
+1-4Lines changed: 1 addition & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,10 +34,7 @@ hidden: false
34
34
</only-for-not-logged-in>
35
35
36
36
37
-
TODO: kirjoita uudestaan, kulmana moniosaiset ohjelmat ja niiden testaaminen
38
-
39
-
40
-
Tässä osassa opit miksi joissakin metodeissa on määre static ja miksi joissain sitä ei ole. Tutustut hajautustauluun ja opit käyttämään sitä ohjelmissasi. Opit ryhmittelemään tietoa hajautustaulun avulla. Harjoittelet ohjelman jakamista käyttöliittymästä vastaavaan osaan ja sovelluslogiikasta vastaavaan osaan.
37
+
Kurssimateriaalin kuudennessa osassa käsitellään olioista koostuvia olioita sekä tutustutaan tekstikäyttöliittymän ja sovelluslogiikan eriyttämiseen.
Copy file name to clipboardExpand all lines: data/osa-7/index.md
+1-2Lines changed: 1 addition & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,9 +33,8 @@ hidden: false
33
33
<deadline>Kirjaudu sisään nähdäksesi deadlinen tälle osalle</deadline>
34
34
</only-for-not-logged-in>
35
35
36
-
TODO: kirjoita uudestaan, kulmana
36
+
Kurssimateriaalin seitsemännessä osassa käsitellään yleisiä ohjelmointiparadigmoja sekä algoritmiikkaa. Kurssi Ohjelmoinnin perusteet (TKT-10002) päättyy seitsemänteen osaan ja kurssi Ohjelmoinnin jatkokurssi (TKT-10003) alkaa kahdeksannesta osasta.
37
37
38
-
Tässä osassa opit erilaisista ohjelmointiparadigmoista. Osan läpikäytyäsi tiedät proseduraalisen ohjelmoinnin ja olio-ohjelmoinnin eroista ja osaat toteuttaa ohjelmia kumpaakin ohjelmointiparadigmaa noudattaen. Opit käsitteen algoritmi sekä sanan algoritmi alkuperän, ja opit käyttämään muutamia järjestämis- ja hakualgoritmeja. Opit myös kirjoittamaan yksikkötestejä ja harjoittelet testivetoisen ohjelmistokehityksen perusaskeleita. Teet myös muutaman tehtävän tuleville kurssilaisille ja osallistut ohjelmointiosaamistasi arvioiviin kyselyihin.
0 commit comments