Você está na página 1de 8
‘ori062016 Programayo Orientada a bjelos er 10 ligdes pricas —Parte 08 @- /DESENVOLVIMENTO = @] ston? Uae anal co-e415 9) ntar sua primeiras ® Programagao Orientada a Objetos em 10 ligdes praticas — Parte 09 Jost Carlos Macoratt em» NET, aus Basle ‘extafora, 19 do sotombre ao 2014 wes / Até 0 momento, apresentamos os conceitos da programacao [A+] [A] orientada a objetos afetos a linguagem VB .NET, usando uma aplicagao bem simples de controle de saldos bancérios, na qual definimos uma classe base Conta e uma classe Poupanca que herda dessa classe base (Inherits). Vimos como aplicar 0 conceito de polimorfismo © mostramos como podemos usar os seus recursos em nossa aplicagao bancéria, Neste artigo, vamos comparar heranga com composigdo, analisar seus fundamentos e saber decidir quando usar os recursos. Aqui vocé vai aprender a identificar heranga e composigao e saber qual utilizar, qual é mais indicada. Objetivo: Apresentar os conceitos de heranga e composigao, mostrando SeUs recursos @ comparando-os para saber decidir qual usar em determinada situagao. Recursos usados: Visual Studio 2012 Express for Windows desktop Nota: Neste momento, jé se encontra disponivel a verso 2018. htpimastrs.com bridesenvohimertlvsual-basclpogramacan-oientade-cbjetos-em-10-licos-praticas-parte-OW/Prace=1519021197Esource=single 19) ‘ori062016 Programapio Orientada a Objetos em 10 ligdes priticas — Parte 09 E importante salientar que a ferramenta usada é gratuita, néo possui restrig6es e 6 totalmente funcional. Ao fazer 0 download da ferramenta, voce mbém pode baixar o pacote de idioma para localizar 0 produto para a lingua portuguesa. Problema: Vocé precisa aprender heranga © composigéo, conhecer seus reoursos e saber qual utilizar em determinado cenério Conceitos basicos — Heranga O paradigma da Orientagao a objetos ~ 00 ~ traz muitos conceltos novos ©, para quem vem do paradigma procedural usando as linguagens estruturadas e do desenvolvimento orientado ao banco de dados, as vezes muitos desses conceitos podem nao ser bem compreendidos. 0 termo Programagao procedural (ou programagao procedimenta) 6 as vezes utilizado como sinénimo de Programagao imperativa (Paradigma de programacao que especifica os passos que um programa deve seguir para alcangar um estado desejado), mas 0 termo pode se referir a um paradigma de programagao baseado no conceito de chamadas a procedimento. Procedimentos, também conhecidos como rotinas, sub- rotinas, métodos, ou fungées (que ndo devem ser confunaidas com fungées matemdticas, mas so similares aquelas usadas na programacao funcional) simplesmente contém um conjunto de passes computacionais a serem executados. Um dado procedimento pode ser chamado a qualquer hora durante a execueéo de um programa, inclusive por outros procedimentos ou por si mesmo. Fonte: Wikipedia ‘Apenas para ilustrar, abaixo temos uma tabela comparando as caracteristicas bésicas do paradigma OO e do procedural Programacao Orientada a Programacao Estruturada Objetos NEWSLETTER Métodos Procedimentos "enor Instancias de variaveis Variaveis sot Mensagens Chamadas a pt fungoes htp:imastrs.com bridesenvohimertlvsual-basclpogramacan-oientada-cbjetos-em-10-licos-praticas-parte-OW/Prace=1519021197Esource=single 29 ‘ori062016 htp:imastrs.com bridesenvalvimantlvsual-basicipogramacan-rientada-objlos-em- 10-coos-praicas-parte-08"Rrace= 1519021197&scurce=singlo Proramagao Orertada a Objlos em 10 ges pris — Part 09. Classes Tipos de dados definidos pelo usuario Heranca - Polimorfismo Se vocé quer construir um cédigo limpo, legivel, escalavel e reutiizavel usando os conceitos da OO, precisaré ter uma compreensao sélida dos principais conceitos desse paradigma Como o G# © VB .NET sao linguagens Orientada a Objetos(00), podemos usé-las para criar projetos dentro do paradigma OO. Este artigo procura focar dois mecanismos basicos usados para reutilizar c6digo muito utilizados na programagao orientada a objetos (POO): a heranga e a composigao. Qual seria melhor? Usar composigao ou usar heranga? Uma rapida revisao dos conceitos 1 -Heranga ° Estende atributos e métodos de uma classe; © Classe Pai, classe Base ou Superclasse é a classe que foi herdada; Classe Filha ou Sub Classe é a classe que herda da classe Pai; © Generalizagao - Obtém similaridades entre classes ¢ define novas classes. As classes mais genéricas sdo as classes Pal; © Especializagao — identifica atributos e métodos nao correspondentes entre classes distintas colocando-os na classe fiha; © Eum. Exemplo: a9 ‘ori062016 htp:imastrs.com bridesenvalvimantlvsual-basicipogramacan-rientada-objlos-em- 10-coos-praicas-parte-08"Rrace= 1519021197&scurce=singlo Programayo Orientada a bjelos er 10 ligdes pricas —Parte 08 Ender string esta Ficn esa re oF cn — Pessoa - classe Pai, classe Base ou Super Classe © Pessoafisica ~ classe Filha ou sub classe © PessoaJuridica — classe Filha ou sub classe ~ Aclasse Pessoa é a classe genérica; — As classes PessoaJuridica e PessoaFisica sao especializagées; — PessoaFisica E uma pessoa; ~ PessoaJuridica E uma pessoa Implementagao VB NET: Namespace Heranca 5 | pubic class Pessoa 4 ‘ivate nome As String 5 Private Endereco As String ‘ End class Public Class PessoaFisica Inherits Pessoa Li] private CPF As String 32] public’ sub New() 33] end sub 4a | end class, 16 | public class Pessoaduri¢ica v Inherits. Pessoa Fa Ftd Private CNPI As String 20 Public sub New() 2 End Sub 22 | end class. 24 | end namespace 2 — Composigao © Estende uma classe e delega o trabalho para 0 objeto dessa classe; © Uma instncia da classe existente ¢ usada como componente da outra classe: © Tem um. 49 ‘ori062016 Programayo Orientada a bjelos er 10 ligdes pricas —Parte 08 Exemplo’ Pee ‘sige Data Teor = Pedido - Classe que contém uma instancia da classe Itens; — Um pedido TEM UM Item. Implementagao VB NET: 1 | Public Class Pedido 2| "Private 4 As Teens 3) public sub new() 4 f= New Ftens() S| end sub &| ena class 8| Public Class Ttens 3) "pubic: sub New() ae} End sub ii | end Class Resposta: Heranga ou Composicao Em geral, usar composigao traz mais vantagens do que utilzar heranga. Os projetos tendem a ser mais simples ¢ reutilizaveis em se favorecendo a composigao em vez da heranga. Na verdade, a heranga deve ser usada com cuidado @ apenas em algumas situagées. Estranhou a resposta??? \Voeé achava que heranga era 0 suprassumo dos recursos do arsenal das linguagens Orientadas a Objeto?? Se vocé pensava assim, estava enganado. Entao senta que 0 leao é manso, htpimastrs.com bridesenvohimertlvsual-basclp ogramacan-oientade-cbjetos-em-10-licos-praticas-parte-OW/Prace=1519021197Esource=single 59 orioa2016 Programago Oriertad a Obelos em 10 licBes préicas Part 09 Obs: Lembrando que nem a linguagem C# nem a VB .NET suportam heranga miltipla; assim, uma classe pode herdar de apenas uma Unica classe. ‘Ahi! Outro detalhe: estou considerando apenas heranga de implementagao, e nao estou entrando em detalhes em heranga de Interface. Ok? Mas por que devemos mesmos dar preferéncia a composicao e nao a heranga? Usando heranga: 1, Ao usar heranga, estamos violando um dos pilares da orientagdo a objeto: © encapsulamento, visto que os detalhes da implementagao da classe Pai so expostos nas classes Filhas; 2. Ao usar heranga, estamos violando um dos principios basicos das boas préticas de programagao: manter o acoplamento entre as classes fracas, visto que as classes filhas estdo fortemente acopladas a classe Pai o alterar uma classe Pai pode afetar todas as classes Filhas; As implementagées herdadas da classe Pai pelas classes Filhas ndo podem ser alteradas em tempo de execugao. Usando composigao: Os objets que foram instanciados e esto contidos na classe que os instanciou so acessados somente através de sua interface; A composigao pode ser definida dinamicamente em tempo de execugao pela obtengao de referéncia de objetos a objetos de mesmo tipo; 3. A composigao apresenta uma menor dependéncia de implementagdes; s Na composigdo, temos cada classe focada em apenas uma tarefa (principio SRP}; - veja 0 artigo SRP - O principio da responsabilidade Unican; 5, Na composigéo, temos um bom encapsulamento, visto que os detalhes internos dos objetos instanciados nao sao visiveis. Percebemos que a heranga viola dois conceitos basicos que sempre devemes aplicar em nosso cédigo, enquanto que a composigae naturalmente nos leva a usar tais conceitos, htp:imastrs.com bridesenvohimertalvsual-basclp ogramacan-oientadecbjetos-em-10-licos-praticas-part-OW/Prace=1519021197Esource=single 6 ‘ori062016 Programayo Orientada a bjelos er 10 ligdes pricas —Parte 08 Mas entao eu nunca devo usar heranga??? (Nunca é uma palavra que és mortais deveriamos pronunciar com muito cuidado....) Nao existe um mandamento para nunca usar heranga, mas podemos definir algumas regras para identificar quando podemos usé-la de forma a nao ter os problemas que ela acarreta: Entao , considere a utilizagao da heranga se: classe Filha exoressar “um tipo especial de" e nao “ser um papel desempenhado por"; © Uma instancia de uma classe Filha NUNCA precisar se tornar um objeto de outra classe; © Aclasse filha estender em vez de substituir total ou parcialmente as responsabilidades da classe Pai; © A sua hierarquia de heranga representar um relacionamento “E um” e néo um relacionamento “Tem um”; © Vooé desejar ou precisar realizar alteragées globais para as suas classes filhas alterando uma classe Pai; © Vooé precisar aplicar a mesma classe e métodos a diferente tipos de dados; © Vocé puder comparar seu objeto A com outro B dizendo, que A tipo de...” B; © Vocé estiver construindo uma familia de tipos (relacionados entre si) Obs: Cuidado com a aplicagéio do principio “E Um"; as vezes, ele nos leva a cometer erros que percebemos sé depois de olharmos 0 cédigo, (Vide a violagdo do principio LSP ) - veja o artigo : O principio de substituicao de Liskok (LSP), Agora concluindo: heranga e composigao ndo séo mutuamente exclusivas. Podemos usar as técnicas em conjunto para otimizar os resultados. Lembre-se da regra maxima: Programe para uma interface, e nao para uma implementagao. htpsimastrs.com bridesenvohimertlvsual-bascipogramacan-oientade-cbjetos-em-10-licos-praticas-part-OW/Prace=1519021197Esource=single 79 ovoaz0%6 Programayo Orientada a bjelos er 10 ligdes pricas —Parte 08 No ultimo artigo desta série, vamos apresentar 0 padre oC - Inversao de Controle. @ José Carlos Macorat om NET, Vl Base ole | tea agora Programagao Orientada a Objetos em 10 ligdes praticas - Parte 10 @ José Carlos Macorat TeBHeMN 10) frelge Tele) Dé Sua Opiniao (0 seu enderego de e-malnt sera publeado. Campos obrgatéries sao marcados com Nome Email i Osscet—embratel = FIA Sommncioms Bic Mobos Ciel marncra (Don lugu Mist pee Beretta sence Ea om © ston? — umbler— @uawon re Bg oars htp:imastrs.com bridesenvohimertlvsual-bascip ogramacan-oientade-cbjetos-em-10-licos-praticas-part-OW/Prace=1519021197Esource=single 89

Você também pode gostar