{"id":944,"date":"2020-06-15T17:05:28","date_gmt":"2020-06-15T20:05:28","guid":{"rendered":"https:\/\/micheladrianomedeiros.com.br\/blog\/?p=944"},"modified":"2020-06-15T17:05:30","modified_gmt":"2020-06-15T20:05:30","slug":"comecando-com-java-9-fundamentos-9","status":"publish","type":"post","link":"https:\/\/micheladrianomedeiros.com.br\/blog\/comecando-com-java-9-fundamentos-9\/","title":{"rendered":"Come\u00e7ando com Java 9 Fundamentos #9"},"content":{"rendered":"\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/comecando-com-java-9-fundamentos-9\/#O_Paradigma_da_Orientacao_a_Objetos_no_Java\" >O Paradigma da Orienta\u00e7\u00e3o a Objetos no Java<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/micheladrianomedeiros.com.br\/blog\/comecando-com-java-9-fundamentos-9\/#Abstracao\" >Abstra\u00e7\u00e3o<\/a><\/li><\/ul><\/nav><\/div>\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"O_Paradigma_da_Orientacao_a_Objetos_no_Java\"><\/span><strong>O Paradigma da Orienta\u00e7\u00e3o a Objetos no Java<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">O quatros principais suporte da orienta\u00e7\u00e3o a objetos: abstra\u00e7\u00e3o, encapsula\u00e7\u00e3o, heran\u00e7a e polimorfismo. Eles s\u00e3o conhecidos como os quatros pilares do paradigma da orienta\u00e7\u00e3o a objetos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Abstra\u00e7\u00e3o \u00e9 o processo da exposi\u00e7\u00e3o dos detalhes essenciais de uma entidade, enquanto ignora os detalhes relevantes, para reduzir a complexidade dos usu\u00e1rios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Encapsula\u00e7\u00e3o \u00e9 o processo de constru\u00e7\u00e3o e opera\u00e7\u00e3o de dados na entidade. Heran\u00e7a \u00e9 utilizado para derivar um novo tipo a partir de um tipo existente, sendo assim estabelecendo um relacionamento de parentesco de filha. Polimorfismo deixa uma entidade com um significado e contexto diferentes.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Abstracao\"><\/span><strong>Abstra\u00e7\u00e3o<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Um programa fornece uma solu\u00e7\u00e3o para um problema. O tamanho do programa pode variar de poucas linhas para milh\u00f5es de linhas. Pode ser escrito na estrutura monol\u00edtica e \u00e9 executada da primeira linha at\u00e9 a \u00faltima em um \u00fanico arquivo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um programa monol\u00edtico torna-se dif\u00edcil de escrever, entender e manter se tiver mais de 25 a 50 linhas. Para ser de f\u00e1cil manuten\u00e7\u00e3o, um programa monol\u00edtico grande precisa ser decomposto em pequenos subprogramas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Os subprogramas s\u00e3o ent\u00e3o montados juntos para resolver o problema original. Deve-se tomar cuidado quando um programa est\u00e1 sendo decomposto. Todos os subprogramas precisam ser simples, pequenos e auto explicativos e quando montados devem resolver o problema. Considere o seguinte:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Modele e desenvolva um dispositivo que ir\u00e1 deixar o usu\u00e1rio digitar textos utilizando letras, n\u00fameros e s\u00edmbolos.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Uma maneira de desenvolver tal dispositivo \u00e9 providenciar um teclado que tenha teclas para todas as combina\u00e7\u00f5es poss\u00edveis de letras, d\u00edgitos e s\u00edmbolos. Essa solu\u00e7\u00e3o n\u00e3o \u00e9 razo\u00e1vel porque o dispositivo ser\u00e1 muito grande.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Veja seu teclado e imagine como ele foi modelado. O problema \u00e9 digitar textos clicando em letras, d\u00edgitos ou s\u00edmbolos um de cada vez, o qual representa a menor parte do problema. Voc\u00ea pode digitar todas as letras, d\u00edgitos e s\u00edmbolos um de cada vez, e digitar qualquer tipo de tamanho de texto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Outra decomposi\u00e7\u00e3o do problema pode incluir duas teclas: uma linha do tipo horizontal e outra vertical, o qual o usu\u00e1rio pode digitar E, T, I, F, H e L porque essas letras consistem na linha horizontal e vertical.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Com essa solu\u00e7\u00e3o, o usu\u00e1rio pode digitar seis letras utilizando essas duas teclas. Contudo, com sua experi\u00eancia de utilizar teclados, voc\u00ea pode perceber que com essas teclas pode-se digitar algumas palavras, mas n\u00e3o todas. Sendo assim n\u00e3o \u00e9 uma solu\u00e7\u00e3o razo\u00e1vel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por que um teclado com seis letras n\u00e3o \u00e9 razo\u00e1vel? N\u00e3o estamos economizando espa\u00e7o e letras do teclado? O uso da palavra \u201crazo\u00e1vel\u201d \u00e9 relativo ao contexto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De um ponto de vista purista, pode ser uma solu\u00e7\u00e3o razo\u00e1vel. A raz\u00e3o de \u201cn\u00e3o ser razo\u00e1vel\u201d \u00e9 que n\u00e3o \u00e9 f\u00e1cil entender os usu\u00e1rios. Temos que fornecer mais detalhes para eles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O usu\u00e1rio deve lembrar o formato do teclado, no formato T e de baixo para cima no formato L. O usu\u00e1rio tem uma tecla para cada letra, essa informa\u00e7\u00e3o ele pode ver por si s\u00f3.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 importante que o subprograma que forne\u00e7a solu\u00e7\u00f5es de uma parte do problema seja simplificado para ter os detalhes apresentados e trabalharem juntos. Ao mesmo tempo, um subprograma n\u00e3o deve expor detalhes que n\u00e3o s\u00e3o necess\u00e1rios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finalmente, todas as teclas s\u00e3o montadas no teclado e elas podem trabalhar separadamente. Se uma tecla est\u00e1 quebrada, ela pode ser substitu\u00edda sem interferir nas outras.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Similarmente, quando um programa \u00e9 decomposto em subprogramas, uma modifica\u00e7\u00e3o em um subprograma n\u00e3o deve afetar outro subprogramas. Subprogramas podem tamb\u00e9m serem decompostos para focar em diferentes n\u00edveis e ignorar outros detalhes. Caracter\u00edsticas de uma boa decomposi\u00e7\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Simplicidade<\/li><li>Isola\u00e7\u00e3o<\/li><li>Manutenibilidade<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Cada subprograma deve ser simples e de f\u00e1cil entendimento. Simplicidade \u00e9 focar em peda\u00e7os relevantes de informa\u00e7\u00e3o e ignorar os irrelevantes. Peda\u00e7os de informa\u00e7\u00f5es s\u00e3o relevantes e irrelevantes dependendo do contexto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cada subprograma deve ser isolado a partir de outros subprogramas sendo assim, qualquer mudan\u00e7a de um subprograma deve ter efeitos localizados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Uma mudan\u00e7a no subprograma n\u00e3o deve afetar em outro subprograma. Um subprograma define uma interface para interagir com outras pessoas. Os detalhes internos sobre o subprograma s\u00e3o escondidos do mundo externo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Contanto a interface para um subprograma permanece imut\u00e1vel, as mudan\u00e7as dos detalhes internos n\u00e3o devem afetar os outros subprogramas que interagem com ele.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cada subprograma deve ser escrito com o menor c\u00f3digo poss\u00edvel, ser auto explicativo e de f\u00e1cil manuten\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Todas essas caracter\u00edsticas s\u00e3o guardadas durante a decomposi\u00e7\u00e3o de um problema (ou programa que resolve um problema) utilizando processos chamados de abstra\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Abstra\u00e7\u00e3o \u00e9 o caminho para decompor um problema para focar em detalhes relevantes e ignorar os irrelevantes sobre um contexto particular. Veja que n\u00e3o h\u00e1 detalhes sobre problemas irrelevantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em outras palavras, cada detalhe sobre um problema \u00e9 relevante. Contudo, alguns detalhes podem ser relevantes em um contexto e em outro n\u00e3o. \u00c9 importante notar que o \u201ccontexto\u2019 decide quais detalhes s\u00e3o relevantes e irrelevantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por exemplo, considerar o problema de modelagem e desenvolver um teclado. Na perspectiva do usu\u00e1rio, o teclado de teclas que podem ser pressionadas para escrever texto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00famero, tipo, tamanho e posi\u00e7\u00e3o das teclas s\u00e3o detalhes que s\u00e3o relevantes para usu\u00e1rios do teclado. Contudo, teclas n\u00e3o s\u00e3o apenas detalhes do teclado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um teclado tem um circuito eletr\u00f4nico e est\u00e1 conectado a um computador. Muitas coisas acontecem no teclado e computador quando o usu\u00e1rio pressiona uma tecla.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O trabalho interno de um teclado \u00e9 relevante para o modelador do teclado e fabricantes. Contudo, eles s\u00e3o irrelevantes para o usu\u00e1rio do teclado. Voc\u00ea pode dizer que usu\u00e1rios diferentes tem diferentes vis\u00f5es da mesma coisa em diferentes contextos. Quais detalhes s\u00e3o relevantes e quais irrelevantes depende do usu\u00e1rio e do contexto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Abstra\u00e7\u00e3o \u00e9 sobre considerar detalhes que s\u00e3o necess\u00e1rios para ver o problema e o caminho apropriado em um contexto particular e ignorar (esconder, suprimir ou esquecer) os detalhes que n\u00e3o s\u00e3o necess\u00e1rios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O termo \u201cesconder\u201d e \u201csuprimir\u201d no contexto da abstra\u00e7\u00e3o pode ser enganosa. Esse termo pode significar esconder alguns detalhes de um problema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Abstra\u00e7\u00e3o est\u00e1 interessado em quais detalhes devem ser considerados e quais n\u00e3o devem para um prop\u00f3sito particular. Isso significa esconder detalhes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O termo \u201cabstra\u00e7\u00e3o\u201d tem dois significados: um processo ou uma entidade. Como processo, \u00e9 uma t\u00e9cnica para extrair detalhes relevantes sobre um problema e ignorar os detalhes irrelevantes. Como entidade, \u00e9 uma vis\u00e3o particular de um problema que considera alguns detalhes relevantes e ignorar os irrelevantes.<\/p>\n\n\n\n<figure class=\"wp-block-embed-wordpress aligncenter wp-block-embed is-type-wp-embed is-provider-viciados-em-java\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video_embed clearfix\"><blockquote class=\"wp-embedded-content\" data-secret=\"P2tTL8jq3m\"><a href=\"https:\/\/cursojavanow.com.br\/java-e-a-orientacao-a-objetos\/\">Java e a Orienta\u00e7\u00e3o a Objetos<\/a><\/blockquote><div class=\"video_embed clearfix\"><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Java e a Orienta\u00e7\u00e3o a Objetos&#8221; &#8212; Viciados em Java\" src=\"https:\/\/cursojavanow.com.br\/java-e-a-orientacao-a-objetos\/embed\/#?secret=9kNN69FiAq#?secret=P2tTL8jq3m\" data-secret=\"P2tTL8jq3m\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/div><\/div>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Fonte: <strong>Beginning Java 9 Fundamentals: Arrays, Objects, Modules, JShell, and Regular Expressions (English Edition)<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O Paradigma da Orienta\u00e7\u00e3o a Objetos no Java O quatros principais suporte da orienta\u00e7\u00e3o a objetos: abstra\u00e7\u00e3o, encapsula\u00e7\u00e3o, heran\u00e7a e polimorfismo. Eles s\u00e3o conhecidos como os quatros pilares do paradigma da orienta\u00e7\u00e3o a objetos. Abstra\u00e7\u00e3o \u00e9 o processo da exposi\u00e7\u00e3o dos detalhes essenciais de uma entidade, enquanto ignora os detalhes relevantes, para reduzir a complexidade [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":945,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-944","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java"],"_links":{"self":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/comments?post=944"}],"version-history":[{"count":1,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/944\/revisions"}],"predecessor-version":[{"id":946,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/944\/revisions\/946"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media\/945"}],"wp:attachment":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media?parent=944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/categories?post=944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/tags?post=944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}