{"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\/pt\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik","title":{"rendered":"10 princ\u00edpios da programa\u00e7\u00e3o orientada a objetos que todo desenvolvedor deve conhecer","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"10 princ\u00edpios da programa\u00e7\u00e3o orientada a objetos que todo desenvolvedor deve conhecer\" src=\"\/wp-content\/uploads\/2019\/06\/129b610bc2576f8d753dfa72395f89f6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nEu frequentemente encontro desenvolvedores que nunca ouviram falar dos princ\u00edpios SOLID (n\u00f3s <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillbox\/blog\/442928\/\">fomos detalhados a respeito aqui<\/a><\/noindex>. \u2014 Nota do autor) ou da programa\u00e7\u00e3o orientada a objetos (POO), ou ouviram, mas n\u00e3o os utilizam na pr\u00e1tica. Este artigo descreve as vantagens dos princ\u00edpios de POO que ajudam o desenvolvedor no seu trabalho di\u00e1rio. Alguns deles s\u00e3o bem conhecidos, outros nem tanto, por isso o artigo ser\u00e1 \u00fatil tanto para iniciantes quanto para programadores j\u00e1 experientes.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>Lembramos:<\/b> <i>para todos os leitores do \u00ab\u0425\u0430\u0431\u0440\u0430\u00bb \u2014 desconto de 10.000 rublos na inscri\u00e7\u00e3o em qualquer curso da Skillbox usando o c\u00f3digo promocional \u00ab\u0425\u0430\u0431\u0440\u00bb.<\/i><\/p>\n<p><b>A Skillbox recomenda:<\/b> Curso online educacional <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\">\u00abDesenvolvedor Java\u00bb<\/a><\/noindex>.<\/p><\/blockquote>\n<p><\/p>\n<h3>DRY (Don\u2019t Repeat Yourself)<\/h3>\n<p>\nUm princ\u00edpio bastante simples, cuja ess\u00eancia \u00e9 clara atrav\u00e9s do nome: \u00abN\u00e3o se repita\u00bb. Para o programador, isso significa a necessidade de evitar c\u00f3digo duplicado, al\u00e9m de permitir o uso de abstra\u00e7\u00e3o no trabalho.<\/p>\n<p>Se houver duas partes do c\u00f3digo que se repetem, elas devem ser combinadas em um \u00fanico m\u00e9todo. Se um valor fixo \u00e9 usado mais de uma vez, deve ser transformado em uma constante p\u00fablica.<\/p>\n<p>Isso \u00e9 necess\u00e1rio para simplificar o c\u00f3digo e facilitar sua manuten\u00e7\u00e3o, que \u00e9 a principal tarefa da POO. N\u00e3o se deve abusar da combina\u00e7\u00e3o, j\u00e1 que o mesmo c\u00f3digo n\u00e3o passaria na verifica\u00e7\u00e3o tanto com OrderId quanto com SSN.<\/p>\n<h3>Encapsula\u00e7\u00e3o de mudan\u00e7as<\/h3>\n<p>\nOs produtos de software da maioria das empresas est\u00e3o em constante evolu\u00e7\u00e3o. Portanto, \u00e9 necess\u00e1rio fazer mudan\u00e7as no c\u00f3digo e mant\u00ea-lo. Voc\u00ea pode simplificar sua vida atrav\u00e9s da encapsula\u00e7\u00e3o. Isso permitir\u00e1 testar e manter a base de c\u00f3digo existente de forma mais eficaz. <noindex><a rel=\"nofollow\" href=\"http:\/\/javarevisited.blogspot.com\/2011\/12\/factory-design-pattern-java-example.html\">Aqui est\u00e1 um dos exemplos<\/a><\/noindex>.<\/p>\n<p>Se voc\u00ea est\u00e1 escrevendo em Java, ent\u00e3o <noindex><a rel=\"nofollow\" href=\"http:\/\/javarevisited.blogspot.sg\/2012\/03\/private-in-java-why-should-you-always.html#axzz559dyoLSA\">por padr\u00e3o, atribua o modificador private a m\u00e9todos e vari\u00e1veis<\/a><\/noindex>.<\/p>\n<h3>Princ\u00edpio da abertura\/fechamento<\/h3>\n<p>\nEste princ\u00edpio pode ser facilmente lembrado ao ler a seguinte afirma\u00e7\u00e3o: \u00abEntidades de software (classes, m\u00f3dulos, fun\u00e7\u00f5es, etc.) devem estar abertas para extens\u00e3o, mas fechadas para modifica\u00e7\u00e3o\u00bb. Na pr\u00e1tica, isso significa que elas podem permitir mudan\u00e7as em seu comportamento sem alterar o c\u00f3digo fonte.<\/p>\n<p>O princ\u00edpio \u00e9 importante quando as altera\u00e7\u00f5es no c\u00f3digo-fonte exigem uma revis\u00e3o, testes em m\u00f3dulos e outras procedimentos. O c\u00f3digo que segue o princ\u00edpio de abertura\/fechamento n\u00e3o \u00e9 alterado ao ser ampliado, portanto, causa muito menos problemas.<\/p>\n<p>Aqui est\u00e1 um exemplo de c\u00f3digo que viola esse princ\u00edpio.<\/p>\n<p><img decoding=\"async\" alt=\"10 princ\u00edpios da programa\u00e7\u00e3o orientada a objetos que todo desenvolvedor deve conhecer\" src=\"\/wp-content\/uploads\/2019\/06\/85d53972bef28713087acc428deebc3a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nSe precisar fazer alguma altera\u00e7\u00e3o, isso levar\u00e1 muito tempo, pois ser\u00e1 necess\u00e1rio modificar todas as partes do c\u00f3digo que possuem liga\u00e7\u00e3o com o fragmento desejado.<\/p>\n<p>A prop\u00f3sito, abertura\/fechamento \u00e9 um dos princ\u00edpios SOLID.<\/p>\n<h3>Princ\u00edpio da responsabilidade \u00fanica (SRP)<\/h3>\n<p>\nOutro princ\u00edpio do conjunto SOLID. Ele afirma que \"existe apenas uma raz\u00e3o para modificar uma classe\". A classe resolve apenas uma tarefa. Ela pode ter v\u00e1rios m\u00e9todos, mas cada um deles \u00e9 utilizado apenas para resolver um problema espec\u00edfico. Todos os m\u00e9todos e propriedades devem servir somente a isso. <\/p>\n<p><img decoding=\"async\" alt=\"10 princ\u00edpios da programa\u00e7\u00e3o orientada a objetos que todo desenvolvedor deve conhecer\" src=\"\/wp-content\/uploads\/2019\/06\/7332d424f27e091192cbbb8dacb13d01.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nO valor desse princ\u00edpio reside em que ele diminui a liga\u00e7\u00e3o entre cada componente do software e o c\u00f3digo. Se mais de uma funcionalidade for adicionada a uma classe, isso introduz uma liga\u00e7\u00e3o entre duas fun\u00e7\u00f5es. Assim, se uma delas for alterada, h\u00e1 uma grande chance de prejudicar a segunda, relacionada \u00e0 primeira. Isso significa um aumento nos ciclos de teste para detectar todos os problemas antecipadamente.<\/p>\n<h3>Princ\u00edpio da invers\u00e3o de depend\u00eancia (DIP)<\/h3>\n<p>\n<img decoding=\"async\" alt=\"10 princ\u00edpios da programa\u00e7\u00e3o orientada a objetos que todo desenvolvedor deve conhecer\" src=\"\/wp-content\/uploads\/2019\/06\/eb1e09cceee028f88fa83fd8d30a189a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nO exemplo de c\u00f3digo acima mostra que AppManager depende de EventLogWriter, que, por sua vez, est\u00e1 intimamente ligado ao AppManager. Se for necess\u00e1rio um m\u00e9todo diferente para exibir uma notifica\u00e7\u00e3o, seja por push, SMS ou email, ser\u00e1 preciso alterar a classe AppManager.<\/p>\n<p>O problema pode ser resolvido utilizando o DIP. Assim, em vez de AppManager, requisitamos o EventLogWriter, que ser\u00e1 introduzido por meio de um framework.<\/p>\n<p>O DIP permite substituir m\u00f3dulos individuais por outros sem problemas, alterando o m\u00f3dulo de depend\u00eancia. Isso possibilita modificar um m\u00f3dulo sem impactar os demais.<\/p>\n<h3>Composi\u00e7\u00e3o em vez de heran\u00e7a<\/h3>\n<p>\n<img decoding=\"async\" alt=\"10 princ\u00edpios da programa\u00e7\u00e3o orientada a objetos que todo desenvolvedor deve conhecer\" src=\"\/wp-content\/uploads\/2019\/06\/b97ebf8c423f415298dc10ae4e14fe89.jpg\" style=\"display:block;margin: 0 auto;\" \/>Existem duas principais formas de reutiliza\u00e7\u00e3o de c\u00f3digo \u2014 heran\u00e7a e composi\u00e7\u00e3o, cada uma com suas vantagens e desvantagens. Normalmente, a segunda \u00e9 preferida, pois \u00e9 mais flex\u00edvel.<\/p>\n<p>A composi\u00e7\u00e3o permite modificar o comportamento de uma classe em tempo de execu\u00e7\u00e3o, ajustando suas propriedades. Ao implementar interfaces, utiliza-se o polimorfismo, que oferece uma implementa\u00e7\u00e3o mais flex\u00edvel.<\/p>\n<p>At\u00e9 mesmo \"Effective Java\" de Joshua Bloch recomenda dar prefer\u00eancia \u00e0 composi\u00e7\u00e3o em vez da heran\u00e7a.<\/p>\n<h3>O Princ\u00edpio da Substitui\u00e7\u00e3o de Liskov (LSP)<\/h3>\n<p>\nOutro princ\u00edpio do conjunto SOLID. Ele afirma que os subtipos devem ser substitu\u00edveis pelo supertipo. Ou seja, m\u00e9todos e fun\u00e7\u00f5es que operam no superclasse devem ser capazes de funcionar sem problemas com suas subclasses.<\/p>\n<p>O LSP est\u00e1 relacionado tanto ao princ\u00edpio da responsabilidade \u00fanica quanto ao princ\u00edpio da separa\u00e7\u00e3o de responsabilidades. Se uma classe oferece mais funcionalidade do que sua subclasse, esta \u00faltima pode n\u00e3o suportar algumas fun\u00e7\u00f5es, violando esse princ\u00edpio.<\/p>\n<p>Aqui est\u00e1 um trecho de c\u00f3digo que contraria o LSP.<\/p>\n<p><img decoding=\"async\" alt=\"10 princ\u00edpios da programa\u00e7\u00e3o orientada a objetos que todo desenvolvedor deve conhecer\" src=\"\/wp-content\/uploads\/2019\/06\/8c412a2cb4d1f7e53f69afc4ef46a967.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nO m\u00e9todo area(Rectangle r) calcula a \u00e1rea de um Rectangle. O programa falhar\u00e1 ao executar Square, j\u00e1 que Square n\u00e3o \u00e9 um Rectangle neste contexto. De acordo com o princ\u00edpio LSP, fun\u00e7\u00f5es que utilizam refer\u00eancias a classes base devem poder usar objetos de classes derivadas sem instru\u00e7\u00f5es adicionais.<\/p>\n<p>Este princ\u00edpio, que \u00e9 uma defini\u00e7\u00e3o espec\u00edfica de subtipo, foi proposto por Barbara Liskov em 1987 durante uma confer\u00eancia em uma palestra principal intitulada \"Abstra\u00e7\u00e3o de Dados e Hierarquia\" \u2014 da\u00ed o seu nome.<\/p>\n<h3>O Princ\u00edpio da Separa\u00e7\u00e3o de Interface (ISP)<\/h3>\n<p>\nMais um princ\u00edpio do SOLID. Segundo ele, uma interface que n\u00e3o \u00e9 utilizada n\u00e3o deve ser implementada. Seguir esse princ\u00edpio ajuda o sistema a permanecer flex\u00edvel e apropriado para refatora\u00e7\u00e3o ao fazer altera\u00e7\u00f5es na l\u00f3gica de opera\u00e7\u00e3o.<\/p>\n<p>Essa situa\u00e7\u00e3o ocorre com frequ\u00eancia quando a interface cont\u00e9m v\u00e1rias funcionalidades, mas o cliente precisa apenas de uma delas.<\/p>\n<p>Como a escrita de uma interface \u00e9 uma tarefa complexa, modific\u00e1-la ap\u00f3s a conclus\u00e3o do trabalho, sem quebrar nada, ser\u00e1 problem\u00e1tico.<\/p>\n<p>A vantagem do princ\u00edpio ISP em Java \u00e9 que primeiro \u00e9 necess\u00e1rio implementar todos os m\u00e9todos, e s\u00f3 ent\u00e3o eles podem ser utilizados pelas classes. Portanto, o princ\u00edpio permite reduzir o n\u00famero de m\u00e9todos.<\/p>\n<p><img decoding=\"async\" alt=\"10 princ\u00edpios da programa\u00e7\u00e3o orientada a objetos que todo desenvolvedor deve conhecer\" src=\"\/wp-content\/uploads\/2019\/06\/ea3e314e9f7766e8c1d3ce46d0dcdc09.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>Programa\u00e7\u00e3o para a interface, n\u00e3o para a implementa\u00e7\u00e3o.<\/h3>\n<p>\nAqui tudo fica claro pelo nome. A aplica\u00e7\u00e3o deste princ\u00edpio leva \u00e0 cria\u00e7\u00e3o de um c\u00f3digo flex\u00edvel que pode funcionar com qualquer nova implementa\u00e7\u00e3o de interface.<\/p>\n<p>Deve-se usar o tipo de interface para vari\u00e1veis, tipos de retorno ou o tipo de argumento do m\u00e9todo. Exemplo \u2014 usar SuperClass, e n\u00e3o SubClass.<\/p>\n<p>Ou seja:<\/p>\n<p><i>List numbers= getNumbers();<\/i><\/p>\n<p>E n\u00e3o:<\/p>\n<p><i>ArrayList numbers = getNumbers();<\/i><\/p>\n<p>Aqui est\u00e1 uma implementa\u00e7\u00e3o pr\u00e1tica do que foi mencionado acima.<\/p>\n<p><img decoding=\"async\" alt=\"10 princ\u00edpios da programa\u00e7\u00e3o orientada a objetos que todo desenvolvedor deve conhecer\" src=\"\/wp-content\/uploads\/2019\/06\/8bbcd8342a9870bc28272f0550a8664c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>Princ\u00edpio de delega\u00e7\u00e3o<\/h3>\n<p>\nUm exemplo comum s\u00e3o os m\u00e9todos equals() e hashCode() em Java. Quando \u00e9 necess\u00e1rio comparar dois objetos, essa a\u00e7\u00e3o \u00e9 delegada \u00e0 classe correspondente em vez do cliente.<\/p>\n<p>A vantagem do princ\u00edpio \u00e9 a aus\u00eancia de duplica\u00e7\u00e3o de c\u00f3digo e uma mudan\u00e7a relativamente simples de comportamento. Tamb\u00e9m \u00e9 aplic\u00e1vel \u00e0 delega\u00e7\u00e3o de eventos.<\/p>\n<p><img decoding=\"async\" alt=\"10 princ\u00edpios da programa\u00e7\u00e3o orientada a objetos que todo desenvolvedor deve conhecer\" src=\"\/wp-content\/uploads\/2019\/06\/c9ca40cb27e288e5e31ebfba76fa36a5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nTodos esses princ\u00edpios permitem escrever um c\u00f3digo mais flex\u00edvel, bonito e confi\u00e1vel, com alta coes\u00e3o e baixo acoplamento. Claro, a teoria \u00e9 boa, mas para que o desenvolvedor realmente comece a usar o conhecimento adquirido, \u00e9 necess\u00e1ria pr\u00e1tica. O pr\u00f3ximo passo ap\u00f3s dominar os princ\u00edpios da OOP pode ser o estudo de padr\u00f5es de design para resolver problemas comuns de desenvolvimento de software.<\/p>\n<blockquote><p><b>A Skillbox recomenda:<\/b><\/p>\n<ul>\n<li>Curso Pr\u00e1tico <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\">\u2018Desenvolvedor M\u00f3vel PRO\u2019<\/a><\/noindex>.<\/li>\n<li>Curso Online Aplicado <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\">\u2018Analista de Dados em Python\u2019<\/a><\/noindex>.<\/li>\n<li>Curso Pr\u00e1tico de Dois Anos <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\">\u2018Eu Sou um Desenvolvedor Web PRO\u2019<\/a><\/noindex>.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Fonte: <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.3 - 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\/pt\/blog\/news\/10-printsipov-obektno-orientirovannogo-programmirovaniya-o-kotoryh-dolzhen-znat-kazhdyj-razrabotchik\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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 Princ\u00edpios de Programa\u00e7\u00e3o Orientada a Objetos que Todo Desenvolvedor Deve Conhecer | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/pt\/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":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/34855","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=34855"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/34855\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/26244"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=34855"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=34855"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=34855"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}