{"id":229509,"date":"2022-11-17T18:37:00","date_gmt":"2022-11-17T15:37:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229509"},"modified":"2022-11-09T08:15:03","modified_gmt":"2022-11-09T05:15:03","slug":"objektorienteeritud-programmeerimine-wordpressis-analueues-1-osa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/objektorienteeritud-programmeerimine-wordpressis-analueues-1-osa\/","title":{"rendered":"Objektorienteeritud programmeerimine WordPressis: anal\u00fc\u00fcs, 1. osa"},"content":{"rendered":"\n<p><a href=\"https:\/\/tommcfarlin.com\/membership-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Kui ma esimest korda sellel saidil liikmelisust<\/a> pakkuma hakkasin, teadsin, et esimene asi, millega tahan tegeleda, oli tutvustus objektorienteeritud programmeerimisega.<\/p>\n<p>See tundub olevat huvitav enamikule WordPressis t\u00f6\u00f6tavatest inimestest, kuid ilmneb probleem, mis kas t\u00f5rjub palju inimesi eemale v\u00f5i annab kehvad tulemused:<\/p>\n<p>Objektorienteeritud programmeerimine v\u00f5ib kiiresti keeruliseks muutuda. Ja see muutub demotiveerivaks.<\/p>\n<p>Pean silmas j\u00e4rgmist. Oletame, et olete WordPressi arendaja, kes hakkab uurima objektorienteeritud programmeerimist. See hakkab r\u00e4\u00e4kima klassidest, konstruktoritest ja funktsioonidest ning k\u00f5ik tundub h\u00e4sti.<\/p>\n<p>Kuid siis l\u00e4heb see kiiresti:<\/p>\n<ul>\n<li>privaatsed ja kaitstud meetodid,<\/li>\n<li>p\u00e4rand,<\/li>\n<li>pol\u00fcmorfism,<\/li>\n<li>disaini mustrid,<\/li>\n<li>s\u00f5ltuvuss\u00fcst,<\/li>\n<li>hoidlad,<\/li>\n<li>ja nii edasi.<\/li>\n<\/ul>\n<p>Lumepalle sajab, kas pole? Ja see ei pea sugugi nii olema, kuid korralikku sissejuhatust on raske leida, v\u00e4lja arvatud <a href=\"https:\/\/carlalexander.ca\/discover-object-oriented-programming\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">m\u00f5ned olemasolevad vahendid<\/a>.<\/p>\n<p>K\u00f5ike seda silmas pidades (ja olles taustaks sellele, kuhu ma suundun) tahtsin luua sisuseeria neile, kes:<\/p>\n<ul>\n<li>olete t\u00f5eliselt huvitatud objektorienteeritud programmeerimisest,<\/li>\n<li>pole kindel, kust alustada,<\/li>\n<li>soovivad oma oskusi arendada,<\/li>\n<li>tahan alustada nullist, ilma et see liiga kiiresti keerulisemaks materjaliks muutuks.<\/li>\n<\/ul>\n<p>Ja sellega ma t\u00e4na alustan ja esimeses t\u00f5sises plaanis <a href=\"https:\/\/tommcfarlin.com\/register\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">liikmetele<\/a>. Kui k\u00f5ik see \u00f6eldud, alustame.<\/p>\n<p>T\u00e4psemalt, hakkame r\u00e4\u00e4kima objektorienteeritud programmeerimisest, anal\u00fc\u00fcsist, disainist ja sellest, miks ta peaks sellest alustama.<\/p>\n<h2>Objektorienteeritud programmeerimine: anal\u00fc\u00fcs<\/h2>\n<p>Koodi kirjutamisel on praegu kolm populaarset viisi:<\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Functional_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">funktsionaalne<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Procedural_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">protseduuriline<\/a> ,<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Object-oriented_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">objektorienteeritud<\/a>.<\/li>\n<\/ul>\n<p>Kui t\u00f6\u00f6tame WordPressi koodiga ja seda loeme, loete protseduurikoodi ja objektorienteeritud koodi kombinatsiooni.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e125a74e.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-165350-61e77e125a74e.png\" alt=\"Objektorienteeritud programmeerimine WordPressis: anal\u00fc\u00fcs, 1. osa\" ><\/a><\/p>\n<p>Sellel on m\u00f5ned p\u00f5hjused, kuid see j\u00e4\u00e4b meie arutelust v\u00e4lja.<\/p>\n<p>Selle p\u00f5hjuseks on asjaolu, et WordPress on \u00fcles ehitatud m\u00f5lemaga ja WordPressi arenduse teatud aspekte saab kirjutada protseduurilise koodiga, nagu pistikprogrammid ja teemad, ning teised n\u00f5uavad objektorienteeritud arendust, nagu <a href=\"https:\/\/codex.wordpress.org\/Widgets_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vidinad<\/a>.<\/p>\n<h3>Anal\u00fc\u00fcs ja disain<\/h3>\n<p>Nii sageli on esimene asi, mida me arendajatena teha tahame (nooruvad v\u00f5i mitte), hakata kohe koodi kirjutama. Ma saan ka. See on l\u00f5bus. Meil on idee, me tahame selle ellu viia, tahame seda kasutama hakata ja tahame seda teistele inimestele n\u00e4idata.<\/p>\n<p>Siin on aga selle tegemise probleem: me j\u00e4tame sageli koodi kirjutamise vahele, et proovida panna projekti tegema seda, mida me tahame.<\/p>\n<p>Kui see on lihtne (ja ma m\u00f5tlen v\u00e4ga lihtsat) projekt, siis pole see nii suur asi. Ausalt \u00f6eldes olen seda teinud (ja <a href=\"https:\/\/github.com\/tommcfarlin\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GitHub<\/a> on selle t\u00f5estuseks). Aga mis puudutab t\u00f6\u00f6d, mida me <a href=\"https:\/\/pressware.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pressware&#8217;is teeme<\/a> ; see on hoopis teine \u200b\u200blugu.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165350-61e77e173b695.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-165350-61e77e173b695.png\" alt=\"Objektorienteeritud programmeerimine WordPressis: anal\u00fc\u00fcs, 1. osa\" ><\/a><\/p>\n<p>Selliste projektide puhul tahame enne koodi kirjutamist natuke anal\u00fc\u00fcsi ja disaini teha.<\/p>\n<p>Mis t\u00f5statab k\u00fcsimuse, mis on objektorienteeritud anal\u00fc\u00fcs ja disain?<\/p>\n<h4>Anal\u00fc\u00fcs<\/h4>\n<p>L\u00fchidalt, m\u00f5elge sellele j\u00e4rgmiselt:<\/p>\n<p>Anal\u00fc\u00fcs on protsess, mille k\u00e4igus v\u00f5etakse ette idee, mis on kliendil v\u00f5i mis teil on, ja uuritakse v\u00e4lja, mis on tegelikult vaja ehitada.<\/p>\n<p>See aitab teil kindlaks teha, mis on rakenduse varjatud ja mis pole rakenduse esimese versiooni jaoks vajalik. Mulle meeldib neid sildistada niipalju kui need, mis on kohustuslikud ja millised on need, mis on meeldivad.<\/p>\n<p>Hea rusikareegel on j\u00e4rgmine:<\/p>\n<ul>\n<li><strong>must have<\/strong> on asjad, mis on rakenduse keskmes ja peavad minema projekti esimesse iteratsiooni,<\/li>\n<li><strong>kenad<\/strong> on asjad, mida saame l\u00f5puks sellesse sisse ehitada<\/li>\n<\/ul>\n<p>L\u00f5ppkokkuv\u00f5ttes aitab see meil t\u00f6\u00f6tada kliendi jaoks tugeva esimese versiooni poole. V\u00f5ib-olla on \u00fcks n\u00e4ide WordPressi jaoks:<\/p>\n<ul>\n<li>Kas WordPressi esimesel versioonil pidi olema pistikprogrammi API v\u00f5i pidi inimestel olema lihtsalt v\u00f5imalus postitusi kirjutada ja neid veebis avaldada?<\/li>\n<\/ul>\n<p>Kui loote ajaveebi platvormi, kas see peab olema esimesest versioonist alates laiendatav? See pole midagi muud kui n\u00e4ide, kuid saate aru.<\/p>\n<h4>Mis teeb anal\u00fc\u00fcsi nii raskeks?<\/h4>\n<p>Ma arvan, et see on sageli seotud isikutega.<\/p>\n<p>N\u00e4iteks meie kui programmeerijad arvame, et projekt peaks alati tegema seda, mida klient soovib. T\u00f5de on see, et see pole alati nii.<\/p>\n<p>Ma m\u00f5tlen, et l\u00f5puks v\u00f5ib see nii olla, kuid projekti esimene versioon ei pea tingimata nii olema.<\/p>\n<p>Lisaks on \u00fcks objektorienteeritud programmeerimise p\u00f5him\u00f5tetest, et me ei kirjuta palju dubleerivat koodi. Kuid seda v\u00f5ib olla v\u00e4ga raske teha, kui pole korralikult anal\u00fc\u00fcsi tehtud.<\/p>\n<p>L\u00f5puks \u00fctlevad kogenumad, et hea tarkvara kasutab l\u00e4biproovitud ja t\u00f5elisi p\u00f5him\u00f5tteid \u2013 olgu see siis disainimustrid v\u00f5i mitte \u2013, kuid seda saab aja jooksul h\u00f5lpsasti muuta. See kasvab teatud m\u00f5ttes orgaaniliselt.<\/p>\n<h2>Mida me siis tegema peame?<\/h2>\n<p>J\u00e4rgmises artiklis r\u00e4\u00e4gin kolmest asjast, mida saame arendajatena teha tagamaks, et tarkvara, mida me endale v\u00f5i teistele ehitame, viiks meid \u00f5iges suunas.<\/p>\n<p>Ma ei \u00fctle, et see on h\u00f5bekuul, sest ma ei usu, et see on olemas, aga ma \u00fctlen, et see on \u00fcsna tugev l\u00e4henemine, mida olen leidnud, et teised ja enda jaoks sobivad ning mis viib p\u00e4ris heasse suunda. objektorienteeritud anal\u00fc\u00fcsi osas.<\/p>\n<p>See viib meid l\u00f5puks disainini. Aga me pole veel kohal.<\/p>\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>Objektorienteeritud programmeerimine WordPressis, r\u00e4\u00e4kimata mis tahes platvormist, v\u00f5ib olla heidutav \u00fclesanne. Aga ma tahan alustada nullist ja sealt edasi liikuda.<\/p>\n","protected":false},"author":1,"featured_media":165351,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,833,894,842],"tags":[1165],"class_list":["post-229509","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-juhend-algajatele","category-kood","category-opetused","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=229509"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229509\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/165351"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=229509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=229509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=229509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}