<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivo para Orientação a Objetos - Bóson Treinamentos em Ciência e Tecnologia</title>
	<atom:link href="https://www.bosontreinamentos.com.br/tag/orientacao-a-objetos/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bosontreinamentos.com.br/tag/orientacao-a-objetos/</link>
	<description>Artigos e Tutoriais sobre Desenvolvimento de Software, Bancos de Dados SQL, Linux, Lógica de Programação, Inteligência Artificial, Hardware, Eletrônica, Arduino, Técnicas e Teorias de Estudo e Aprendizagem, Carreira em TI, Ciências Cognitivas, e muito mais!</description>
	<lastBuildDate>Tue, 08 Aug 2023 17:43:47 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>
	<item>
		<title>Como abrir e ler arquivos de texto de acesso sequencial em Java</title>
		<link>https://www.bosontreinamentos.com.br/java/como-abrir-e-ler-arquivos-de-texto-de-acesso-sequencial-em-java/</link>
					<comments>https://www.bosontreinamentos.com.br/java/como-abrir-e-ler-arquivos-de-texto-de-acesso-sequencial-em-java/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Mon, 20 Apr 2020 18:13:50 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=15978</guid>

					<description><![CDATA[<p>Como abrir e ler arquivos de texto de acesso sequencial em Java Na lição passada vimos como criar e editar arquivos de texto de acesso sequencial em Java. Agora vamos mostrar como abrir e ler esses arquivos. Usaremos o arquivo criado anteriormente, arquivo.txt, no exemplo. Note que vamos trabalhar com um arquivo cujo local de armazenamento no disco já é conhecido previamente, por isso o caminho do arquivo é hard-coded. Nas lições futuras mostraremos como escolher arquivos em locais aleatórios para leitura e edição. O exemplo que usaremos&#160;foi adaptado de Deitel –&#160;Java How to Program, 10ª edição. A seguir, temos o código completo da aplicação. Código import java.io.IOException; import java.lang.IllegalStateException; import java.util.NoSuchElementException; import java.util.Scanner; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class LerArquivoTexto { private static Scanner entrada; // programa principal public static void main(String[] args) { abrirArquivo(); lerDados(); fecharArquivo(); } // Método para abrir o arquivo arquivo.txt public static void abrirArquivo() { try { entrada = new Scanner(Paths.get("c:\\Java\\arquivo.txt")); // Abrir o arquivo, salvo em C:\Java\ } catch (IOException erroES) { System.err.println("Erro ao abrir o arquivo. Finalizando."); System.exit(1); // terminar o programa } } // Método para ler os registros do arquivo public static void lerDados() { System.out.printf("%-10s%-15s%n","Código","Produto"); try { [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/como-abrir-e-ler-arquivos-de-texto-de-acesso-sequencial-em-java/">Como abrir e ler arquivos de texto de acesso sequencial em Java</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Como abrir e ler arquivos de texto de acesso sequencial em Java</h2>
<p>Na lição passada vimos <a href="http://www.bosontreinamentos.com.br/java/como-criar-e-editar-arquivos-de-texto-de-acesso-sequencial-em-java/" target="_blank" rel="noopener">como criar e editar arquivos de texto de acesso sequencial em Java</a>. Agora vamos mostrar como abrir e ler esses arquivos. Usaremos o arquivo criado anteriormente, <em>arquivo.txt</em>, no exemplo.</p>
<p>Note que vamos trabalhar com um arquivo cujo local de armazenamento no disco já é conhecido previamente, por isso o caminho do arquivo é hard-coded. Nas lições futuras mostraremos como escolher arquivos em locais aleatórios para leitura e edição.</p>
<p>O exemplo que usaremos&nbsp;foi adaptado de Deitel –&nbsp;<strong><em>Java How to Program</em></strong>, 10ª edição. A seguir, temos o código completo da aplicação.</p>
<h3>Código</h3>
<pre><strong>import java.io.IOException;</strong>
<strong>import java.lang.IllegalStateException;</strong>
<strong>import java.util.NoSuchElementException;</strong>
<strong>import java.util.Scanner;</strong>
<strong>import java.nio.file.Files;</strong>
<strong>import java.nio.file.Path;</strong>
<strong>import java.nio.file.Paths;</strong>
<strong>public class LerArquivoTexto</strong>
<strong>{</strong>
<strong>  private static Scanner entrada;</strong>
<span style="color: #339966;"><strong>// programa principal</strong></span>
<strong>  public static void main(String[] args) {</strong>
<strong>    abrirArquivo();</strong>
<strong>    lerDados();</strong>
<strong>    fecharArquivo();</strong>
<strong>}</strong>
<span style="color: #339966;"><strong>// Método para abrir o arquivo arquivo.txt</strong></span>
<strong>  public static void abrirArquivo() {</strong>
<strong>    try {</strong>
<strong>      entrada = new Scanner(Paths.get("c:\\Java\\arquivo.txt")); <span style="color: #339966;">// Abrir o arquivo, salvo em C:\Java\</span></strong>
<strong>    }</strong>
<strong>    catch (IOException erroES) </strong><strong>{</strong>
<strong>      System.err.println("Erro ao abrir o arquivo. Finalizando.");</strong>
<strong>      System.exit(1); <span style="color: #339966;">// terminar o programa</span></strong>
<strong>    }</strong>
<strong>  }</strong>
<span style="color: #339966;"><strong>// Método para ler os registros do arquivo</strong></span>
<strong>  public static void lerDados() {</strong>
<strong>    System.out.printf("%-10s%-15s%n","Código","Produto");</strong>
<strong>    try {</strong>
<strong>      while (entrada.hasNext()) { <span style="color: #339966;">// enquanto houver dados para ler, </span></strong><span style="color: #339966;"><strong>mostrar os registros</strong></span>
<strong>        System.out.printf("%-10d%-12s%n",entrada.nextInt(),entrada.next());</strong>
<strong>      }</strong>
<strong>    }</strong>
<strong>    catch (NoSuchElementException erroElemento) </strong><strong>{</strong>
<strong>      System.err.println("Arquivo com problemas. Finalizando.");</strong>
<strong>      entrada.nextLine(); <span style="color: #339966;">// Descartar a entrada para que o usuário possa tentar de novo</span></strong>
<strong>    }</strong>
<strong>    catch (IllegalStateException erroEstado) </strong><strong>{</strong>
<strong>      System.err.println("Erro ao ler o arquivo. Finalizando.");</strong>
<strong>    }</strong>
<strong>  } <span style="color: #339966;">// fim do método lerDados</span></strong>
<span style="color: #339966;"><strong>// Método para fechar o arquivo aberto</strong></span>
<strong>  public static void fecharArquivo()&nbsp;{</strong>
<strong>    if (entrada != null)</strong>
<strong>      entrada.close();</strong>
<strong>  }</strong>
<strong>} <span style="color: #339966;">// Fim da classe LerArquivoTexto</span></strong></pre>
<p>Ao abrir o arquivo <em>arquivo.txt</em> usando o programa acima, vemos na tela o seguinte resultado:</p>
<p><img decoding="async" class="aligncenter wp-image-15981 size-full" title="Ler arquivo de texto com Java" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/ler-arquivo-texto-Java.png" alt="Ler arquivo de texto com Java" width="212" height="140"></p>
<p>Note que no programa principal executamos apenas três métodos: <em>abrirArquivo</em>, <em>lerDados</em> e <em>fecharArquivo</em>, para realizar as operações correspondentes. Todo o processamento é executado dentro desses métodos.</p>
<p>Anterior:&nbsp;<a href="http://www.bosontreinamentos.com.br/java/como-criar-e-editar-arquivos-de-texto-de-acesso-sequencial-em-java/">Criar e editar arquivos de texto de acesso sequencial em Java</a></p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/como-abrir-e-ler-arquivos-de-texto-de-acesso-sequencial-em-java/">Como abrir e ler arquivos de texto de acesso sequencial em Java</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/java/como-abrir-e-ler-arquivos-de-texto-de-acesso-sequencial-em-java/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>A Classe ArrayList e Collections em Java</title>
		<link>https://www.bosontreinamentos.com.br/java/a-classe-arraylist-e-collections-em-java/</link>
					<comments>https://www.bosontreinamentos.com.br/java/a-classe-arraylist-e-collections-em-java/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Mon, 13 Jan 2020 12:46:07 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=15983</guid>

					<description><![CDATA[<p>A Classe ArrayList em Java As Collections são estruturas de dados pré-definidas, fornecidas pela API do Java, que são empregadas para armazenar grupos de objetos relacionados na memória durante a execução do programa. Com estas classes é possível organizar, armazenar e ler dados sem a necessidade de saber exatamente como os dados são armazenados (encapsulamento). Um array convencional não tem seu tamanho modificado automaticamente durante a execução do programa, por exemplo para armazenar novos elementos, o que pode ser um problema, principalmente se surge a necessidade de armazenar mais elementos após um array estar completo. O framework Collections em Java fornece diversas interfaces e classes para manipulação de grupos de objetos, como por exemplo: Interfaces List Set Queue Deque SortedSet Classes ArrayList LinkedList Vector HashSet PriorityQueue LinkedHashSet TreeSet Nesta lição vamos iniciar o estudo das Collections com a classe ArrayList. Classe ArrayList A classe de coleção (collections class) ArrayList&#60;T&#62;, pertencente ao pacote java.util, e que implementa a interface List, resolve o problema de modificação do tamanho de um array em tempo de execução, pois ela pode mudar seu tamanho de forma dinâmica &#8211; ou seja, permite criar um array dinâmico. A letra T indica um placeholder, que é substituído ao [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/a-classe-arraylist-e-collections-em-java/">A Classe ArrayList e Collections em Java</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>A Classe ArrayList em Java</h2>
<p>As <em><strong>Collections</strong></em> são estruturas de dados pré-definidas, fornecidas pela API do Java, que são empregadas para armazenar grupos de objetos relacionados na memória durante a execução do programa. Com estas classes é possível organizar, armazenar e ler dados sem a necessidade de saber exatamente como os dados são armazenados (encapsulamento).</p>
<p>Um <a href="http://www.bosontreinamentos.com.br/java/como-usar-arrays-em-java/">array convencional</a> não tem seu tamanho modificado automaticamente durante a execução do programa, por exemplo para armazenar novos elementos, o que pode ser um problema, principalmente se surge a necessidade de armazenar mais elementos após um array estar completo.</p>
<p>O framework <strong>Collections</strong> em Java fornece diversas interfaces e classes para manipulação de grupos de objetos, como por exemplo:</p>
<ul>
<li>Interfaces
<ul>
<li>List</li>
<li>Set</li>
<li>Queue</li>
<li>Deque</li>
<li>SortedSet</li>
</ul>
</li>
<li>Classes
<ul>
<li>ArrayList</li>
<li>LinkedList</li>
<li>Vector</li>
<li>HashSet</li>
<li>PriorityQueue</li>
<li>LinkedHashSet</li>
<li>TreeSet</li>
</ul>
</li>
</ul>
<p>Nesta lição vamos iniciar o estudo das Collections com a classe <strong>ArrayList</strong>.</p>
<h3>Classe ArrayList</h3>
<p>A classe de coleção (collections class) <strong>ArrayList&lt;T&gt;</strong>, pertencente ao pacote <strong>java.util</strong>, e que implementa a <strong>interface List</strong>, resolve o problema de modificação do tamanho de um array em tempo de execução, pois ela pode mudar seu tamanho de forma dinâmica &#8211; ou seja, permite criar um array dinâmico. A letra <strong>T</strong> indica um <em>placeholder</em>, que é substituído ao declarar um ArrayList pelo tipo de elementos que a estrutura irá armazenar.<br />
Suponha que desejemos criar um ArrayList de <a href="http://www.bosontreinamentos.com.br/java/programacao-em-java-a-classe-string-introducao/">strings</a>, de nome produtos. Para tal, executamos a seguinte declaração:</p>
<pre><strong>ArrayList&lt;String&gt; produtos;</strong></pre>
<p>Note que somente tipos não-primitivos podem ser usados para declarar variáveis e criar objetos em classes genéricas &#8211; e o ArrayList é uma classe genérica. Ainda assim, em Java é possível usar tipos primitivos, desde que empacotados como se fossem objetos, em um processo denominado <strong>boxing</strong>. Desta forma, poderíamos criar um ArrayList de inteiros também, por exemplo:</p>
<pre><strong>ArrayList&lt;Integer&gt; numeros;</strong></pre>
<p>Ao ler um valor deste ArrayList o elemento (valor inteiro) é desempacotado (processo de <strong>unboxing</strong>).</p>
<h3>Métodos principais de um ArrayList</h3>
<p>A seguir listamos os principais métodos fornecidos por uma classe ArrayList:</p>
<ul>
<li>Método add &#8211; Adiciona um elemento no final do ArrayList.</li>
<li>Método clear &#8211; Remove todos os elementos da estrutura.</li>
<li>Método contains &#8211; Verifica se o ArrayList contém um elemento especificado, e retorna true em caso positivo, ou false caso contrário.</li>
<li>Método get &#8211; Retorna o item em uma posição de índice especificada.</li>
<li>Método indexOf &#8211; Retorna a posição de índice da primeira ocorrência de um elemento especificado.</li>
<li>Método remove &#8211; Remove a primeira ocorrência de um valor especificado ou de um elemento em um índice.</li>
<li>Método size &#8211; Informa o número de elementos que estão armazenados na estrutura.</li>
<li>Método trimToSize &#8211; Ajusta a capacidade do ArrayList de acordo com o número de elementos armazenados no momento.</li>
</ul>
<h3>Exemplo</h3>
<p>Vejamos um exemplo de uso de ArrayList.</p>
<pre><strong>import java.util.ArrayList;</strong>
<strong>public class ListaArrayList {

</strong><strong>public static void main(String[] args) {</strong>
<span style="color: #339966;"><strong>  // Criar um novo ArrayList de Strings com capacidade inicial de 10 elementos (padrão)</strong></span>
<strong>  ArrayList&lt;String&gt; frutas = new ArrayList&lt;&gt;();

</strong><strong>  frutas.add("Maçã"); <span style="color: #339966;">// Adicionar um item à lista</span></strong>
<strong>  frutas.add(0, "Uva"); <span style="color: #339966;">// Inserir a fruta Uva na posição de índice 0</span>
</strong><strong>  System.out.println("Mostrar o conteúdo do ArrayList usando laço for convencional:");

</strong><strong>  for (int i = 0; i &lt; frutas.size(); i++)</strong>
<strong>    System.out.printf(" %s", frutas.get(i));

</strong><span style="color: #339966;"><strong>  // Mostrar as frutas com o método mostrar(). Passamos a lista e um frase-cabeçalho</strong></span>
<strong>  mostrar(frutas,"%nMostrando a lista de frutas com o método mostrar:");

</strong><strong>  frutas.add("Tangerina"); <span style="color: #339966;">// Adicionar tangerina ao final da lista</span></strong>
<strong>  frutas.add("Morango"); <span style="color: #339966;">// Idem com Morango</span></strong>
<strong>  mostrar(frutas, "Nova visualização da lista após adicionar frutas:");

</strong><strong>  frutas.remove("Uva"); <span style="color: #339966;">// remover a fruta Uva"</span></strong>
<strong>  mostrar(frutas, "Nova visualização da lista após remover frutas:");

</strong><strong>  frutas.remove(1); <span style="color: #339966;">// Remover item na posição de índice 1</span></strong>
<strong>  mostrar(frutas, "Remover o segundo elemento da lista (índice 1):");

</strong><span style="color: #339966;"><strong>  // Verificar número de elementos na lista</strong></span>
<strong>  System.out.printf("Tamanho atual do ArrayList: %s itens%n", frutas.size());

</strong><span style="color: #339966;"><strong>  // Verificar se um item existe na lista</strong></span>
<strong>  System.out.printf("A fruta \"Tangerina\" %sestá na lista%n", frutas.contains("Tangerina") ? "": "não ");</strong>
<strong>}

</strong><span style="color: #339966;"><strong>// criar método para mostrar os elementos do ArrayList frutas</strong></span>
<strong>public static void mostrar(ArrayList&lt;String&gt; frutas, String cabecalho) {</strong>
<strong>  System.out.printf(cabecalho); // mostrar cabeçalho

</strong><strong>  for (String item : frutas)</strong>
<strong>    System.out.printf(" %s", item);</strong>
<strong>    System.out.println();</strong>
<strong>  }</strong>
<strong>}</strong></pre>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15988 size-full" title="Exemplo de ArrayList em Java" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/ArrayList-Java-exemplo.png" alt="Exemplo de ArrayList em Java" width="774" height="184" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/ArrayList-Java-exemplo.png 774w, https://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/ArrayList-Java-exemplo-420x100.png 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/ArrayList-Java-exemplo-768x183.png 768w" sizes="auto, (max-width: 774px) 100vw, 774px" /></p>
<p>Neste exemplo criamos um ArrayList de String chamado de frutas, e adicionamos dois nomes de frutas a ele usando o método <em><strong>add</strong></em>.</p>
<p>Logo após, mostramos o conteúdo do ArrayList iterando pelos seus elementos com um laço for, e lendo cada item com o método <em><strong>get</strong></em>.</p>
<p>Também criamos um método especial para mostrar o conteúdo do ArrayList, de nome <em><strong>mostrar()</strong></em>, que recebe como argumentos o nome do ArrayList e uma mensagem a ser exibida juntamente com os elementos retornados.</p>
<p>Removemos um elemento usando o método <em><strong>remove</strong></em>, e verificamos o seu tamanho com o método <em><strong>size</strong></em>.</p>
<p>Finalmente, verificamos se um item está contido no ArrayList usando o método <em><strong>contains</strong></em>.</p>
<p>Na próxima lição vamos estudar as listas ligadas, implementadas com a classe LinkedList.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/a-classe-arraylist-e-collections-em-java/">A Classe ArrayList e Collections em Java</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/java/a-classe-arraylist-e-collections-em-java/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Como criar e editar arquivos de texto de acesso sequencial em Java</title>
		<link>https://www.bosontreinamentos.com.br/java/como-criar-e-editar-arquivos-de-texto-de-acesso-sequencial-em-java/</link>
					<comments>https://www.bosontreinamentos.com.br/java/como-criar-e-editar-arquivos-de-texto-de-acesso-sequencial-em-java/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Sat, 14 Dec 2019 19:02:34 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=15969</guid>

					<description><![CDATA[<p>Como criar e editar arquivos de texto de acesso sequencial em Java Um arquivo de acesso sequencial é um arquivo no qual os dados (registros) são armazenados em ordem, por um campo registro-chave. Vamos criar nesta lição um arquivo de texto, incluindo escrita, leitura e edição de seu conteúdo. Criar classe para manipular arquivo de texto Para nosso exemplo vamos criar a classe CriarArquivoTexto, que irá usar um objeto Formatter para gerar Strings formatadas, da mesma forma que o método System.out.printf trabalha. E com ele criaremos ou abriremos um arquivo de texto que nomearemos como &#8220;arquivo.txt&#8220;. Se o arquivo não existir, ele será criado; caso o arquivo já exista no sistema, ele será truncado, ou seja, todo o seu conteúdo será apagado e substituído pelo novo conteúdo digitado. Exemplo Vejamos um exemplo de criação e edição de arquivo de texto em Java, adaptado de Deitel &#8211; Java How to Program, 10ª edição: package criarArquivoTexto; import java.io.FileNotFoundException; import java.lang.SecurityException; import java.util.Formatter; import java.util.FormatterClosedException; import java.util.NoSuchElementException; import java.util.Scanner; public class CriarArquivoTexto { private static Formatter saida; // envia texto para um arquivo public static void main(String[] args) { abrirArquivo(); adicionarDados(); fecharArquivo(); } // Método para abrir (ou criar) o arquivo arquivo.txt public [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/como-criar-e-editar-arquivos-de-texto-de-acesso-sequencial-em-java/">Como criar e editar arquivos de texto de acesso sequencial em Java</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Como criar e editar arquivos de texto de acesso sequencial em Java</h2>
<p>Um arquivo de acesso sequencial é um arquivo no qual os dados (registros) são armazenados em ordem, por um campo registro-chave. Vamos criar nesta lição um arquivo de texto, incluindo escrita, leitura e edição de seu conteúdo.</p>
<h3>Criar classe para manipular arquivo de texto</h3>
<p>Para nosso exemplo vamos criar a classe CriarArquivoTexto, que irá usar um objeto <strong>Formatter</strong> para gerar Strings formatadas, da mesma forma que o método System.out.printf trabalha. E com ele criaremos ou abriremos um arquivo de texto que nomearemos como &#8220;<strong>arquivo.txt</strong>&#8220;.</p>
<p>Se o arquivo não existir, ele será criado; caso o arquivo já exista no sistema, ele será truncado, ou seja, todo o seu conteúdo será apagado e substituído pelo novo conteúdo digitado.</p>
<h3>Exemplo</h3>
<p>Vejamos um exemplo de criação e edição de arquivo de texto em Java, adaptado de Deitel &#8211; <strong><em>Java How to Program</em></strong>, 10ª edição:</p>
<pre><strong>package criarArquivoTexto;</strong>
<strong>import java.io.FileNotFoundException;</strong>
<strong>import java.lang.SecurityException;</strong>
<strong>import java.util.Formatter;</strong>
<strong>import java.util.FormatterClosedException;</strong>
<strong>import java.util.NoSuchElementException;</strong>
<strong>import java.util.Scanner;

</strong><strong>public class CriarArquivoTexto {
</strong><strong>  private static Formatter saida; <span style="color: #339966;">// envia texto para um arquivo

</span></strong><strong>    public static void main(String[] args) {</strong>
<strong>      abrirArquivo();</strong>
<strong>      adicionarDados();</strong>
<strong>      fecharArquivo();</strong>
<strong>    }

</strong><span style="color: #339966;"><strong>    // Método para abrir (ou criar) o arquivo arquivo.txt</strong></span>
<strong>    public static void abrirArquivo() {</strong>
<strong>      try {</strong>
<strong>        saida = new Formatter("arquivo.txt"); <span style="color: #339966;">// Abrir o arquivo</span></strong>
<strong>      }</strong>
<strong>      catch (SecurityException securityException) {</strong>
<strong>        System.err.println("Não é possível escrever no arquivo. Finalizando.");</strong>
<strong>        System.exit(1); <span style="color: #339966;">// terminar o programa</span></strong>
<strong>      }</strong>
<strong>      catch (FileNotFoundException fileNotFoundException) {</strong>
<strong>        System.err.println("Erro ao abrir o arquivo. Finalizando.");</strong>
<strong>        System.exit(1); <span style="color: #339966;">// Finalizar o programa</span></strong>
<strong>      }</strong>
<strong>   }

</strong><span style="color: #339966;"><strong>    // Método para adicionar registros ao arquivo</strong></span>
<strong>    public static void adicionarDados() {</strong>
<strong>      Scanner entrada = new Scanner(System.in);</strong>
<strong>      System.out.printf("%s%n","Entre com o código do produto e nome do item para cadastro:");</strong>
<strong>      System.out.printf("%s%n","Para salvar os dados inseridos pressione Ctrl+Z:");</strong>
<strong>      while (entrada.hasNext()) { <span style="color: #339966;">// iterar até que seja encontrado o marcador de fim-de-arquivo</span></strong>
<strong>        try {</strong>
<span style="color: #339966;"><strong>          // Gravar novo registro no arquivo; não verifica se entrada é válida.</strong></span>
<strong>          saida.format("%d %s %n", entrada.nextInt(),entrada.next());</strong>
<strong>        }</strong>
<strong>        catch (FormatterClosedException formatterClosedException) {</strong>
<strong>          System.err.println("Erro ao escrever no arquivo. Finalizando.");</strong>
<strong>          break;</strong>
<strong>        }</strong>
<strong>        catch (NoSuchElementException elementException) {</strong>
<strong>          System.err.println("Entrada inválida. Tente novamente.");</strong>
<strong>          entrada.nextLine(); <span style="color: #339966;">// Descartar a entrada para que o usuário possa tentar de novo</span></strong>
<strong>        }</strong>
<strong>        System.out.print("Entre com o próximo código e item:\n");</strong>
<strong>      } <span style="color: #339966;">// Fim do laço while</span></strong>
<strong>    } <span style="color: #339966;">// Fim do método adicionarDados

</span></strong><span style="color: #339966;"><strong>    // Método para fechar o arquivo</strong></span>
<strong>    public static void fecharArquivo() {</strong>
<strong>      if (saida != null)</strong>
<strong>        saida.close();</strong>
<strong>    }</strong>
<strong>} <span style="color: #339966;">// Fim da classe CriarArquivoTexto</span></strong></pre>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15973 size-full" title="Criar arquivo de texto com Java" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/criar-arquivo-texto-Java.png" alt="Criar arquivo de texto com Java" width="607" height="271" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/criar-arquivo-texto-Java.png 607w, https://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/criar-arquivo-texto-Java-420x188.png 420w" sizes="auto, (max-width: 607px) 100vw, 607px" /></p>
<p>Note que para sinalizar o final de arquivo e sair do programa, usamos a combinação de teclas Ctrl+Z. Esse é o marcador EOF padrão no Windows. Se estiver usando outro sistema operacional, o marcador poderá ser diferente:</p>
<table style="border-collapse: collapse; width: 86.1139%; height: 79px;" border="1">
<thead>
<tr>
<td style="width: 50%; text-align: center;"><strong>Sistema Operacional</strong></td>
<td style="width: 50%; text-align: center;"><strong>Marcador EOF (Combinação de teclas)</strong></td>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 50%; text-align: center;">Microsoft Windows</td>
<td style="width: 50%; text-align: center;">Ctrl + Z</td>
</tr>
<tr>
<td style="width: 50%; text-align: center;">Unix / Linux / Mac OS X</td>
<td style="width: 50%; text-align: center;">&lt;Enter&gt; Ctrl + d</td>
</tr>
</tbody>
</table>
<p>Após a execução do programa, podemos entrar na pasta do projeto e lá encontraremos o arquivo gerado. Se o abrirmos usando o editor de texto padrão do sistema, veremos o conteúdo que foi fornecido à aplicação anteriormente:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15974 size-full" title="Arquivo de texto criado com Java" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/criar-arquivo-texto-Java-bloco-de-notas.png" alt="Arquivo de texto criado com Java" width="363" height="214"></p>
<p>Arquivo criado e dados salvos com sucesso! Na próxima lição vamos aprender a ler os dados armazenados em um arquivo de texto sequencial usando Java.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/como-criar-e-editar-arquivos-de-texto-de-acesso-sequencial-em-java/">Como criar e editar arquivos de texto de acesso sequencial em Java</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/java/como-criar-e-editar-arquivos-de-texto-de-acesso-sequencial-em-java/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Obter informações sobre arquivos e diretórios com Java e classes NIO</title>
		<link>https://www.bosontreinamentos.com.br/java/obter-informacoes-sobre-arquivos-e-diretorios-com-java-e-classes-nio/</link>
					<comments>https://www.bosontreinamentos.com.br/java/obter-informacoes-sobre-arquivos-e-diretorios-com-java-e-classes-nio/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 13 Dec 2019 13:38:35 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=15943</guid>

					<description><![CDATA[<p>Obter informações sobre arquivos e diretórios com Java e classes NIO Os dados presentes na memória RAM do computador são temporários, o que significa que são perdidos em algum momento, por exemplo ao desligar a máquina. Isso inclui dados presentes nas variáveis dentro de um programa &#8211; como as aplicações Java &#8211; o que nos traz o seguinte problema: como armazenar dados de forma permanente, sem que haja perda de informação? A questão é muito importante, pois é muito comum que haja a necessidade de armazenar informação para uso posterior. Para tal fazemos uso de arquivos, que são conjuntos de dados estruturados armazenados em dispositivos de armazenamento secundários, como um disco rígido, SSD ou mídia óptica, por exemplo. Dados gravados nesses dispositivos são dados persistentes &#8211; continuam existindo mesmo após terminada a execução de um programa. Neste lição vamos introduzir a manipulação de arquivos em Java, mostrando como é possível obter informações sobre arquivos e diretórios existentes em uma mídia, como no HD do computador. O que veremos neste tutorial: Quais classes manipulam arquivos em Java? O que são Streams em Java? O que são Dispositivos Especiais? Para que servem os pacotes java.io e java.nio? Como usar as classes Paths [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/obter-informacoes-sobre-arquivos-e-diretorios-com-java-e-classes-nio/">Obter informações sobre arquivos e diretórios com Java e classes NIO</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Obter informações sobre arquivos e diretórios com Java e classes NIO</h2>
<p>Os dados presentes na memória RAM do computador são temporários, o que significa que são perdidos em algum momento, por exemplo ao desligar a máquina. Isso inclui dados presentes nas variáveis dentro de um programa &#8211; como as aplicações Java &#8211; o que nos traz o seguinte problema: como armazenar dados de forma permanente, sem que haja perda de informação?</p>
<p>A questão é muito importante, pois é muito comum que haja a necessidade de armazenar informação para uso posterior. Para tal fazemos uso de arquivos, que são conjuntos de dados estruturados armazenados em dispositivos de armazenamento secundários, como um disco rígido, SSD ou mídia óptica, por exemplo. Dados gravados nesses dispositivos são dados persistentes &#8211; continuam existindo mesmo após terminada a execução de um programa.</p>
<p>Neste lição vamos introduzir a manipulação de arquivos em Java, mostrando como é possível obter informações sobre arquivos e diretórios existentes em uma mídia, como no HD do computador.</p>
<p>O que veremos neste tutorial:</p>
<ul>
<li><a href="#classes-manipular-arquivos-java">Quais classes manipulam arquivos em Java?</a></li>
<li><a href="#streams-java-fluxos">O que são Streams em Java?</a></li>
<li><a href="#dispositivos-especiais-java">O que são Dispositivos Especiais?</a></li>
<li><a href="#pacotes-java.io-java.nio-java">Para que servem os pacotes java.io e java.nio?</a></li>
<li><a href="#classe-paths-classe-files-java">Como usar as classes Paths e Files em Java?</a></li>
</ul>
<h3 id="classes-manipular-arquivos-java">Classes para manipulação de arquivos em Java</h3>
<p>Existem diversas classes e interfaces que permitem a manipulação de arquivos e pastas em Java. Vamos estudar as seguintes neste tutorial:</p>
<ul>
<li>Pacote java.nio.file</li>
<li>Classe Paths</li>
<li>Classe Files</li>
<li>Interface Path</li>
<li>Interface DirectoryStream</li>
</ul>
<h3 id="streams-java-fluxos">Fluxos (Streams)</h3>
<p>Em Java, os arquivos são vistos como fluxos sequenciais de bytes (<em><strong>streams</strong></em>). Ao processar um arquivo, o Java processa um fluxo de bytes até encontrar um marcador especial que indica o final do fluxo &#8211; ou seja, o final do arquivo. Chamamos a esse marcados de Marcador de Fim-de-Arquivo (<strong>End-Of-File / EOF</strong>).</p>
<p>Os fluxos de dados podem ser de dois tipos:</p>
<ul>
<li><strong>Baseado em Bytes</strong> &#8211; Os dados são lidos e gravados em formato binário (bits), de modo que, por exemplo, um dado do tipo <em>int</em> ocupe quatro bytes, um do tipo <em>char</em>, dois bytes, e assim sucessivamente, dependendo do tipo de dado. Arquivos criados com fluxo baseado em bytes são denominados Arquivos Binários.<br />
Somente programas que entendam a organização dos bytes são capazes de ler esse tipo de arquivo.</li>
<li><strong>Baseado em Caracteres</strong> &#8211; Neste caso, os dados são lidos e gravados como <a href="http://www.bosontreinamentos.com.br/java/a-classe-character-em-java/">sequências de caracteres</a>, sendo que cada caractere tem dois bytes de tamanho, e o tamanho de um dado depende, assim, do número de caracteres que ele possui. Arquivos criados com fluxo baseado em caracteres são denominados Arquivos de Texto.<br />
Editores de texto são capazes de ler este tipo de arquivo.</li>
</ul>
<h3 id="dispositivos-especiais-java">Fluxos e dispositivos especiais</h3>
<p>Um fluxo de dados pode ser associado a diferentes dispositivos pelo Java. Ao iniciar um programa, o Java cria três objetos de fluxo, associados com dispositivos: <em><strong>System.in</strong></em>, <em><strong>System.out</strong></em> e <em><strong>System.err</strong></em>. Dois deles você provavelmente já viu em algum programa &#8211; lembra-se do System.in em um objeto Scanner, ou do System,out ao chamar um método printf ou println? Esses dispositivos representam o seguinte:</p>
<ul>
<li><strong>System.in</strong> &#8211; Dispositivo de entrada padrão, que habilita um programa a receber dados oriundos do teclado.</li>
<li><strong>System.out</strong> &#8211; Saída padrão. Habilita o programa a enviar dados de saída à tela.</li>
<li><strong>System.err</strong> &#8211; Erro padrão. Permite que um programa envie mensagens de erro para a tela.</li>
</ul>
<p>Esses fluxos de dados podem ser redirecionados, de modo que seja possível ler entrada de dados de outros dispositivos, por exemplo, ou enviá-los para outro local.</p>
<h3 id="pacotes-java.io-java.nio-java">Pacotes java.io e java.nio</h3>
<p>Esses pacotes possuem as classes e interfaces empregadas no processamento de fluxos de dados em Java. Vamos trabalhar com esses elementos em um programa simples, que irá mostrar dados sobre arquivos e diretórios especificados no console. Antes disso, vamos descrever as principais classes que serão empregadas:</p>
<ul>
<li><strong>Interface Path</strong> &#8211; Os objetos de classes que implementam esta interface permitem representar o local de um arquivo ou diretório no sistema. Porém, não permitem abrir ou editar arquivos.</li>
<li><strong>Interface DirectoryStream</strong> &#8211; Os objetos de classes que implementam esta interface permitem que a aplicação seja capaz de iterar pelo conteúdo de uma pasta no sistema.</li>
<li><strong>Classe Paths</strong> &#8211; Esta classe fornece métodos estáticos que são empregados para obter um objeto Path, que representa o local de um arquivo ou diretório no sistema. Um objeto <strong>Path</strong> é criado por meio do uso do método estático <strong>get</strong> desta classe, o qual converte uma String que representa o local de um arquivo ou diretório no objeto.</li>
<li><strong>Classe Files</strong> &#8211; Esta classe fornece métodos estáticos que podem ser usados para realizar manipulação de arquivos e diretórios, como criar, excluir ou copiar arquivos, obter dados sobre arquivos e diretórios, ler o conteúdo de um arquivo, entre outros.</li>
</ul>
<h3 id="classe-paths-classe-files-java">Exemplo</h3>
<p>No exemplo mostrado a seguir, usamos as classes e interfaces apresentadas para obter informações sobre um arquivo ou diretório, cujo caminho é fornecido pelo usuário e lido por um objeto Scanner.</p>
<pre><strong>package lerGravarArquivos;</strong>
<strong>import java.io.IOException;</strong>
<strong>import java.nio.file.DirectoryStream;</strong>
<strong>import java.nio.file.Files;</strong>
<strong>import java.nio.file.Path;</strong>
<strong>import java.nio.file.Paths;</strong>
<strong>import java.util.Scanner;</strong>
<strong>public class LerGravarArquivos {

</strong><strong>  public static void main(String[] args) throws IOException {

</strong><strong>    Scanner entrada = new Scanner(System.in);</strong>
<strong>    System.out.println("Entre com o nome do arquivo ou diretório:");

</strong><span style="color: #339966;"><strong>    // Criar objeto Path com a entrada fornecida pelo usuário</strong></span>
<strong>    Path caminho = Paths.get(entrada.nextLine());

</strong><span style="color: #339966;"><strong>    // Verificar se o caminho existe, e mostrar informações sobre ele em caso positivo:</strong></span>
<strong>    if (Files.exists(caminho)) {</strong>
<strong>      System.out.printf("Nome do arquivo: %s%n", caminho.getFileName());</strong>
<strong>      System.out.printf("É diretório? %s%n",Files.isDirectory(caminho)?"Sim":"Não");</strong>
<strong>      System.out.printf("Última modificação: %s%n",Files.getLastModifiedTime(caminho));</strong>
<strong>      System.out.printf("Tamanho: %s%n",Files.size(caminho));</strong>
<strong>      System.out.printf("Caminho: %s%n",caminho);

</strong><span style="color: #339966;"><strong>      //Se for diretório, mostrar seu conteúdo:</strong></span>
<strong>      if (Files.isDirectory(caminho)) {</strong>
<strong>        System.out.println("Conteúdo do diretório:\n");</strong>
<strong>        DirectoryStream&lt;Path&gt; directoryStream = Files.newDirectoryStream(caminho);</strong>
<strong>        for (Path cam : directoryStream) {</strong>
<strong>          System.out.println(cam);</strong>
<strong>        }</strong>
<strong>      }</strong>
<strong>    }</strong>
<strong>    else { <span style="color: #339966;">// Se o caminho não for arquivo ou diretório, apresentar mensagem de erro</span></strong>
<strong>      System.out.printf("%nO caminho %s não existe.",caminho);</strong>
<strong>    }</strong>
<strong>  }</strong>
<strong>}</strong></pre>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15945 size-full" title="obter dados sobre Arquivos e diretórios em Java" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/arquivos-diretorios-java-nio.png" alt="obter dados sobre Arquivos e diretórios em Java" width="525" height="487" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/arquivos-diretorios-java-nio.png 525w, https://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/arquivos-diretorios-java-nio-420x390.png 420w" sizes="auto, (max-width: 525px) 100vw, 525px" /></p>
<p>Os métodos empregados são, basicamente, auto-explicativos. Note que é importante acrescentar a declaração <em><strong>throws IOException</strong></em> no método <em><strong>main</strong></em>, caso contrário alguns dos métodos empregados no programa não serão executados pelo compilador.</p>
<p>Nas próximas lições veremos como criar, editar e manipular arquivos de texto em Java.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/obter-informacoes-sobre-arquivos-e-diretorios-com-java-e-classes-nio/">Obter informações sobre arquivos e diretórios com Java e classes NIO</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/java/obter-informacoes-sobre-arquivos-e-diretorios-com-java-e-classes-nio/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como tokenizar strings em Java com o método split</title>
		<link>https://www.bosontreinamentos.com.br/java/como-tokenizar-strings-em-java-com-o-metodo-split/</link>
					<comments>https://www.bosontreinamentos.com.br/java/como-tokenizar-strings-em-java-com-o-metodo-split/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 12 Dec 2019 12:44:59 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Análise de Dados]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=15934</guid>

					<description><![CDATA[<p>Como tokenizar strings em Java com o método split da classe String Damos o nome de tokens às palavras individuais e marcas de pontuação (pontos, vírgulas, etc) que compõem e dão sentido a uma frase ou parágrafo de texto. Quando lemos um texto qualquer, nosso cérebro efetua a separação dessas palavras automaticamente, de modo a entendermos o significado do conteúdo lido. Não só nós realizamos esse processo &#8211; compiladores, por exemplo, também realizam a separação de sentença e comandos em partes individuais, como palavras-chave, operadores, nomes de objetos e outros elementos que compõem o código-fonte. Em outras palavras, os compiladores tokenizam o código para analisá-lo, antes de tentar executá-lo. Em Java, é possível realizar essa separação de elementos em uma string &#8211; ou seja, tokenizar &#8211; por meio do emprego do método split, pertencente à classe String. Método split &#8211; Divide um objeto String em seus tokens componentes, separados entre si por delimitadores especificados. Comumente, os delimitadores empregados são caracteres de espaço, tabulação, newline (quebra de linha), entre outros. Mas também é possível usar outros caracteres como delimitadores &#8211; por exemplo, é comum usar vírgulas em arquivos do tipo CSV (comma-separated values / valores separados por vírgulas). O método split [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/como-tokenizar-strings-em-java-com-o-metodo-split/">Como tokenizar strings em Java com o método split</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Como tokenizar strings em Java com o método split da classe String</h2>
<p>Damos o nome de <em><strong>tokens</strong></em> às palavras individuais e marcas de pontuação (pontos, vírgulas, etc) que compõem e dão sentido a uma frase ou parágrafo de texto. Quando lemos um texto qualquer, nosso cérebro efetua a separação dessas palavras automaticamente, de modo a entendermos o significado do conteúdo lido.</p>
<p>Não só nós realizamos esse processo &#8211; compiladores, por exemplo, também realizam a separação de sentença e comandos em partes individuais, como palavras-chave, operadores, nomes de objetos e outros elementos que compõem o código-fonte.<br />
Em outras palavras, os compiladores <strong>tokenizam</strong> o código para analisá-lo, antes de tentar executá-lo.</p>
<p>Em Java, é possível realizar essa separação de elementos em uma string &#8211; ou seja, tokenizar &#8211; por meio do emprego do método <em><strong>split</strong></em>, pertencente à <a href="http://www.bosontreinamentos.com.br/java/programacao-em-java-a-classe-string-introducao/">classe String</a>.</p>
<p>Método split &#8211; Divide um objeto String em seus tokens componentes, separados entre si por delimitadores especificados. Comumente, os delimitadores empregados são caracteres de espaço, tabulação, newline (quebra de linha), entre outros. Mas também é possível usar outros caracteres como delimitadores &#8211; por exemplo, é comum usar vírgulas em arquivos do tipo <strong>CSV</strong> (comma-separated values / valores separados por vírgulas).</p>
<p>O método split toma como argumento um caractere a ser considerado como delimitador.</p>
<h3>Exemplo</h3>
<p>Vejamos um exemplo de tokenização de uma String em Java.</p>
<pre><strong>Scanner entrada = new Scanner(System.in);</strong>
<strong>System.out.println("Digite um texto para ser dividido em seus tonkens constituintes, e pressione enter:");</strong>
<strong>String texto = entrada.nextLine();</strong>
<span style="color: #339966;"><strong>// Realizar o processamento da frase, separando seus tokens</strong></span>
<strong>String[] tokens = texto.split(" ");</strong>
<span style="color: #339966;"><strong>//Informar quantos tokens há na frase:</strong></span>
<strong>System.out.printf("%nA frase informada possui %d tokens.%n", tokens.length);</strong>
<span style="color: #339966;"><strong>//Mostrar os tokens obtidos</strong></span>
<strong>System.out.println("Os tokens da frase são:\n");</strong>
<strong>for (String item : tokens) {</strong>
<strong>  System.out.println(item);</strong>
<strong>}</strong></pre>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15938 size-full" title="como tokenizar strings em Java" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/token-strings-Java.png" alt="como tokenizar strings em Java" width="837" height="330" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/token-strings-Java.png 837w, https://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/token-strings-Java-420x166.png 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/token-strings-Java-768x303.png 768w" sizes="auto, (max-width: 837px) 100vw, 837px" /></p>
<p>Neste exemplo, a frase informada é tokenizada pelo método split, que recebeu como argumento o delimitador espaço (&#8221; &#8220;), e os tokens individuais são armazenados em um array de String que chamamos de tokens. Assim, podemos acessar qualquer um dos tokens simplesmente lendo uma posição no array, ou imprimir todos eles, como fizemos no programa.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/como-tokenizar-strings-em-java-com-o-metodo-split/">Como tokenizar strings em Java com o método split</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/java/como-tokenizar-strings-em-java-com-o-metodo-split/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Converter caracteres e dígitos com digit e forDigit, métodos da classe Character em Java</title>
		<link>https://www.bosontreinamentos.com.br/java/converter-caracteres-e-digitos-com-digit-e-fordigit-metodos-da-classe-character-em-java/</link>
					<comments>https://www.bosontreinamentos.com.br/java/converter-caracteres-e-digitos-com-digit-e-fordigit-metodos-da-classe-character-em-java/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Thu, 12 Dec 2019 12:41:03 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=15927</guid>

					<description><![CDATA[<p>Converter caracteres e dígitos com digit e forDigit Em Java é possível realizar conversão entre dados do tipo caractere e dígitos numéricos, em diversas bases, com o emprego de alguns métodos da classe Character. Neste tutorial veremos como fazer isso usando os métodos digit e forDigit. Método forDigit &#8211; Converte um dígito inteiro em caractere, na base (sistema de numeração) especificada pelo inteiro radix (base). Por exemplo, o valor inteiro decimal 15, ao ser convertido em seu caractere correspondente na base 16, é representado por &#8216;F&#8217; (sem distinção entre maiúsculas e minúsculas). Sua sintaxe é a seguinte: forDigit(numero,base) Método digit &#8211; Converte um valor de caractere em um número inteiro especificado por um valor de base inteiro (radix). Por exemplo, o caractere &#8216;B&#8217;, na base 16, é convertido para o valor 11 na base 10 (decimal). O valor de base (radix) deve ser um número entre 2 e 36, inclusive.&#160;Sua sintaxe é a seguinte: digit(caractere,base) Exemplo Vejamos dois exemplos de conversão usando esses métodos em Java. Scanner entrada = new Scanner(System.in); System.out.println("Digite o valor da base numérica, entre 2 e 36:"); int base = entrada.nextInt(); System.out.println("\nDigite o caractere desejado para conversão:"); char caractere = entrada.next().charAt(0); System.out.println("\nDigite o número desejado para [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/converter-caracteres-e-digitos-com-digit-e-fordigit-metodos-da-classe-character-em-java/">Converter caracteres e dígitos com digit e forDigit, métodos da classe Character em Java</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Converter caracteres e dígitos com digit e forDigit</h2>
<p>Em Java é possível realizar conversão entre dados do tipo caractere e dígitos numéricos, em diversas bases, com o emprego de alguns métodos da classe Character. Neste tutorial veremos como fazer isso usando os métodos <strong>digit</strong> e <strong>forDigit</strong>.</p>
<ul>
<li><strong>Método forDigit</strong> &#8211; Converte um dígito inteiro em caractere, na base (sistema de numeração) especificada pelo inteiro radix (base). Por exemplo, o valor inteiro decimal 15, ao ser convertido em seu caractere correspondente na base 16, é representado por &#8216;F&#8217; (sem distinção entre maiúsculas e minúsculas). Sua sintaxe é a seguinte:
<pre>forDigit(numero,base)</pre>
</li>
<li><strong>Método digit</strong> &#8211; Converte um valor de caractere em um número inteiro especificado por um valor de base inteiro (radix). Por exemplo, o caractere &#8216;B&#8217;, na base 16, é convertido para o valor 11 na base 10 (decimal). O valor de base (radix) deve ser um número entre 2 e 36, inclusive.&nbsp;Sua sintaxe é a seguinte:
<pre>digit(caractere,base)</pre>
</li>
</ul>
<h3>Exemplo</h3>
<p>Vejamos dois exemplos de conversão usando esses métodos em Java.</p>
<pre><strong>Scanner entrada = new Scanner(System.in);

</strong><strong>System.out.println("Digite o valor da base numérica, entre 2 e 36:");</strong>
<strong>int base = entrada.nextInt();

</strong><strong>System.out.println("\nDigite o caractere desejado para conversão:");</strong>
<strong>char caractere = entrada.next().charAt(0);

</strong><strong>System.out.println("\nDigite o número desejado para conversão:");</strong>
<strong>int numero = entrada.nextInt();

</strong><strong>System.out.printf("%d convertido em caractere equivale a \'%s\'%n", numero, Character.forDigit(numero, base));</strong>
<strong>System.out.printf("\'%s\' convertido em dígito base %d equivale a %d%n", caractere, base, Character.digit(caractere, base));</strong></pre>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15931 size-full" title="Metodos digit e forDigit da classe Character em Java" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/digit-forDigit-classe-character-Java.png" alt="Metodos digit e forDigit da classe Character em Java" width="508" height="227" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/digit-forDigit-classe-character-Java.png 508w, https://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/digit-forDigit-classe-character-Java-420x188.png 420w" sizes="auto, (max-width: 508px) 100vw, 508px" /></p>
<p>Neste exemplo, convertemos o valor numérico 14 em seu caractere correspondente no sistema hexadecimal (base 16), que é a letra &#8216;e&#8217;, e realizamos a conversão inversa &#8211; fornecemos o valor &#8216;A&#8221; em hexadecimal e o convertemos em seu valor correspondente no sistema decimal.</p>
<p>Anterior: A <a href="http://www.bosontreinamentos.com.br/java/a-classe-character-em-java/">Classe Character em Java</a></p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/converter-caracteres-e-digitos-com-digit-e-fordigit-metodos-da-classe-character-em-java/">Converter caracteres e dígitos com digit e forDigit, métodos da classe Character em Java</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/java/converter-caracteres-e-digitos-com-digit-e-fordigit-metodos-da-classe-character-em-java/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>A Classe Character em Java</title>
		<link>https://www.bosontreinamentos.com.br/java/a-classe-character-em-java/</link>
					<comments>https://www.bosontreinamentos.com.br/java/a-classe-character-em-java/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 06 Dec 2019 22:04:40 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=15906</guid>

					<description><![CDATA[<p>A Classe Character em Java Para a manipulação de strings em Java existe a classe String, que já estudamos em outra lição. Porém, ao trabalharmos com caracteres individuais é muito comum usar o tipo primitivo char. Porém, o tipo char, justamente por ser um tipo primitivo, não possui métodos especializados para a manipulação de dados do tipo. Mas isso não significa que não seja possível usar métodos específicos em tipos de caractere &#8211; basta para isso manipular o tipo com uma classe wrapper.&#160; A classe Character é uma classe wrapper, ou seja, um classe que embrulha / empacota valores primitivos, permitindo que esses valores sejam tratados como se fossem objetos. A maior parte dos métodos da classe Character são métodos estáticos, empregados no processamento de caracteres individuais. Os métodos recebem um ou mais caracteres como argumento e realizam testes ou manipulação dos caracteres. Também é possível inicializar um objeto Character, pois esta classe possui um método construtor que recebe um caractere como argumento para inicializar o objeto. Exemplos Vejamos alguns exemplos de uso da classe Character em Java. Scanner entrada = new Scanner(System.in); // Não esqueça de importar o Scanner no início do código! System.out.println("Digite um caractere qualquer e pressione [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/a-classe-character-em-java/">A Classe Character em Java</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>A Classe Character em Java</h2>
<p>Para a manipulação de strings em Java existe a <a href="http://www.bosontreinamentos.com.br/java/programacao-em-java-a-classe-string-introducao/">classe String</a>, que já estudamos em outra lição. Porém, ao trabalharmos com caracteres individuais é muito comum usar o tipo primitivo char. Porém, o tipo char, justamente por ser um tipo primitivo, não possui métodos especializados para a manipulação de dados do tipo. Mas isso não significa que não seja possível usar métodos específicos em tipos de caractere &#8211; basta para isso manipular o tipo com uma classe wrapper.&nbsp;</p>
<p>A classe <strong>Character</strong> é uma <strong><em>classe wrapper</em></strong>, ou seja, um classe que embrulha / empacota valores primitivos, permitindo que esses valores sejam tratados como se fossem objetos.</p>
<p>A maior parte dos métodos da classe Character são métodos estáticos, empregados no processamento de caracteres individuais. Os métodos recebem um ou mais caracteres como argumento e realizam testes ou manipulação dos caracteres.</p>
<p>Também é possível inicializar um objeto Character, pois esta classe possui um método construtor que recebe um caractere como argumento para inicializar o objeto.</p>
<h3>Exemplos</h3>
<p>Vejamos alguns exemplos de uso da classe Character em Java.</p>
<pre><strong>Scanner entrada = new Scanner(System.in); <span style="color: #339966;">// Não esqueça de importar o Scanner no início do código!</span></strong>
<strong>System.out.println("Digite um caractere qualquer e pressione Enter:");</strong>
<strong>String str = entrada.next();</strong>
<strong>char c = str.charAt(0); <span style="color: #339966;">// Obter o caractere digitado

</span></strong><span style="color: #339966;"><strong>// Usando a classe Character para obter informações:</strong></span>
<strong>System.out.printf("é definido? %b%n", Character.isDefined(c));</strong>
<strong>System.out.printf("é um dígito? %b%n", Character.isDigit(c));</strong>
<strong>System.out.printf("é uma letra? %b%n", Character.isLetter(c));</strong>
<strong>System.out.printf("é letra ou dígito? %b%n", Character.isLetterOrDigit(c));</strong>
<strong>System.out.printf("Maiúsculo? %b%n", Character.isUpperCase(c));</strong>
<strong>System.out.printf("Minúsculo? %b%n", Character.isLowerCase(c));</strong>
<strong>System.out.printf("Converter para maiúsculo: %s%n", Character.toUpperCase(c));</strong>
<strong>System.out.printf("Converter para minúsculo: %s%n", Character.toLowerCase(c));</strong></pre>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15908 size-full" title="Métodos da classe Character em Java" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/classe-character-java.png" alt="Métodos da classe Character em Java" width="413" height="205"></p>
<p>Os métodos usados nos exemplos foram os seguintes:</p>
<ul>
<li><strong>isDefined</strong> &#8211;&nbsp;Determina se o caractere passado como argumento está definido no conjunto de caracteres Unicode. Se estiver, o método retorna true; caso contrário, retorna false.</li>
<li><strong>isDigit</strong> &#8211;&nbsp;Determina se o caractere é um dígito (número) definido no Unicode.</li>
<li><strong>isLetter</strong> &#8211;&nbsp;Determina se o caractere é uma letra do alfabeto.</li>
<li><strong>isLetterOrDigit</strong> &#8211;&nbsp;Determina se o caractere é uma letra ou um dígito numérico.</li>
<li><strong>isUpperCase</strong> &#8211;&nbsp;Determina se o caractere é uma letra maiúscula.</li>
<li><strong>isLowerCase</strong> &#8211;&nbsp;Determina se o caractere é uma letra minúscula.</li>
<li><strong>toUpperCase</strong> &#8211;&nbsp;Converte o caractere para maiúscula.</li>
<li><strong>toLowerCase</strong> &#8211;&nbsp;Converte o caractere para minúscula.</li>
</ul>
<p>Na próxima lição veremos mais alguns métodos importantes da classe Character, como os métodos digit e forDigit, por exemplo.</p>
<p>Até!</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/a-classe-character-em-java/">A Classe Character em Java</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/java/a-classe-character-em-java/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>O método valueOf em Strings &#8211; Programação em Java</title>
		<link>https://www.bosontreinamentos.com.br/java/o-metodo-valueof-em-strings-programacao-em-java/</link>
					<comments>https://www.bosontreinamentos.com.br/java/o-metodo-valueof-em-strings-programacao-em-java/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 06 Dec 2019 21:57:58 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=15901</guid>

					<description><![CDATA[<p>O método valueOf em Strings Todos os objetos em Java possuem um método toString que permite obter a representação em string do objeto em questão, por exemplo, para fins de exibição. Porém, os tipos primitivos (como int, float, boolean, char, etc.) não possuem esse método, pois na verdade eles não tem nenhum método (afinal, são tipos primitivos, e não classes). Ainda assim, é possível obter a representação de string de um tipo primitivo usando um método especial pertencente à&#160;classe String: o método valueOf. O método valueOf é um método estático que recebe um argumento de qualquer tipo e o converte em um objeto String, que pode ser então processado por métodos como printf, println ou qualquer outro que trabalhe com cadeias de caracteres. Exemplos Vejamos alguns exemplos. // Declarar algumas variáveis de tipos primitivos boolean valorBooleano = false; int valorInteiro = 13; char valorCaractere = 'F'; float valorFloat = 3.14f; double valorDouble = 1.61803; // Verificar os valores das variáveis System.out.printf("Booleano: %s%n", String.valueOf(valorBooleano)); System.out.printf("Inteiro: %s%n", String.valueOf(valorInteiro)); System.out.printf("Caractere: %s%n", String.valueOf(valorCaractere)); System.out.printf("Float: %s%n", String.valueOf(valorFloat)); System.out.printf("Double: %s%n", String.valueOf(valorDouble)); Veja que foram retornadas as representações em string dos valores primitivos passados para o método valueOf. É isso aí! Na próxima lição vamos apresentar a [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/o-metodo-valueof-em-strings-programacao-em-java/">O método valueOf em Strings &#8211; Programação em Java</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>O método valueOf em Strings</h2>
<p>Todos os objetos em Java possuem um método <strong>toString</strong> que permite obter a representação em string do objeto em questão, por exemplo, para fins de exibição. Porém, os tipos primitivos (como int, float, boolean, char, etc.) não possuem esse método, pois na verdade eles não tem nenhum método (afinal, são tipos primitivos, e não classes).</p>
<p>Ainda assim, é possível obter a representação de string de um tipo primitivo usando um método especial pertencente à&nbsp;<a href="http://www.bosontreinamentos.com.br/java/programacao-em-java-a-classe-string-introducao/" target="_blank" rel="noopener">classe String</a>: o método <strong>valueOf</strong>.</p>
<p>O método valueOf é um método estático que recebe um argumento de qualquer tipo e o converte em um objeto String, que pode ser então processado por métodos como printf, println ou qualquer outro que trabalhe com cadeias de caracteres.</p>
<h3>Exemplos</h3>
<p>Vejamos alguns exemplos.</p>
<pre><span style="color: #339966;"><strong>// Declarar algumas variáveis de tipos primitivos</strong></span>
<strong>boolean valorBooleano = false;</strong>
<strong>int valorInteiro = 13;</strong>
<strong>char valorCaractere = 'F';</strong>
<strong>float valorFloat = 3.14f;</strong>
<strong>double valorDouble = 1.61803;

</strong><span style="color: #339966;"><strong>// Verificar os valores das variáveis</strong></span>
<strong>System.out.printf("Booleano: %s%n", String.valueOf(valorBooleano));</strong>
<strong>System.out.printf("Inteiro: %s%n", String.valueOf(valorInteiro));</strong>
<strong>System.out.printf("Caractere: %s%n", String.valueOf(valorCaractere));</strong>
<strong>System.out.printf("Float: %s%n", String.valueOf(valorFloat));</strong>
<strong>System.out.printf("Double: %s%n", String.valueOf(valorDouble));</strong></pre>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15903 size-full" title="O método valueOf em Strings em Java" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/12/metodo-valueOf-String-Java.png" alt="O método valueOf em Strings em Java" width="181" height="105"></p>
<p>Veja que foram retornadas as representações em string dos valores primitivos passados para o método valueOf.</p>
<p>É isso aí! Na próxima lição vamos apresentar a <a href="http://www.bosontreinamentos.com.br/java/curso-de-java-a-classe-stringbuilder/">classe StringBuilder em Java</a>, que permite realizar operações avançadas de criação e manipulação de Strings dinâmicas.<br />
Até!</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/o-metodo-valueof-em-strings-programacao-em-java/">O método valueOf em Strings &#8211; Programação em Java</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/java/o-metodo-valueof-em-strings-programacao-em-java/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programação em Java &#8211; A Classe String &#8211; Introdução</title>
		<link>https://www.bosontreinamentos.com.br/java/programacao-em-java-a-classe-string-introducao/</link>
					<comments>https://www.bosontreinamentos.com.br/java/programacao-em-java-a-classe-string-introducao/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Fri, 29 Nov 2019 12:37:48 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=15816</guid>

					<description><![CDATA[<p>Introdução à Classe String em Java Usamos a classe String para representação de strings (cadeias de caracteres) em Java. Esta classe possui construtores que permitem inicializar objetos do tipo String de várias formas. O exemplo a seguir ilustra quatro delas: char[] arrayCarac = {'B', 'o', 's', 'o', 'n', ' ', 'T', 'r', 'e', 'i', 'n', 'a', 'm', 'e', 'n', 't', 'o', 's'}; String txt = new String("Fábio dos Reis"); // Quatro formas de Construtores da classe String String tex1 = new String(); String tex2 = new String(txt); String tex3 = new String(arrayCarac); String tex4 = new String(arrayCarac, 6, 5); System.out.printf("tex1 = %s%ntex2 = %s%ntex3 = %s%ntex4 = %s%n", tex1, tex2, tex3, tex4); No primeiro exemplo chamamos o construtor sem passar nenhum argumento.&#160; No segundo exemplo, o construtor recebe um argumento, no caso uma string. O terceiro exemplo mostra o construtor recebendo um array de caracteres. O quarto exemplo mostra o construtor recebendo 5 caracteres a partir da posição 6 de um array de caracteres passado como primeiro argumento. Métodos length, charAt e getChars Esses métodos nos permitem obter o tamanho de uma string (seu comprimento), o caractere armazenado em uma posição específica ou ainda retornar um conjunto de caracteres de [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/programacao-em-java-a-classe-string-introducao/">Programação em Java &#8211; A Classe String &#8211; Introdução</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introdução à Classe String em Java</h2>
<p>Usamos a <strong>classe String</strong> para representação de strings (cadeias de caracteres) em Java. Esta classe possui construtores que permitem inicializar objetos do tipo String de várias formas. O exemplo a seguir ilustra quatro delas:</p>
<pre><strong>char[] arrayCarac = {'B', 'o', 's', 'o', 'n', ' ', 'T', 'r', 'e', 'i', 'n', 'a', 'm', 'e', 'n', 't', 'o', 's'};</strong>
<strong>String txt = new String("Fábio dos Reis");

</strong><span style="color: #339966;"><strong>// Quatro formas de Construtores da classe String</strong></span>
<strong>String tex1 = new String();</strong>
<strong>String tex2 = new String(txt);</strong>
<strong>String tex3 = new String(arrayCarac);</strong>
<strong>String tex4 = new String(arrayCarac, 6, 5);

</strong><strong>System.out.printf("tex1 = %s%ntex2 = %s%ntex3 = %s%ntex4 = %s%n", tex1, tex2, tex3, tex4);</strong></pre>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15843 size-full" title="Exemplo da classe String em Java" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/11/classe-String-java-exemplo-01.png" alt="Exemplo da classe String em Java" width="269" height="98"></p>
<ul>
<li>No primeiro exemplo chamamos o construtor sem passar nenhum argumento.&nbsp;</li>
<li>No segundo exemplo, o construtor recebe um argumento, no caso uma string.</li>
<li>O terceiro exemplo mostra o construtor recebendo um array de caracteres.</li>
<li>O quarto exemplo mostra o construtor recebendo 5 caracteres a partir da posição 6 de um array de caracteres passado como primeiro argumento.</li>
</ul>
<h3>Métodos length, charAt e getChars</h3>
<p>Esses métodos nos permitem obter o tamanho de uma string (seu comprimento), o caractere armazenado em uma posição específica ou ainda retornar um conjunto de caracteres de um objeto String na forma de um array de caracteres.</p>
<ul>
<li>Método <strong>length</strong> &#8211;&nbsp;Retorna o número de caracteres presentes em uma String.</li>
<li>Método <strong>charAt</strong> &#8211;&nbsp;Retorna o caractere presente em uma posição específica da string. Este método recebe um número inteiro como argumento, e retorna o caractere que esteja armazenado na posição de índice equivalente a esse número. Lembre-se que contamos os elementos em uma String a partir da posição 0.</li>
<li>método <strong>getChars</strong> &#8211;&nbsp;O método getChars recebe quatro argumentos: o primeiro é o valor de índice inicial a partir do qual caracteres serão copiados. O segundo é o valor de índice final + 1, indicando o último caractere a ser copiado. O array que receberá os caracteres é o terceiro argumento. Finalmente, o último argumento é o valor de índice (posição) no array a partir de onde os caracteres serão armazenados.</li>
</ul>
<p>Vejamos exemplos da aplicação desses métodos em Java.</p>
<pre><strong>String string1 = "Bóson Treinamentos";</strong>
<strong>char[] arrayCar = new char[5];</strong>
<strong>System.out.printf("string1: %s", string1);

</strong><span style="color: #339966;"><strong>// Comprimento da string:</strong></span>
<strong>System.out.printf("%nComprimento da string1: %d caracteres", string1.length());

</strong><span style="color: #339966;"><strong>//Mostrar os caracteres da string1 em reverso com charAt</strong></span>
<strong>System.out.printf("%nString1 de trás pra frente: ");</strong>
<strong>for (int cont = string1.length() - 1; cont &gt;= 0; cont--) {</strong>
<strong>  System.out.printf("%c ",string1.charAt(cont)); }

</strong><span style="color: #339966;"><strong>// Criar um array de caracteres a partir da String:</strong></span>
<strong>string1.getChars(0, 5, arrayCar, 0);</strong>
<strong>System.out.printf("%nO array de caracteres criado é: ");</strong>
<strong>for (char caractere : arrayCar) {</strong>
<strong>  System.out.print(caractere); }</strong></pre>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15828" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/11/classe-string-Java-02.png" alt="Métodos da classe String em Java" width="642" height="97" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2019/11/classe-string-Java-02.png 642w, https://www.bosontreinamentos.com.br/wp-content/uploads/2019/11/classe-string-Java-02-420x63.png 420w" sizes="auto, (max-width: 642px) 100vw, 642px" /></p>
<h3>Comparação de Strings em Java</h3>
<p>É muito comum a necessidade de ter de comparar strings em uma aplicação. A classe String fornece métodos que permitem realizar comparações de diversas formas. A seguir, alguns dos métodos mais comuns de comparação de strings em Java:</p>
<ul>
<li>Método <strong>equals</strong> &#8211; O método equals verifica se dois objetos são iguais &#8211; mais precisamente, se eles são idênticos, retornando true caso sejam, e falso caso não sejam. A comparação é feita usando os valores inteiros Unicode de cada caractere dentro da String, o que chamamos de <em><strong>comparação lexicográfica</strong></em>. Note que isto significa que ele diferencia maiúsculas de minúsculas.</li>
<li>Método <strong>equalsIgnoreCase</strong> &#8211; O método equals faz distinção de caso. Porém, se for necessário ignorar a diferença entre maiúsculas e minúsculas em uma comparação de Strings, devemos usar o método equalsIgnoreCase.</li>
<li>Método <strong>compareTo</strong> &#8211; O método compareTo retorna um valor numérico dependendo do resultado da comparação. O valor 0 é retornado se as Strings forem iguais. Um número negativo é retornado se a String passada como argumento for maior que a String que invoca o método, e um número positivo é retornado se a string passada como argumento for menor que a String que o invoca. Este método também emprega comparação lexicográfica.</li>
<li>Método <strong>regionMatches</strong> &#8211;&nbsp;Este método permite comparar partes de duas Strings. Ele emprega quatro ou cinco argumentos, como segue:
<ul>
<li>O primeiro argumento é o índice inicial na String que chama o método.</li>
<li>O segundo argumento é a String que será comparada.</li>
<li>O terceiro argumento é é o índice inicial na String que será comparada.</li>
<li>O quarto argumento é o número de caracteres que serão comparados.</li>
<li>Opcionalmente, podemos adicionar um outro argumento inicial para forçar o método a ignorar o caso. Para isso, o argumento inicial deve ser o valor <em><strong>true</strong></em>.</li>
</ul>
</li>
<li>Método <strong>startsWith</strong> &#8211;&nbsp;Verifica se uma String inicia com uma sequência definida de caracteres. Passamos a sequência de caracteres a comparar como argumento. Podemos passar opcionalmente um segundo argumento numérico indicando em qual posição deve se iniciar a comparação dos caracteres.</li>
<li>Método <strong>endsWith</strong> &#8211;&nbsp;Verifica se uma String termina com uma sequência definida de caracteres.&nbsp;Também passamos a sequência de caracteres a comparar como argumento para o método.</li>
</ul>
<p>Vejamos alguns exemplos de comparação de string usando esses métodos.</p>
<pre><strong>String tex1 = new String("Bóson"); // O objeto tex1 é uma cópia dos caracteres "Bóson"</strong>
<strong>String tex2 = "Méson";</strong>
<strong>String tex3 = "NÍVEL QUÂNTICO";</strong>
<strong>String tex4 = "Nível Quântico";</strong>
<strong>System.out.printf("tex1 = %s%ntex2 = %s%ntex3 = %s%ntex4 = %s%n%n", tex1, tex2, tex3, tex4);

</strong><span style="color: #339966;"><strong>// Testar igualdade de strings</strong></span>
<strong>if (tex1.equals("Bóson"))</strong>
<strong>  System.out.println("tex1 é igual à \"Bóson\"");</strong>
<strong>else</strong>
<strong>  System.out.println("tex1 não é igual à \"Bóson\"");

</strong><span style="color: #339966;"><strong>// Testar igualdade de strings, ignorando maiúsculas e minúsculas</strong></span>
<strong>if (tex3.equalsIgnoreCase(tex4))</strong>
<strong>  System.out.printf("%s é igual à %s se ignorarmos o caso%n", tex3, tex4);</strong>
<strong>else</strong>
<strong>  System.out.println("tex3 não é igual a tex4");

</strong><span style="color: #339966;"><strong>// Testar usando método compareTo</strong></span>
<strong>System.out.printf("%ntex1.compareTo(tex1) é %d", tex1.compareTo(tex1));</strong>
<strong>System.out.printf("%ntex1.compareTo(tex2)&nbsp;é %d", tex1.compareTo(tex2));</strong>
<strong>System.out.printf("%ntex2.compareTo(tex1)&nbsp;é %d", tex2.compareTo(tex1));</strong>
<strong>System.out.printf("%ntex3.compareTo(tex4)&nbsp;é %d", tex3.compareTo(tex4));</strong>
<strong>System.out.printf("%ntex4.compareTo(tex3)&nbsp;é %d%n%n", tex4.compareTo(tex3));

</strong><span style="color: #339966;"><strong>// Teste com método regionMatches (exemplo case sensitive)</strong></span>
<strong>if (tex3.regionMatches(0, tex4, 0, 5))</strong>
<strong>  System.out.println("Os primeiros 5 caracteres de tex3 e tex4 correspondem");</strong>
<strong>else</strong>
<strong>  System.out.println("Os primeiros 5 caracteres de tex3 e tex4 não correspondem");

</strong><span style="color: #339966;"><strong>// Teste com método regionMatches (exemplo ignorando caso)</strong></span>
<strong>if (tex3.regionMatches(true, 0, tex4, 0, 5))</strong>
<strong>  System.out.println("Os primeiros 5 caracteres de tex3 e tex4 correspondem, ignorando o caso");</strong>
<strong>else</strong>
<strong>  System.out.println("Os primeiros 5 caracteres de tex3 e tex4 não correspondem");

</strong><span style="color: #339966;"><strong>// Testar igualdade com o operador ==</strong></span>
<strong>if ( ) // retorna falso, pois não são o mesmo objeto</strong>
<strong>  System.out.println("tex1 é igual a \"Bóson\"");</strong>
<strong>else</strong>
<strong>  System.out.println("tex1 não é igual a \"Bóson\"");</strong></pre>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15835 size-full" title="Comparar strings em Java" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/11/comparar-string-java.png" alt="Comparar strings em Java" width="715" height="378" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2019/11/comparar-string-java.png 715w, https://www.bosontreinamentos.com.br/wp-content/uploads/2019/11/comparar-string-java-420x222.png 420w" sizes="auto, (max-width: 715px) 100vw, 715px" /></p>
<p>Perceba que não é correto usar o operador de comparação == para comparar dois objetos String.</p>
<p>Vejamos agora exemplos dos métodos <strong>startsWith</strong> e <strong>endsWith</strong> em Strings.</p>
<pre><strong>String meuTexto = new String("Bóson Treinamentos");</strong>
<span style="color: #339966;"><strong>// Testar se a String inicia com Bó</strong></span>
<strong>if (meuTexto.startsWith("Bó")) {</strong>
<strong>  System.out.println("A String inicia com Bó");</strong>
<strong>}

</strong><span style="color: #339966;"><strong>// Testar se a String inicia com Bo (sem acento):</strong></span>
<strong>if (meuTexto.startsWith("Bo")) {</strong>
<strong>  System.out.println("A String inicia com Bo");</strong>
<strong>}</strong>
<strong>else {</strong>
<strong>  System.out.println("A String não inicia com Bo");</strong>
<strong>}

</strong><span style="color: #339966;"><strong>// Testar se a String possui as letras son (a partir do 3º caractere):</strong></span>
<strong>if (meuTexto.startsWith("son", 2)) {</strong>
<strong>  System.out.println("Sequência \"son\" está na posição indicada");</strong>
<strong>}</strong>
<strong>else {</strong>
<strong>  System.out.println("Sequência \"son\" não está na posição indicada");</strong>
<strong>}

</strong><span style="color: #339966;"><strong>// Testar se a String termina com a letra o:</strong></span>
<strong>if (meuTexto.endsWith("o")) {</strong>
<strong>  System.out.println("A String termina com a letra o");</strong>
<strong>}</strong>
<strong>else {</strong>
<strong>  System.out.println("A String não termina com a letra o");</strong>
<strong>}</strong></pre>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15844 size-full" title="Métodos startsWith e endsWith em Java - Manipulação de Strings" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2019/11/metodo-startswith-endswith-java-strings.png" alt="Métodos startsWith e endsWith em Java - Manipulação de Strings" width="423" height="101" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2019/11/metodo-startswith-endswith-java-strings.png 423w, https://www.bosontreinamentos.com.br/wp-content/uploads/2019/11/metodo-startswith-endswith-java-strings-420x100.png 420w" sizes="auto, (max-width: 423px) 100vw, 423px" /></p>
<p>Na próxima lição vamos mostrar mais métodos que podem ser aplicados na manipulação de Strings em Java.</p>
<p>&nbsp;</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/java/programacao-em-java-a-classe-string-introducao/">Programação em Java &#8211; A Classe String &#8211; Introdução</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/java/programacao-em-java-a-classe-string-introducao/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Conceitos de Programação Orientada a Objetos</title>
		<link>https://www.bosontreinamentos.com.br/analise-de-sistemas/conceitos-de-programacao-orientada-a-objetos/</link>
					<comments>https://www.bosontreinamentos.com.br/analise-de-sistemas/conceitos-de-programacao-orientada-a-objetos/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 24 Sep 2019 13:18:35 +0000</pubDate>
				<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">http://www.bosontreinamentos.com.br/?p=3754</guid>

					<description><![CDATA[<p>Programação Orientada a Objetos (POO) Programação Orientada a Objetos &#8211; POO (Object-Oriented Programming &#8211; OOP) é um paradigma de programação que usa tipos de dados personalizados. Em vez de operar apenas com tipos de dados primitivos, podemos construir novos tipos de dados, conforme nossa necessidade. Esses novos tipos de dados, que chamamos de classes, podem conter estruturas semelhantes a funções, denominadas métodos, e variáveis internas, chamadas de atributos. As classes dão origem a objetos, em um processo denominado instanciação. Os objetos são os “blocos de construção” de software na OO. Vantagens da Orientação a Objetos Fornece uma estrutura modular para a construção de programas Objetos podem ser reutilizados em aplicações diferentes O software se torna mais fácil de manter O desenvolvimento é mais rápido, devido ao reuso de código Encapsulamento: não é necessário conhecer a implementação interna de um objeto para poder usá-lo Objeto Trata-se de uma ocorrência específica de uma classe; é uma “instância de classe”. Os objetos são a base da OO (Orientação a Objetos). Os objetos representam entidades do mundo real, como aviões, pessoas, contas correntes, etc., mas também podem representar outros conceitos, como gráficos (círculos, quadrados, cones, esferas, etc.) Um objeto possui características próprias (atributos) e [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/analise-de-sistemas/conceitos-de-programacao-orientada-a-objetos/">Conceitos de Programação Orientada a Objetos</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><b>Programação Orientada a Objetos (POO)</b></h2>
<p>Programação Orientada a Objetos &#8211; POO (Object-Oriented Programming &#8211; OOP) é um paradigma de programação que usa tipos de dados personalizados. Em vez de operar apenas com tipos de dados primitivos, podemos construir novos tipos de dados, conforme nossa necessidade.</p>
<p>Esses novos tipos de dados, que chamamos de <em><strong>classes</strong></em>, podem conter estruturas semelhantes a funções, denominadas <em><strong>métodos</strong></em>, e variáveis internas, chamadas de <em><strong>atributos</strong></em>. As classes dão origem a <em><strong>objetos</strong></em>, em um processo denominado <em><strong>instanciação</strong></em>.</p>
<p>Os objetos são os “blocos de construção” de software na OO.</p>
<h3>Vantagens da Orientação a Objetos</h3>
<ul>
<li>Fornece uma estrutura modular para a construção de programas</li>
<li>Objetos podem ser reutilizados em aplicações diferentes</li>
<li>O software se torna mais fácil de manter</li>
<li>O desenvolvimento é mais rápido, devido ao reuso de código</li>
<li>Encapsulamento: não é necessário conhecer a implementação interna de um objeto para poder usá-lo</li>
</ul>
<h3><b>Objeto</b></h3>
<p>Trata-se de uma ocorrência específica de uma classe; é uma “instância de classe”.</p>
<p>Os objetos são a base da OO (Orientação a Objetos).</p>
<p>Os objetos representam entidades do mundo real, como aviões, pessoas, contas correntes, etc., mas também podem representar outros conceitos, como gráficos (círculos, quadrados, cones, esferas, etc.)</p>
<p>Um objeto possui características próprias (atributos) e executa determinadas ações (métodos), sendo esses atributos e métodos provenientes da classe que origina o objeto.</p>
<p><b>Abstração</b></p>
<p>Abstrair significa selecionar aspectos específicos de um problema a ser analisado, deixando de lado outros aspectos. É a  representação de uma entidade do mundo real na forma de idéias.</p>
<p>As entidades abstraídas podem se comunicar entre si, por meio da troca de Mensagens.</p>
<p>De acordo com o autor Correia (2006):</p>
<blockquote>
<p>“Pelo princípio da abstração, nós isolamos os objetos que queremos representar do ambiente complexo em que se situam, e nesses objetos representamos somente as características que são relevantes para o problema em questão”.</p>
</blockquote>
<p><b>Mensagens</b></p>
<p>Os objetos se comunicam a partir da troca de mensagens.</p>
<p>Uma mensagem é um sinal enviado de um objeto a outro, o qual requisita um serviço, usando uma operação programada no objeto chamado. Por exemplo, para que um objeto execute um método, é necessário enviar a este objeto uma mensagem solicitando a execução do método desejado.</p>
<p>As mensagens somente ocorrem entre objetos que possuem uma Associação.</p>
<p>As mensagens também são programadas. Quando uma mensagem é recebida, uma operação é invocada no objeto chamado.</p>
<p>Há vários formatos de mensagens: procedures (subs e functions), passagem de sinais entre threads, acionamento de eventos, etc.</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-3755 size-full" title="Mensagens em Programação Orientada a Objetos" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2015/06/orientação-objetos-mensagens-e1550576829225.jpg" alt="Mensagens em Programação Orientada a Objetos" width="420" height="116" /></p>
<h2><b>O que são Classes</b></h2>
<p>Uma Classe é uma coleção de objetos que são descritos com os mesmos atributos e as mesmas operações. Uma classe representa uma ideia ou conceito e classifica objetos que tenham propriedades similares.</p>
<p>As classes são os blocos de construção mais importantes dos sistemas orientados a objetos, e devem possuir responsabilidades bem definidas dentro da aplicação.</p>
<p>Uma classe é um tipo personalizado de dados.</p>
<p>Desta forma, uma classe é um tipo abstrato de dados, um “molde” para a criação de objetos. Cada classe criada se torna um novo tipo disponível para declarar variáveis e criar objetos</p>
<p>Por convenção, começamos o nome de uma classe com letra maiúscula, e capitalizamos cada palavra subsequente que o compuser.</p>
<p>As classes representam os blocos de construção mais importantes dos sistemas orientados a objetos, e devem possuir responsabilidades bem definidas dentro da aplicação.</p>
<p>Uma classe é como se fosse um tipo abstrato de dados, um “molde” para a criação de objetos.</p>
<p>Um objeto é, portanto, um “<b>Instância de uma Classe</b>”</p>
<p>As classes possuem<strong> atributos</strong> e <strong>métodos</strong>.  Atributos são características da classe, que são comuns a todos os objetos derivados, e que podem apresentar valores diversos. Já os Métodos são as operações possíveis em uma classe (nos objetos instanciados a partir dela).</p>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-3756 size-full" title="Orientação a Objetos - Classes, Métodos e Atributos" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2015/06/classes-atributos-métodos-e1550576844501.jpg" alt="Orientação a Objetos - Classes, Métodos e Atributos" width="328" height="99" /></p>
<p><b>Atributo de Classe</b></p>
<p>Ou Propriedade: Característica particular de uma ocorrência de uma classe, como por exemplo o nome e a idade de uma pessoa.</p>
<p>Existem dois tipos principais de propriedades:</p>
<ul>
<li>Estáticas: Mantém o mesmo valor durante toda a sua existência. Por exemplo, a data de nascimento de uma pessoa é uma propriedade estática, pois mantém o mesmo valor durante toda a existência do objeto instanciado.</li>
<li>Dinâmicas: Podem ter valores que variam com o passar do tempo. A idade de uma pessoa pode ser considerada um atributo dinâmico, pois pode variar ao longo do tempo.</li>
</ul>
<p><b>Método</b></p>
<p>É a lógica contida em uma classe para atribuir-lhe comportamentos. São as funções e procedimentos contidos na classe.</p>
<p>O ato de invocar um método é a passagem de mensagens para o objeto.</p>
<p>Toda classe possui um método especial chamado de método construtor, que inicializa o objeto instanciado.</p>
<p>As classes também usam métodos destruidores para finalizar os objetos após seu uso.</p>
<p>Um método é uma sequência de declarações (comandos) que possui um nome de identificação. É similar a uma função ou procedimento.</p>
<p>Um método possui um nome e um corpo onde ficam os comandos que serão executados quando o método for chamado, e também podem receber dados para processamento (<i>parâmetros</i>) e retornar informações.</p>
<p>Os métodos são a forma principal de passagem de mensagens entre objetos. Um método deve executar sempre uma operação única. Os métodos também precisam ter um tipo de retorno, que pode ser um tipo de valor, de referência ou ainda void (não retornam valor).</p>
<h3>Classe &#8211; Notação UML para representação</h3>
<p>A seguir temos a forma padrão para representação de uma classe usando um diagrama de classes UML:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15652 size-full" title="Classe UML" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2015/09/classe-UML.png" alt="Classe UML" width="271" height="265" /></p>
<h3><b>Instância de Classe</b></h3>
<p>É o objeto, uma ocorrência específica de uma classe.</p>
<p>As classes originam instâncias sob requisição, no processo denominado Instanciação. O projetista / analista cria a classe. A classe é então usada para criar objetos em tempo de execução.</p>
<p>Veja a seguir um exemplo de criação de classe na linguagem C#. É declarado um atributo da classe Caixa &#8211; <strong>lado</strong> &#8211; e um método &#8211; <strong>Volume()</strong>:</p>
<table style="height: 187px;" width="368">
<tbody>
<tr>
<td>
<div><strong><span style="color: #ff0000;">class Caixa {</span></strong></div>
<div style="padding-left: 30px;"><strong><span style="color: #ff0000;">double lado;</span></strong></div>
<div style="padding-left: 30px;"><strong><span style="color: #ff0000;">double Volume()</span></strong></div>
<div style="padding-left: 30px;"><strong><span style="color: #ff0000;">{</span></strong></div>
<div style="padding-left: 60px;"><strong><span style="color: #ff0000;">return lado * lado * lado;</span></strong></div>
<div style="padding-left: 30px;"><strong><span style="color: #ff0000;">}</span></strong></div>
<div><strong><span style="color: #ff0000;">}</span></strong></div>
</td>
</tr>
</tbody>
</table>
<h3><b>Herança</b></h3>
<p>Herança, em orientação a objetos, é a capacidade de um novo objeto tomar atributos e operações de um objeto existente.</p>
<p>Assim, podemos criar classes mais complexas sem que precisemos repetir código.</p>
<p>Aqui, a palavra-chave é <strong>Reuso de código</strong>, e é uma das metas a se atingir ao desenvolver software. O reuso permite reduzir o esforço dispendido no desenvolvimento de software ao reaproveitarmos códigos de uma classe na criação de outras classes.</p>
<p>A Herança é, portanto,  um conceito extremamente importante em Orientação a Objetos.</p>
<p>Usamos a herança, por exemplo, para evitar repetição ao definirmos classes com características em comum e que são relacionadas entre si.</p>
<p>A herança é um relacionamento entre classes, que permite que uma classe “adquira” os membros (atributos e métodos) de outra classe.</p>
<p>Um exemplo clássico de herança seria a classificação de mamíferos no reino animal.</p>
<p>Homens, Baleias e Gatos são mamíferos, que compartilham muitas características entre si, mas claramente possuem atributos que os diferem uns dos outros.</p>
<h4>Como podemos modelar Baleias, Gatos e Humanos em um software?</h4>
<p>Podemos criar classes distintas para cada animal, mas essas classes teriam muitos comportamentos (“métodos”) em comum entre eles, como Respirar, Mamar e Reproduzir-se, o que ocasionaria repetição desnecessária de código.</p>
<p>Usamos então Herança para resolver esse problema. Podemos criar uma classe chamada Mamífero que possua as características comuns a todos os animais mamíferos, e então criar as classes Humano, Baleia e Gato herdando essas funcionalidades e também implementando as funcionalidades específicas de cada animal, como Falar, Nadar e Miar.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-19611" title="Herança de Classes em Orientação a Objetos" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2015/09/heranca-classes-orientacao-objetos.jpg" alt="Herança de Classes em Orientação a Objetos" width="700" height="302" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2015/09/heranca-classes-orientacao-objetos.jpg 975w, https://www.bosontreinamentos.com.br/wp-content/uploads/2015/09/heranca-classes-orientacao-objetos-420x181.jpg 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2015/09/heranca-classes-orientacao-objetos-768x331.jpg 768w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>O quadro a seguir mostra duas classes, Humano e Gato, que herdam os atributos e métodos da superclasse Mamífero, e implementam seus próprios atributos e métodos adicionais: atributos nome e sobrenome e métodos andar() e falar() para a classe Humano, e os atributos raça e nome e métodos andar() e miar() para a classe Gato:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-19614" title="Herança de Classes - POO" src="http://www.bosontreinamentos.com.br/wp-content/uploads/2015/09/heranca-classes-orientacao-objetos-exemplo-2.jpg" alt="Herança de Classes - POO" width="750" height="438" srcset="https://www.bosontreinamentos.com.br/wp-content/uploads/2015/09/heranca-classes-orientacao-objetos-exemplo-2.jpg 909w, https://www.bosontreinamentos.com.br/wp-content/uploads/2015/09/heranca-classes-orientacao-objetos-exemplo-2-420x245.jpg 420w, https://www.bosontreinamentos.com.br/wp-content/uploads/2015/09/heranca-classes-orientacao-objetos-exemplo-2-768x449.jpg 768w" sizes="auto, (max-width: 750px) 100vw, 750px" /></p>
<p>&nbsp;</p>
<h3><b>Encapsulamento</b></h3>
<p>Encapsulamento é a combinação de atributos e operações dentro de uma classe, deixando visível apenas o que é necessário para a comunicação entre dois objetos, como por exemplo alguns detalhes da implementação ou ainda a lógica de um método.</p>
<p>O encapsulamento permite ocultar a complexidade do código. Não é necessário entender como a operação funciona para poder utilizá-la. Um exemplo clássico é o de um motorista conduzindo um veículo. O motorista não precisa saber exatamente como um motor funciona internamente para poder dirigir o automóvel &#8211; o detalhes da &#8220;implementação&#8221; do motor ficam ocultos do motorista.</p>
<p>O encapsulamento protege os dados, permitindo o acesso a eles apenas a partir de métodos específicos e autorizados.</p>
<p>Desta forma, os objetos encapsulados podem ser comparados uma caixa preta: conhecemos  asua interface externa, porém não precisamos nos preocupar com o que acontece internamente na caixa.</p>
<p><b>Encapsulamento &#8211; Níveis de Acesso</b></p>
<p>Há três níveis principais de acesso dos objetos:</p>
<ul>
<li>Público</li>
<li>Privado</li>
<li>Protegido</li>
</ul>
<p>Vamos discutir em mais detalhes esses níveis de acesso em uma lição especial sobre o assunto.</p>
<h3><b>Polimorfismo</b></h3>
<p>Uma operação de um objeto qualquer pode assumir vários comportamentos dependendo da chamada recebida, tratando e devolvendo respostas ao chamador.</p>
<p>Poli = Muitos; Morphos = Formas. Portanto, Polimorfismo = “múltiplas formas”.</p>
<p>Portanto, o polimorfismo ocorre quando um objeto tem um comportamento diferente para uma mesma ação. Por exemplo, usando nosso exemplo de classes de animais, nas classes Gato e Humano existe um comportamento (método) em comum: Andar. Porém, cada uma dessas classes implementa o método Andar de forma diferente &#8211; os gatos andam em quatro patas, enquanto os humanos andam em duas. Ambos podem percorrer a mesma distância andando, ou seja, executando o método andar, mas o farão de forma diferente entre si.</p>
<p>Então, dependendo de como um método é invocado, seu comportamento será diferente.</p>
<p>Neste artigo publicamos uma pequena introdução à Orientação a Objetos. Nos próximos artigos desta série vamos nos aprofundar nesses assuntos, e apresentar muitos outros conceitos relativos a esse tópico.</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/analise-de-sistemas/conceitos-de-programacao-orientada-a-objetos/">Conceitos de Programação Orientada a Objetos</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/analise-de-sistemas/conceitos-de-programacao-orientada-a-objetos/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
	</channel>
</rss>
