{"id":34855,"date":"2019-10-31T22:00:51","date_gmt":"2019-10-31T19:00:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\/"},"modified":"2019-10-31T22:00:51","modified_gmt":"2019-10-31T19:00:51","slug":"10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","title":{"rendered":"10 objektorienteeritud programmeerimise p\u00f5him\u00f5tet, millest iga arendaja peaks teadma","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"10 objektorienteeritud programmeerimise p\u00f5him\u00f5tet, millest iga arendaja peaks teadma\" src=\"\/wp-content\/uploads\/2019\/06\/129b610bc2576f8d753dfa72395f89f6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nMa sageli kohtan arendajaid, kes ei ole kuulnud SOLIDi p\u00f5him\u00f5tetest (me <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillbox\/blog\/442928\/\">r\u00e4\u00e4kisime neist siin p\u00f5hjalikult<\/a><\/noindex>. \u2014 Toim.) v\u00f5i objektorienteeritud programmeerimisest (OOP), v\u00f5i on kuulnud, kuid ei kasuta neid praktikas. Selles artiklis k\u00e4sitletakse OOP p\u00f5him\u00f5tete eeliseid, mis aitavad arendajal tema igap\u00e4evases t\u00f6\u00f6s. M\u00f5ned neist on h\u00e4sti tuntud, teised mitte nii v\u00e4ga, seega on artikkel kasulik nii algajatele kui ka kogenenud programmeerijatele.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>Tuletame meelde:<\/b> <i>k\u00f5ikidele \"Habbra\" lugejatele \u2014 10 000 rubla allahindlus, kui registreerite end Skillboxi kursusele promokoodiga \"Habr\".<\/i><\/p>\n<p><b>Skillbox soovitab:<\/b> Haridusalane veebikursus <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/java\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=JAVDEV&amp;utm_content=articles&amp;utm_term=10oop\">Java arendaja<\/a><\/noindex>.<\/p><\/blockquote>\n<p><\/p>\n<h3>DRY (\u00c4ra Korda End)<\/h3>\n<p>\nSuhteliselt lihtne p\u00f5him\u00f5te, mille olemus on selge juba nimest: \"\u00c4ra korda end\". Programmeerija jaoks t\u00e4hendab see vajadust v\u00e4ltida dubleeritud koodi ja v\u00f5imalust kasutada t\u00f6\u00f6s abstraktsioone.<\/p>\n<p>Kui koodis on kaks korduvat osa, tuleks need liita \u00fcheks meetodiks. Kui kindel v\u00e4\u00e4rtus on kasutusel rohkem kui \u00fcks kord, tasub see muundada avalikuks konstantsiks.<\/p>\n<p>See on vajalik, et lihtsustada koodi ja teha selle hooldamine kergemaks, mis on OOP p\u00f5hiline eesm\u00e4rk. Liialdamine liitmisega ei ole ka soovitatav, kuna sama kood ei saa samaaegselt toimida nii OrderId kui ka SSN-iga.<\/p>\n<h3>Muutuste kapseldamine<\/h3>\n<p>\nEnamiku ettev\u00f5tete tarkvaraproduktid arenevad pidevalt. See t\u00e4hendab, et koodi tuleb muuta, seda peab hooldama. Oma elu lihtsustamiseks saab kasutada kapseldamist. See v\u00f5imaldab t\u00f5husamalt testida ja hooldada olemasolevat koodibaasi. <noindex><a rel=\"nofollow\" href=\"http:\/\/javarevisited.blogspot.com\/2011\/12\/factory-design-pattern-java-example.html\">Siin on \u00fcks n\u00e4ide<\/a><\/noindex>.<\/p>\n<p>Kui kirjutate Java keeles, siis <noindex><a rel=\"nofollow\" href=\"http:\/\/javarevisited.blogspot.sg\/2012\/03\/private-in-java-why-should-you-always.html#axzz559dyoLSA\">m\u00e4\u00e4rake privaatsetele meetoditele ja muutujatele vaikimisi private<\/a><\/noindex>.<\/p>\n<h3>Avatuse\/suletuse p\u00f5him\u00f5te<\/h3>\n<p>\nSeda p\u00f5him\u00f5tet on lihtne meeles pidada, lugedes j\u00e4rgmist v\u00e4idet: \"Tarkvarased \u00fcksused (klassid, moodulid, funktsioonid jne) peaksid olema avatud laiendamiseks, kuid suletud muutmiseks\". Praktikas t\u00e4hendab see, et nad v\u00f5ivad v\u00f5imaldada oma k\u00e4itumise muutmist ilma algkoodi muutmiseta.<\/p>\n<p>P\u00f5him\u00f5te on oluline, kui algkodi muutmine n\u00f5uab selle \u00fclevaatamist, moodulitestimist ja muid menetlusi. Kood, mis j\u00e4rgib avatuse\/suletuse p\u00f5him\u00f5tet, ei muutu laiendamisel, seega on selle kasutamisel m\u00e4rgatavalt v\u00e4hem probleeme.<\/p>\n<p>Siin on kood, mis rikub seda p\u00f5him\u00f5tet.<\/p>\n<p><img decoding=\"async\" alt=\"10 objektorienteeritud programmeerimise p\u00f5him\u00f5tet, millest iga arendaja peaks teadma\" src=\"\/wp-content\/uploads\/2019\/06\/85d53972bef28713087acc428deebc3a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nKui on vaja midagi muuta, v\u00f5tab see palju aega, kuna tuleb muuta k\u00f5iki koodil\u00f5ike, mis on seotud vajaliku fragmentiga.<\/p>\n<p>Muide, avatus-sulgumine on \u00fcks SOLID-i p\u00f5him\u00f5tteid.<\/p>\n<h3>\u00dcksikule vastutusele vastav p\u00f5him\u00f5te (SRP)<\/h3>\n<p>\nVeel \u00fcks p\u00f5him\u00f5te SOLID-i kogumist. See \u00fctleb, et \"klassil on vaid \u00fcks p\u00f5hjus, miks seda muuta\". Klass t\u00e4idab ainult \u00fchte \u00fclesannet. Tal v\u00f5ivad olla mitmed meetodid, kuid iga\u00fcht kasutatakse \u00fcksnes \u00fcldise \u00fclesande lahendamiseks. K\u00f5ik meetodid ja omadused peavad teenima ainult seda. <\/p>\n<p><img decoding=\"async\" alt=\"10 objektorienteeritud programmeerimise p\u00f5him\u00f5tet, millest iga arendaja peaks teadma\" src=\"\/wp-content\/uploads\/2019\/06\/7332d424f27e091192cbbb8dacb13d01.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nSelle p\u00f5him\u00f5tte v\u00e4\u00e4rtus seisneb selles, et see n\u00f5rgendab seoseid eraldi tarkvarakomponentide ja koodi vahel. Kui klassis saada rohkem kui \u00fcks funktsionaalsus, tekitab see seose kahe funktsiooni vahel. Nii et kui \u00fcht neist muuta, on suur t\u00f5en\u00e4osus, et rikkuda teist, mis on esimesele seotud. See t\u00e4hendab testimists\u00fcklite arvu suurenemist, et tuvastada k\u00f5ik probleemid eelnevalt.<\/p>\n<h3>S\u00f5ltuvuste p\u00f6\u00f6ramise p\u00f5him\u00f5te (DIP)<\/h3>\n<p>\n<img decoding=\"async\" alt=\"10 objektorienteeritud programmeerimise p\u00f5him\u00f5tet, millest iga arendaja peaks teadma\" src=\"\/wp-content\/uploads\/2019\/06\/eb1e09cceee028f88fa83fd8d30a189a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n\u00dclaltoodud koodin\u00e4ide, kus AppManager s\u00f5ltub EventLogWriter'ist, mis on omakorda tihedalt seotud AppManageriga. Kui on vaja teist viisi teavitamiseks, olgu see siis push, SMS v\u00f5i e-mail, tuleb muuta klassi AppManager.<\/p>\n<p>Probleemi saab lahendada DIP abil. Seega, selle asemel, et k\u00fcsida AppManagerilt, k\u00fcsime EventLogWriter'ilt, mis viiakse ellu raamistikuga.<\/p>\n<p>DIP v\u00f5imaldab h\u00f5lpsasti asendada \u00fcksikuid mooduleid teistega, muutes s\u00f5ltuvuse moodulit. See v\u00f5imaldab muuta \u00fchte moodulit, m\u00f5jutamata teisi.<\/p>\n<h3>Koostamine, mitte p\u00e4rimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"10 objektorienteeritud programmeerimise p\u00f5him\u00f5tet, millest iga arendaja peaks teadma\" src=\"\/wp-content\/uploads\/2019\/06\/b97ebf8c423f415298dc10ae4e14fe89.jpg\" style=\"display:block;margin: 0 auto;\" \/>Peamised viisid koodi taaskasutamiseks on p\u00e4rimine ja koostamine, kummalgi on oma eelised ja puudused. Tavaliselt eelistatakse teist, kuna see on paindlikum.<\/p>\n<p>Koostamine v\u00f5imaldab klassi k\u00e4itumist muuta k\u00e4itamise ajal, seadistades selle omadusi. Interfaiside rakendamisel kasutatakse pol\u00fcmorfismi, mis annab paindlikuma rakenduse.<\/p>\n<p>Isegi Joshua Bloch \"Effective Java\"-s soovitab eelistada koostamist mitte p\u00e4rimist.<\/p>\n<h3>Barbara Liskovi asendusp\u00f5him\u00f5te (LSP)<\/h3>\n<p>\nVeel \u00fcks SOLID t\u00f6\u00f6riistade p\u00f5him\u00f5te. See \u00fctleb, et alamt\u00fc\u00fcbid peavad olema asendatavad supert\u00fc\u00fcbiga. See t\u00e4hendab, et meetodid ja funktsioonid, mis t\u00f6\u00f6tavad superklassiga, peavad saama probleemideta t\u00f6\u00f6tada ka selle alams klassidega.<\/p>\n<p>LSP on seotud nii \u00fche vastutuse p\u00f5him\u00f5tte kui ka vastutuse jagamise p\u00f5him\u00f5ttega. Kui klass pakub rohkem funktsionaalsust kui alams klass, siis viimane ei toeta m\u00f5ningaid funktsioone, rikkudes sellega seda p\u00f5him\u00f5tet.<\/p>\n<p>Siin on koodil\u00f5ik, mis rikub LSP-d.<\/p>\n<p><img decoding=\"async\" alt=\"10 objektorienteeritud programmeerimise p\u00f5him\u00f5tet, millest iga arendaja peaks teadma\" src=\"\/wp-content\/uploads\/2019\/06\/8c412a2cb4d1f7e53f69afc4ef46a967.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nMeetod area(Rectangle r) arvutab nelinurga pindala. Programm eba\u00f5nnestub p\u00e4rast Square'i t\u00e4itmist, kuna Square ei ole siin nelinurk. Vastavalt LSP p\u00f5him\u00f5ttele peavad funktsioonid, mis kasutavad p\u00f5hiklassi viiteid, olema v\u00f5imelised kasutama ka tuletatud klasside objekte ilma lisainstruktsioonideta.<\/p>\n<p>See p\u00f5him\u00f5te, mis on alamt\u00fc\u00fcbi spetsiifiline m\u00e4\u00e4ratlemine, pakkus v\u00e4lja Barbara Liskov 1987. aastal konverentsil, kus tema peaettekanne oli 'Andmete abstraktsioon ja hierarhia' \u2014 seet\u00f5ttu see nime saanud.<\/p>\n<h3>Liidese jagamise p\u00f5him\u00f5te (ISP)<\/h3>\n<p>\nJ\u00e4lle \u00fcks SOLID p\u00f5him\u00f5te. Selle kohaselt ei tohi liidest, mida ei kasutata, rakendada. Selle p\u00f5him\u00f5tte j\u00e4rgimine aitab s\u00fcsteemil j\u00e4\u00e4da paindlikuks ja reguleeritavaks, kui muudetakse t\u00f6\u00f6loogikat.<\/p>\n<p>Seda olukorda esineb k\u00f5ige sagedamini, kui liides sisaldab mitut funktsionaalsust, kusjuures kliendile on vajalik ainult \u00fcks neist.<\/p>\n<p>Kuna liidese kirjutamine on keeruline \u00fclesanne, on p\u00e4rast t\u00f6\u00f6 l\u00f5petamist sellele muutmine, rikkumata midagi, probleem.<\/p>\n<p>ISP p\u00f5him\u00f5tte eelis Java-s on see, et esmalt peate rakendama k\u00f5ik meetodid ja alles siis saavad neid kasutada klassid. Seet\u00f5ttu annab p\u00f5him\u00f5te v\u00f5imaluse v\u00e4hendada meetodite arvu.<\/p>\n<p><img decoding=\"async\" alt=\"10 objektorienteeritud programmeerimise p\u00f5him\u00f5tet, millest iga arendaja peaks teadma\" src=\"\/wp-content\/uploads\/2019\/06\/ea3e314e9f7766e8c1d3ce46d0dcdc09.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>Programmeerimine liidese, mitte rakenduse j\u00e4rgi<\/h3>\n<p>\nSiit on k\u00f5ik arusaadav nime j\u00e4rgi. Selle p\u00f5him\u00f5tte rakendamine toob kaasa paindliku koodi loomise, mis suudab t\u00f6\u00f6tada igasuguste uute liidese rakendustega.<\/p>\n<p>Tuleb kasutada liidese t\u00fc\u00fcpi muutujaid, tagastatavaid t\u00fc\u00fcpe v\u00f5i meetodi argumentide t\u00fc\u00fcpe. N\u00e4ide \u2014 kasutamine SuperClass'i asemel SubClass'i.<\/p>\n<p>Kusjuures:<\/p>\n<p><i>List numbers= getNumbers();<\/i><\/p>\n<p>Ja mitte:<\/p>\n<p><i>ArrayList numbers = getNumbers();<\/i><\/p>\n<p>Siin on praktiline rakendus sellest, millest eelnevalt r\u00e4\u00e4giti.<\/p>\n<p><img decoding=\"async\" alt=\"10 objektorienteeritud programmeerimise p\u00f5him\u00f5tet, millest iga arendaja peaks teadma\" src=\"\/wp-content\/uploads\/2019\/06\/8bbcd8342a9870bc28272f0550a8664c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>Delegatsiooni p\u00f5him\u00f5te<\/h3>\n<p>\nLevinud n\u00e4ide on meetodid equals() ja hashCode() Java-s. Kui tuleb v\u00f5rrelda kaht objekti, delegeeritakse see toiming vastavale klassile, mitte kliendile.<\/p>\n<p>P\u00f5him\u00f5tte eelisteks on koodi dubleerimise v\u00e4ltimine ja suhteliselt lihtne k\u00e4itumise muutmine. Samuti on see rakendatav s\u00fcndmuste delegeerimiseks.<\/p>\n<p><img decoding=\"async\" alt=\"10 objektorienteeritud programmeerimise p\u00f5him\u00f5tet, millest iga arendaja peaks teadma\" src=\"\/wp-content\/uploads\/2019\/06\/c9ca40cb27e288e5e31ebfba76fa36a5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nK\u00f5ik need p\u00f5him\u00f5tted v\u00f5imaldavad kirjutada paindlikumat, ilusamat ja usaldusv\u00e4\u00e4rsemat koodi, millel on k\u00f5rge seos ja madal sidusus. Loomulikult on teooria tore, kuid et arendaja hakkaks t\u00f5eliselt kasutama omandatud teadmisi, on vajalik praktika. J\u00e4rgmine samm p\u00e4rast OOP p\u00f5him\u00f5tete omandamist v\u00f5ib olla tarkvaraarenduse levinud probleemide lahendamiseks m\u00f5eldud disainimustrite uurimine.<\/p>\n<blockquote><p><b>Skillbox soovitab:<\/b><\/p>\n<ul>\n<li>Praktiline kursus <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/agima\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=AGIMA&amp;utm_content=articles&amp;utm_term=10oop\">\u00abMobiilne arendaja PRO\u00bb<\/a><\/noindex>.<\/li>\n<li>Rakenduslik veebikursus <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/python-data\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=PTNANA&amp;utm_content=articles&amp;utm_term=10oop\">\u201eAndmeanal\u00fc\u00fctik Pythonis\u201c<\/a><\/noindex>.<\/li>\n<li>Kaks aastat praktilist kursust <noindex><a rel=\"nofollow\" href=\"https:\/\/iamwebdev.skillbox.ru\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=WEBDEVPRO&amp;utm_content=articles&amp;utm_term=10oop\">\u00abMa olen PRO veebiarendaja\u00bb<\/a><\/noindex>.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillbox\/blog\/454314\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u043d\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445 SOLID (\u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043e \u043d\u0438\u0445 \u0437\u0434\u0435\u0441\u044c. \u2014 \u041f\u0435\u0440.) \u0438\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u041e\u041e\u041f), \u0438\u043b\u0438 \u0441\u043b\u044b\u0448\u0430\u043b\u0438, \u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0438\u0445 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u041e\u041e\u041f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0432 \u0435\u0433\u043e \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u043c \u0442\u0440\u0443\u0434\u0435. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0445\u043e\u0440\u043e\u0448\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b, \u0434\u0440\u0443\u0433\u0438\u0435 \u2014 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c, \u0442\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26244,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-34855","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd4710 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:00:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:00:51+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd4710 objekti-orienteeritud programmeerimise p\u00f5him\u00f5tet, mida iga arendaja peaks teadma | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/et\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd4710 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u043d\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a | ProHoster","og:url":"https:\/\/prohoster.info\/et\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:00:51+00:00","article:modified_time":"2019-10-31T19:00:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34855","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 20:51:32","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:14:05","updated":"2026-01-21 20:51:32","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/34855","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=34855"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/34855\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/26244"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=34855"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=34855"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=34855"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}