{"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\/novosti-interneta\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","title":{"rendered":"10 p\u00f5him\u00f5tet objektorienteeritud programmeerimisest, millest iga arendaja peab teadma","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"10 p\u00f5him\u00f5tet objektorienteeritud programmeerimisest, millest iga arendaja peab teadma\" src=\"\/wp-content\/uploads\/2019\/06\/129b610bc2576f8d753dfa72395f89f6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nMul puutun sageli kokku arendajatega, kes ei ole kuulnud SOLID p\u00f5him\u00f5tetest (me <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillbox\/blog\/442928\/\">oleme nendest siin p\u00f5hjalikult r\u00e4\u00e4kinud<\/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 igap\u00e4evases t\u00f6\u00f6s. M\u00f5ned neist on h\u00e4sti tuntud, teised mitte niiv\u00f5rd, seega on artikkel kasulik nii algajatele kui ka kogenud programmeerijatele.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>Tuletame meelde:<\/b> <i>k\u00f5igile \u00abHabr\u00bb lugejatele \u2014 10 000 rubla allahindlus k\u00f5ikide Skillboxi kursuste registreerimisel sooduskoodiga \u00abHabr\u00bb.<\/i><\/p>\n<p><b>Skillbox soovitab:<\/b> Hariduslik 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\">\u00abJava-arendaja\u00bb<\/a><\/noindex>.<\/p><\/blockquote>\n<p><\/p>\n<h3>DRY (\u00c4ra Korruta End)<\/h3>\n<p>\nSuhteliselt lihtne p\u00f5him\u00f5te, mille sisu on arusaadav pealkirjast: \u00ab\u00c4ra korruta end\u00bb. Arendaja jaoks t\u00e4hendab see vajadust v\u00e4ltida dubleerivat koodi ning v\u00f5imalust kasutada t\u00f6\u00f6s abstraktsiooni.<\/p>\n<p>Kui koodis on kaks korduvat l\u00f5iku, tuleks need liita \u00fchte meetodisse. Kui fikseeritud v\u00e4\u00e4rtust kasutatakse rohkem kui \u00fcks kord, tasub see \u00fcmber kujundada avalikuks konstandiks.<\/p>\n<p>See on vajalik koodi lihtsustamiseks ja selle haldamise h\u00f5lbustamiseks, mis on OOP peamine eesm\u00e4rk. Liialdada liitmisega ei tasu, kuna sama kood ei saa samaaegselt l\u00e4bida kontrolli nii OrderId kui ka SSN puhul.<\/p>\n<h3>Kasutusekspressimise muutmine<\/h3>\n<p>\nEnamik ettev\u00f5tete tarkvaratooteid areneb pidevalt. See t\u00e4hendab, et koodis tuleb teha muudatusi, seda tuleb toetada. Enda elu lihtsustamiseks v\u00f5ib kasutada kapseldamist. See v\u00f5imaldab olemasolevat koodibaasi t\u00f5husamalt testida ja hallata. <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's, siis <noindex><a rel=\"nofollow\" href=\"http:\/\/javarevisited.blogspot.sg\/2012\/03\/private-in-java-why-should-you-always.html#axzz559dyoLSA\">m\u00e4\u00e4rake vaikimisi private meetoditele ja muutujatele<\/a><\/noindex>.<\/p>\n<h3>Ava\/aitama printsiip<\/h3>\n<p>\nSelle printsiibi saab kergesti meelde j\u00e4tta, lugedes j\u00e4rgmist v\u00e4idet: \"Tarkvara \u00fcksused (klassid, moodulid, funktsioonid jne) peaksid olema avatud laiendamiseks, kuid suletud muutmiseks\". Praktikas t\u00e4hendab see, et nad v\u00f5imaldavad oma k\u00e4itumise muutmist ilma algkoodi muutmata.<\/p>\n<p>P\u00f5him\u00f5te on oluline, kui l\u00e4htekoodi muudatused n\u00f5uavad selle \u00fclevaatamist, modulaarset testimist ja muid protseduure. Kood, mis j\u00e4rgib avatud\/suletud p\u00f5him\u00f5tet, ei muutu laiendamise korral, mist\u00f5ttu on sellega palju v\u00e4hem probleeme.<\/p>\n<p>Siin on n\u00e4ide koodist, mis rikub seda p\u00f5him\u00f5tet.<\/p>\n<p><img decoding=\"async\" alt=\"10 p\u00f5him\u00f5tet objektorienteeritud programmeerimisest, millest iga arendaja peab teadma\" src=\"\/wp-content\/uploads\/2019\/06\/85d53972bef28713087acc428deebc3a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nKui sellega midagi muuta on vaja, v\u00f5tab see palju aega, kuna tuleb muuta k\u00f5iki koodi osi, millel on seos vajaliku fragmentiga.<\/p>\n<p>Muide, avatus-suletus on \u00fcks SOLID-i p\u00f5him\u00f5tteid.<\/p>\n<h3>\u00dche vastutuse p\u00f5him\u00f5te (SRP)<\/h3>\n<p>\nVeel \u00fcks p\u00f5him\u00f5te SOLID-i kogumikust. See \u00fctleb, et \"on ainult \u00fcks p\u00f5hjus, mis viib klassi muutmiseni\". Klass lahendab ainult \u00fche \u00fclesande. Sellel v\u00f5ivad olla mitu meetodit, kuid iga\u00fcht kasutatakse ainult \u00fcldise \u00fclesande lahendamiseks. K\u00f5ik meetodid ja omadused peavad teenima vaid seda. <\/p>\n<p><img decoding=\"async\" alt=\"10 p\u00f5him\u00f5tet objektorienteeritud programmeerimisest, millest iga arendaja peab teadma\" src=\"\/wp-content\/uploads\/2019\/06\/7332d424f27e091192cbbb8dacb13d01.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nSelle printsiibi v\u00e4\u00e4rtus seisneb selles, et see n\u00f5rgendab seoseid tarkvarakomponentide ja koodi vahel. Kui klassi lisada rohkem kui \u00fcks funktsionaalsus, tekib side kahe funktsiooni vahel. Seega, kui muuta \u00fchte neist, on suur oht h\u00e4irida teist, mis on esimesele seotud. See t\u00e4hendab, et testimise ts\u00fcklite arvu suurenemine on vajalik, et varakult k\u00f5iki probleeme avastada.<\/p>\n<h3>S\u00f5ltuvuste inverteerimise printsiip (DIP)<\/h3>\n<p>\n<img decoding=\"async\" alt=\"10 p\u00f5him\u00f5tet objektorienteeritud programmeerimisest, millest iga arendaja peab teadma\" src=\"\/wp-content\/uploads\/2019\/06\/eb1e09cceee028f88fa83fd8d30a189a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n\u00dclaltoodud koodin\u00e4ites s\u00f5ltub AppManager EventLogWriteri klasist, mis omakorda on tihedalt seotud AppManageriga. Kui on vaja muud viisi teate edastamiseks, olgu see siis push, SMS v\u00f5i e-kiri, tuleb AppManageri klassi muuta.<\/p>\n<p>Probleem saab DIP-i abil lahendatud. Nii et parema l\u00e4henemise asemel k\u00fcsime EventLogWriterit, mis tuuakse sisse raamistiku kaudu.<\/p>\n<p>DIP v\u00f5imaldab h\u00f5lpsasti asendada eraldi mooduleid teistega, muutes s\u00f5ltuvusmooduli. See annab v\u00f5imaluse muuta \u00fcht moodulit, m\u00f5jutamata teisi.<\/p>\n<h3>Kompositsioon asemel p\u00e4rimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"10 p\u00f5him\u00f5tet objektorienteeritud programmeerimisest, millest iga arendaja peab teadma\" src=\"\/wp-content\/uploads\/2019\/06\/b97ebf8c423f415298dc10ae4e14fe89.jpg\" style=\"display:block;margin: 0 auto;\" \/>Koodi taaskasutamise p\u00f5himeetodeid on kaks: p\u00e4rimine ja kompositsioon, millest kummalgi on omad eelised ja puudused. \u00dcldiselt eelistatakse teist, kuna see on paindlikum.<\/p>\n<p>Kompositsioon v\u00f5imaldab muuta klassi k\u00e4itumist k\u00e4itamise ajal, seadistades selle omadused. Liideste rakendamisel kasutatakse pol\u00fcmorfismi, mis v\u00f5imaldab paindlikumat rakendust.<\/p>\n<p>Ieven 'Effective Java' autor Joshua Bloch soovitab eelistada kompositsiooni, mitte p\u00e4rimist.<\/p>\n<h3>Barbara Liskovi asendatavuse p\u00f5him\u00f5te (LSP)<\/h3>\n<p>\nVeel \u00fcks p\u00f5him\u00f5te SOLID-mudelist. See \u00fctleb, et alamklassid peavad olema asendatavad superklassiga. See t\u00e4hendab, et meetodid ja funktsioonid, mis t\u00f6\u00f6tavad superklassiga, peavad olema sujuvalt kohandatavad ka alamklasside jaoks.<\/p>\n<p>LSP on seotud nii \u00fchte vastutust kui ka vastutuse jagamise p\u00f5him\u00f5ttega. Kui klass annab rohkem funktsionaalsust kui alamklass, siis viimane ei toeta teatud funktsioone, rikkudes seet\u00f5ttu seda p\u00f5him\u00f5tet.<\/p>\n<p>Siin on koodil\u00f5ik, mis on LSP-ga vastuolus.<\/p>\n<p><img decoding=\"async\" alt=\"10 p\u00f5him\u00f5tet objektorienteeritud programmeerimisest, millest iga arendaja peab teadma\" src=\"\/wp-content\/uploads\/2019\/06\/8c412a2cb4d1f7e53f69afc4ef46a967.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nMeetod area(Rectangle r) arvutab Ristk\u00fcliku pindala. Programm kukub p\u00e4rast Square'i t\u00e4itmist, kuna Square ei ole siin Ristk\u00fclik. Vastavalt LSP p\u00f5him\u00f5ttele peaksid funktsioonid, mis kasutavad aluseks olevaid klasse, olema v\u00f5imelised kasutama ka tuletatud klasside objekte ilma lisainstruktsioonideta.<\/p>\n<p>See p\u00f5him\u00f5te, mis on spetsiifiline alamliigi m\u00e4\u00e4ratlemiseks, esitas Barbara Liskov 1987. aastal konverentsil oma peamisel ettekandel, mille pealkiri oli \u201eAndmete abstraktsioon ja hierarhia\u201c \u2014 seet\u00f5ttu ka selle nimi.<\/p>\n<h3>Liidese jagamise p\u00f5him\u00f5te (ISP)<\/h3>\n<p>\nVeel \u00fcks SOLID p\u00f5him\u00f5te. Selle kohaselt ei peaks liidest, mida ei kasutata, rakendama. Selle p\u00f5him\u00f5tte j\u00e4rgimine aitab s\u00fcsteemil j\u00e4\u00e4da paindlikuks ja muudatuste tegemisel refaktooritavaks.<\/p>\n<p>Seda olukorda esineb k\u00f5ige sagedamini siis, kui liides sisaldab mitmeid funktsionaalsusi, samas kui kliendi jaoks on vajalik vaid \u00fcks neist.<\/p>\n<p>Kuna liidese kirjutamine on keeruline \u00fclesanne, on selle muutmine p\u00e4rast selle l\u00f5ppemist probleem, mida ei tohiks rikkuda.<\/p>\n<p>ISP printsiip Java's annab selle, et k\u00f5ik meetodid tuleb esmalt rakendada ja alles seej\u00e4rel saavad klassid neid kasutada. Seet\u00f5ttu v\u00f5imaldab printsiip v\u00e4hendada meetodite arvu.<\/p>\n<p><img decoding=\"async\" alt=\"10 p\u00f5him\u00f5tet objektorienteeritud programmeerimisest, millest iga arendaja peab teadma\" src=\"\/wp-content\/uploads\/2019\/06\/ea3e314e9f7766e8c1d3ce46d0dcdc09.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>Programmeerige liidese, mitte rakenduse jaoks<\/h3>\n<p>\nSiit on k\u00f5ik selge juba pealkirjast. Selle printsiibi rakendamine viib paindliku koodi loomise, mis suudab t\u00f6\u00f6tada iga uue liidese rakendusega.<\/p>\n<p>Tuleb kasutada liidese t\u00fc\u00fcpi muutujaid, tagastatavaid t\u00fc\u00fcpe v\u00f5i meetodi argumendi t\u00fc\u00fcpi. N\u00e4ide - kasutage SuperClass'i, mitte SubClass'i.<\/p>\n<p>\u00dcks s\u00f5na:<\/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, millest \u00fclalpool r\u00e4\u00e4giti.<\/p>\n<p><img decoding=\"async\" alt=\"10 p\u00f5him\u00f5tet objektorienteeritud programmeerimisest, millest iga arendaja peab teadma\" src=\"\/wp-content\/uploads\/2019\/06\/8bbcd8342a9870bc28272f0550a8664c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>Delegeerimise printsiip<\/h3>\n<p>\nLevinud n\u00e4ide on Java meetodid equals() ja hashCode(). Kui tuleb v\u00f5rrelda kaht objekti, delegeeritakse see toiming vastavale klassile, mitte kliendile.<\/p>\n<p>Printsiibi eeliseks on koodi dubleerimise puudumine ja suhteliselt lihtne k\u00e4itumise muutmine. Samuti on see rakendatav s\u00fcndmuste delegeerimisele.<\/p>\n<p><img decoding=\"async\" alt=\"10 p\u00f5him\u00f5tet objektorienteeritud programmeerimisest, millest iga arendaja peab 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 seotuse ja madala sidumise tase. Loomulikult on teooria tore, kuid et arendaja t\u00f5esti omandatud teadmisi rakendaks, on vajalik praktika. J\u00e4rgmine samm p\u00e4rast OOP p\u00f5him\u00f5tete omandamist v\u00f5iks olla disainimustrite uurimine, et lahendada \u00fcldisi tarkvaraarenduse probleeme.<\/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\u201d<\/a><\/noindex>.<\/li>\n<li>Kaheaastane praktiline kursus <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\">\u201eMina olen PRO veebiarendaja\u201d<\/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-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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\" \/>\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\/novosti-interneta\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\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:description\" content=\"\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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/novosti-interneta\/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 objektorienteeritud programmeerimise p\u00f5him\u00f5tet, millest iga arendaja peab teadma | ProHoster","description":"Kohtan \u00fcsna sageli arendajaid, kes ei ole kuulnud SOLID p\u00f5him\u00f5tetest (me r\u00e4\u00e4kisime neist siin \u00fcksikasjalikult. \u2014 Toim.) v\u00f5i objektorienteeritud programmeerimisest (OOP), v\u00f5i on kuulnud, kuid ei kasuta neid praktikas. Selles artiklis kirjeldatakse OOP p\u00f5him\u00f5tete eeliseid, mis aitavad arendajal tema igap\u00e4evases t\u00f6\u00f6s. M\u00f5ned neist on h\u00e4sti tuntud, teised aga mitte nii,","canonical_url":"https:\/\/prohoster.info\/et\/blog\/novosti-interneta\/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:description":"\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","og:url":"https:\/\/prohoster.info\/et\/blog\/novosti-interneta\/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"},"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}]}}