{"id":229517,"date":"2022-11-03T09:35:00","date_gmt":"2022-11-03T06:35:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229517"},"modified":"2022-11-09T08:24:36","modified_gmt":"2022-11-09T05:24:36","slug":"nopea-prototyyppien-luominen-wordpressillae-konseptianalyysi","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/nopea-prototyyppien-luominen-wordpressillae-konseptianalyysi\/","title":{"rendered":"Nopea prototyyppien luominen WordPressill\u00e4: konseptianalyysi"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/nopea-prototyyppien-luominen-wordpressillae-konseptista-laajennukseen\/\" title=\"Edellisess\u00e4 viestiss\u00e4\" >Edellisess\u00e4 viestiss\u00e4<\/a> aloin k\u00e4yd\u00e4 l\u00e4pi prosessin, jossa otin idean laajennuksesta, joka prototyyppisi sen nopeasti joksikin, joka toimii WordPressiss\u00e4. Ja vaikka se toimii, se ei v\u00e4ltt\u00e4m\u00e4tt\u00e4 noudata oliopohjaisia \u200b\u200bperiaatteita, eik\u00e4 se ole paikassa, jossa voimme helposti jatkaa ominaisuuksien lis\u00e4\u00e4mist\u00e4.<\/p>\n<p>Ei, t\u00e4m\u00e4 ei ole argumentti sille, miksi oliosuuntaus on parempi. Se sattuu olemaan suosikkini tapa kirjoittaa koodia, joten l\u00e4hestyn sit\u00e4 t\u00e4ll\u00e4 tavalla.<\/p>\n<p>Tied\u00e4n, ett\u00e4 antamani esimerkkikoodi on yksinkertainen ja tied\u00e4n, ett\u00e4 voidaan tehd\u00e4 asia, ett\u00e4 jotain t\u00e4llaista voidaan j\u00e4tt\u00e4\u00e4 sellaisenaan. Mutta t\u00e4m\u00e4n tarkoitus on n\u00e4ytt\u00e4\u00e4, kuinka konsepti otetaan, prototyyppi ja sitten siirret\u00e4\u00e4n se johonkin, joka noudattaa oliol\u00e4ht\u00f6isi\u00e4 periaatteita.<\/p>\n<p>Ja kokemukseni mukaan se on paljon vaikeampaa tehd\u00e4 monimutkaisella esimerkill\u00e4 alusta alkaen. Jos menet\u00e4t lukijoita alusta alkaen, mit\u00e4 toivoa heill\u00e4 on ymm\u00e4rt\u00e4\u00e4, mit\u00e4 on tulossa?<\/p>\n<p>T\u00e4m\u00e4n j\u00e4lkeen katsomme edellisen viestin koodia ja teemme siit\u00e4 hieman k\u00e4siteanalyysi\u00e4 n\u00e4hd\u00e4ksemme, mik\u00e4 voisi toimia hyvin luokassa ja kuinka voisimme alkaa j\u00e4rjest\u00e4\u00e4 sit\u00e4 luokkien avulla. <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/nimitilat-ja-automaattinen-lataus-wordpressissae\/\" title=\"nimitilat\" >nimitilat<\/a> ja niin edelleen.<\/p>\n<h2>K\u00e4siteanalyysi<\/h2>\n<p>Aina kun on kyse ohjelmoinnista, on niin helppoa haluta hyp\u00e4t\u00e4 heti koodin kirjoittamiseen ja sitten kiertelem\u00e4\u00e4n sen l\u00e4hett\u00e4miseen, kunnes se tekee jotain, mit\u00e4 haluamme.<\/p>\n<p>Ja kun se toimii, tuntuu, ett\u00e4 olemme valmiita ja voimme siirty\u00e4 seuraavaan teht\u00e4v\u00e4\u00e4n. Mutta isommissa projekteissa n\u00e4in ei aina ole. Itse asiassa on usein parempi tehd\u00e4 suunnitelmasi olio-analyysin konseptianalyysi ennen kuin siirryt eteenp\u00e4in.<\/p>\n<p>Pelkk\u00e4 koodaamiseen hypp\u00e4\u00e4minen ei aina ole paras tapa.<\/p>\n<h3>Analyysitapaus<\/h3>\n<p>Esimerkki: T\u00e4t\u00e4 kirjoitettaessa er\u00e4s tiimitovereistani ja min\u00e4 keskustelemme siit\u00e4, pit\u00e4isik\u00f6 meid\u00e4n laajentaa luokkaa vai kirjoittaa uusi luokka k\u00e4sittelem\u00e4\u00e4n Google Mapsin sovellusliittym\u00e4st\u00e4 poimittujen tietojen maantieteellisi\u00e4 sijaintitietoja.<\/p>\n<p>Voinko siivell\u00e4 ja kirjoittaa jotain toimivaa? Varma. Mutta integroituuko se hyvin sovellukseen? Ei ilman konseptianalyysi\u00e4, suunnittelua ja koordinointia muun j\u00e4rjestelm\u00e4n kanssa.<\/p>\n<p>Ja se on analyysin tarkoitus.<\/p>\n<h3>Analysoimme ty\u00f6t\u00e4mme<\/h3>\n<p>Mit\u00e4 t\u00e4m\u00e4 tarkoittaa eilen tarkastelemamme laajennukselle? T\u00e4ll\u00e4 hetkell\u00e4 meill\u00e4 on seuraavat:<\/p>\n<ul>\n<li>toiminto, joka vastaa metalaatikon luomisesta ja sen sis\u00e4ll\u00f6n n\u00e4ytt\u00e4misest\u00e4,<\/li>\n<li>toiminto tietokannan kyselyyn ja viimeisimpien viestien hakemiseen,<\/li>\n<li>toiminto tulosten n\u00e4ytt\u00e4miseksi metalaatikossa<\/li>\n<li>toiminto, joka n\u00e4ytt\u00e4\u00e4 viestin, kun metaruudussa ei ole tuloksia<\/li>\n<\/ul>\n<p>Lis\u00e4ksi monet n\u00e4ist\u00e4 toiminnoista liittyv\u00e4t koukkuihin, jotka ovat osa WordPress API:ta. Nimitt\u00e4in metalaatikon luomistoiminto on koukussa WordPressiin ja sen t\u00e4ydent\u00e4v\u00e4 toiminto n\u00e4yt\u00f6n render\u00f6imiseksi ovat kaikki osa samaa komponenttia.<\/p>\n<p>Sitten meill\u00e4 on toiminnot tietokannan kyselyyn ja meill\u00e4 on toimintoja, jotka liittyv\u00e4t suoraan n\u00e4kymiin.<\/p>\n<p>Joten milt\u00e4 t\u00e4m\u00e4 voisi n\u00e4ytt\u00e4\u00e4, jos kaavioitamme t\u00e4m\u00e4n eri luokkiin ja tiedostoihin, jotka auttaisivat luomaan t\u00e4m\u00e4n oliokeskeisemm\u00e4ll\u00e4 tavalla?<\/p>\n<h3>Ei yht\u00e4 ratkaisua<\/h3>\n<p>Ei ole olemassa yht\u00e4 ainoaa ratkaisua, ja jotkut ratkaisut ovat paljon edistyneempi\u00e4 kuin toiset. Mutta koska yrit\u00e4n l\u00f6yt\u00e4\u00e4 tasapainon t\u00e4ss\u00e4, aion l\u00e4hesty\u00e4 t\u00e4t\u00e4 yksinkertaisemmalla tavalla kuin tehd\u00e4 liikaa ty\u00f6t\u00e4 abstraktion, periytymisen, rajapintojen ja kaiken muun kanssa.<\/p>\n<h3>Keskitymme siihen, mit\u00e4 meill\u00e4 on<\/h3>\n<p>Keskityt\u00e4\u00e4n nyt yksitt\u00e4isiin luokkiin ja niihin mahdollisesti kuuluviin vastuisiin. Esimerkiksi:<\/p>\n<ul>\n<li>Luulen, ett\u00e4 tarvitsemme luokan, joka edustaa metalaatikkoa. T\u00e4m\u00e4n pit\u00e4isi olla vastuussa metalaatikon luomisesta.<\/li>\n<li>Tarvitsemme my\u00f6s luokan, joka vastaa metalaatikon sis\u00e4ll\u00f6n n\u00e4ytt\u00e4misest\u00e4. Saatat ajatella, ett\u00e4 funktion sis\u00e4llytt\u00e4minen metalaatikon luokkaan toimii hyvin. Se tekee; Jos kuitenkin haluat ajatella, ett\u00e4 jokaisella luokalla on yksi vastuu, voimme luoda luokan nimenomaan n\u00e4ytt\u00f6\u00e4 ja erityisesti metalaatikkoa varten, mink\u00e4 j\u00e4lkeen ruiskutetaan n\u00e4ytt\u00f6 metalaatikkoon ilmentymisen aikana. Puhumme t\u00e4st\u00e4 lis\u00e4\u00e4 my\u00f6hemmin.<\/li>\n<\/ul>\n<p>T\u00e4ss\u00e4 vaiheessa kaaviomme saattaa n\u00e4ytt\u00e4\u00e4 suunnilleen t\u00e4lt\u00e4:<\/p>\n<p>Metalaatikon hajottaminen.<\/p>\n<p>Seuraavaksi meid\u00e4n on harkittava muita toimintoja. Nimitt\u00e4in toiminnallisuus tulosten n\u00e4ytt\u00e4miseksi metalaatikossa ja toiminto tulosten n\u00e4ytt\u00e4miseksi, kun niit\u00e4 ei ole.<\/p>\n<p>Jotta voimme n\u00e4ytt\u00e4\u00e4 mit\u00e4 tahansa metaruudussa, meill\u00e4 on oltava tapa tehd\u00e4 kysely tietokannasta tulosten hakemiseksi. Sielt\u00e4 meid\u00e4n on pystytt\u00e4v\u00e4 m\u00e4\u00e4ritt\u00e4m\u00e4\u00e4n, onko tuloksia, jos ei ole, ja sitten ruiskuttaa ne tulokset n\u00e4kym\u00e4\u00e4n.<\/p>\n<p>N\u00e4iden tietojen perusteella kuulostaa silt\u00e4, \u200b\u200bett\u00e4 tarvitsemme luokan tietokannan kysely\u00e4 varten ja sitten tarvitsemme luokan viestin levitt\u00e4miseksi metalaatikon n\u00e4ytt\u00f6\u00f6n.<\/p>\n<p>Ehk\u00e4 yksi tapa j\u00e4rjest\u00e4\u00e4 tunnit n\u00e4ytt\u00e4isi t\u00e4lt\u00e4:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166719-61e79938d88c8.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166719-61e79938d88c8.png\" alt=\"Nopea prototyyppien luominen WordPressill\u00e4: konseptianalyysi\" ><\/a><\/p>\n<p>Tiedustelut tietokannasta ja viestien valmistelu.<\/p>\n<p>Kaavion lopullinen versio voi olla hieman ahdas, mutta viime k\u00e4dess\u00e4 tarkastelemme jotain t\u00e4llaista:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166719-61e7993eaf874.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-166719-61e7993eaf874.png\" alt=\"Nopea prototyyppien luominen WordPressill\u00e4: konseptianalyysi\" ><\/a><\/p>\n<p>Luokkaidemme viimeinen j\u00e4rjestely.<\/p>\n<p>Selityksen vuoksi:<\/p>\n<ul>\n<li>Viestinnoutaja kysyy tietokannasta kolme viimeisint\u00e4 viesti\u00e4.<\/li>\n<li>Viestiviestint\u00e4 p\u00e4\u00e4tt\u00e4\u00e4, mik\u00e4 viesti lis\u00e4t\u00e4\u00e4n n\u00e4ytt\u00f6\u00f6n.<\/li>\n<li>N\u00e4ytt\u00f6 n\u00e4ytt\u00e4\u00e4 asetetun viestin.<\/li>\n<li>Meta-ruutu n\u00e4ytt\u00e4\u00e4 sen n\u00e4yt\u00f6n verkkoselaimelle.<\/li>\n<\/ul>\n<p>Olemme siis p\u00e4\u00e4osin ottaneet muutaman WordPressiin koukussa olevan toiminnon ja jakaneet ne komponentteihin, jotka pystyv\u00e4t kommunikoimaan toistensa kanssa. Kukin niist\u00e4 on suhteellisen helppo ty\u00f6skennell\u00e4 ja jotka eiv\u00e4t tee enemp\u00e4\u00e4 kuin yht\u00e4 ty\u00f6t\u00e4.<\/p>\n<h2>Sen muuntaminen koodiksi<\/h2>\n<p>Nyt kun meill\u00e4 on idea siit\u00e4, kuinka voimme muuntaa edellisen konseptin koodiksi, katsomme, kuinka se tehd\u00e4\u00e4n parissa seuraavassa artikkelissa.<\/p>\n<p>Huomaa, ett\u00e4 tapa, jolla p\u00e4\u00e4t\u00e4t ottaa k\u00e4ytt\u00f6\u00f6n koodisi tai suunnitella luokkasi, voi olla hieman erilainen kuin edell\u00e4, ja sinulla voi olla ehdotuksia yll\u00e4 olevan sis\u00e4ll\u00f6n j\u00e4rjest\u00e4miseksi paremmin. Jos n\u00e4in on, j\u00e4t\u00e4 kommentti.<\/p>\n<p>Seuraavassa viestiss\u00e4 tarkastelemme t\u00e4m\u00e4n muuntamista toiminnalliseksi koodiksi ja sen j\u00e4lkeen tarkastelemme t\u00e4m\u00e4n j\u00e4rjest\u00e4mist\u00e4 oikeiksi nimiavaruuksiksi ja tiedostojen oikeaksi j\u00e4rjest\u00e4miseksi.<\/p>\n<h2>Sarjan postaukset<\/h2>\n<ol>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/nopea-prototyyppien-luominen-wordpressillae-konseptista-laajennukseen\/\" title=\"Nopea prototyyppien luominen WordPressill\u00e4: konseptista laajennukseen\" >Nopea prototyyppien luominen WordPressill\u00e4: konseptista laajennukseen<\/a><\/li>\n<li><a href=\"https:\/\/tommcfarlin.com\/concept-analysis\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Nopea prototyyppien luominen WordPressill\u00e4: konseptianalyysi<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/nopea-prototyyppi-prototype-to-code-osa-1\/\" title=\"Nopea prototyyppi: Prototype to Code, osa 1\">Nopea prototyyppi: Prototype to Code, osa 1<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/rapid-prototyping-prototype-to-code-osa-2\/\" title=\"Rapid Prototyping: Prototype to Code, osa 2\">Rapid Prototyping: Prototype to Code, osa 2<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/rapid-prototyping-esittelyssae-automaattinen-lataus\/\" title=\"Rapid Prototyping: Esittelyss\u00e4 automaattinen lataus\">Rapid Prototyping: Esittelyss\u00e4 automaattinen lataus<\/a><\/li>\n<\/ol>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Usein on parempi tehd\u00e4 suunnitelmasi olio-analyysin konseptianalyysi ennen kuin siirryt eteenp\u00e4in.<\/p>\n","protected":false},"author":1,"featured_media":223990,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,917,843],"tags":[1166],"class_list":["post-229517","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-muut","category-opetusohjelmia","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229517","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=229517"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229517\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/223990"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}