{"id":1444914,"date":"2024-09-01T11:11:00","date_gmt":"2024-09-01T14:11:00","guid":{"rendered":"https:\/\/www.estrategiaconcursos.com.br\/blog\/?p=1444914"},"modified":"2024-08-19T11:51:32","modified_gmt":"2024-08-19T14:51:32","slug":"principios-solid-tse-ti","status":"publish","type":"post","link":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/","title":{"rendered":"Princ\u00edpios SOLID para o TSE (TI)"},"content":{"rendered":"\n<p>Este artigo apresenta uma explica\u00e7\u00e3o dos princ\u00edpios SOLID, que \u00e9 um dos t\u00f3picos cobrados no edital do concurso do <a href=\"https:\/\/www.cebraspe.org.br\/concursos\/cpnuje_24\">TSE unificado<\/a>.<\/p>\n\n\n\n<p>Estruturamos este artigo da seguinte maneira:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Introdu\u00e7\u00e3o<\/li>\n\n\n\n<li><em>Single Responsibility Principle<\/em> (Princ\u00edpio da Responsabilidade \u00danica)<\/li>\n\n\n\n<li><em>Open\/Closed Principle<\/em> (Princ\u00edpio Aberto\/Fechado)<\/li>\n\n\n\n<li><em>Liskov Substitution Principle<\/em> (Princ\u00edpio da Substitui\u00e7\u00e3o de Liskov)<\/li>\n\n\n\n<li><em>Interface Segregation Principle<\/em> (Princ\u00edpio da Segrega\u00e7\u00e3o de Interfaces)<\/li>\n\n\n\n<li><em>Dependency Inversion Principle <\/em>(Princ\u00edpio da Invers\u00e3o de Depend\u00eancia)<\/li>\n\n\n\n<li>Resumo<\/li>\n\n\n\n<li>Conclus\u00e3o<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-introducao\"><strong>Introdu\u00e7\u00e3o<\/strong><\/h2>\n\n\n\n<p>Os princ\u00edpios SOLID s\u00e3o um conjunto de diretrizes que visam melhorar a qualidade do design de software na programa\u00e7\u00e3o orientada a objetos (POO). Criados por Robert C. Martin (tamb\u00e9m conhecido como Uncle Bob), esses princ\u00edpios ajudam desenvolvedores a criar sistemas mais flex\u00edveis, compreens\u00edveis, e f\u00e1ceis de manter.&nbsp;<\/p>\n\n\n\n<p>Neste artigo, vamos explorar cada um dos cinco princ\u00edpios SOLID, entendendo sua import\u00e2ncia e como aplic\u00e1-los com exemplos pr\u00e1ticos.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXchUPjotHV3R27g84wk6G9ITBBquQyHwytSSsLdSUyim5zgtMS2stFzO-P0EjANlR6T5Ufmw9MhWJOWvgCl7bdMTU1GDR82UU2jEOzbDZPhGwU0bdEh2pnzjmtriDPTE-6DRY5IhlXPYIkG61CsA0GQOjU?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"Princ\u00edpios SOLID\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-single-responsibility-principle-principio-da-responsabilidade-unica\"><strong><em>Single Responsibility Principle<\/em><\/strong><strong> (Princ\u00edpio da Responsabilidade \u00danica)<\/strong><\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-light-green-cyan-background-color has-background has-medium-font-size\">Uma classe deve ter apenas <strong>uma raz\u00e3o para mudar<\/strong>, ou seja, ela deve ter apenas <strong>uma \u00fanica responsabilidade<\/strong>.<\/p>\n<\/blockquote>\n\n\n\n<p>O Princ\u00edpio da Responsabilidade \u00danica destaca que cada classe em um sistema deve ser respons\u00e1vel por uma \u00fanica tarefa ou funcionalidade. Se uma classe faz mais de uma coisa, ela pode se tornar dif\u00edcil de manter e de testar, pois mudan\u00e7as em uma funcionalidade podem impactar outras.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-exemplo\"><strong>Exemplo:<\/strong><\/h3>\n\n\n\n<p>Suponha que temos uma classe Relatorio que \u00e9 respons\u00e1vel por gerar um relat\u00f3rio e tamb\u00e9m envi\u00e1-lo por e-mail.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcxWuW74crLlpuYfLYu898GFqKgkZgWydofuJ5bMV6bkLrtxl67ucCt87iXv7PL4gRz-oMZipeN2EJdWtuNGjme0YYvC8vx1ZccC3GFZGepwqHslUrPK4P7hQiYjYsRnm_Al1MrP5p4Z-xZouh49K2q793s?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"C\u00f3digo exemplo\"\/><\/figure>\n\n\n\n<p>Essa classe viola o princ\u00edpio da Responsabilidade \u00danica porque ela tem duas responsabilidades: gerar um relat\u00f3rio e envi\u00e1-lo por e-mail. Para aderir a este princ\u00edpio, devemos separar essas responsabilidades:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdMpZPGq_88DKB-UDHMNcVKzg_9IN183Dc0S9bzEjoHsiD8z20KIF8Bmfd3TeWa9qeei_dZ9hqxWe7h6pl_AveFjFtguzpjqYc6bAKLyqnuaawGhSSvyJc-S60vB9Kne3u4ZpXc8KH1UZ8KD_itlHrszo2e?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"c\u00f3digo exemplo\"\/><\/figure>\n\n\n\n<p>Agora, temos duas classes, cada uma com uma responsabilidade \u00fanica, facilitando a manuten\u00e7\u00e3o e a reutiliza\u00e7\u00e3o do c\u00f3digo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-open-closed-principle-principio-aberto-fechado\"><strong><em>Open\/Closed Principle<\/em><\/strong><strong> (Princ\u00edpio Aberto\/Fechado)<\/strong><\/h2>\n\n\n\n<blockquote class=\"wp-block-quote has-medium-font-size is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-pale-pink-background-color has-background\">Software deve ser <strong>aberto para extens\u00e3o<\/strong>, mas <strong>fechado para modifica\u00e7\u00e3o<\/strong>.<\/p>\n<\/blockquote>\n\n\n\n<p>O Princ\u00edpio Aberto\/Fechado sugere que uma classe deve ser f\u00e1cil de estender para novos comportamentos sem precisar modificar o c\u00f3digo existente. Isso pode ser feito atrav\u00e9s da heran\u00e7a ou da composi\u00e7\u00e3o, permitindo adicionar novas funcionalidades sem alterar as j\u00e1 existentes, evitando a introdu\u00e7\u00e3o de bugs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-exemplo-0\"><strong>Exemplo:<\/strong><\/h3>\n\n\n\n<p>Considere uma classe que calcula o sal\u00e1rio de diferentes tipos de funcion\u00e1rios:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdh8ikBsSWOsqfoORZBdUXpinJOgH_iY7OhocPBr14Rs7qnT6dszfnpSZ-sBVy-KiGfFhjrKK4KPJZFo-ZqO0QoGrQ6m366gc93Y4sMOXOFfDvKRTZWcAVM0_SXfG3o8cVB3TRqbHTCDyfc5ZgHVGY6a8Jq?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"C\u00f3digo exemplo\"\/><\/figure>\n\n\n\n<p>Essa implementa\u00e7\u00e3o viola o princ\u00edpio Aberto\/Fechado porque toda vez que um novo tipo de funcion\u00e1rio \u00e9 adicionado, o c\u00f3digo da classe precisa ser modificado. Vamos refatorar:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXflDS4-dcPKXMoGSzdvO7MuCdFN3Wn9sXQNpU2MYo2yg9G9GUFWeHApp9Ka0AUQoO8bInl11brFtERsLiafXKosfp_8HaHaRUSONc9AWj46NIfH7aId6nbVwZcj9Ha4e8RkoCAlkdOfIDRITgCJqONFmEH1?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"C\u00f3digo exemplo\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeiqymNUQXk_0fFszFCmHn3pm_CYdgMkN6EwI0CjFwY6USSrPCaZqoa_D3JgXB64Wq9H_4XC8ZGjot-T_xL1oBjVK0z7_lbHozdfOT6XnIUq7lqOrvEihGySFVemgHb7tmXsnjIJ8-8wtEIktl6hL4VsIr9?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"C\u00f3digo exemplo\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfsW6UiMHS-_VnjflY7DjYXMCSpl1gSQkdQ6dsHP_3L8xNWGSlgK-VgcewyXQ4xRLwfO_YEd_Quh-Q4_h9IVPZ9JlYsFQDjmn5umE2qCG2Q9QC2jgw2SN03-7ZGNnFkPd9wNFvpVcWBW8oOdA3joAv9Lyb7?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"C\u00f3digo exemplo\"\/><\/figure>\n\n\n\n<p>Agora, se precisarmos adicionar novos tipos de funcion\u00e1rios, podemos faz\u00ea-lo estendendo a classe Funcionario sem modificar o c\u00f3digo existente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-liskov-substitution-principle-principio-da-substituicao-de-liskov\"><strong><em>Liskov Substitution Principle<\/em><\/strong><strong> (Princ\u00edpio da Substitui\u00e7\u00e3o de Liskov)<\/strong><\/h2>\n\n\n\n<blockquote class=\"wp-block-quote has-background has-medium-font-size is-layout-flow wp-block-quote-is-layout-flow\" style=\"background-color:#f6feac\">\n<p class=\"has-text-align-center\">Objetos de uma classe derivada devem poder substituir objetos da classe base sem alterar o comportamento desejado do programa.<\/p>\n<\/blockquote>\n\n\n\n<p>O Princ\u00edpio da Substitui\u00e7\u00e3o de Liskov afirma que se S \u00e9 uma subclasse de T, ent\u00e3o os objetos do tipo T em um programa podem ser substitu\u00eddos por objetos de tipo S sem que isso altere as propriedades corretas do programa. Em outras palavras, as subclasses devem manter o comportamento esperado pela superclasse.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-exemplo-hierarquia-de-veiculos\"><strong>Exemplo: Hierarquia de Ve\u00edculos<\/strong><\/h3>\n\n\n\n<p>Imagine que estamos desenvolvendo um sistema de ve\u00edculos, onde temos uma classe base Veiculo e duas subclasses: Carro e Bicicleta.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXc7wf48ejtJ_rhjAQpwVONBltVebOkEGLBTzFjtVjDeTghgByZYusnkHJ1RZ7VTjhWAznuEH2QKbDMV5y8qqoJXGD7FFwEZLFsrKuURHt1TXOypGaVW-n3_pQktdpd5Qj0FI6wXdA3RX4WPpEUAjt-jbT0?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"C\u00d3DIGO EXEMPLO - princ\u00edpios SOLID\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXf5JfZL2XbSNfwjdqz9vIRHMBU7wxhQUyWXGud2th-JBtZa2UIhKwpG1gNU2YhuZH1NbIC1e1QPsFadeuvCqCG97XtEVLYf81eWjUbaZcn1xBpSwR125Q0WacsNQJHOFLA8D0af-c4uE7VHykXQFoFH1xve?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"C\u00d3DIGO EXEMPLO\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdRSaJJmOv5Ic0B_WsygDn2WJuNRETSPlGQmE9PPZ-Ks42oGDl0in2PDZgNNpKCGu77PWksHAswskaBJFwOfnYMpAawZrs3YBGBT8I4xG-fhAiT8aJNgEoq96HLidTg_RIWHTthZONzWw_bh-OaNnJkCDDO?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"codigo exemplo - SOLID\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-problema\"><strong>Problema<\/strong><\/h4>\n\n\n\n<p>Aqui, temos um problema claro: a classe Bicicleta n\u00e3o deveria herdar de Veiculo porque bicicletas n\u00e3o t\u00eam motor. O m\u00e9todo ligarMotor n\u00e3o faz sentido para a classe Bicicleta e, ao tentar substituir Veiculo por Bicicleta, podemos causar um comportamento inesperado ou at\u00e9 exce\u00e7\u00f5es.<\/p>\n\n\n\n<p>Isso viola o Princ\u00edpio da Substitui\u00e7\u00e3o de Liskov, que exige que uma subclasse possa ser substitu\u00edda por sua superclasse sem quebrar o comportamento do sistema.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-solucao\"><strong>Solu\u00e7\u00e3o<\/strong><\/h4>\n\n\n\n<p>Para resolver esse problema, podemos refatorar a hierarquia de classes, separando a funcionalidade de &#8220;ve\u00edculos com motor&#8221; e &#8220;ve\u00edculos sem motor&#8221;. Vamos introduzir uma interface ou classe abstrata espec\u00edfica para ve\u00edculos com motor.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXf1iqZtFy62BpSY5UXgNGDPPjeWTaHdGI9DxnnzMkC5tPFV6KdTkMCEKhFPtvVA9-W5BSqCWCvWvH0hzBEuHQeg0oWMdRJey5ag36eecN0Eg0neXgTdTHllHybOjVtnqHEqoQR8bvOjM39yzO5od9MnR7pR?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"codigo exemplo\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXemKhxutQc8yC4osEp6qELWpES7MfG2RA-ynq3S1YG2NowoZd5GwU4WP4LsazlN4PGWfUnT60n3lpoiKVftDYi5FIa40Zfhf1iOH2RyxkeSsn0hCd5lYWUkCBbfVLSHTPB7f75y9yM8UtsseuTuvtQqTGbY?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"C\u00f3digo Exemplo\"\/><\/figure>\n\n\n\n<p>Agora, temos uma hierarquia que respeita o Princ\u00edpio da Substitui\u00e7\u00e3o de Liskov:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A classe Carro herda de VeiculoComMotor, que tem o m\u00e9todo ligarMotor. Isso faz sentido porque um carro tem motor.<\/li>\n\n\n\n<li>A classe Bicicleta herda de Veiculo, mas n\u00e3o precisa implementar o m\u00e9todo ligarMotor, pois ele n\u00e3o faz sentido para uma bicicleta.<\/li>\n<\/ul>\n\n\n\n<p>Com essa refatora\u00e7\u00e3o, podemos substituir Veiculo por qualquer classe derivada (Carro ou Bicicleta) sem causar comportamentos inesperados ou erros no sistema. Assim, o c\u00f3digo se torna mais robusto e alinhado com o princ\u00edpio da Substitui\u00e7\u00e3o de Liskov.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-interface-segregation-principle-principio-da-segregacao-de-interfaces\"><strong><em>Interface Segregation Principle<\/em><\/strong><strong> (Princ\u00edpio da Segrega\u00e7\u00e3o de Interfaces)<\/strong><\/h2>\n\n\n\n<blockquote class=\"wp-block-quote has-background is-layout-flow wp-block-quote-is-layout-flow\" style=\"background-color:#d7baf1\">\n<p class=\"has-text-align-center has-medium-font-size\">Os clientes n\u00e3o devem ser for\u00e7ados a depender de interfaces que n\u00e3o utilizam.<\/p>\n<\/blockquote>\n\n\n\n<p>O Princ\u00edpio da Segrega\u00e7\u00e3o de Interfaces sugere que \u00e9 melhor ter v\u00e1rias interfaces espec\u00edficas do que uma \u00fanica interface gen\u00e9rica. Isso evita que as classes implementem m\u00e9todos que n\u00e3o precisam, reduzindo a complexidade e aumentando a clareza do c\u00f3digo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-exemplo-1\"><strong>Exemplo:<\/strong><\/h3>\n\n\n\n<p>Vamos considerar uma interface Funcionario:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdg41bn2qdXXSBKSmxjltoEQQeZSxjV8V7y1LBfn0u-Ui0q2UvNpNYhI8qJ3bje3pq2OU_ZtPsYQMaFe8_J39AoQibokk0koT7-5uEAC7Vvbn-cM-fmO9zDwlYBXKupOvhQcBtHBgxgnObOS0DUOyM548A?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"CODIGO EXEMPLOS\"\/><\/figure>\n\n\n\n<p>Essa interface \u00e9 problem\u00e1tica porque for\u00e7a todos os funcion\u00e1rios a implementarem o m\u00e9todo fazerCafe, mesmo que nem todos precisem fazer isso. Podemos dividir essa interface em v\u00e1rias interfaces menores:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcoorgF1r99egFSIDe25BJkRSrFwZIgCE_K-WAee5plw5MuinPER_muMpQU43s49EJeqwdfgZnTtManA2RULBmapzSQQjn3fHXy4Cc-e-VFr3drQ7Bzw1H-ivDkbxtUrqBdMIkKIM8v-aXtKL8o5Mz3PrI6?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"CODIGO EXEMPLO\"\/><\/figure>\n\n\n\n<p>Agora, podemos criar classes que implementam apenas as interfaces relevantes:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXf-uv7g55Shk0p_1jUW6gUQxvdyNWaYMY2vd3MprWc9kZ0TMIaEto1ptT6IhfQR7IqEd4zYapuBhWzeQh0dcdv46fb6F7_WpQasdGi4XgL-eGRWR4h9aJiNTz32APaJZnngIobtToSKmy617neZzrGbc5to?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"CODIGO EXEMPLO\"\/><\/figure>\n\n\n\n<p>Isso torna o design mais modular e flex\u00edvel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-dependency-inversion-principle-principio-da-inversao-de-dependencia\"><strong><em>Dependency Inversion Principle <\/em><\/strong><strong>(Princ\u00edpio da Invers\u00e3o de Depend\u00eancia)<\/strong><\/h2>\n\n\n\n<blockquote class=\"wp-block-quote has-pale-cyan-blue-background-color has-background is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-text-align-center has-medium-font-size\"><strong>Dependa de abstra\u00e7\u00f5es, n\u00e3o de implementa\u00e7\u00f5es<\/strong>. M\u00f3dulos de alto n\u00edvel n\u00e3o devem depender de m\u00f3dulos de baixo n\u00edvel. Ambos devem depender de abstra\u00e7\u00f5es.<\/p>\n<\/blockquote>\n\n\n\n<p>O Princ\u00edpio da Invers\u00e3o de Depend\u00eancia sugere que devemos depender de abstra\u00e7\u00f5es (como interfaces ou classes abstratas) em vez de implementa\u00e7\u00f5es concretas. Isso permite que o c\u00f3digo seja mais flex\u00edvel e f\u00e1cil de modificar, pois podemos trocar uma implementa\u00e7\u00e3o por outra sem alterar o c\u00f3digo que depende dessa abstra\u00e7\u00e3o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-exemplo-nbsp\"><strong>Exemplo:&nbsp;<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\" id=\"h-implementacao-sem-inversao-de-dependencia\"><strong>Implementa\u00e7\u00e3o Sem Invers\u00e3o de Depend\u00eancia <\/strong><\/h4>\n\n\n\n<p>Vamos come\u00e7ar com um exemplo onde o Princ\u00edpio da Invers\u00e3o de Depend\u00eancia n\u00e3o est\u00e1 sendo seguido:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdvewknGqrRWsKW5pCcAtSWHT8MdoHrCfeUvIpp4EkH084w2XN18jaoV09HwSKNNyXot8Wp1nPVjGDaZd67G0--Vqrzc6JJdzsP2dkw7oVqNgJzKI9K2C3ANfS5QMp54zU_qlvpJPWTbAlJBpb41qVuWl8q?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"CODIGO -  Princ\u00edpios SOLID\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\" id=\"h-problema-0\"><strong>Problema<\/strong><\/h4>\n\n\n\n<p>Aqui, a classe LogService est\u00e1 fortemente acoplada \u00e0 classe FileLogger. Isso significa que, se quisermos alterar a forma como os logs s\u00e3o armazenados (por exemplo, passar a armazenar logs em um banco de dados), ter\u00edamos que modificar a classe LogService. Esse tipo de acoplamento torna o c\u00f3digo r\u00edgido e dif\u00edcil de manter.<\/p>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\" id=\"h-solucao-com-o-principio-da-inversao-de-dependencia\"><strong>Solu\u00e7\u00e3o com o Princ\u00edpio da Invers\u00e3o de Depend\u00eancia<\/strong><\/h4>\n\n\n\n<p>Para resolver esse problema, aplicamos o Princ\u00edpio da Invers\u00e3o de Depend\u00eancia ao introduzir uma abstra\u00e7\u00e3o (<em>Logger<\/em>) e fazer com que <em>LogService <\/em>dependa dessa abstra\u00e7\u00e3o em vez de uma implementa\u00e7\u00e3o concreta como <em>FileLogger<\/em>.<\/p>\n\n\n\n<h5 class=\"wp-block-heading has-medium-font-size\" id=\"h-passo-1-criar-uma-interface-logger\"><strong>Passo 1: Criar uma Interface <em>Logger<\/em><\/strong><\/h5>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeaU0UsSxz08mOkHduEoKOjmIwmyR8X-mBVS455tv4u6vg9_qy_BfV7WTSEK_3Pa0QEgrWfsdqXH2wDTKtQoriwmrCiwRgEvRhh2Zq79SXukUHZeIzqr3KeHl0qwW8VrFmbEvd-r6aZFnwTYh0YSXU-Lt6B?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"codigo fonte SOLID -  Princ\u00edpios SOLID\"\/><\/figure>\n\n\n\n<p>Essa interface define um contrato que qualquer classe de logger deve implementar.<\/p>\n\n\n\n<h5 class=\"wp-block-heading has-medium-font-size\" id=\"h-passo-2-implementar-filelogger-como-uma-implementacao-de-logger\"><strong>Passo 2: Implementar <\/strong><strong>FileLogger<\/strong><strong> como uma Implementa\u00e7\u00e3o de <\/strong><strong>Logger<\/strong><\/h5>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXchhViuIurz6nJVsr9LUo1tElZ_uKrKTr2I-oI3WpFR91PjWZ49newqlSzQKH6g6xu2xniogU8ZIkKLOYXNTNwTe5SHarXU9iFQvDB0iPrAQumgcuDzNlWiovnvVVAbtur_weQ7m33QqqGDZ6KV60Vbr30?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"codigo fonte\"\/><\/figure>\n\n\n\n<p>Agora, FileLogger implementa a interface Logger, o que significa que ele pode ser tratado como um Logger.<\/p>\n\n\n\n<h5 class=\"wp-block-heading has-medium-font-size\" id=\"h-passo-3-modificar-logservice-para-depender-de-logger\"><strong>Passo 3: Modificar <\/strong><strong>LogService<\/strong><strong> para Depender de <\/strong><strong>Logger<\/strong><\/h5>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfM9tsMLNdZdIPtl3_t1ax9HtMo8pTRWpNCze2JiAkuGTWJvTaMZUR6qs83_jrQXRT0cAbpQQgs0eJfZD79PXZtevHIJu420xoH-3s6Qa-lL-KAskZQj0KOEYqf1V9qXj8-1qF4gq84BdC60GjO3U9H45Q?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"C\u00f3digo -  Princ\u00edpios SOLID\"\/><\/figure>\n\n\n\n<p>Aqui, LogService n\u00e3o depende mais de uma implementa\u00e7\u00e3o espec\u00edfica (FileLogger). Em vez disso, ela depende da abstra\u00e7\u00e3o Logger, que pode ser qualquer implementa\u00e7\u00e3o de logger.<\/p>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\" id=\"h-vantagens-da-abordagem-com-principio-da-inversao-de-dependencia\"><strong>Vantagens da Abordagem com Princ\u00edpio da Invers\u00e3o de Depend\u00eancia<\/strong><\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Flexibilidade:<\/strong> Podemos facilmente substituir <em>FileLogger <\/em>por outra implementa\u00e7\u00e3o, como <em>DatabaseLogger<\/em>, sem modificar <em>LogService<\/em>.<\/li>\n\n\n\n<li><strong>Testabilidade:<\/strong> No contexto de testes, podemos criar uma implementa\u00e7\u00e3o mock de Logger para testar LogService sem precisar acessar o sistema de arquivos.<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\" id=\"h-exemplo-com-outra-implementacao\"><strong>Exemplo com Outra Implementa\u00e7\u00e3o<\/strong><\/h4>\n\n\n\n<p>Vamos criar uma outra implementa\u00e7\u00e3o de <em>Logger <\/em>para ver como \u00e9 f\u00e1cil trocar o comportamento:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdonyFmEV5WPrV6qd8aoQWrMBhrAjJZd_KPFnZY9AnFrHyMbJ6qyiUSBQG8sMWbhAhQjg_mcErKuE5T7BAf7Et5dZE-D36z2lAguufjjEhC14F65ohjgUC4VT4UFR23Qvb_ZRw3Q5SdGOvG03C3gLuEeoY?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"C\u00f3digo SOLID -  Princ\u00edpios SOLID\"\/><\/figure>\n\n\n\n<p>Agora, podemos usar <em>DatabaseLogger <\/em>no lugar de <em>FileLogger <\/em>sem mudar nada em <em>LogService<\/em>:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXd4ksuc5dRuBzoE8d3z6M-9zZVO_AGWcwYl-0IMyc9tNO5SeZGPwpvN1rewWU-UON9t2l8Z_YI9EpoM0WYWhOT1wssqwOScD0sp_A6OQ65GxFsiBz1W9HdT8lwcRU9xtdI7uxacjHiCKRuJUcp3AniqyXA?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"Codigo (SOLID) -  Princ\u00edpios SOLID\"\/><\/figure>\n\n\n\n<p>Com essa abordagem, <em>LogService <\/em>\u00e9 independente da forma como o log \u00e9 armazenado. Ele pode usar qualquer implementa\u00e7\u00e3o de <em>Logger<\/em>, seja para salvar em arquivo, banco de dados, enviar para a nuvem, etc., simplesmente alterando a implementa\u00e7\u00e3o passada para ele.<\/p>\n\n\n\n<p>Ao introduzir uma abstra\u00e7\u00e3o como <em>Logger<\/em>, tornamos o c\u00f3digo mais modular, flex\u00edvel e aderente ao Princ\u00edpio da Invers\u00e3o de Depend\u00eancia. O <em>LogService <\/em>agora depende de uma abstra\u00e7\u00e3o e pode trabalhar com qualquer implementa\u00e7\u00e3o dessa abstra\u00e7\u00e3o, facilitando mudan\u00e7as e mantendo o c\u00f3digo mais limpo e sustent\u00e1vel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-resumo\"><strong>Resumo<\/strong><\/h2>\n\n\n\n<p>A imagem abaixo apresenta um resumo r\u00e1pido dos princ\u00edpios SOLID:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXceEiD0Pu7Imi-6sXJ5iILvwBU81dfdsIDHp7V06fujE1zhx6OtfgfBDFh4zOnVVslRWcyyOn7c8er5v8Vo62bENvzcf9zDNTCyHtzTWdkXWg0s3zNG9adLiZ42NPkoY8_xUf9qskS9tsXBNHZdtS3QPZyg?key=Ua6TMUelwGfEwLDlYKhlWA\" alt=\"Resumo dos Princ\u00edpios SOLID\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusao\"><strong>Conclus\u00e3o<\/strong><\/h2>\n\n\n\n<p>Os princ\u00edpios SOLID s\u00e3o essenciais para o desenvolvimento de software de alta qualidade. Eles ajudam a criar sistemas mais flex\u00edveis, modulares, e de f\u00e1cil manuten\u00e7\u00e3o, o que \u00e9 fundamental em ambientes de desenvolvimento \u00e1geis e em constante mudan\u00e7a. Ao seguir esses princ\u00edpios, os desenvolvedores podem evitar problemas comuns no design de software, como c\u00f3digo fr\u00e1gil, dif\u00edcil de testar, e dif\u00edcil de entender. Portanto, incorporar esses princ\u00edpios no dia a dia do desenvolvimento pode melhorar significativamente a qualidade do c\u00f3digo e a efici\u00eancia das equipes de desenvolvimento.<\/p>\n\n\n\n<p>Espero que o conte\u00fado apresentado tenha sido claro e seja \u00fatil para seus estudos e aprova\u00e7\u00e3o. Bons estudos!<\/p>\n\n\n\n<p class=\"has-text-align-center\" id=\"h-quer-saber-tudo-sobre-concursos-previstos\"><strong>Quer saber quais ser\u00e3o os pr\u00f3ximos concursos?<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>Confira nossos artigos!<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-center has-pale-cyan-blue-background-color has-background\"><a href=\"https:\/\/www.estrategiaconcursos.com.br\/blog\/concursos-abertos\/\" target=\"_blank\" rel=\"noreferrer noopener\">Concursos abertos<\/a><\/p>\n\n\n\n<p class=\"has-text-align-center has-pale-cyan-blue-background-color has-background\"><a href=\"https:\/\/www.estrategiaconcursos.com.br\/blog\/concursos-2024\/\" target=\"_blank\" rel=\"noreferrer noopener\">Concursos 2024<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Este artigo apresenta uma explica\u00e7\u00e3o dos princ\u00edpios SOLID, que \u00e9 um dos t\u00f3picos cobrados no edital do concurso do TSE unificado. Estruturamos este artigo da seguinte maneira: Introdu\u00e7\u00e3o Os princ\u00edpios SOLID s\u00e3o um conjunto de diretrizes que visam melhorar a qualidade do design de software na programa\u00e7\u00e3o orientada a objetos (POO). Criados por Robert C. [&hellip;]<\/p>\n","protected":false},"author":2565,"featured_media":1444919,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"post_tipo":"article","footnotes":""},"categories":[1,220184,1984,220737],"tags":[40,25,221072],"tax_estado":[219963],"class_list":["post-1444914","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cursos-e-concursos","category-engenharias-e-ti","category-tribunais","category-tribunais-tribunais","tag-concurso","tag-tecnologia-da-informacao","tag-tse-unificado","tax_estado-concursos-federais"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Princ\u00edpios SOLID para o TSE (TI)<\/title>\n<meta name=\"description\" content=\"Este artigo apresenta uma explica\u00e7\u00e3o dos princ\u00edpios SOLID, que \u00e9 um dos t\u00f3picos cobrados no edital do concurso do TSE unificado.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Princ\u00edpios SOLID para o TSE (TI)\" \/>\n<meta property=\"og:description\" content=\"Este artigo apresenta uma explica\u00e7\u00e3o dos princ\u00edpios SOLID, que \u00e9 um dos t\u00f3picos cobrados no edital do concurso do TSE unificado.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/\" \/>\n<meta property=\"og:site_name\" content=\"Estrat\u00e9gia Concursos\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-01T14:11:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dhg1h5j42swfq.cloudfront.net\/2024\/08\/13223136\/imagem-destaque-principios-solid.png\" \/>\n\t<meta property=\"og:image:width\" content=\"777\" \/>\n\t<meta property=\"og:image:height\" content=\"635\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Antoniel da Silva Rego\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@EstratConcursos\" \/>\n<meta name=\"twitter:site\" content=\"@EstratConcursos\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Antoniel da Silva Rego\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/\"},\"author\":{\"name\":\"Antoniel da Silva Rego\",\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/#\/schema\/person\/65e75c615593894f0136e777b57e5d46\"},\"headline\":\"Princ\u00edpios SOLID para o TSE (TI)\",\"datePublished\":\"2024-09-01T14:11:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/\"},\"wordCount\":1568,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dhg1h5j42swfq.cloudfront.net\/2024\/08\/13223136\/imagem-destaque-principios-solid.png\",\"keywords\":[\"Concurso\",\"Tecnologia da Informa\u00e7\u00e3o\",\"TSE Unificado\"],\"articleSection\":[\"Concursos P\u00fablicos\",\"Engenharias e TI\",\"Tribunais\",\"Tribunais\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#respond\"]}],\"copyrightYear\":\"2024\",\"copyrightHolder\":{\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/\",\"url\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/\",\"name\":\"Princ\u00edpios SOLID para o TSE (TI)\",\"isPartOf\":{\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dhg1h5j42swfq.cloudfront.net\/2024\/08\/13223136\/imagem-destaque-principios-solid.png\",\"datePublished\":\"2024-09-01T14:11:00+00:00\",\"description\":\"Este artigo apresenta uma explica\u00e7\u00e3o dos princ\u00edpios SOLID, que \u00e9 um dos t\u00f3picos cobrados no edital do concurso do TSE unificado.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#primaryimage\",\"url\":\"https:\/\/dhg1h5j42swfq.cloudfront.net\/2024\/08\/13223136\/imagem-destaque-principios-solid.png\",\"contentUrl\":\"https:\/\/dhg1h5j42swfq.cloudfront.net\/2024\/08\/13223136\/imagem-destaque-principios-solid.png\",\"width\":777,\"height\":635,\"caption\":\"Princ\u00edpios SOLID\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Princ\u00edpios SOLID para o TSE (TI)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/#website\",\"url\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/\",\"name\":\"Estrat\u00e9gia Concursos\",\"description\":\"O blog da Estrat\u00e9gia Concursos traz not\u00edcias sobre concursos e artigos de professores oferecendo cursos para concursos (pdf + videaulas) no site.\",\"publisher\":{\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/#organization\",\"name\":\"Estrat\u00e9gia Concursos\",\"url\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/dhg1h5j42swfq.cloudfront.net\/2025\/06\/03203428\/logo_concursos-1.jpg\",\"contentUrl\":\"https:\/\/dhg1h5j42swfq.cloudfront.net\/2025\/06\/03203428\/logo_concursos-1.jpg\",\"width\":230,\"height\":60,\"caption\":\"Estrat\u00e9gia Concursos\"},\"image\":{\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/EstratConcursos\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/#\/schema\/person\/65e75c615593894f0136e777b57e5d46\",\"name\":\"Antoniel da Silva Rego\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/b8f680af1fe7f097d3f42a127f2b204823c881cf0f4a904ff915b5991017d762?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b8f680af1fe7f097d3f42a127f2b204823c881cf0f4a904ff915b5991017d762?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b8f680af1fe7f097d3f42a127f2b204823c881cf0f4a904ff915b5991017d762?s=96&d=mm&r=g\",\"caption\":\"Antoniel da Silva Rego\"},\"url\":\"https:\/\/www.estrategiaconcursos.com.br\/blog\/author\/tonnyelgmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Princ\u00edpios SOLID para o TSE (TI)","description":"Este artigo apresenta uma explica\u00e7\u00e3o dos princ\u00edpios SOLID, que \u00e9 um dos t\u00f3picos cobrados no edital do concurso do TSE unificado.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/","og_locale":"pt_BR","og_type":"article","og_title":"Princ\u00edpios SOLID para o TSE (TI)","og_description":"Este artigo apresenta uma explica\u00e7\u00e3o dos princ\u00edpios SOLID, que \u00e9 um dos t\u00f3picos cobrados no edital do concurso do TSE unificado.","og_url":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/","og_site_name":"Estrat\u00e9gia Concursos","article_published_time":"2024-09-01T14:11:00+00:00","og_image":[{"width":777,"height":635,"url":"https:\/\/dhg1h5j42swfq.cloudfront.net\/2024\/08\/13223136\/imagem-destaque-principios-solid.png","type":"image\/png"}],"author":"Antoniel da Silva Rego","twitter_card":"summary_large_image","twitter_creator":"@EstratConcursos","twitter_site":"@EstratConcursos","twitter_misc":{"Escrito por":"Antoniel da Silva Rego","Est. tempo de leitura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#article","isPartOf":{"@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/"},"author":{"name":"Antoniel da Silva Rego","@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/#\/schema\/person\/65e75c615593894f0136e777b57e5d46"},"headline":"Princ\u00edpios SOLID para o TSE (TI)","datePublished":"2024-09-01T14:11:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/"},"wordCount":1568,"commentCount":0,"publisher":{"@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#primaryimage"},"thumbnailUrl":"https:\/\/dhg1h5j42swfq.cloudfront.net\/2024\/08\/13223136\/imagem-destaque-principios-solid.png","keywords":["Concurso","Tecnologia da Informa\u00e7\u00e3o","TSE Unificado"],"articleSection":["Concursos P\u00fablicos","Engenharias e TI","Tribunais","Tribunais"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#respond"]}],"copyrightYear":"2024","copyrightHolder":{"@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/","url":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/","name":"Princ\u00edpios SOLID para o TSE (TI)","isPartOf":{"@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#primaryimage"},"image":{"@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#primaryimage"},"thumbnailUrl":"https:\/\/dhg1h5j42swfq.cloudfront.net\/2024\/08\/13223136\/imagem-destaque-principios-solid.png","datePublished":"2024-09-01T14:11:00+00:00","description":"Este artigo apresenta uma explica\u00e7\u00e3o dos princ\u00edpios SOLID, que \u00e9 um dos t\u00f3picos cobrados no edital do concurso do TSE unificado.","breadcrumb":{"@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#primaryimage","url":"https:\/\/dhg1h5j42swfq.cloudfront.net\/2024\/08\/13223136\/imagem-destaque-principios-solid.png","contentUrl":"https:\/\/dhg1h5j42swfq.cloudfront.net\/2024\/08\/13223136\/imagem-destaque-principios-solid.png","width":777,"height":635,"caption":"Princ\u00edpios SOLID"},{"@type":"BreadcrumbList","@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/principios-solid-tse-ti\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.estrategiaconcursos.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Princ\u00edpios SOLID para o TSE (TI)"}]},{"@type":"WebSite","@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/#website","url":"https:\/\/www.estrategiaconcursos.com.br\/blog\/","name":"Estrat\u00e9gia Concursos","description":"O blog da Estrat\u00e9gia Concursos traz not\u00edcias sobre concursos e artigos de professores oferecendo cursos para concursos (pdf + videaulas) no site.","publisher":{"@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.estrategiaconcursos.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/#organization","name":"Estrat\u00e9gia Concursos","url":"https:\/\/www.estrategiaconcursos.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhg1h5j42swfq.cloudfront.net\/2025\/06\/03203428\/logo_concursos-1.jpg","contentUrl":"https:\/\/dhg1h5j42swfq.cloudfront.net\/2025\/06\/03203428\/logo_concursos-1.jpg","width":230,"height":60,"caption":"Estrat\u00e9gia Concursos"},"image":{"@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/EstratConcursos"]},{"@type":"Person","@id":"https:\/\/www.estrategiaconcursos.com.br\/blog\/#\/schema\/person\/65e75c615593894f0136e777b57e5d46","name":"Antoniel da Silva Rego","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/b8f680af1fe7f097d3f42a127f2b204823c881cf0f4a904ff915b5991017d762?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b8f680af1fe7f097d3f42a127f2b204823c881cf0f4a904ff915b5991017d762?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b8f680af1fe7f097d3f42a127f2b204823c881cf0f4a904ff915b5991017d762?s=96&d=mm&r=g","caption":"Antoniel da Silva Rego"},"url":"https:\/\/www.estrategiaconcursos.com.br\/blog\/author\/tonnyelgmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/www.estrategiaconcursos.com.br\/blog\/wp-json\/wp\/v2\/posts\/1444914","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.estrategiaconcursos.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.estrategiaconcursos.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.estrategiaconcursos.com.br\/blog\/wp-json\/wp\/v2\/users\/2565"}],"replies":[{"embeddable":true,"href":"https:\/\/www.estrategiaconcursos.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1444914"}],"version-history":[{"count":2,"href":"https:\/\/www.estrategiaconcursos.com.br\/blog\/wp-json\/wp\/v2\/posts\/1444914\/revisions"}],"predecessor-version":[{"id":1444923,"href":"https:\/\/www.estrategiaconcursos.com.br\/blog\/wp-json\/wp\/v2\/posts\/1444914\/revisions\/1444923"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.estrategiaconcursos.com.br\/blog\/wp-json\/wp\/v2\/media\/1444919"}],"wp:attachment":[{"href":"https:\/\/www.estrategiaconcursos.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1444914"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.estrategiaconcursos.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1444914"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.estrategiaconcursos.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1444914"},{"taxonomy":"tax_estado","embeddable":true,"href":"https:\/\/www.estrategiaconcursos.com.br\/blog\/wp-json\/wp\/v2\/tax_estado?post=1444914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}