Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução a classes, objetos e métodos Apresentação Diversos elementos marcam a evolução da programação orientada a objetos (POO). Entre os principais, estão as classes que abrigam elementos. Os elementos são denominados métodos e são caracterizados por seus atributos, que são semelhantes. Para o desenvolvimento com base em uma linguagem orientada a objetos como o Java, é importante aplicar os métodos, definindo tanto os dados quanto os códigos que operam sobre eles, ou seja, classes são como um plano que determinam como o objeto será criado. Basicamente, os métodos especificam os mecanismos pelos quais a classe ou um objeto pode operar a partir de uma instância. É fundamental compreender como um programa é constituído. De maneira geral, todos os objetos em Java são acessados por meio de classes e objetos. O estudo sobre os conceitos importantes acerca desses componentes facilita o processo de desenvolvimento de software. Nesta Unidade de Aprendizagem, você vai conhecer conceitos importantes sobre classes, objetos e métodos. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Definir classes, objetos e métodos.• Construir uma classe com seus elementos com o auxílio de uma linguagem de POO.• Criar objetos.• Infográfico A POO tem o propósito de representar sistemas de diferentes complexidades por meio do uso de estruturas hierárquicas e o relacionamento entre os objetos. As unidades básicas são os objetos, porém precisam ser aplicados em conjunto com métodos e classes para permitir a troca de mensagens e as atividades propostas pela linguagem de programação. No Infográfico a seguir, você vai compreender conceitos importantes sobre os componentes que fazem parte da POO. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://statics-marketplace.plataforma.grupoa.education/sagah/aa22974c-283f-4eb9-9f56-199b3e7040f5/85706459-c787-4966-aa50-f2507bd28d7b.png Conteúdo do livro O paradigma de POO é fundamentado na construção de classes, que têm elementos que definem e manipulam dados. Portanto, para a construção de um sistema orientado a objetos, é necessário ter o conhecimento desses fundamentos. Acompanhe um trecho da obra Java para iniciantes, base teórica para esta Unidade de Aprendizagem, que traz uma abordagem sobre classes, atributos e métodos. O domínio desses conceitos é vital para o desenvolvimento de softwares. Boa leitura. Atualizado para JAVA SE 8 (JDK 8) Java para iniciantes Crie, compile e execute programas Java rapidamente Herbert Schildt Catalogação na publicação: Poliana Sanchez de Araujo – CRB 10/2094 S334j Schildt, Herbert. Java para iniciantes : crie, compile e execute programas Java rapidamente [recurso eletrônico] / Herbert Schildt ; tradução: Aldir José Coelho Corrêa da Silva ; revisão técnica: Maria Lúcia Blanck Lisbôa. – 6. ed. – Porto Alegre : Bookman, 2015. Editado como livro impresso em 2015. ISBN 978-85-8260-337-6 1. Linguagem de programação - Java. I. Título. CDU 004.438Java O autor O autor de best-sellers Herbert Schildt escreve incansavelmente sobre programação há quase três décadas e é uma das principais autoridades na linguagem Java. Seus livros de programação venderam milhões de cópias no mundo inteiro e foram tra- duzidos para diversos idiomas. É autor de vários livros sobre Java, incluindo Java: The Complete Reference, Herb Schildt’s Java Programming Cookbook e Swing: A Beginner’s Guide. Ele também escreveu sobre C, C++ e C#. Embora tenha interesse em todas as áreas da computação, seu foco principal são as linguagens de progra- mação, incluindo compiladores, interpretadores e linguagens de controle robótico. Também tem grande interesse na padronização de linguagens. Schildt tem gradua- ção e pós-graduação pela Universidade de Illinois. Seu site é www.HerbSchildt.com. O editor técnico Dr. Danny Coward trabalhou em todas as edições da plataforma Java. Ele conduziu a definição dos Java Servlets para a primeira versão da plataforma Java EE e para além dela, os serviços web para a plataforma Java ME, e a estratégia e planejamento de Java SE 7. Fundou a tecnologia JavaFX e, mais recentemente, projetou o maior acréscimo feito ao padrão Java EE 7, a API Java WebSocket. Da codificação em Java ao projeto de APIs com especialistas da indústria e ao trabalho por vários anos como executivo do Java Community Process, ele adquiriu uma perspectiva singularmente ampla de vários aspectos da tecnologia Java. Além disso, é autor de JavaWebSo- cket Programming e de um livro ainda a ser publicado sobre Java EE. Dr. Coward tem graduação, mestrado e doutorado em Matemática pela Universidade de Oxford. Capítulo 4 Introdução a classes, objetos e métodos 101 Principais habilidades e conceitos • Saber os fundamentos da classe • Entender como os objetos são criados • Entender como as variáveis de referência são atribuídas • Criar métodos, retornar valores e usar parâmetros • Usar a palavra-chave return • Retornar um valor de um método • Adicionar parâmetros a um método • Utilizar construtores • Criar construtores parametrizados • Entender new • Entender a coleta de lixo e os finalizadores • Usar a palavra-chave this ..................................................................................................................................... Antes de poder se adiantar mais em seu estudo de Java, você precisa conhecer a classe. Classe é a essência de Java. Ela é a fundação na qual toda a linguagem Java se estrutura, porque define a natureza de um objeto. Como tal, ela forma a base da programação orientada a objetos em Java. Dentro de uma classe, são definidos dados e o código que age sobre eles. O código fica contido em métodos. Já que as classes, objetos e métodos são fundamentais para Java, eles serão introduzidos neste capítulo. Ter um entendimento básico desses recursos permitirá que você escreva programas mais sofisticados e compreenda melhor certos elementos-chave de Java descritos no próximo capítulo. Fundamentos das classes Já que toda a atividade dos programas Java ocorre dentro de uma classe, temos usado classes desde o início deste livro. É claro que só classes extremamente simples foram usadas e não nos beneficiamos da maioria de seus recursos. Como você verá, elas são significativamente mais poderosas do que as classes limitadas apresentadas até agora. Comecemos examinando o básico. Uma classe é um modelo que define a for- ma de um objeto. Ela especifica tanto os dados quanto o código que operará sobre eles. Java usa uma especificação de classe para construir objetos. Os objetos são instâncias de uma classe. Logo, uma classe é basicamente um conjunto de planos 102 Java para Iniciantes que especifica como construir um objeto. É importante deixar uma coisa bem clara: uma classe é uma abstração lógica. Só quando um objeto dessa classe é criado é que existe uma representação física dela na memória. Outro ponto: lembre-se de que os métodos e variáveis que compõem uma clas- se são chamados de membros da classe. Os membros de dados também são chama- dos de variáveis de instância. Forma geral de uma classe Quando definimos uma classe, declaramos sua forma e natureza exatas. Fazemos isso especificando as variáveis de instância que ela contém e os métodos que operam sobre elas. Embora classes muito simples possam conter apenas métodos ou apenas variáveis de instância, a maioria das classes do mundo real contém ambos. Uma classe é criada com o uso da palavra-chave class. Uma forma geral sim- plificada de uma definição class é mostrada aqui: class nome da classe { // declara variáveis de instância tipo var1; tipo var2; // ... tipo varN; // declara métodos tipo método1(parâmetros) { // corpo do método } tipo método2(parâmetros) { // corpo do método } // ... tipo métodoN(parâmetros) { // corpo dométodo } } Embora não haja essa regra sintática, uma classe bem projetada deve definir apenas uma entidade lógica. Por exemplo, normalmente, uma classe que armazena nomes e números de telefone não armazena também informações sobre o mercado de ações, a média pluviométrica, os ciclos das manchas solares ou outros dados não relacionados. Ou seja, uma classe bem projetada deve agrupar informações logi- camente conectadas. A inserção de informações não relacionadas na mesma classe desestruturará rapidamente seu código! Até o momento, as classes que usamos tinham apenas um método: main( ). Você verá como criar outros em breve. No entanto, observe que a forma geral de uma classe não especifica um método main( ). O método main( ) só é necessário quando a classe é o ponto de partida do programa. Alguns tipos de aplicativos Java, como os applets, também precisam de um método main( ). Capítulo 4 Introdução a classes, objetos e métodos 103 Definindo uma classe Para ilustrar as classes, desenvolveremos uma classe que encapsula informações so- bre veículos, como carros, furgões e caminhões. Essa classe se chama Vehicle e con- terá três informações sobre um veículo: o número de passageiros que ele pode levar, a capacidade de armazenamento de combustível e o consumo médio de combustível (em milhas por galão). A primeira versão de Vehicle é mostrada a seguir. Ela define três variáveis de instância: passengers, fuelcap e mpg. Observe que Vehicle não contém método. Logo, atualmente é uma classe só de dados. (Seções subsequentes adicionarão mé- todos a ela.) class Vehicle { int passengers; // número de passageiros int fuelcap; // capacidade de armazenamento de combustível em galões int mpg; // consumo de combustível em milhas por galão } Uma definição class cria um novo tipo de dado. Nesse caso, ele se chama Vehi- cle. Você usará esse nome para declarar objetos de tipo Vehicle. Lembre-se de que uma declaração class é só uma descrição de tipo; ela não cria um objeto real. Logo, o código anterior não faz nenhum objeto de tipo Vehicle passar a existir. Para criar realmente um objeto Vehicle, você usará uma instrução como a mos- trada abaixo: Vehicle minivan = new Vehicle(); // cria um objeto Vehicle chamado minivan Após essa instrução ser executada, minivan será uma instância de Vehicle. Portanto, terá realidade “física”. Por enquanto, não se preocupe com os detalhes da instrução. Sempre que você criar uma instância de uma classe, estará criando um objeto contendo sua própria cópia de cada variável de instância definida pela classe. Logo, todos os objetos Vehicle conterão suas próprias cópias das variáveis de instância passengers, fuelcap e mpg. Para acessar essas variáveis, você usará o operador pon- to (.). O operador ponto vincula o nome de um objeto ao nome de um membro. A forma geral do operador ponto é mostrada aqui: objeto.membro Portanto, o objeto é especificado à esquerda e o membro é inserido à direita. Por exemplo, para atribuir o valor 16 à variável fuelcap de minivan, use a instrução a seguir: minivan.fuelcap = 16; Em geral, podemos usar o operador ponto para acessar tanto variáveis de instância quanto métodos. Este é um programa completo que usa a classe Vehicle: /* Um programa que usa a classe Vehicle. Chame este arquivo de VehicleDemo.java */ class Vehicle { 104 Java para Iniciantes int passengers; // número de passageiros int fuelcap; // capacidade de armazenamento de combustível em galões int mpg; // consumo de combustível em milhas por galão } // Essa classe declara um objeto de tipo Vehicle. class VehicleDemo { public static void main(String args[]) { Vehicle minivan = new Vehicle(); int range; // atribui valores a campos de minivan minivan.passengers = 7; minivan.fuelcap = 16; minivan.mpg = 21; // calcula a autonomia presumindo um tanque cheio de gasolina range = minivan.fuelcap * minivan.mpg; System.out.println("Minivan can carry " + minivan.passengers + " with a range of " + range); } } Você deve chamar o arquivo que contém o programa de VehicleDemo.java, porque o método main( ) está na classe chamada VehicleDemo e não na classe cha- mada Vehicle. Quando compilar esse programa, verá que dois arquivos .class foram criados, um para Vehicle e um para VehicleDemo. O compilador Java insere auto- maticamente cada classe em seu próprio arquivo .class. Não é necessário as classes Vehicle e VehicleDemo estarem no mesmo arquivo-fonte. Você pode inserir cada classe em seu próprio arquivo, chamados Vehicle.java e VehicleDemo.java, respec- tivamente. Para executar o programa, você deve executar VehicleDemo.java. A saída a seguir é exibida: Minivan can carry 7 with a range of 336 Antes de avançar, examinemos um princípio básico: cada objeto tem suas pró- prias cópias das variáveis de instância definidas por sua classe. Logo, o conteúdo das variáveis de um objeto pode diferir do conteúdo das variáveis de outro. Não há co- nexão entre os dois objetos exceto pelo fato de serem do mesmo tipo. Por exemplo, se você tiver dois objetos Vehicle, cada um terá sua própria cópia de passengers, fuelcap e mpg, e o conteúdo dessas variáveis será diferente entre os dois objetos. O programa abaixo demonstra esse fato. (Observe que a classe que tem main( ) agora se chama TwoVehicles.) // Este programa cria dois objetos Vehicle. class Vehicle { int passengers; // número de passageiros int fuelcap; // capacidade de armazenamento de combustível em galões Observe o uso do operador ponto para o acesso a um membro. Capítulo 4 Introdução a classes, objetos e métodos 105 int mpg; // consumo de combustível em milhas por galão } // Essa classe declara um objeto de tipo Vehicle. class TwoVehicles { public static void main(String args[]) { Vehicle minivan = new Vehicle(); Vehicle sportscar = new Vehicle(); int range1, range2; // atribui valores a campos de minivan minivan.passengers = 7; minivan.fuelcap = 16; minivan.mpg = 21; // atribui valores a campos de sportscar sportscar.passengers = 2; sportscar.fuelcap = 14; sportscar.mpg = 12; // calcula a autonomia presumindo um tanque cheio de gasolina range1 = minivan.fuelcap * minivan.mpg; range2 = sportscar.fuelcap * sportscar.mpg; System.out.println("Minivan can carry " + minivan.passengers + " with a range of " + range1); System.out.println("Sportscar can carry " + sportscar.passengers + " with a range of " + range2); } } A saída produzida por esse programa é mostrada aqui: Minivan can carry 7 with a range of 336 Sportscar can carry 2 with a range of 168 Como você pode ver, os dados de minivan são totalmente diferentes dos contidos em sportscar. A ilustração a seguir mostra essa situação. minivan passengers 7 fuelcap 16 mpg 21 passengers 2 fuelcap 14 mpg 12 sportscar Lembre-se de que minivan e sportscar referenciam objetos separados. 106 Java para Iniciantes Como os objetos são criados Nos programas anteriores, a linha abaixo foi usada para declarar um objeto de tipo Vehicle: Vehicle minivan = new Vehicle(); Essa declaração faz duas coisas. Em primeiro lugar, ela declara uma variável chamada minivan da classe Vehicle. Essa variável não define um objeto. Em vez disso, ela pode apenas referenciar um objeto. Em segundo lugar, a declaração cria uma cópia física do objeto e atribui à minivan uma referência a ele. Isso é feito com o uso do operador new. O operador new aloca dinamicamente (isto é, aloca no tempo de execução) memória para um objeto e retorna uma referência a ele. Essa referência é, mais ou menos, o endereço do objeto na memória alocado por new. A referência é então armazenada em uma variável. Logo, em Java, todos os objetos de uma classe devem ser alocados dinamicamente. As duas etapas da instrução anteriorpodem ser reescritas desta forma para mostrarmos cada etapa individualmente: Vehicle minivan; // declara uma referência ao objeto minivan = new Vehicle(); // aloca um objeto Vehicle A primeira linha declara minivan como referência a um objeto de tipo Vehicle. Por- tanto, minivan é uma variável que pode referenciar um objeto, mas não é um objeto. Por enquanto, minivan não referencia um objeto. A próxima linha cria um novo ob- jeto Vehicle e atribui à minivan uma referência a ele. Agora, minivan está vinculada a um objeto. Dica do professor Projetar um software é como projetar uma casa. Tanto a engenharia civil quanto a de software têm um esquema ou desenho. Na engenharia civil, é chamado de desenho arquitetônico ou planta; na engenharia de software, de arquitetura ou design, todos incluídos na fase de projeto. Logo, é essencial saber interpretar tais desenhos. Na Dica do Professor, aprenda como implementar uma classe denominada “Media”, definindo atributos e métodos para calcular a média aritmética entre duas notas. Será utilizada uma caixa de mensagens para imprimir o resultado. O exemplos será realizado por meio da importação da classe JOptionPane do pacote swing do Java, com o uso da ferramenta Astah Community que utiliza as notações UML (linguagem unificada de modelagem). Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/b24abb8daf3af45078ff6415eb69fc6b Exercícios 1) A POO é um paradigma de programação com base no conceito de "objetos" que podem assumir dados na forma de campos, também conhecidos como propriedades de um código. Métodos e classes também são importantes na POO. Em relação ao papel das classes, assinale a resposta correta. A) Classes têm um papel irrelevante na POO. B) É a partir das classes que a linguagem orientada a objetos se estrutura. C) Classes são boas práticas de programação. D) Dentro de uma classe, são escritos todos os comentários de uma aplicação. E) Uma classe é, basicamente, um conjunto de planos que especifica como construir um pacote. 2) Um objeto é instanciado por meio de uma classe. A diferença é que um objeto em Java é a entidade física e lógica, ao passo que uma classe em Java é considerada apenas como uma entidade lógica. Em relação à forma geral de uma classe, assinale a resposta correta. A) Uma classe é criada com o uso da palavra-chave public. B) É impossível usar comentários dentro de uma classe. C) Uma classe é criada com a palavra-chave class. D) Os parênteses são caracteres que delimitam o bloco da classe. E) Palavras reservadas podem ser usadas para nomear classes. Um dos maiores desafios da POO é satisfazer o cliente, entregando um produto de qualidade. No entanto, a maior vantagem está na forma como suas características possibilitam minimizar a complexidade no desenvolvimento e na manutenção de software, aumentando a produtividade durante o processo de desenvolvimento. 3) Os objetos são os elementos básicos da POO. Sobre os objetos e suas características, assinale a resposta correta. A) São uma abstração lógica. B) São compostos por estado e comportamento. C) É necessário seguir a especificação de um objeto para criar uma classe. D) No código: Cliente cli = new Cliente(); new é o método construtor da classe. E) Não há comunicação entre objetos dentro de um sistema orientado a objetos. Na linguagem de programação Java, a visibilidade padrão dos objetos, classes, atributos e métodos está limitada ao mesmo conjunto de elementos, ou seja, todos devem estar inseridos em um mesmo pacote. No código-fonte, a palavra-chave public modifica a visibilidade, excluindo as restrições e tornando o código mais amplo. Analise o código a seguir e selecione a afirmativa correta: public class Veiculo { private String placa; private String cor; private int anoFabricacao; public String getPlaca() { return placa; } public void setPlaca(String placa) { this.placa = placa; } public String getCor() { return cor; } public void setCor(String cor) { this.cor = cor; } public int getAnoFabricacao() { 4) return anoFabricacao; } public void setAnoFabricacao(int anoFabricacao) { this.anoFabricacao = anoFabricacao; } } A) A classe Veiculo tem quatro variáveis de instância. B) As palavras-chave this em this.cor, this.placa e this.anoFrabricacao informam ao método que estamos nos referindo à variável de instância. C) A palavra void é necessária para a criação de todos os métodos. D) As variáveis de instância da classe Veiculo poderão ser visualizadas por qualquer outra classe da aplicação. E) O código está incorreto, pois métodos e variáveis de instância não são elementos de uma classe. 5) A POO foi criada como uma alternativa para a programação estruturada, trazendo proximidade entre as "coisas" do mundo real e os objetos, criados no mundo virtual para refletir a realidade. Um objeto é algo genérico que pode definir qualquer coisa tangível. Quais são os componentes implementados para realizar algum tipo de tarefa? A) Classes. B) Instância. C) Atributos. D) Métodos. E) Comentários. Na prática A POO é um padrão de desenvolvimento de software suportado por diversas linguagens e muito utilizado no mercado em diferentes contextos, entre eles aplicativos web, mobile e games. Neste Na Prática, acompanhe um exemplo de criação de classes e objetos que reflete na inserção de elementos a partir de elementos da programação. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://statics-marketplace.plataforma.grupoa.education/sagah/9d0bb18c-1a0b-41ba-8a53-a18a78db363d/3a76abee-fa85-4ee6-a763-f37173b789ea.png Saiba + Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Poo – Java (Aula 1 – Classes, objetos, atributos e métodos) Aprenda como criar um objeto, uma classe e definir seus atributos e métodos. O vídeo traz conceitos práticos, implementando um código-fonte em Java que lhe auxiliará a desenvolver conhecimentos básicos na POO. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. Orientação a objetos em Java Esta sessão visa a ensinar os conceitos do paradigma de orientação a objetos. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. Curso de Java – Introdução à orientação a objetos Aprenda a criar uma classe com atributos. Este vídeo contém as instruções para criar um objeto com operador new e uma abordagem sobre a criação de estruturas do código-fonte na memória. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://www.youtube.com/embed/ohmHbdUhAGc https://www.javaprogressivo.net/p/orientacao-objetos-em-java.html https://www.youtube.com/embed/cVQ3bGsBvQY
Compartilhar