2
Linguagens de Programação
UMG
11
Linguagens de Programação
UMG
4
Linguagens de Programação
UMG
8
Linguagens de Programação
UMG
1
Linguagens de Programação
UMG
2
Linguagens de Programação
UMG
1
Linguagens de Programação
UMG
2
Linguagens de Programação
UMG
1
Linguagens de Programação
UMG
1
Linguagens de Programação
UMG
Texto de pré-visualização
Iniciar PROGRAMAÇÃO ORIENTADA A OBJETOS Parte 1 Caderno de Estudos Docente Bruno Vicente Alves de Lima 2 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Reitor Prof Dr Walter Canales SantAna ViceReitor Prof Dr Paulo Henrique Aragão Catunda PróReitora De Graduação Profa Dra Mônica Piccolo Almeida Chaves Núcleo de Tecnologias para Educação Profa Dra Lígia Tchaicka Coordenadora Geral Setor de Divisão de Design Educacional Cristiane Peixoto Coord Administrativa Danielle Martins Leite Fernandes Lima Coord Pedagógica Professor Conteudista Prof Dr Bruno Vicente Designer Pedagógico Lidiane Saraiva Ferreira Lima Paulo Brito Oliveira Lira Junior Designer de Linguagem Jéssica Natália Anjos Silva Luisa Mara Silva Lima Geovana Valle Porto Sirino Projeto Gráfico e Diagramação Ivania de Jesus Serra Barroso Normalização José Marcelino Nascimento Veiga Júnior UNIVERSIDADE ESTADUAL DO MARANHÃO UEMA Os materiais produzidos para os cursos ofertados pelo UEMAnetUEMA para o Sistema Universidade Aberta do Brasil UAB são licenciados nos termos da Licença Creative Commons Atribuição Não Comercial Compartilhada podendo a obra ser remixada adaptada e servir para criação de obras derivadas desde que com fins não comerciais que seja atribuído crédito ao autor e que as obras derivadas sejam licenciadas sob a mesma licença 3 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS 1 INTRODUÇÃO 11 Classes e Objetos 12 Herança e Polimorfismo 13 Ambiente de Desenvolvimento 131 JDK Java Development Kit 132 IDE Ambientes de Desenvolvimento Integrado 05 05 05 06 06 07 08 09 10 13 14 15 16 16 17 19 20 21 22 2 INTRODUÇÃO À LINGUAGEM JAVA 21 Primeiro Programa em Java 22 Variáveis e Tipos 221 Atribuição 222 Cadeia de Caractere 23 Saída de Dados em Java 24 Estrutura de Controle Decisão 241 Instrução if 242 Instrução ifelse 25 Estrutura de Controle Repetição 251 Laço While 252 Laço DoWhile xx 253 Laço For SUMÁRIO 4 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS 3 CLASSES E OBJETOS 31 Programação Orientada a Objetos 32 Classes e Objetos 321 Definição de uma classe em Java 322 Atributos 323 Métodos 33 Trabalhando com Objetos 25 25 26 28 29 30 33 36 37 37 41 45 51 4 ENCAPSULAMENTO 41 Conceito de Encapsulamento 42 Modificadores de Acesso 43 Métodos Getters e Setters 44 Construtores REFERÊNCIAS 5 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS A programação orientada a objetos POO é um paradigma de de senvolvimento de software baseado na ideia de objetos entidades que combinam dados atributos e comportamentos métodos Ela se diferencia de outras abordagens por permitir que o programador modele o mundo real por meio da definição de classes estruturas que descrevem como esses objetos se comportam e interagem Uma classe pode ser entendida como o molde a partir do qual os ob jetos são construídos Nela são definidos os atributos dados que de screvem o estado do objeto e os métodos funções que descrevem o comportamento do objeto A partir da classe o programador con segue instanciar múltiplos objetos com as mesmas características estruturais mas com estados distintos Um objeto é portanto uma instância concreta de uma classe Cada objeto possui valores próprios para seus atributos e pode executar os métodos definidos pela classe A comunicação entre objetos é feita através da invocação de métodos sendo esse o mecanismo central para a cooperação entre os componentes de um sistema orientado a objetos 1 Introdução 11 Classes e Objetos A herança é um dos pilares fundamentais da POO Esse conceito permite que uma nova classe seja criada com base em uma outra já existente A nova classe chamada subclasse herda os atributos e 12 Herança e Polimorfismo 6 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS métodos da classe original denominada superclasse podendo es tender ou modificar seu comportamento Esse mecanismo favorece a reutilização de código e a criação de hierarquias de abstração Embora raramente utilizado existe o conceito de contração que con siste em eliminar funcionalidades herdadas Esse modelo no entan to pode comprometer a coerência da hierarquia e violar o princípio da substituição de Liskov segundo o qual qualquer subclasse deve poder substituir sua superclasse sem causar erros no sistema O polimorfismo por sua vez permite que objetos de diferentes sub classes sejam tratados como se fossem da superclasse comum Isso significa que um mesmo método pode apresentar comportamentos distintos dependendo da classe do objeto que o executa Essa flexib ilidade possibilita desenvolver sistemas mais genéricos e extensíveis nos quais o comportamento pode ser personalizado sem alterar a estrutura Antes de começar a programar em Java é importante compreender o ambiente necessário para escrever compilar e executar os pro gramas Esse conjunto de ferramentas é chamado de Ambiente de Desenvolvimento O JDK Java Development Kit é o kit de desenvolvimento Java com ponente essencial para a criação de programas nessa linguagem Ele inclui O compilador javac responsável por transformar o códigofon te em bytecode e 13 Ambiente de Desenvolvimento 131 JDK Java Development Kit 7 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS A máquina virtual Java JVM responsável em executar os pro gramas Figura 1 Tela do Netbeans Fonte IDE NetBeans versão Apache IDE 26 2025 Uma IDE Integrated Development Environment é um programa que facilita a escrita de código oferecendo diversos recursos como Realce de sintaxe Sugestões automáticas autocompletar organ ização de Arquivos e Execução com apenas um clique As IDEs mais utilizadas para Java são Netbeans BlueJ e VS Code com extensão para java 132 IDE Ambientes de Desenvolvimento Integrado 8 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS A linguagem Java é uma das mais populares sendo amplamente utilizada no desenvolvimento de software em todo o mundo Criada pela Sun Microsystems em 1995 ela foi projetada para ser simples robusta segura e portável Seu principal diferencial está na máqui na virtual Java JVM que permite que os programas escritos em Java sejam executados em qualquer sistema operacional que pos sua a JVM instalada seguindo o lema escreva uma vez execute em qualquer lugar Além da portabilidade Java oferece uma sintaxe clara e uma vasta bib lioteca padrão facilitando o desen volvimento de aplicações de difer entes tipos como sistemas desktop aplicativos móveis Android apli cações web e sistemas corporativos Sua estrutura orientada a objetos permite modularidade reutilização de código e manutenção facilitada tornandoa uma excelente escolha tanto para iniciantes quanto para projetos de grande escala em am bientes profissionais Embora seja possível programar Java usando apenas um editor de texto simples e o terminal o uso de uma IDE torna o desenvolvimento mais rápido prático e produtivo Para fins de demonstração e práti ca será utilizada a IDE NetBeans versão Apache IDE 26 Figura 1 2 Introdução à Linguagem Java Fonte Envato 2025 9 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Chegou o momento de criar e executar seu primeiro programa em Java Tradicionalmente ao aprender uma nova linguagem de pro gramação iniciase com um exemplo simples que imprime a frase Hello World Essa prática serve como uma forma de garantir que o ambiente de desenvolvimento esteja configurado corretamente e permite um primeiro contato com a sintaxe da linguagem Por isso vamos seguir essa convenção apresentando o clássico programa Hello World em Java O código 21 apresenta a estrutura mínima de um programa em Java public class HelloWorld public static void mainString args SystemoutprintlnHello World O objetivo deste capítulo é apresentar a linguagem de programação Java destacando suas principais características vantagens e apli cações Por meio de uma introdução acessível buscase fornecer ao leitor uma compreensão inicial sobre como a linguagem funciona sua sintaxe básica e os conceitos fundamentais que a tornam uma das linguagens mais utilizadas no desenvolvimento de sistemas moder nos Este conteúdo servirá como base para os próximos capítulos que abordarão aspectos mais específicos da programação orienta da a objetos utilizando Java como linguagem de implementação 21 Primeiro Programa em Java Código 21 Estrutura mínima de um programa em Java 10 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Inicialmente analisaremos a primeira linha do código 21 public class HelloWorld que inicia uma nova classe Esse conceito é fun damental em Java e será explorado com mais profundidade poste riormente Por enquanto não é necessário compreendêlo em detal hes Dentro da Classe HelloWorld temos a função public static void mainString args Essa função é executada sempre que o programa é iniciado sendo portanto a função principal Assim todo o código deve ser escrito dentro dela Apesar de que futuramente será necessário escrever códigos fora dessa função No entanto eles serão chamados a partir da main de forma direta ou indireta É importante destacar que em Java os blocos de código são de limitados por chaves e Assim após a declaração class Hel loWord abrese uma chave que será fechada apenas ao final do código ver Código 21 Todo o conteúdo inserido entre essas duas linhas pertence ao corpo da classe HelloWord O mesmo princípio se aplica ao método main o bloco iniciado com uma chave deve ser encerrado com outra Em resumo para cada chave aberta deve sempre existir uma chave correspondente de fechamento Os fundamentos de qualquer linguagem de programação envolvem seus tipos de dados e operadores e com Java não seria diferente Esses elementos definem as bases do que pode ser realizado na linguagem determinando o tipo de aplicações que podem ser de senvolvidas A boa notícia é que Java oferece um conjunto amplo e 22 Variáveis e Tipos 11 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS bem estruturado de tipos de dados e operadores o que a torna uma linguagem versátil e adequada a diversos estilos de programação Como esse é um tema amplo começaremos explorando os tipos de dados primitivos da linguagem Java e os operadores mais utiliza dos Em seguida analisaremos em detalhe o conceito de variáveis e aprofundaremos o estudo sobre expressões as quais são elementos fundamentais para a construção de qualquer programa funcional A linguagem Java oferece um conjunto de tipos primitivos que rep resentam os dados mais básicos utilizados na programação Esses tipos são fundamentais para a construção de variáveis e para a re alização de operações simples sendo diretamente suportados pela linguagem sem a necessidade de instanciar objetos Cada tipo prim itivo possui um tamanho fixo e um intervalo de valores bem defini do o que garante portabilidade e previsibilidade no comportamento dos programas Os tipos primitivos em Java estão listados na Tabela 1 incluindo categorias como números inteiros números com ponto flutuante caracteres e valores booleanos Tipo int float double char boolean Significado Número inteiro Número real de precisão simples Número real de precisão dupla Caractere Valores verdadeiros ou falsos Tabela 1 Tipos de dados primitivos em Java Fonte do Autor 2025 12 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Os tipos de dados primitivos também conhecidos como elementares ou simples estão apresentados posteriormente O termo primitivo é empregado para destacar que esses tipos não se comportam como objetos em Java mas sim como representações diretas de valores binários Essa escolha de projeto está relacionada à busca por maior desempenho na execução dos programas A partir desses tipos bási cos todos os demais tipos de dados em Java são construídos Para declarar variáveis em Java podemos proceder conforme ilus trado no Código 22 Como é possível observar no Código 22 foram criadas 4 quatro variáveis uma int representando uma idade uma float repre sentando a altura e uma double representando o peso Além des sas variáveis numéricas foram criadas mais 2 duas uma repre sentando uma letra do tipo char e outra representando um status ligado do tipo boolean Código 22 Declaração de variáveis em Java public class Programa public static void mainString args int idade 20 Variável do tipo inteiro float altura 189f Variável do tipo real precisão simples double peso 786 Variável do tipo real precisão dupla char letra a Variável caractere boolean ligado true Variável booleana verdadeiro ou falso 13 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Para criar uma variável não é necessário atribuir valores direto a ela A declaração de uma variável pode ser feita sem o valor inicial como mostrado no Código 23 Assim para atribuir valor a variáveis declaradas utilizamos o opera dor de atribuição como mostra no Código 24 221 Atribuição Código 23 Declaração de variáveis sem atribuição de valores Código 24 Atribuindo valores às variáveis public class Programa public static void mainString args int tamanho double valor public class Programa public static void mainString args int tamanho double valor tamanho 25 Atribuindo valor à variável tamanho valor 25 Atribuindo valor à variável valor 14 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Uma cadeia de caractere é chamada de String em Java e é uti lizada para representar textos dentro de um programa Depois dos números as strings estão entre os tipos de dados mais utilizados na maioria das aplicações Uma String consiste em uma sequência de caracteres como em Hello World Em Java as strings são delimitadas por aspas que não fazem parte do conteúdo da String em si É importante destacar que ao con trário dos tipos numéricos as strings são tratadas como objetos na linguagem A declaração de uma String pode ser observada no Código 25 Observação para utilizar uma variável em Java ela precisa ser primeiramente declarada Isso significa que String é na verdade o nome de uma classe o que pode ser identificado pelo uso da letra maiúscula inicial Já os ti pos primitivos como int e double seguem uma convenção distinta começam com letras minúsculas e não são objetos o que os torna mais eficientes em termos de desempenho 222 Cadeia de Caractere Código 25 Declaração de String em Java public class Programa public static void mainString args String nome nome Fulano de Tal 15 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Em Java a saída de dados é realizada na maioria das vezes por meio do método Systemoutprintln Esse comando é utiliza do para exibir informações no console sendo essencial para que o usuário visualize os resultados do programa ou mensagens impor tantes durante a execução O comando Systemoutprintln imprime o conteúdo forneci do como argumento e ao final insere uma quebra de linha Caso não seja desejada essa quebra podese utilizar o método SSystemout println que mantém o cursor na mesma linha após a impressão Além disso é possível exibir textos fixos valores armazenados em variáveis e até expressões combinadas Por exemplo 23 Saída de Dados em Java Código 26 Impressão de texto na tela em Java public class Programa public static void mainString args SystemoutprintlnOlá mundo SystemoutprintResultado Systemoutprintln10 5 As estruturas de controle de decisão permitem que um programa execute diferentes blocos de código de acordo com determinadas condições Em Java as principais estruturas desse tipo são if if else ifelse ifelse e switch 16 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS As estruturas de controle de decisão permitem que um programa execute diferentes blocos de código de acordo com determinadas condições Em Java as principais estruturas desse tipo são if if else ifelse ifelse e switch 24 Estrutura de Controle Decisão Código 27 Estrutura básica do comando if em Java if condicao Bloco de código a ser executado se a condição for verdadeira A instrução if é utilizada para executar um bloco de código apenas quando uma condição for verdadeira Sua estrutura básica é apre sentada no Código 27 241 Instrução if Fonte Envato 2025 17 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS No Código 28 podemos visualizar o exemplo da utilização do if em Java Ao analisar o Código 28 observamos a declaração de uma variável inteira na linha 1 int idade 20 Na linha 2 temos a definição do if com a seguinte condição idade 18 Voltando à linha 1 vemos que o valor atribuído à variável idade é 20 Assim a condição idade 18 será verdadeira true Dessa forma o comando presente na linha 3 SystemoutprintlnVoce e maior de Idade será executado Por outro lado se o valor da variável idade fosse 15 a linha 3 não se ria executada pois a condição do if retornaria falso false Código 28 Estrutura básica do comando if em Java public class Programa public static void mainString args int idade 20 if idade 18 SystemoutprintlnVocê é maior de idade O comando if executa um bloco de código de acordo com o valor lógico de uma determinada condição Quando desejamos que duas 242 Instrução ifelse 18 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS duas ações diferentes sejam executadas uma se a condição for ver dadeira e outra se for falsa utilizamos em Java a instrução ifelse Nessa estrutura caso a condição seja verdadeira o programa exe cuta o bloco associado ao if caso contrário ou seja se a condição for falsa o programa executa o bloco associado ao else A sintaxe básica do comando ifelse é apresentada no Código 29 Código 29 Estrutura básica do ifelse em Java if condicao código se a condição for verdadeira else código se a condição for falsa 19 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS No Códigorefcodexemploifelse é apresentado um exem plo da utilização do comando extttifelse Nesse exemplo a condição do extttif é extttnumero 0 Se o val or da variável extttnumero for maior que 0 zero o programa exibirá a mensagem Numero positivo Caso contrário será exibida a mensagem Numero negativo Código 210 Exemplo de ifelse em Java public class Programa public static void mainString args int numero 5 if numero 0 SystemoutprintlnNúmero positivo else SystemoutprintlnNúmero negativo Em programação a repetição é um recurso que permite executar um bloco de código diversas vezes de forma automática evitando a necessidade de escrever os mesmos comandos repetidamente Esse tipo de estrutura é essencial para resolver problemas que envolvem 25 Estrutura de Controle Repetição 20 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS tarefas repetitivas como percorrer listas realizar cálculos em se quência ou aguardar que determinadas condições sejam atendidas Os principais tipos de laços de repetição em Java incluem while dowhile e for Esses laços diferenciamse principalmente pelo momento em que a condição de continuidade é verificada e pela previsibilidade do número de repetições O uso adequado dessas es truturas de repetição torna os programas mais eficientes concisos e fáceis de manter O laço while executa um bloco de código enquanto uma condição for verdadeira A condição é testada antes da execução do bloco ou seja se ela for falsa desde o início o código pode não ser executado nenhuma vez Veja a estrutura básica do while no Código 211 No Código 212 é apresentado um exemplo prático do while em Java Nesse caso o laço é utilizado para imprimir os valores de 1 a 5 A variável contador é inicializada com o valor 1 e enquanto for menor ou igual a 5 o programa exibirá seu valor e o incrementará em 1 a cada iteração Quando contador atinge 6 a condição se torna falsa false e o laço é encerrado 251 Laço While Código 211 Estrutura básica do while em Java while condicao bloco de código a ser executado 21 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS O dowhile é semelhante ao while com a diferença de que a condição é testada após a execução do bloco Essa característica garante que o bloco de código será executado pelo menos uma vez A estrutura básica do comando dowhile é apresentada no Código 213 252 Laço doWhile Código 213 Estrutura do comando dowhile em Java do bloco de código a ser executado while condicao Código 212 Exemplo de uso do while em Java public class Programa public static void mainString args int contador 1 while contador 5 SystemoutprintlnContador contador contador 22 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS No Código 214 observamos um exemplo do uso do dowhile em Java O algoritmo apresentado é semelhante ao do Código 212 mas utiliza agora o dowhile Código 214 Exemplo de uso do dowhile em Java public class Programa public static void mainString args int contador 1 do SystemoutprintlnContador contador contador while contador 5 Nesse exemplo Código 214 o laço dowhile garante que o bloco de código seja executado pelo menos uma vez mesmo que a condição inicial seja falsa A variável Contador começa em 1 e será incrementa da até atingir o valor 5 A cada passo o valor de Contador é exibido Como a condição é verificada apenas após a execução do bloco o valor 1 será impresso mesmo que a condição inicial não fosse satis feita O laço for é muito utilizado quando o número de repetições é conhe 253 Laço For 23 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS cido antecipadamente Ele combina três elementos em uma única linha inicialização condição e incremento ou decremento tudo na mesma linha A estrutura básica do for é apresentada no Código 215 for inicializacao condicao incremento bloco de código No Código 216 é mostrado o mesmo contador utilizado nos exem plos anteriores desta vez implementado com o laço for Nesse caso o for é usado para repetir uma ação 5 cinco vezes A variável i é inicializada com 0 e o laço continuará enquanto i for menor que 5 Em cada repetição i é incrementado em 1 Dessa forma o console exibirá os valores de 0 até 4 Essa estrutura é ideal quando sabemos previamente o número de vezes que o bloco deve ser executado Código 215 Estrutura do comando for em Java Código 216 Exemplo de uso do for em Java public class Programa public static void mainString args for int i 0 i 5 i SystemoutprintlnValor de i i 24 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Atividades Questão 1 Olá Mundo crie um programa Java que exiba a men sagem Olá Mundo no console Em seguida compile e execute o programa para garantir que tudo está funcionando corretamente Questão 2 Soma de dois números desenvolva um programa que declare duas variáveis do tipo int atribua valores a elas some seus valores e exiba o resultado no console Questão 3 Entrada do usuário Crie um programa que utilize a classe Scanner para ler o nome de uma pessoa e sua idade e de pois exiba uma mensagem como Olá Maria Você tem 16 anos Questão 4 Cálculo de média escreva um programa que leia duas notas valores double do usuário e calcule a média Em seguida ex iba a média e informe se o aluno está aprovado média maior ou igual a 7 ou reprovado Questão 5 Estrutura condicional desenvolva um programa que leia um número inteiro e diga se ele é positivo negativo ou igual a zero Use estrutura ifelse para tomar as decisões 25 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Para avançar no estudo da Programação Orientada a Objetos POO é essencial compreender o conceito de classe Ela serve como base para a forma como tudo é organizado por definir o que é e como funciona um objeto Em outras palavras a classe é o molde que de screve as características e comportamentos dos objetos que serão criados a partir dela Em uma classe colocamos os dados também chamados de atrib utos e os comandos ou métodos que utilizam esses dados Os métodos representam as ações que um objeto pode realizar Como as classes objetos e métodos são os elementos fundamentais da linguagem Java é por meio deles que começamos a entender e aplicar os princípios da POO Compreender bem esses conceitos vai ajudar você a criar progra mas mais avançados e entender melhor alguns pontos importantes da Programação Orientada a Objetos que serão explicados nos próximo capítulo A Programação Orientada a Objetos POO é um paradigma de pro gramação que organiza o código em torno de objetos que são estruturas que combinam dados e comportamentos Cada objeto é criado a partir de uma classe que funciona como um molde ou modelo Por exemplo se criarmos uma classe chamada Carro po demos gerar vários objetos a partir dela como carro1 carro2 etc cada um com suas próprias características como cor modelo e ve locidade e ações como acelerar ou frear 3 Classes e Objetos 31 Programação Orientada a Objetos 26 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Esse estilo de programação facilita a organização reutilização e ma nutenção do código Entre os principais conceitos da POO estão a herança onde uma classe pode herdar características de outra o en capsulamento que protege os dados internos do objeto a abstração que foca apenas nos detalhes importantes e o polimorfismo que permite que métodos se comportem de formas diferentes depend endo do contexto A POO é amplamente usada em linguagens como Java Python e C sendo muito útil no desenvolvimento de progra mas complexos e modernos Na POO uma classe é uma estrutura que define como um objeto será ou seja ela descreve quais características atributos e quais ações métodos o objeto possuirá Podemos pensar na classe como um modelo para representar ele mentos do mundo real dentro do programa 32 Classes e Objetos 27 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Por exemplo imagine uma classe chamada Pessoa Essa classe pode ter atributos como nome idade e altura e métodos como falar e andar A partir dessa classe podemos criar diferentes objetos como pessoa1 e pessoa2 cada um com seus próprios valores para os atributos mas com os mesmos métodos definidos pela classe Pessoa José Maria Ana Objeto Classe nome idade altura nome José idade 35 altura 175 andar falar nome Maria idade 42 altura 170 andar falar nome Ana idade 29 altura 165 andar falar 28 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Na Figura acima podemos visualizar essa representação onde te mos uma classe Pessoa e três objetos criados a partir dela Ana José e Maria Todos são pessoas o que muda são os valores de seus atrib utos Em resumo criamos as classes para definir o que os objetos terão e o que poderão fazer Por convenção o nome de uma classe em Java deve sempre iniciar com letra maiúscula seguida do resto do nome em letras minúsculas No exemplo Código 31 Pessoa é o nome da classe Então ela ainda não possui nenhum atributo ou método mas já está pronta para ser preenchida com informações Como dito anteriormente uma classe é um molde para criar obje tos Nela definimos os atributos que representam as características do objeto e os métodos que representam os comportamentos ou ações dos objetos Toda aplicação em Java é composta por classes sendo esse o ponto central da Programação Orientada a Objetos A declaração de uma classe em Java começa com a palavrachave class seguida pelo nome da classe e um bloco de código entre chaves Isso pode ser visto no Código 31 321 Definição de uma classe em Java public class Pessoa Código da classe aqui Código 31 Classe Pessoa estrutura básica 29 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Agora a classe Pessoa possui três atributos nome idade e altura Esses atributos serão únicos para cada objeto criado com essa classe Os Atributos são variáveis que representam as características dos objetos criados a partir da classe Podemos adicionar quantos atrib utos forem necessários conforme a complexidade do objeto Veja no Código refcodatributos 322 Atributos Código 32 Classe Pessoa com atributos public class Pessoa String nome int idade double altura 30 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Os Métodos são funções que definem o comportamento dos obje tos Eles podem realizar ações usando os atributos da própria classe ou executar tarefas específicas Veja no Código 33 a classe Pessoa com atributos e dois métodos No Código 33 os métodos falar e andar utilizam o atributo nome para exibir mensagens personalizadas Assim cada objeto do tipo Pessoa pode executar essas ações com base em seus próprios da dos Um método em Java é um bloco de código que executa uma tarefa específica Ele pode usar os dados da própria classe os atributos 323 Métodos Código 33 Classe Pessoa com métodos public class Pessoa String nome int idade double altura void falar SystemoutprintlnOlá meu nome é nome void andar Systemoutprintlnnome está andando 31 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS receber informações através de parâmetros e também retornar um valor após a execução dependendo da sua definição Veja o Código 34 Vamos entender cada parte que compõe a declaração de um méto do em Java Modificador normalmente usamos public para o método poder ser acessado de fora da classe Outros modificadores também existem como private protected mas o mais comum no início é o public Tipo de retorno indica o tipo de dado que o método vai devolver Se ele não retorna nada usamos void Nome do método é o identificador do método Por convenção começa com letra minúscula e usa camelCase como falar ou cal cularMedia Parâmetros são variáveis passadas ao método quando ele é chama do Elas ficam entre parênteses Se não houver parâmetros os parên teses ficam vazios Corpo do método é o bloco de código que será executado quando o método for chamado Código 34 Estrutura geral de método em Java modificador tipoDeRetorno nomeDoMetodo par ametros corpo do método comandos 32 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Exemplo 1 Método sem parâmetros e sem retorno void Esse método não recebe nenhuma informação e não retorna nen hum valor Seu único propósito é exibir uma mensagem na tela Exemplo 2 Método com parâmetros e sem retorno Esse método recebe um parâmetro nome e o utiliza para mostrar uma mensagem personalizada Exemplo 3 Método com retorno Esse método recebe a idade em anos e retorna a idade em meses O tipo de retorno é int e usamos a palavra return para devolver o resultado Código 35 Método sem parâmetros e sem retorno Código 36 Método com parâmetros e sem retorno Código 37 Método com parâmetros e sem retorno public void falar SystemoutprintlnOlá public void apresentarString nome SystemoutprintlnOlá meu nome é nome public void calcularIdadeEmMesesint idadeAnos return idadeAnos 12 33 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Na Programação Orientada a Objetos um objeto é uma instância de uma classe Depois de definir uma classe em Java podemos criar ou instanciar objetos baseados nessa classe para usálos no programa Cada objeto criado possui seus próprios valores para os atributos e pode executar os métodos definidos na classe tornandose assim uma entidade independente dentro da aplicação Em Java para declarar um objeto seguimos a estrutura definida no Código 38 Considerando a Classe Pessoa Código 33 criamos um objeto chamado Joao Nesse caso p1 é um objeto do tipo Pessoa A palavrachave new é usada para criar instanciar um objeto na memória Assim p1 contém os atributos nome idade e altura além dos métodos andar e falar Após criar um objeto podemos acessar e modificar seus atributos usando o operador ponto No Código refcodacessaratrib utos atribuímos valores aos atributos de p1 33 Trabalhando com Objetos Código 38 Criando um objeto da classe Pessoa Código 39 Atribuindo valores aos atributos Pessoa p1 new Pessoa Pessoa p1 new Pessoa p1nome João p1idade 20 p1altura 176 34 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Cada objeto pode ter valores diferentes mesmo sendo da mesma classe No caso do Código 310 criamos outro objeto p2 e atribuímos novos valores Os métodos são acessados da mesma forma com o operador ponto Essas chamadas executam os comportamentos definidos na classe Pessoa usando os dados de cada objeto No exemplo do Código 311 o programa cria um objeto da classe Pes soa e chama seus métodos A partir dessa lógica é possível repre sentar diversos elementos do mundo real e desenvolver programas mais organizados e funcionais Código 310 Criando outro objeto com novos valores Código 311 Chamando métodos do objeto Pessoa p2 new Pessoa p1nome Maria p1idade 25 p1altura 175 Pessoa p1 new Pessoa p1nome João p1idade 20 p1altura 176 p1andar p1falar 35 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Atividades Questão 1 Criando uma Classe Carro Desenvolva uma classe chamada Carro com os atributos marca String modelo String e ano int Em seguida crie dois objetos dessa classe no método main atribua valores aos atributos e exiba no console as informações de cada Carro criado Questão 2 Classe Aluno com Métodos Crie uma classe chamada Aluno com os atributos nome String nota1 double e nota2 dou ble Adicione um método chamado calcularMedia que retorna a média das notas No método main instancie um objeto da classe Aluno definindo os valores e exibindo a média calculada Questão 3 Simulando uma Conta Bancária Crie a classe ContaBan caria com os atributos titular String e saldo double Após isso im plemente os métodos depositardouble valor sacardouble valor e exibirSaldo No main crie um objeto da conta realize um depósito um saque e exiba o saldo final após as operações Questão 4 Classe Livro com múltiplos objetos Crie uma classe chamada Livro com os atributos titulo String autor String e ano Publicacao int No método main instancie três objetos do tipo Livro atribua valores distintos a cada um e exiba as informações de cada livro Questão 5 Classe Produto com Método de Desconto Crie uma classe chamada Produto com os atributos nome String e preco double Adicione um método precoComDescontodouble percen tual que retorne o valor do produto com o desconto aplicado No main crie um objeto da classe atribua valores e exiba o preço com um desconto de 10 36 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS O encapsulamento é um dos pilares fundamentais da Programação Orientada a Objetos POO e desempenha um papel crucial na or ganização segurança e manutenção de sistemas de software Seu princípio baseiase em ocultar os detalhes internos de funcionamen to de uma classe expondo apenas o que é estritamente necessário para o uso externo Dessa forma promovese o conceito de caixa preta no qual o usuário de uma classe interage com ela por meio de uma interface bem definida sem precisar conhecer sua imple mentação interna Ao aplicar encapsulamento os atributos de uma classe são normal mente declarados como privados sendo acessados e modificados apenas através de métodos públicos conhecidos como getters e setters Isso permite controlar como os dados internos são manip ulados evitando acessos indevidos e garantindo a integridade das informações Além de proteger os dados o encap sulamento facilita a manutenção e a reutilização do código Alterações internas em uma classe não afetam as demais partes do sistema desde que a interface pública permaneça estável Neste capítulo explorare mos os principais conceitos práti cas e benefícios do encapsulamen to além de exemplos práticos que demonstram sua aplicação no de senvolvimento de sistemas orienta dos a objetos 4 Encapsulamento Fonte Envato 2025 37 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS O encapsulamento consiste em esconder os membros de uma classe protegendo seus atributos e ocultando detalhes do funcionamento interno de seus métodos Isso impede que outras partes do sistema interfiram diretamente nos dados preservando a consistência e o controle sobre o estado dos objetos O uso do encapsulamento torna o sistema mais adaptável a mu danças Quando uma regra de negócio é alterada basta modificála em um único ponto do código geralmente dentro de um método específico em vez de em diversos trechos espalhados como ocorre por exemplo com o método sacar de uma conta bancária Um problema comum identificado em sistemas bancários é que o método saca permite realizar saques mesmo quando o saldo da conta não é suficiente Veja abaixo como está atualmente a imple mentação da classe Conta 42 Modificadores de Acesso Código 41 Classe Conta sem encapsulamento class Conta String titular int numero double saldo void sacardouble valor thissaldo thissaldo valor 41 Conceito de Encapsulamento 38 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS No exemplo abaixo temos a utilização da classe Conta mostrando como é possível ultrapassar o limite de saldo ou seja não há con trole É possível adicionar uma verificação if no método sacar para im pedir que a conta fique com saldo negativo o que a deixaria em um estado inválido Essa abordagem foi mostrada no capítulo intro dutório sobre orientação a objetos No entanto mesmo com essa melhoria persiste um problema mais sério não há garantia de que quem usa a classe irá sempre utilizar o método apropriado para modificar o saldo O próximo trecho de código demonstra essa falha diretamente Código 42 Uso da classe Conta sem controle de saldo Código 43 Outro exemplo sem controle saldo negativo public class Main public static void mainString args Conta conta new Conta contasaldo 10000 contasacar5000 saldo é somente R 100000 public class Main public static void mainString args Conta conta new Conta contasaldo 200 saldo é somente R 100000 39 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Então como podemos prevenir esse problema Uma solução sim ples seria verificar se o valor a ser sacado não ultrapassa o saldo disponível Esse tipo de verificação precisaria ser repetido em várias partes da aplicação e o que é ainda mais preocupante poderia facilmente ser esquecido deixando a conta em um estado inválido A melhor solução é obrigar os usuários da classe Conta a utilizarem os méto dos apropriados como sacar e depositar impedindo o acesso direto ao atributo saldo Essa abordagem é similar ao que fazemos com a validação de CPF Código 44 Verificação de saldo negativo public class Main public static void mainString args a Conta Conta conta new Conta contasaldo 100 quero mudar o saldo para 200 double novoSaldo 200 testa se o novoSaldo é válido if novoSaldo 0 SystemoutprintlnValor de saldo inválido else contasaldo novoSaldo 40 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Em Java isso pode ser feito declarando os atributos como inacessíveis fora da classe utilizando a palavrachave private Como podemos ver abaixo no Código 45 No exemplo acima o atributo saldo foi declarado como privado im pedindo que ele seja acessado ou modificado diretamente por outras classes O private é um modificador de acesso um recurso da linguagem Java utilizado para controlar a visibilidade de classes métodos e atributos Existem quatro tipos principais de modificadores de acesso são eles public permite que todos os elementos classes atributos con strutores e métodos sejam acessados de qualquer parte do projeto protected são acessíveis por outra classe dentro do mesmo pacote Sendo que somente podem ser definidos como atributos constru tores e métodos default quando nenhum modificador é especificado o acesso é permitido apenas dentro do mesmo pacote e private os itens com modificador private só podem ser acessa dos dentro da mesma classe As classes em si não podem ser pri vate mas sim atributos construtores e métodos Código 45 Classe Conta com atributo saldo encapsulado class Conta private double saldo 41 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Para manter a organização do código o Java estabelece que cada arquivo contenha apenas uma classe pública e o nome do arquivo deve corresponder ao nome da classe seguido da extensão java Essa convenção facilita o trabalho de outros desenvolvedores que podem localizar rapidamente o código de uma classe dentro do pro jeto mantendo uma estrutura padronizada Existe ainda a possibilidade de criar classes dentro de outras classes aninhadas que podem ser protected ou private mas esse é um assunto mais avançado e será abordado futuramente Ao utilizarmos o modificador private impedimos que o atributo seja alterado ou mesmo visualizado diretamente Surge então uma questão como exibir o saldo de uma Conta se não temos acesso di reto a ele nem mesmo para leitura Para resolver isso precisamos definir um meio de acessar esse valor Sempre que queremos realizar alguma ação sobre um objeto us amos métodos Portanto podemos criar um método por exemplo pegaSaldo especificamente para retornar essa informação Veja o exemplo no Código refcodcontapegasaldo 43 Métodos Getters e Setters 42 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Para acessar o saldo de uma conta sem violar o encapsulamento a partir de um objeto do tipo Conta utilizamos o método pegaSaldo como mostrado no Código 47 Código 46 Classe Conta com método pegaSaldo Código 47 Testando o método pegaSaldo class Conta private double saldo outros atributos omitidos public double pegaSaldo return thissaldo deposita e saca omitidos public class Main public static void mainString args Conta conta new Conta contadeposita1000 SystemoutprintlnSaldo contapegaSaldo 43 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Para permitir que atributos privados sejam acessados de forma se gura é comum criar dois métodos específicos um para obter o valor get e outro para modificálo set A convenção em Java é nomear esses métodos com os prefixos get para leitura e set para escrita seguidos do nome do atributo Por exemplo se quisermos permitir o acesso aos atributos saldo limite e titular da classe Conta devemos criar métodos getSaldo setSaldo getLimite setLimite e assim por diante Veja o Código 48 Código 48 Classe Conta com métodos getters e setters public class Conta private String titular private double saldo public double getSaldo return thissaldo public void setSaldodouble saldo thissaldo saldo public String getTitular return thistitular public void setTitularString titular thistitular titular 44 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Não é recomendado criar uma classe e automaticamente gerar get ters e setters para todos os seus atributos Esses métodos só devem ser criados quando houver uma necessidade real Por exemplo no caso apresentado o método setSaldo não deveria existir já que a intenção é que todas as alterações no saldo sejam feitas exclusiva mente por meio dos métodos depositar e sacar Além disso um método chamado getX não precisa retornar dire tamente o atributo x do objeto Essa flexibilidade é útil no contexto do encapsulamento Por exemplo imagine que desejamos que o sis tema bancário sempre exiba como saldo a soma dele com o limite disponível algo comum em bancos Para isso em vez de calcular em vários pontos do código com cgetLimite cgetSaldo podemos encapsular essa lógica dentro de um único método como o próprio getSaldo evitando repetições e facilitando futuras alter ações R R 45 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Ao utilizarmos a palavrachave new estamos criando uma nova in stância de um objeto Toda vez que esse comando é acionado o construtor da classe é automaticamente executado Esse construtor é um bloco de código que deve ter o mesmo nome da classe em que está definido Veja o Código 49 Um construtor é um método especial chamado automaticamente quando um objeto é criado Ele é usado para inicializar o estado do objeto Então quando instanciamos o objeto como mostrando no Código refcodinstanciacao a mensagem Construindo uma con ta será exibida para o usuário toda vez que um novo objeto da classe Conta for criado 44 Construtores Código 49 Construtor padrão public class Conta private String titular private int numero private double saldo construtor Conta SystemoutprintlnConstruindo uma conta 46 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS O Construtor de uma classe pode receber dados por parâmetros assim podese inicializar atributos no momento da criação do obje to instanciação Código 411 Assim como métodos e atributos o construtor também recebe um modificador de acesso Geralmente utilizamos public Além disso uma classe pode ter vários construtores como mostrado abaixo no Código 412 Código 411 Construtor recebendo o titular public class Conta private String titular private int numero private double saldo construtor Conta SystemoutprintlnConstruindo uma conta Código 410 Criando objeto com construtor padrão Conta c new Conta 47 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Código 412 Classe Conta com múltiplos construtores public class Conta private String titular private int numero private double saldo Construtor sem parâmetro public Conta thissaldo 00 construtor com parâmetro public ContaString titular thistitular titular public ContaString titular double saldo thistitular titular thissaldo saldo 48 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Atividades Questão 1 Conceito de Encapsulamento explique com suas própri as palavras o que é encapsulamento e qual a sua importância no paradigma da programação orientada a objetos destacando como ele contribui para a segurança e organização do código Questão 2 Corrigindo Erro de Encapsulamento em uma Conta analise o código abaixo e identifique o erro relacionado ao encapsu lamento Em seguida reescreva a classe de forma correta aplican do o encapsulamento ao atributo saldo Questão 3 Classe Pessoa com Getters e Setters crie uma classe chamada Pessoa com os atributos nome String e idade int to dos privados Após isso implemente métodos get e set para ambos os atributos permitindo acessar e modificar seus valores de forma controlada public class Conta private double saldo public Void sacardouble valor saldo valor 49 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Questão 4 Papel dos Métodos Get e Set explique o papel dos métodos get e set no processo de encapsulamento Em que situ ações é interessante customizar esses métodos por exemplo vali dando dados antes de atribuílos ou formatando informações antes de devolvêlas Questão 5 Analisando Encapsulamento na Classe Produto con sidere o código a seguir Agora responda a O atributo preco está corretamente encapsulado Justifique b O que do jeito que o código está impede outro programador de atribuir um preço negativo c Altere o método setPreco para que apenas valores positivos possam ser atribuídos ao atributo preco mantendo a ideia de en capsulamento public class Produto private double preco public Void setPrecodouble p preco p public double getPreco return preco 50 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Questão 6 Classe Retangulo com Cálculo de Área crie uma classe Retangulo com os atributos privados base e altura Implemente apenas métodos get em que a getBase retorna a base b getAltura retorna a altura e c getArea retorna a área do retângulo base altura calculada a partir dos atributos internos Questão 7 Classe Pedido com Controle de Status implemente uma classe Pedido com os atributos privados numero int valor Total double e status String Adicione os métodos cancelarPedido que altera o status para Cancelado confirmarPagamento que altera o status para Pago O método getStatus deve estar disponível para leitura do status atual do pedido respeitando o encapsulamento do atributo 51 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS DEITEL Paul DEITEL Harvey Java Como Programar 10 ed São Pau lo Pearson 2016 GAMMA Erich et al Padrões de Projeto soluções reutilizáveis de soft ware orientado a objetos Porto Alegre Bookman 2000 GOSLING James JOY Bill STEELE Guy The Java Language Specifi cation Sun Microsystems 1995 HORSTMANN Cay Conceitos de Computação com Java 5 ed Porto Alegre Bookman 2009 LISKOV Barbara WING Jeannette A behavioral notion of subtyping ACM SIGPLAN Notices v 33 n 1 p 3145 1994 MEYER Bertrand ObjectOriented Software Construction 2 ed New York Prentice Hall 1997 MENDES Douglas Rocha Programação Java com ênfase em Orien tação a Objetos São Paulo Novatec 2009 SCHILDT Herbert Java para iniciantes crie compile e execute pro gramas Java rapidamente 6 ed Porto Alegre Bookman 2015 SILVA Maurício Aniche Orientação a Objetos e SOLID para Ninjas São Paulo Casa do Código 2017 SOUZA Ricardo da Estruturas de Controle e Introdução à Pro gramação em Java Rio de Janeiro Ciência Moderna 2014 REFERÊNCIAS
2
Linguagens de Programação
UMG
11
Linguagens de Programação
UMG
4
Linguagens de Programação
UMG
8
Linguagens de Programação
UMG
1
Linguagens de Programação
UMG
2
Linguagens de Programação
UMG
1
Linguagens de Programação
UMG
2
Linguagens de Programação
UMG
1
Linguagens de Programação
UMG
1
Linguagens de Programação
UMG
Texto de pré-visualização
Iniciar PROGRAMAÇÃO ORIENTADA A OBJETOS Parte 1 Caderno de Estudos Docente Bruno Vicente Alves de Lima 2 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Reitor Prof Dr Walter Canales SantAna ViceReitor Prof Dr Paulo Henrique Aragão Catunda PróReitora De Graduação Profa Dra Mônica Piccolo Almeida Chaves Núcleo de Tecnologias para Educação Profa Dra Lígia Tchaicka Coordenadora Geral Setor de Divisão de Design Educacional Cristiane Peixoto Coord Administrativa Danielle Martins Leite Fernandes Lima Coord Pedagógica Professor Conteudista Prof Dr Bruno Vicente Designer Pedagógico Lidiane Saraiva Ferreira Lima Paulo Brito Oliveira Lira Junior Designer de Linguagem Jéssica Natália Anjos Silva Luisa Mara Silva Lima Geovana Valle Porto Sirino Projeto Gráfico e Diagramação Ivania de Jesus Serra Barroso Normalização José Marcelino Nascimento Veiga Júnior UNIVERSIDADE ESTADUAL DO MARANHÃO UEMA Os materiais produzidos para os cursos ofertados pelo UEMAnetUEMA para o Sistema Universidade Aberta do Brasil UAB são licenciados nos termos da Licença Creative Commons Atribuição Não Comercial Compartilhada podendo a obra ser remixada adaptada e servir para criação de obras derivadas desde que com fins não comerciais que seja atribuído crédito ao autor e que as obras derivadas sejam licenciadas sob a mesma licença 3 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS 1 INTRODUÇÃO 11 Classes e Objetos 12 Herança e Polimorfismo 13 Ambiente de Desenvolvimento 131 JDK Java Development Kit 132 IDE Ambientes de Desenvolvimento Integrado 05 05 05 06 06 07 08 09 10 13 14 15 16 16 17 19 20 21 22 2 INTRODUÇÃO À LINGUAGEM JAVA 21 Primeiro Programa em Java 22 Variáveis e Tipos 221 Atribuição 222 Cadeia de Caractere 23 Saída de Dados em Java 24 Estrutura de Controle Decisão 241 Instrução if 242 Instrução ifelse 25 Estrutura de Controle Repetição 251 Laço While 252 Laço DoWhile xx 253 Laço For SUMÁRIO 4 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS 3 CLASSES E OBJETOS 31 Programação Orientada a Objetos 32 Classes e Objetos 321 Definição de uma classe em Java 322 Atributos 323 Métodos 33 Trabalhando com Objetos 25 25 26 28 29 30 33 36 37 37 41 45 51 4 ENCAPSULAMENTO 41 Conceito de Encapsulamento 42 Modificadores de Acesso 43 Métodos Getters e Setters 44 Construtores REFERÊNCIAS 5 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS A programação orientada a objetos POO é um paradigma de de senvolvimento de software baseado na ideia de objetos entidades que combinam dados atributos e comportamentos métodos Ela se diferencia de outras abordagens por permitir que o programador modele o mundo real por meio da definição de classes estruturas que descrevem como esses objetos se comportam e interagem Uma classe pode ser entendida como o molde a partir do qual os ob jetos são construídos Nela são definidos os atributos dados que de screvem o estado do objeto e os métodos funções que descrevem o comportamento do objeto A partir da classe o programador con segue instanciar múltiplos objetos com as mesmas características estruturais mas com estados distintos Um objeto é portanto uma instância concreta de uma classe Cada objeto possui valores próprios para seus atributos e pode executar os métodos definidos pela classe A comunicação entre objetos é feita através da invocação de métodos sendo esse o mecanismo central para a cooperação entre os componentes de um sistema orientado a objetos 1 Introdução 11 Classes e Objetos A herança é um dos pilares fundamentais da POO Esse conceito permite que uma nova classe seja criada com base em uma outra já existente A nova classe chamada subclasse herda os atributos e 12 Herança e Polimorfismo 6 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS métodos da classe original denominada superclasse podendo es tender ou modificar seu comportamento Esse mecanismo favorece a reutilização de código e a criação de hierarquias de abstração Embora raramente utilizado existe o conceito de contração que con siste em eliminar funcionalidades herdadas Esse modelo no entan to pode comprometer a coerência da hierarquia e violar o princípio da substituição de Liskov segundo o qual qualquer subclasse deve poder substituir sua superclasse sem causar erros no sistema O polimorfismo por sua vez permite que objetos de diferentes sub classes sejam tratados como se fossem da superclasse comum Isso significa que um mesmo método pode apresentar comportamentos distintos dependendo da classe do objeto que o executa Essa flexib ilidade possibilita desenvolver sistemas mais genéricos e extensíveis nos quais o comportamento pode ser personalizado sem alterar a estrutura Antes de começar a programar em Java é importante compreender o ambiente necessário para escrever compilar e executar os pro gramas Esse conjunto de ferramentas é chamado de Ambiente de Desenvolvimento O JDK Java Development Kit é o kit de desenvolvimento Java com ponente essencial para a criação de programas nessa linguagem Ele inclui O compilador javac responsável por transformar o códigofon te em bytecode e 13 Ambiente de Desenvolvimento 131 JDK Java Development Kit 7 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS A máquina virtual Java JVM responsável em executar os pro gramas Figura 1 Tela do Netbeans Fonte IDE NetBeans versão Apache IDE 26 2025 Uma IDE Integrated Development Environment é um programa que facilita a escrita de código oferecendo diversos recursos como Realce de sintaxe Sugestões automáticas autocompletar organ ização de Arquivos e Execução com apenas um clique As IDEs mais utilizadas para Java são Netbeans BlueJ e VS Code com extensão para java 132 IDE Ambientes de Desenvolvimento Integrado 8 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS A linguagem Java é uma das mais populares sendo amplamente utilizada no desenvolvimento de software em todo o mundo Criada pela Sun Microsystems em 1995 ela foi projetada para ser simples robusta segura e portável Seu principal diferencial está na máqui na virtual Java JVM que permite que os programas escritos em Java sejam executados em qualquer sistema operacional que pos sua a JVM instalada seguindo o lema escreva uma vez execute em qualquer lugar Além da portabilidade Java oferece uma sintaxe clara e uma vasta bib lioteca padrão facilitando o desen volvimento de aplicações de difer entes tipos como sistemas desktop aplicativos móveis Android apli cações web e sistemas corporativos Sua estrutura orientada a objetos permite modularidade reutilização de código e manutenção facilitada tornandoa uma excelente escolha tanto para iniciantes quanto para projetos de grande escala em am bientes profissionais Embora seja possível programar Java usando apenas um editor de texto simples e o terminal o uso de uma IDE torna o desenvolvimento mais rápido prático e produtivo Para fins de demonstração e práti ca será utilizada a IDE NetBeans versão Apache IDE 26 Figura 1 2 Introdução à Linguagem Java Fonte Envato 2025 9 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Chegou o momento de criar e executar seu primeiro programa em Java Tradicionalmente ao aprender uma nova linguagem de pro gramação iniciase com um exemplo simples que imprime a frase Hello World Essa prática serve como uma forma de garantir que o ambiente de desenvolvimento esteja configurado corretamente e permite um primeiro contato com a sintaxe da linguagem Por isso vamos seguir essa convenção apresentando o clássico programa Hello World em Java O código 21 apresenta a estrutura mínima de um programa em Java public class HelloWorld public static void mainString args SystemoutprintlnHello World O objetivo deste capítulo é apresentar a linguagem de programação Java destacando suas principais características vantagens e apli cações Por meio de uma introdução acessível buscase fornecer ao leitor uma compreensão inicial sobre como a linguagem funciona sua sintaxe básica e os conceitos fundamentais que a tornam uma das linguagens mais utilizadas no desenvolvimento de sistemas moder nos Este conteúdo servirá como base para os próximos capítulos que abordarão aspectos mais específicos da programação orienta da a objetos utilizando Java como linguagem de implementação 21 Primeiro Programa em Java Código 21 Estrutura mínima de um programa em Java 10 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Inicialmente analisaremos a primeira linha do código 21 public class HelloWorld que inicia uma nova classe Esse conceito é fun damental em Java e será explorado com mais profundidade poste riormente Por enquanto não é necessário compreendêlo em detal hes Dentro da Classe HelloWorld temos a função public static void mainString args Essa função é executada sempre que o programa é iniciado sendo portanto a função principal Assim todo o código deve ser escrito dentro dela Apesar de que futuramente será necessário escrever códigos fora dessa função No entanto eles serão chamados a partir da main de forma direta ou indireta É importante destacar que em Java os blocos de código são de limitados por chaves e Assim após a declaração class Hel loWord abrese uma chave que será fechada apenas ao final do código ver Código 21 Todo o conteúdo inserido entre essas duas linhas pertence ao corpo da classe HelloWord O mesmo princípio se aplica ao método main o bloco iniciado com uma chave deve ser encerrado com outra Em resumo para cada chave aberta deve sempre existir uma chave correspondente de fechamento Os fundamentos de qualquer linguagem de programação envolvem seus tipos de dados e operadores e com Java não seria diferente Esses elementos definem as bases do que pode ser realizado na linguagem determinando o tipo de aplicações que podem ser de senvolvidas A boa notícia é que Java oferece um conjunto amplo e 22 Variáveis e Tipos 11 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS bem estruturado de tipos de dados e operadores o que a torna uma linguagem versátil e adequada a diversos estilos de programação Como esse é um tema amplo começaremos explorando os tipos de dados primitivos da linguagem Java e os operadores mais utiliza dos Em seguida analisaremos em detalhe o conceito de variáveis e aprofundaremos o estudo sobre expressões as quais são elementos fundamentais para a construção de qualquer programa funcional A linguagem Java oferece um conjunto de tipos primitivos que rep resentam os dados mais básicos utilizados na programação Esses tipos são fundamentais para a construção de variáveis e para a re alização de operações simples sendo diretamente suportados pela linguagem sem a necessidade de instanciar objetos Cada tipo prim itivo possui um tamanho fixo e um intervalo de valores bem defini do o que garante portabilidade e previsibilidade no comportamento dos programas Os tipos primitivos em Java estão listados na Tabela 1 incluindo categorias como números inteiros números com ponto flutuante caracteres e valores booleanos Tipo int float double char boolean Significado Número inteiro Número real de precisão simples Número real de precisão dupla Caractere Valores verdadeiros ou falsos Tabela 1 Tipos de dados primitivos em Java Fonte do Autor 2025 12 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Os tipos de dados primitivos também conhecidos como elementares ou simples estão apresentados posteriormente O termo primitivo é empregado para destacar que esses tipos não se comportam como objetos em Java mas sim como representações diretas de valores binários Essa escolha de projeto está relacionada à busca por maior desempenho na execução dos programas A partir desses tipos bási cos todos os demais tipos de dados em Java são construídos Para declarar variáveis em Java podemos proceder conforme ilus trado no Código 22 Como é possível observar no Código 22 foram criadas 4 quatro variáveis uma int representando uma idade uma float repre sentando a altura e uma double representando o peso Além des sas variáveis numéricas foram criadas mais 2 duas uma repre sentando uma letra do tipo char e outra representando um status ligado do tipo boolean Código 22 Declaração de variáveis em Java public class Programa public static void mainString args int idade 20 Variável do tipo inteiro float altura 189f Variável do tipo real precisão simples double peso 786 Variável do tipo real precisão dupla char letra a Variável caractere boolean ligado true Variável booleana verdadeiro ou falso 13 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Para criar uma variável não é necessário atribuir valores direto a ela A declaração de uma variável pode ser feita sem o valor inicial como mostrado no Código 23 Assim para atribuir valor a variáveis declaradas utilizamos o opera dor de atribuição como mostra no Código 24 221 Atribuição Código 23 Declaração de variáveis sem atribuição de valores Código 24 Atribuindo valores às variáveis public class Programa public static void mainString args int tamanho double valor public class Programa public static void mainString args int tamanho double valor tamanho 25 Atribuindo valor à variável tamanho valor 25 Atribuindo valor à variável valor 14 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Uma cadeia de caractere é chamada de String em Java e é uti lizada para representar textos dentro de um programa Depois dos números as strings estão entre os tipos de dados mais utilizados na maioria das aplicações Uma String consiste em uma sequência de caracteres como em Hello World Em Java as strings são delimitadas por aspas que não fazem parte do conteúdo da String em si É importante destacar que ao con trário dos tipos numéricos as strings são tratadas como objetos na linguagem A declaração de uma String pode ser observada no Código 25 Observação para utilizar uma variável em Java ela precisa ser primeiramente declarada Isso significa que String é na verdade o nome de uma classe o que pode ser identificado pelo uso da letra maiúscula inicial Já os ti pos primitivos como int e double seguem uma convenção distinta começam com letras minúsculas e não são objetos o que os torna mais eficientes em termos de desempenho 222 Cadeia de Caractere Código 25 Declaração de String em Java public class Programa public static void mainString args String nome nome Fulano de Tal 15 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Em Java a saída de dados é realizada na maioria das vezes por meio do método Systemoutprintln Esse comando é utiliza do para exibir informações no console sendo essencial para que o usuário visualize os resultados do programa ou mensagens impor tantes durante a execução O comando Systemoutprintln imprime o conteúdo forneci do como argumento e ao final insere uma quebra de linha Caso não seja desejada essa quebra podese utilizar o método SSystemout println que mantém o cursor na mesma linha após a impressão Além disso é possível exibir textos fixos valores armazenados em variáveis e até expressões combinadas Por exemplo 23 Saída de Dados em Java Código 26 Impressão de texto na tela em Java public class Programa public static void mainString args SystemoutprintlnOlá mundo SystemoutprintResultado Systemoutprintln10 5 As estruturas de controle de decisão permitem que um programa execute diferentes blocos de código de acordo com determinadas condições Em Java as principais estruturas desse tipo são if if else ifelse ifelse e switch 16 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS As estruturas de controle de decisão permitem que um programa execute diferentes blocos de código de acordo com determinadas condições Em Java as principais estruturas desse tipo são if if else ifelse ifelse e switch 24 Estrutura de Controle Decisão Código 27 Estrutura básica do comando if em Java if condicao Bloco de código a ser executado se a condição for verdadeira A instrução if é utilizada para executar um bloco de código apenas quando uma condição for verdadeira Sua estrutura básica é apre sentada no Código 27 241 Instrução if Fonte Envato 2025 17 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS No Código 28 podemos visualizar o exemplo da utilização do if em Java Ao analisar o Código 28 observamos a declaração de uma variável inteira na linha 1 int idade 20 Na linha 2 temos a definição do if com a seguinte condição idade 18 Voltando à linha 1 vemos que o valor atribuído à variável idade é 20 Assim a condição idade 18 será verdadeira true Dessa forma o comando presente na linha 3 SystemoutprintlnVoce e maior de Idade será executado Por outro lado se o valor da variável idade fosse 15 a linha 3 não se ria executada pois a condição do if retornaria falso false Código 28 Estrutura básica do comando if em Java public class Programa public static void mainString args int idade 20 if idade 18 SystemoutprintlnVocê é maior de idade O comando if executa um bloco de código de acordo com o valor lógico de uma determinada condição Quando desejamos que duas 242 Instrução ifelse 18 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS duas ações diferentes sejam executadas uma se a condição for ver dadeira e outra se for falsa utilizamos em Java a instrução ifelse Nessa estrutura caso a condição seja verdadeira o programa exe cuta o bloco associado ao if caso contrário ou seja se a condição for falsa o programa executa o bloco associado ao else A sintaxe básica do comando ifelse é apresentada no Código 29 Código 29 Estrutura básica do ifelse em Java if condicao código se a condição for verdadeira else código se a condição for falsa 19 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS No Códigorefcodexemploifelse é apresentado um exem plo da utilização do comando extttifelse Nesse exemplo a condição do extttif é extttnumero 0 Se o val or da variável extttnumero for maior que 0 zero o programa exibirá a mensagem Numero positivo Caso contrário será exibida a mensagem Numero negativo Código 210 Exemplo de ifelse em Java public class Programa public static void mainString args int numero 5 if numero 0 SystemoutprintlnNúmero positivo else SystemoutprintlnNúmero negativo Em programação a repetição é um recurso que permite executar um bloco de código diversas vezes de forma automática evitando a necessidade de escrever os mesmos comandos repetidamente Esse tipo de estrutura é essencial para resolver problemas que envolvem 25 Estrutura de Controle Repetição 20 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS tarefas repetitivas como percorrer listas realizar cálculos em se quência ou aguardar que determinadas condições sejam atendidas Os principais tipos de laços de repetição em Java incluem while dowhile e for Esses laços diferenciamse principalmente pelo momento em que a condição de continuidade é verificada e pela previsibilidade do número de repetições O uso adequado dessas es truturas de repetição torna os programas mais eficientes concisos e fáceis de manter O laço while executa um bloco de código enquanto uma condição for verdadeira A condição é testada antes da execução do bloco ou seja se ela for falsa desde o início o código pode não ser executado nenhuma vez Veja a estrutura básica do while no Código 211 No Código 212 é apresentado um exemplo prático do while em Java Nesse caso o laço é utilizado para imprimir os valores de 1 a 5 A variável contador é inicializada com o valor 1 e enquanto for menor ou igual a 5 o programa exibirá seu valor e o incrementará em 1 a cada iteração Quando contador atinge 6 a condição se torna falsa false e o laço é encerrado 251 Laço While Código 211 Estrutura básica do while em Java while condicao bloco de código a ser executado 21 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS O dowhile é semelhante ao while com a diferença de que a condição é testada após a execução do bloco Essa característica garante que o bloco de código será executado pelo menos uma vez A estrutura básica do comando dowhile é apresentada no Código 213 252 Laço doWhile Código 213 Estrutura do comando dowhile em Java do bloco de código a ser executado while condicao Código 212 Exemplo de uso do while em Java public class Programa public static void mainString args int contador 1 while contador 5 SystemoutprintlnContador contador contador 22 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS No Código 214 observamos um exemplo do uso do dowhile em Java O algoritmo apresentado é semelhante ao do Código 212 mas utiliza agora o dowhile Código 214 Exemplo de uso do dowhile em Java public class Programa public static void mainString args int contador 1 do SystemoutprintlnContador contador contador while contador 5 Nesse exemplo Código 214 o laço dowhile garante que o bloco de código seja executado pelo menos uma vez mesmo que a condição inicial seja falsa A variável Contador começa em 1 e será incrementa da até atingir o valor 5 A cada passo o valor de Contador é exibido Como a condição é verificada apenas após a execução do bloco o valor 1 será impresso mesmo que a condição inicial não fosse satis feita O laço for é muito utilizado quando o número de repetições é conhe 253 Laço For 23 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS cido antecipadamente Ele combina três elementos em uma única linha inicialização condição e incremento ou decremento tudo na mesma linha A estrutura básica do for é apresentada no Código 215 for inicializacao condicao incremento bloco de código No Código 216 é mostrado o mesmo contador utilizado nos exem plos anteriores desta vez implementado com o laço for Nesse caso o for é usado para repetir uma ação 5 cinco vezes A variável i é inicializada com 0 e o laço continuará enquanto i for menor que 5 Em cada repetição i é incrementado em 1 Dessa forma o console exibirá os valores de 0 até 4 Essa estrutura é ideal quando sabemos previamente o número de vezes que o bloco deve ser executado Código 215 Estrutura do comando for em Java Código 216 Exemplo de uso do for em Java public class Programa public static void mainString args for int i 0 i 5 i SystemoutprintlnValor de i i 24 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Atividades Questão 1 Olá Mundo crie um programa Java que exiba a men sagem Olá Mundo no console Em seguida compile e execute o programa para garantir que tudo está funcionando corretamente Questão 2 Soma de dois números desenvolva um programa que declare duas variáveis do tipo int atribua valores a elas some seus valores e exiba o resultado no console Questão 3 Entrada do usuário Crie um programa que utilize a classe Scanner para ler o nome de uma pessoa e sua idade e de pois exiba uma mensagem como Olá Maria Você tem 16 anos Questão 4 Cálculo de média escreva um programa que leia duas notas valores double do usuário e calcule a média Em seguida ex iba a média e informe se o aluno está aprovado média maior ou igual a 7 ou reprovado Questão 5 Estrutura condicional desenvolva um programa que leia um número inteiro e diga se ele é positivo negativo ou igual a zero Use estrutura ifelse para tomar as decisões 25 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Para avançar no estudo da Programação Orientada a Objetos POO é essencial compreender o conceito de classe Ela serve como base para a forma como tudo é organizado por definir o que é e como funciona um objeto Em outras palavras a classe é o molde que de screve as características e comportamentos dos objetos que serão criados a partir dela Em uma classe colocamos os dados também chamados de atrib utos e os comandos ou métodos que utilizam esses dados Os métodos representam as ações que um objeto pode realizar Como as classes objetos e métodos são os elementos fundamentais da linguagem Java é por meio deles que começamos a entender e aplicar os princípios da POO Compreender bem esses conceitos vai ajudar você a criar progra mas mais avançados e entender melhor alguns pontos importantes da Programação Orientada a Objetos que serão explicados nos próximo capítulo A Programação Orientada a Objetos POO é um paradigma de pro gramação que organiza o código em torno de objetos que são estruturas que combinam dados e comportamentos Cada objeto é criado a partir de uma classe que funciona como um molde ou modelo Por exemplo se criarmos uma classe chamada Carro po demos gerar vários objetos a partir dela como carro1 carro2 etc cada um com suas próprias características como cor modelo e ve locidade e ações como acelerar ou frear 3 Classes e Objetos 31 Programação Orientada a Objetos 26 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Esse estilo de programação facilita a organização reutilização e ma nutenção do código Entre os principais conceitos da POO estão a herança onde uma classe pode herdar características de outra o en capsulamento que protege os dados internos do objeto a abstração que foca apenas nos detalhes importantes e o polimorfismo que permite que métodos se comportem de formas diferentes depend endo do contexto A POO é amplamente usada em linguagens como Java Python e C sendo muito útil no desenvolvimento de progra mas complexos e modernos Na POO uma classe é uma estrutura que define como um objeto será ou seja ela descreve quais características atributos e quais ações métodos o objeto possuirá Podemos pensar na classe como um modelo para representar ele mentos do mundo real dentro do programa 32 Classes e Objetos 27 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Por exemplo imagine uma classe chamada Pessoa Essa classe pode ter atributos como nome idade e altura e métodos como falar e andar A partir dessa classe podemos criar diferentes objetos como pessoa1 e pessoa2 cada um com seus próprios valores para os atributos mas com os mesmos métodos definidos pela classe Pessoa José Maria Ana Objeto Classe nome idade altura nome José idade 35 altura 175 andar falar nome Maria idade 42 altura 170 andar falar nome Ana idade 29 altura 165 andar falar 28 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Na Figura acima podemos visualizar essa representação onde te mos uma classe Pessoa e três objetos criados a partir dela Ana José e Maria Todos são pessoas o que muda são os valores de seus atrib utos Em resumo criamos as classes para definir o que os objetos terão e o que poderão fazer Por convenção o nome de uma classe em Java deve sempre iniciar com letra maiúscula seguida do resto do nome em letras minúsculas No exemplo Código 31 Pessoa é o nome da classe Então ela ainda não possui nenhum atributo ou método mas já está pronta para ser preenchida com informações Como dito anteriormente uma classe é um molde para criar obje tos Nela definimos os atributos que representam as características do objeto e os métodos que representam os comportamentos ou ações dos objetos Toda aplicação em Java é composta por classes sendo esse o ponto central da Programação Orientada a Objetos A declaração de uma classe em Java começa com a palavrachave class seguida pelo nome da classe e um bloco de código entre chaves Isso pode ser visto no Código 31 321 Definição de uma classe em Java public class Pessoa Código da classe aqui Código 31 Classe Pessoa estrutura básica 29 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Agora a classe Pessoa possui três atributos nome idade e altura Esses atributos serão únicos para cada objeto criado com essa classe Os Atributos são variáveis que representam as características dos objetos criados a partir da classe Podemos adicionar quantos atrib utos forem necessários conforme a complexidade do objeto Veja no Código refcodatributos 322 Atributos Código 32 Classe Pessoa com atributos public class Pessoa String nome int idade double altura 30 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Os Métodos são funções que definem o comportamento dos obje tos Eles podem realizar ações usando os atributos da própria classe ou executar tarefas específicas Veja no Código 33 a classe Pessoa com atributos e dois métodos No Código 33 os métodos falar e andar utilizam o atributo nome para exibir mensagens personalizadas Assim cada objeto do tipo Pessoa pode executar essas ações com base em seus próprios da dos Um método em Java é um bloco de código que executa uma tarefa específica Ele pode usar os dados da própria classe os atributos 323 Métodos Código 33 Classe Pessoa com métodos public class Pessoa String nome int idade double altura void falar SystemoutprintlnOlá meu nome é nome void andar Systemoutprintlnnome está andando 31 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS receber informações através de parâmetros e também retornar um valor após a execução dependendo da sua definição Veja o Código 34 Vamos entender cada parte que compõe a declaração de um méto do em Java Modificador normalmente usamos public para o método poder ser acessado de fora da classe Outros modificadores também existem como private protected mas o mais comum no início é o public Tipo de retorno indica o tipo de dado que o método vai devolver Se ele não retorna nada usamos void Nome do método é o identificador do método Por convenção começa com letra minúscula e usa camelCase como falar ou cal cularMedia Parâmetros são variáveis passadas ao método quando ele é chama do Elas ficam entre parênteses Se não houver parâmetros os parên teses ficam vazios Corpo do método é o bloco de código que será executado quando o método for chamado Código 34 Estrutura geral de método em Java modificador tipoDeRetorno nomeDoMetodo par ametros corpo do método comandos 32 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Exemplo 1 Método sem parâmetros e sem retorno void Esse método não recebe nenhuma informação e não retorna nen hum valor Seu único propósito é exibir uma mensagem na tela Exemplo 2 Método com parâmetros e sem retorno Esse método recebe um parâmetro nome e o utiliza para mostrar uma mensagem personalizada Exemplo 3 Método com retorno Esse método recebe a idade em anos e retorna a idade em meses O tipo de retorno é int e usamos a palavra return para devolver o resultado Código 35 Método sem parâmetros e sem retorno Código 36 Método com parâmetros e sem retorno Código 37 Método com parâmetros e sem retorno public void falar SystemoutprintlnOlá public void apresentarString nome SystemoutprintlnOlá meu nome é nome public void calcularIdadeEmMesesint idadeAnos return idadeAnos 12 33 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Na Programação Orientada a Objetos um objeto é uma instância de uma classe Depois de definir uma classe em Java podemos criar ou instanciar objetos baseados nessa classe para usálos no programa Cada objeto criado possui seus próprios valores para os atributos e pode executar os métodos definidos na classe tornandose assim uma entidade independente dentro da aplicação Em Java para declarar um objeto seguimos a estrutura definida no Código 38 Considerando a Classe Pessoa Código 33 criamos um objeto chamado Joao Nesse caso p1 é um objeto do tipo Pessoa A palavrachave new é usada para criar instanciar um objeto na memória Assim p1 contém os atributos nome idade e altura além dos métodos andar e falar Após criar um objeto podemos acessar e modificar seus atributos usando o operador ponto No Código refcodacessaratrib utos atribuímos valores aos atributos de p1 33 Trabalhando com Objetos Código 38 Criando um objeto da classe Pessoa Código 39 Atribuindo valores aos atributos Pessoa p1 new Pessoa Pessoa p1 new Pessoa p1nome João p1idade 20 p1altura 176 34 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Cada objeto pode ter valores diferentes mesmo sendo da mesma classe No caso do Código 310 criamos outro objeto p2 e atribuímos novos valores Os métodos são acessados da mesma forma com o operador ponto Essas chamadas executam os comportamentos definidos na classe Pessoa usando os dados de cada objeto No exemplo do Código 311 o programa cria um objeto da classe Pes soa e chama seus métodos A partir dessa lógica é possível repre sentar diversos elementos do mundo real e desenvolver programas mais organizados e funcionais Código 310 Criando outro objeto com novos valores Código 311 Chamando métodos do objeto Pessoa p2 new Pessoa p1nome Maria p1idade 25 p1altura 175 Pessoa p1 new Pessoa p1nome João p1idade 20 p1altura 176 p1andar p1falar 35 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Atividades Questão 1 Criando uma Classe Carro Desenvolva uma classe chamada Carro com os atributos marca String modelo String e ano int Em seguida crie dois objetos dessa classe no método main atribua valores aos atributos e exiba no console as informações de cada Carro criado Questão 2 Classe Aluno com Métodos Crie uma classe chamada Aluno com os atributos nome String nota1 double e nota2 dou ble Adicione um método chamado calcularMedia que retorna a média das notas No método main instancie um objeto da classe Aluno definindo os valores e exibindo a média calculada Questão 3 Simulando uma Conta Bancária Crie a classe ContaBan caria com os atributos titular String e saldo double Após isso im plemente os métodos depositardouble valor sacardouble valor e exibirSaldo No main crie um objeto da conta realize um depósito um saque e exiba o saldo final após as operações Questão 4 Classe Livro com múltiplos objetos Crie uma classe chamada Livro com os atributos titulo String autor String e ano Publicacao int No método main instancie três objetos do tipo Livro atribua valores distintos a cada um e exiba as informações de cada livro Questão 5 Classe Produto com Método de Desconto Crie uma classe chamada Produto com os atributos nome String e preco double Adicione um método precoComDescontodouble percen tual que retorne o valor do produto com o desconto aplicado No main crie um objeto da classe atribua valores e exiba o preço com um desconto de 10 36 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS O encapsulamento é um dos pilares fundamentais da Programação Orientada a Objetos POO e desempenha um papel crucial na or ganização segurança e manutenção de sistemas de software Seu princípio baseiase em ocultar os detalhes internos de funcionamen to de uma classe expondo apenas o que é estritamente necessário para o uso externo Dessa forma promovese o conceito de caixa preta no qual o usuário de uma classe interage com ela por meio de uma interface bem definida sem precisar conhecer sua imple mentação interna Ao aplicar encapsulamento os atributos de uma classe são normal mente declarados como privados sendo acessados e modificados apenas através de métodos públicos conhecidos como getters e setters Isso permite controlar como os dados internos são manip ulados evitando acessos indevidos e garantindo a integridade das informações Além de proteger os dados o encap sulamento facilita a manutenção e a reutilização do código Alterações internas em uma classe não afetam as demais partes do sistema desde que a interface pública permaneça estável Neste capítulo explorare mos os principais conceitos práti cas e benefícios do encapsulamen to além de exemplos práticos que demonstram sua aplicação no de senvolvimento de sistemas orienta dos a objetos 4 Encapsulamento Fonte Envato 2025 37 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS O encapsulamento consiste em esconder os membros de uma classe protegendo seus atributos e ocultando detalhes do funcionamento interno de seus métodos Isso impede que outras partes do sistema interfiram diretamente nos dados preservando a consistência e o controle sobre o estado dos objetos O uso do encapsulamento torna o sistema mais adaptável a mu danças Quando uma regra de negócio é alterada basta modificála em um único ponto do código geralmente dentro de um método específico em vez de em diversos trechos espalhados como ocorre por exemplo com o método sacar de uma conta bancária Um problema comum identificado em sistemas bancários é que o método saca permite realizar saques mesmo quando o saldo da conta não é suficiente Veja abaixo como está atualmente a imple mentação da classe Conta 42 Modificadores de Acesso Código 41 Classe Conta sem encapsulamento class Conta String titular int numero double saldo void sacardouble valor thissaldo thissaldo valor 41 Conceito de Encapsulamento 38 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS No exemplo abaixo temos a utilização da classe Conta mostrando como é possível ultrapassar o limite de saldo ou seja não há con trole É possível adicionar uma verificação if no método sacar para im pedir que a conta fique com saldo negativo o que a deixaria em um estado inválido Essa abordagem foi mostrada no capítulo intro dutório sobre orientação a objetos No entanto mesmo com essa melhoria persiste um problema mais sério não há garantia de que quem usa a classe irá sempre utilizar o método apropriado para modificar o saldo O próximo trecho de código demonstra essa falha diretamente Código 42 Uso da classe Conta sem controle de saldo Código 43 Outro exemplo sem controle saldo negativo public class Main public static void mainString args Conta conta new Conta contasaldo 10000 contasacar5000 saldo é somente R 100000 public class Main public static void mainString args Conta conta new Conta contasaldo 200 saldo é somente R 100000 39 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Então como podemos prevenir esse problema Uma solução sim ples seria verificar se o valor a ser sacado não ultrapassa o saldo disponível Esse tipo de verificação precisaria ser repetido em várias partes da aplicação e o que é ainda mais preocupante poderia facilmente ser esquecido deixando a conta em um estado inválido A melhor solução é obrigar os usuários da classe Conta a utilizarem os méto dos apropriados como sacar e depositar impedindo o acesso direto ao atributo saldo Essa abordagem é similar ao que fazemos com a validação de CPF Código 44 Verificação de saldo negativo public class Main public static void mainString args a Conta Conta conta new Conta contasaldo 100 quero mudar o saldo para 200 double novoSaldo 200 testa se o novoSaldo é válido if novoSaldo 0 SystemoutprintlnValor de saldo inválido else contasaldo novoSaldo 40 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Em Java isso pode ser feito declarando os atributos como inacessíveis fora da classe utilizando a palavrachave private Como podemos ver abaixo no Código 45 No exemplo acima o atributo saldo foi declarado como privado im pedindo que ele seja acessado ou modificado diretamente por outras classes O private é um modificador de acesso um recurso da linguagem Java utilizado para controlar a visibilidade de classes métodos e atributos Existem quatro tipos principais de modificadores de acesso são eles public permite que todos os elementos classes atributos con strutores e métodos sejam acessados de qualquer parte do projeto protected são acessíveis por outra classe dentro do mesmo pacote Sendo que somente podem ser definidos como atributos constru tores e métodos default quando nenhum modificador é especificado o acesso é permitido apenas dentro do mesmo pacote e private os itens com modificador private só podem ser acessa dos dentro da mesma classe As classes em si não podem ser pri vate mas sim atributos construtores e métodos Código 45 Classe Conta com atributo saldo encapsulado class Conta private double saldo 41 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Para manter a organização do código o Java estabelece que cada arquivo contenha apenas uma classe pública e o nome do arquivo deve corresponder ao nome da classe seguido da extensão java Essa convenção facilita o trabalho de outros desenvolvedores que podem localizar rapidamente o código de uma classe dentro do pro jeto mantendo uma estrutura padronizada Existe ainda a possibilidade de criar classes dentro de outras classes aninhadas que podem ser protected ou private mas esse é um assunto mais avançado e será abordado futuramente Ao utilizarmos o modificador private impedimos que o atributo seja alterado ou mesmo visualizado diretamente Surge então uma questão como exibir o saldo de uma Conta se não temos acesso di reto a ele nem mesmo para leitura Para resolver isso precisamos definir um meio de acessar esse valor Sempre que queremos realizar alguma ação sobre um objeto us amos métodos Portanto podemos criar um método por exemplo pegaSaldo especificamente para retornar essa informação Veja o exemplo no Código refcodcontapegasaldo 43 Métodos Getters e Setters 42 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Para acessar o saldo de uma conta sem violar o encapsulamento a partir de um objeto do tipo Conta utilizamos o método pegaSaldo como mostrado no Código 47 Código 46 Classe Conta com método pegaSaldo Código 47 Testando o método pegaSaldo class Conta private double saldo outros atributos omitidos public double pegaSaldo return thissaldo deposita e saca omitidos public class Main public static void mainString args Conta conta new Conta contadeposita1000 SystemoutprintlnSaldo contapegaSaldo 43 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Para permitir que atributos privados sejam acessados de forma se gura é comum criar dois métodos específicos um para obter o valor get e outro para modificálo set A convenção em Java é nomear esses métodos com os prefixos get para leitura e set para escrita seguidos do nome do atributo Por exemplo se quisermos permitir o acesso aos atributos saldo limite e titular da classe Conta devemos criar métodos getSaldo setSaldo getLimite setLimite e assim por diante Veja o Código 48 Código 48 Classe Conta com métodos getters e setters public class Conta private String titular private double saldo public double getSaldo return thissaldo public void setSaldodouble saldo thissaldo saldo public String getTitular return thistitular public void setTitularString titular thistitular titular 44 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Não é recomendado criar uma classe e automaticamente gerar get ters e setters para todos os seus atributos Esses métodos só devem ser criados quando houver uma necessidade real Por exemplo no caso apresentado o método setSaldo não deveria existir já que a intenção é que todas as alterações no saldo sejam feitas exclusiva mente por meio dos métodos depositar e sacar Além disso um método chamado getX não precisa retornar dire tamente o atributo x do objeto Essa flexibilidade é útil no contexto do encapsulamento Por exemplo imagine que desejamos que o sis tema bancário sempre exiba como saldo a soma dele com o limite disponível algo comum em bancos Para isso em vez de calcular em vários pontos do código com cgetLimite cgetSaldo podemos encapsular essa lógica dentro de um único método como o próprio getSaldo evitando repetições e facilitando futuras alter ações R R 45 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Ao utilizarmos a palavrachave new estamos criando uma nova in stância de um objeto Toda vez que esse comando é acionado o construtor da classe é automaticamente executado Esse construtor é um bloco de código que deve ter o mesmo nome da classe em que está definido Veja o Código 49 Um construtor é um método especial chamado automaticamente quando um objeto é criado Ele é usado para inicializar o estado do objeto Então quando instanciamos o objeto como mostrando no Código refcodinstanciacao a mensagem Construindo uma con ta será exibida para o usuário toda vez que um novo objeto da classe Conta for criado 44 Construtores Código 49 Construtor padrão public class Conta private String titular private int numero private double saldo construtor Conta SystemoutprintlnConstruindo uma conta 46 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS O Construtor de uma classe pode receber dados por parâmetros assim podese inicializar atributos no momento da criação do obje to instanciação Código 411 Assim como métodos e atributos o construtor também recebe um modificador de acesso Geralmente utilizamos public Além disso uma classe pode ter vários construtores como mostrado abaixo no Código 412 Código 411 Construtor recebendo o titular public class Conta private String titular private int numero private double saldo construtor Conta SystemoutprintlnConstruindo uma conta Código 410 Criando objeto com construtor padrão Conta c new Conta 47 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Código 412 Classe Conta com múltiplos construtores public class Conta private String titular private int numero private double saldo Construtor sem parâmetro public Conta thissaldo 00 construtor com parâmetro public ContaString titular thistitular titular public ContaString titular double saldo thistitular titular thissaldo saldo 48 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Atividades Questão 1 Conceito de Encapsulamento explique com suas própri as palavras o que é encapsulamento e qual a sua importância no paradigma da programação orientada a objetos destacando como ele contribui para a segurança e organização do código Questão 2 Corrigindo Erro de Encapsulamento em uma Conta analise o código abaixo e identifique o erro relacionado ao encapsu lamento Em seguida reescreva a classe de forma correta aplican do o encapsulamento ao atributo saldo Questão 3 Classe Pessoa com Getters e Setters crie uma classe chamada Pessoa com os atributos nome String e idade int to dos privados Após isso implemente métodos get e set para ambos os atributos permitindo acessar e modificar seus valores de forma controlada public class Conta private double saldo public Void sacardouble valor saldo valor 49 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Questão 4 Papel dos Métodos Get e Set explique o papel dos métodos get e set no processo de encapsulamento Em que situ ações é interessante customizar esses métodos por exemplo vali dando dados antes de atribuílos ou formatando informações antes de devolvêlas Questão 5 Analisando Encapsulamento na Classe Produto con sidere o código a seguir Agora responda a O atributo preco está corretamente encapsulado Justifique b O que do jeito que o código está impede outro programador de atribuir um preço negativo c Altere o método setPreco para que apenas valores positivos possam ser atribuídos ao atributo preco mantendo a ideia de en capsulamento public class Produto private double preco public Void setPrecodouble p preco p public double getPreco return preco 50 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS Questão 6 Classe Retangulo com Cálculo de Área crie uma classe Retangulo com os atributos privados base e altura Implemente apenas métodos get em que a getBase retorna a base b getAltura retorna a altura e c getArea retorna a área do retângulo base altura calculada a partir dos atributos internos Questão 7 Classe Pedido com Controle de Status implemente uma classe Pedido com os atributos privados numero int valor Total double e status String Adicione os métodos cancelarPedido que altera o status para Cancelado confirmarPagamento que altera o status para Pago O método getStatus deve estar disponível para leitura do status atual do pedido respeitando o encapsulamento do atributo 51 PROGRAMAÇÃO ORIENTADA A OBJETOS CADERNO DE ESTUDOS DEITEL Paul DEITEL Harvey Java Como Programar 10 ed São Pau lo Pearson 2016 GAMMA Erich et al Padrões de Projeto soluções reutilizáveis de soft ware orientado a objetos Porto Alegre Bookman 2000 GOSLING James JOY Bill STEELE Guy The Java Language Specifi cation Sun Microsystems 1995 HORSTMANN Cay Conceitos de Computação com Java 5 ed Porto Alegre Bookman 2009 LISKOV Barbara WING Jeannette A behavioral notion of subtyping ACM SIGPLAN Notices v 33 n 1 p 3145 1994 MEYER Bertrand ObjectOriented Software Construction 2 ed New York Prentice Hall 1997 MENDES Douglas Rocha Programação Java com ênfase em Orien tação a Objetos São Paulo Novatec 2009 SCHILDT Herbert Java para iniciantes crie compile e execute pro gramas Java rapidamente 6 ed Porto Alegre Bookman 2015 SILVA Maurício Aniche Orientação a Objetos e SOLID para Ninjas São Paulo Casa do Código 2017 SOUZA Ricardo da Estruturas de Controle e Introdução à Pro gramação em Java Rio de Janeiro Ciência Moderna 2014 REFERÊNCIAS