Você está na página 1de 6
‘ori062016 Programaglo Orientada a Objtos om 1 lies prticas -Parto 10 @- /DESENVOLVIMENTO Bw, embod SR et |p ston? et LiMn osx — nowt ton ERENT | _ Programagao Orientada a Objetos em 10 ligdes praticas — Parte 10 José Carlos Macoratt er» NET, Vu Basie ‘quite, 25 de sotombro de 2014 sntnes / Apresentando 0 padrao IoC — Inversdo de(s')[*-) Controle Neste artigo vocé vai aprender o que é 0 padrao IoC ou Inversdo de Controle e saber por que vocé deve programar para uma abstragao © ndo para uma implementagao, Objetivo: Apresentar os conceitos do padrao loc apresentando seus recursos e mostrando seus beneficios Recursos usados: V/sual Studio 2012 Express for Windows desktop. Nota: Noste momento jd se encontra disponivel a verso 2013 E importante salientar que a ferramenta usada é gratuita, nao possui restrigdes @ 6 totalmente funcional. Ao fazer o download da ferramenta, vooé também pode baixar o pacote de idioma para localizar 0 produto para a lingua portuguesa. Problema: Vocé precisa programar para uma abstragao e ndo pera uma implementagao. htp:imastrs.com bridesenvohimentalvsual-basclp og amacan-oientade-cbjetos-em-10-licos-praticas-parte-0/Prace=1519021197Esource=single 7 ‘ori062016 htp:imastrs.com bridesenvahvimentlvsual-basicipogramacan-rientada-objtos-em- 1O-coos-praicas-pate- 10"Rrace= 1619021197&scurce=singlo Programaglo Orientada a Objtos om 1 lies prticas -Parto 10 Conceitos basicos — O padrao loC Adotar boas praticas no process de desenvolvimento de software deixou de ser um diferencial para ser uma questo de sobrevivéncia. O cenério atual aponta para uma grande demanda por software de qualidade com prazos e custos cada vez mais reduzidos. Nao hd mais lugar para desculpas, como falta de recursos ou de tempo. Ou vocé oferece 0 que 0 mercado deseja, ou esté fora, Usar padrées 6 uma das atitudes que beneficia o projeto, pois facilita 0 reuso, os testes permite uma melhor manutengao do produto. Este artigo apresenta 0 padro inversdo de controle (IoC), também conhecide como injegdo de dependéncia (na uma certa polémica quanto essa correspondéncia) Se vocé nunca ouviu falar em inversdo de controle (loC), saiba que este padréo & muito usado em projetos orientados a objeto ¢ utiliza conceitos como interface, heranga e polimorfismo. Ele também tem como objetivo reduzir 0 acoplamento, facilitar o reuso ¢ os testes no projeto de software. Antes de iniciar, creio que seria bom lembrar algumas definigses importantes que sero usadas neste artigo: Nota: Veja detalhes sobre o assunto no meu artigo. 1. Objeto Ea representagao de um modelo abstrato definido em uma classe; E uma instancia de uma classe; © O estado de um objeto é 0 conjunto de suas propriedades; Cada objeto tem 0 seu préprio estado: © comportamento de um objeto sdo as fungdes (métodos) que afetam suas propriedades e/ou as propriedades de outros objetos. 2. Classe » E.0 modelo a partir do qual os objetos serao criados; an ‘ori062016 htp:imastrs.com bridesenvahvimentlvsual-basicipogramacan-rientada-objtos-em- 1O-coos-praicas-pate- 10"Rrace= 1619021197&scurce=singlo Programa Orertada a Ojeas om t01igb0s pics - Pate 10- © Um objeto é uma instancia de uma classe © Uma classe define as propriedades e comportamento que cada uma de suas instancias (objets) possuird; © Classes podem se comunicar em entre si trocando informagées(dados, parametros, controles etc). 3. Acoplamento © Uma classe com acoplamento fraco nao é dependente de muitas classes para fazer 0 que ele tem que fazer; © Uma classe com acoplamento forte depende de muitas outras classes para fazer o seu servigo; Uma classe com acoplamento forte é mais dificil de manter, de entender @ de ser reusada, 4. Coeséo E o nivel de integralidade interna de uma classe (veja © principio da responsabilidade Unica - SRP); © A.coesdo mede 0 grau que um classe ou seus métodos fazem sentido; ou seja, quo claro é 0 entendimento do que a classe ou método possui © Uma classe com alta coeséo possui responsabilidades bem definidas e so diticeis de serem desmembradas em outras classes; © Uma classe com baixa coeso possui muitas responsabilidades, geralmente que pertencem a cutras classes, e podem ser facilmente desmembradas em outras classes; © Uma classe com baixa coesio ¢ dificil de entender, manter e reusar. Portanto, quanto mais forte o acoplamento e mais baixa a coeséo de uma classe, mais dificil ela sera de entender, manter e ser reusada. Agora vamos a parte pratica, onde irei mostrar como podemos aplicar 0 padrao de inversdo de controle Aplicando a Inversao de Controle - loC Abaixo temos 0 cédigo da classe A, que usa a classe B: E o nivel de dependéncia/conhecimento que pode existir entre as classes; a ‘ori062016 Programaglo Orientada a Objtos om 10 lis prticas -Parto 10- Public Class A Private b as 8 Public Sub New() b= New BC) Console.writeline("Foi criado 0 objeto b*) end sub End class Acclasse A acessa dirotamente a classe 8, criando uma instancia da classe no seu construtor, Vamos supor que a classe B é uma classe concreta com um construtor padrao, O cédigo da classe B é dado a seguir: Public Class 8 Public Sub New() Console.WriteLine("Fol criada usa instancia da classe 8”) End Sub end Clase Neste exemplo, temos um forte acoplamento entre a classe A ¢ a classe B, pois quem controla a criagao de uma instancia da classe B é a classe A, que 6 responsdvel por obter uma referéncia da classe B. Qualquer alteragao que ocorra na classe B vai afetar diretamente a classe A, pois esta possui uma referéncia a classe B. Como fazer com que a classe A no seja afetada pelas mudangas feitas na classe B, sem perder a referéncia para a classe B? Como diminuir 0 acoplamento entre a classe A ¢ a classe B? Podemos fazer isso usando o padrao inversao de controle (IoC). Nota: Existem diversos frameworks que usam o padrao IoC e que efetuam a injegdo de dependéncia, \Vemos abaixo a classe A ajustada para usar 0 padr¢yewsieTTER Public Class A Private b As 8 Public Sub New() End Sub Public sub setB(syval b As 8) ite.b = 8 nd Sub end Class Agora, a classe A obtém uma referéncia da classe B usando 0 método setB)). Dessa forma, a classe A pode obter uma referéncia da htpsimastrs.com bridesenvohimentalvsual-basclp ogramacan-oientade cbjetos-em-10-licos-praticas-parte- 10/Prace=1519021187Esource=single 47 ‘ori062016 htp:imastrs.com bridesenvahvimentlvsual-basicipogramacan-rientada-objtos-em- 1O-coos-praicas-pate- 10"Rrace= 1619021197&scurce=singlo rogramazéo Orientada a Objetos em 1OligSes préticas- Part 10- classe B sem saber como a classe 8 é instanciada. A classe B, por sua vez, pode ser uma interface, classe abstrata ou até mesmo uma classe conereta, Nao existe mais nenhum acoplamento entre a classe A ¢ a classe Be qualquer alteragao feita na classe B nao afeta a classe A-e vice-versa. Se houver uma alteragéo no método da classe B, a classe A deverd ser alterada também; mas a criagéo do objeto B nao tema sua implementagao na classe A. Podemos usar 0 método set) para injetar 0 objeto B. Perceba que todos os conceitos aqui abordados usam principios basicos da programagéo orientada a objetos ¢ que nao existe segredo algum. Entdo, quando se ouve falar que "O framework XYZ usa a injegdo de dependénoia...", ele esté basicamente usando os recursos que exoomos neste artigo e que s40 os pilares da programagao orientada a objetos: © Programe sempre para uma interface; © Prefira uss a composigao a heranga; © Obedega o principio da responsabllidade Gnica;{SRP-Single Responsabilty Principle). Obs: O “Unity Application Block”, do "Enterprise Library 4.0, é um container de inverséo de controle baseado na biblioteca “ObjectBuilder2” do “Entreprise Library” e que foi langado como uma alternativa as ja tradicionais bibliotecas "Spring.NET” (uma verséo da famosa biblioteca Spring do mundo Java), “Castle Windsor’, “StructureMap”, “ObjectBuilder” ete. Concluimos, assim, o mini curso VB.NET ~ Programagao Orientada a Objetos em 10 ligées praticas, onde apresentamos os fundamentos do paradigma da programagao orientada a objetos com foco na implementagao para a linguagem VB .NET. Foram dez passos de uma longa jornada que trilhamos a cada dia quando abrimos a nossa ferramenta de trabalho e fazemos aquilo que gostamos: programar, desenvolver, aprender, enfim, viver. Lembre-se da regra maxima: "Programe para um a interface e no para uma implementagao” 87 ovoaz0%6 Programagie Oriantada a Objetos om 10igdas réicas- Parte 10 - alos Macoratt om NET, Vs asic tea agora Login com Fluent NHibernate, NHibernate 4.0 ieMcte eMac 1 e PostgreSQL - Parte 01 Ete El] Pete Tce @ soet cates Macorat EM) dois. Dé Sua Opiniao (0 seu enderego de e-mailnéo sera publeado. Camps obrgatéries so marcados com Nome Ema 1 comentario em “Programa¢ao Orientada a Objetos em 10 ligdes praticas — Pa 10” Claudio Pimenta 27 do setombyo do 2016 a8 22.52 Mais uma vez 0 macorattI nos brindado com um material de excelente qualidade. Obrigado sada BW... movetos NLD ESA embratel FIA Somemcems htp:imastrs.com bridesenvolimertlvisual-basclp ogramacan-oientada-cbjetos-em-10-licos-praticas-part- 10/Prace=1519021197Esourcersingle 67

Você também pode gostar