Introduo ao uso de classes Prof Ricardo Linden

  • Slides: 74
Download presentation
Introdução ao uso de classes Prof. Ricardo Linden Classes e Objetos 1

Introdução ao uso de classes Prof. Ricardo Linden Classes e Objetos 1

Voltando ao passado. . . Ä Vamos rever os conceitos de orientação a objetos,

Voltando ao passado. . . Ä Vamos rever os conceitos de orientação a objetos, de forma genérica, mas nos preparando para implementá-los em Java. Ä Seria interessante ler o capítulo 4 do livro texto Core Java 2 - V. 1 - Fundamentos Cornell, Gary; Horstmann, Cay Ed. Makron Books Classes e Objetos 2

Programação Orientada a Objetos Ä A POO surgiu a partir da idéia de identificar

Programação Orientada a Objetos Ä A POO surgiu a partir da idéia de identificar dentro de um problema as suas partes componentes, que seriam os objetos. Ä Cada objeto realiza uma série de atividades e expõe para o mundo somente uma pequena interface. Ä Isto quer dizer que o objeto é uma abstração de um determinado processo/entidade. Classes e Objetos 3

Abstração Ä Abstração é o termos que descreve escolher o que é importante sobre

Abstração Ä Abstração é o termos que descreve escolher o que é importante sobre nossos objetos quando temos o objetivo de resolver um determinado problema. Ä É o processo de descrever as características essenciais de um objeto no mundo l l A cor de um carro não é importante quando estamos desenvolvendo um modelo de direção Entretanto, a cor é extremamente importante quando estamos determinando um modelo de fabricação. Classes e Objetos 4

Definição Formal Abstração “Uma abstração descreve as características essenciais de um objeto; aquelas que

Definição Formal Abstração “Uma abstração descreve as características essenciais de um objeto; aquelas que o distinguem de todos os outros tipos de objeto e fornece assim para aquele que analisa um sistema fronteiras conceituais bem definidas. ” --Booch, 1994 Isto é: a abstração descreve o que nós pensamos que é importante em um objeto, os aspectos que nos fazem incluí-lo em nossos sistemas. Classes e Objetos 5

Classes Ä O que é uma classe? Ø“Uma classe é um conjunto de objetos

Classes Ä O que é uma classe? Ø“Uma classe é um conjunto de objetos que possuem uma estrutura e um comportamento em comum. --Booch 1994 ØLula, Fernando Henrique, Itamar e Collor são todos membros da mesma classe ØTodas as TVs Sony XPD-4582 TVs são da mesma classe Classes e Objetos 6

Classes Ä Será que Lula e Fernando Henrique são da mesma classe? l l

Classes Ä Será que Lula e Fernando Henrique são da mesma classe? l l Se a abstração em que estamos pensando é “presidentes da república” então sim. Se a abstração em que estamos pensando diferencia entre presidentes de partidos distintos, então não. Ä O processo de abstração define se o que é uma classe e que objetos fazem parte dela. Classes e Objetos 7

Classe Ä A classe de um objeto também é chamada às vezes de seu

Classe Ä A classe de um objeto também é chamada às vezes de seu tipo. Ä Em Java, assim como em outras linguagens OO, uma classe é um modelo que descreve o que os objetos desta classe podem fazer. l Por exemplo, a classe TV informa quais estados um objeto desta classe pode assumir e a que métodos ele vai responder. Ä Cada instância de uma classe (objeto) possui suas próprias cópias das variáveis de estado. l Exceto no caso das variáveis estáticas (membros de classe) Classes e Objetos 8

O que é um objeto? Ä Um objeto no mundo - seja um carro,

O que é um objeto? Ä Um objeto no mundo - seja um carro, um avião ou um computador, normalmente são coisas que associamos a substantivos. Ä Não necessariamente associamos objetos a coisas concretas. Outros objetos possíveis são conta corrente, mensagem de e-mail, um pedido, uma conexão telefônica, etc. Ä Para qualificar um objeto normalmente precisamos de três coisas: l Um estado l Um comportamento l Uma identidade Classes e Objetos 9

Objetos Ä O estado consiste do valor das propriedades de um objeto: l l

Objetos Ä O estado consiste do valor das propriedades de um objeto: l l Um avião pode ter seus motores ligados ou desligados, pode estar a uma determinada altura, velocidade e direção, ter assentos ocupados, etc. Uma conexão via internet pode estar ativa ou não, ter mandado e recebido n bytes, estar estabelecida a uma certa velocidade, com um certo protocolo, etc. Classes e Objetos 10

Classes e Objetos Ä A classe é um molde que podemos usar para criar

Classes e Objetos Ä A classe é um molde que podemos usar para criar novas isntâncias de objetos (como se fosse uma receita ou uma planta). Ä A partir das receitas, podemos construir novos porta-aviões, novas TVs, novos projetores, etc. Classes e Objetos 11

Classes e Objetos Receita Classe Aircraft. Carrier • pode • possui üset. Velocidade üvelocidade

Classes e Objetos Receita Classe Aircraft. Carrier • pode • possui üset. Velocidade üvelocidade üset. Num. Avioes ünúm. de aviões üset. Leme üleme Instâncias (Objetos) Nimitz Vinson set. Num. Avioes set. Velocidade Num. Avioes Leme set. Velocidade set. Leme set. Num. Avioes Velocidade Num. Avioes Leme set. Leme Classes e Objetos 12

Relacionamentos entre objetos Ä Objetos podem ter três tipos de relacionamentos: l l l

Relacionamentos entre objetos Ä Objetos podem ter três tipos de relacionamentos: l l l “is-a” relacionamento do tipo herança. Exemplo : cadeira “isa” móvel. “has-a” relacionamento em que um objeto contém outro como parte de seus atributos. Exemplo : pedido “has-a” item. “uses-a” relacionamento em que um objeto faz uso de serviços providos por outra classe ou objeto. Exemplo: nossos programas até agora “uses-a” classe JDOption. Pane. Classes e Objetos 13

Métodos Ä Métodos podem ser pensados como sendo os verbos associados aos nossos objetos:

Métodos Ä Métodos podem ser pensados como sendo os verbos associados aos nossos objetos: l Um pedido pode ser enviado, cancelado, atualizado, etc. l Uma conexão pode ser desfeita, desacelerada, etc. l Um avião pode decolar, aterrisar, virar à esquerda, etc. Ä Um método também pode ser pensado como uma forma de alterar o estado de um objeto: l Pressionar o botão de liga/desliga muda o estado de uma TV. l Move o leme de um navio altera sua direção. The Roosevelt has Classes e Objetos 14

Métodos Ä Métodos, em uma programação OO bem feita, são a “epiderme” de um

Métodos Ä Métodos, em uma programação OO bem feita, são a “epiderme” de um objeto Ä Para acessar ou alterar um estado dentro de um objeto, precisamos usar um método Objeto Projetor set. Força set. Resolução Força Resolução Brilho set. Brilho Classes e Objetos 15

Encapsulamento Ä Quando só podemos acessar o estado de um objeto através de seus

Encapsulamento Ä Quando só podemos acessar o estado de um objeto através de seus métodos, dizemos que estamos usando encapsulamento. Ä Por que usar isto? l l Impede que outros atribuam valores inválidos para o estado do objeto, como colocar uma resolução inválida para o projetor ou tentar acelerar o avião para uma velocidade que ele não alcança Permite que alteremos as estruturas de dados internas de um objeto sem afetar os outros métodos que o acessam. Por exemplo, imagine que 500 objetos mudassem o valor do canal da TV e nós mudássemos o seu armazenamento de um byte para dois. Ä Isto também é chamado de “information hiding” Classes e Objetos 16

Encapsulamento Ä O encapsulamento é a base da boa programação orientada a objetos. Ä

Encapsulamento Ä O encapsulamento é a base da boa programação orientada a objetos. Ä Fazendo objetos bem encapsulados, nós garantimos sua reusabilidade e a boa manutenibilidade de todos nossos sistemas. Ä Muitos dirão que uma boa programação estruturada também é bem encapsulada e também atinge os objetivos de se fazer bons códigos. Ä Isto é verdade, mas a programação imperativa fornece vários mecanismos para se burlar este tipo de boa prática, especialmente quando falamos de grandes projetos em que muitos programadores estão envolvidos. Classes e Objetos 17

Definição Formal Encapsulamento “Encapsulamento é o processo de compartimentalização dos elementos que constituem a

Definição Formal Encapsulamento “Encapsulamento é o processo de compartimentalização dos elementos que constituem a estrutura e o comportamento de um objeto, servindo para separar a interface contratual da sua implementação --Booch 1994 Isto é: é a forma de garantir que podemos mudar a vontade o funcionamento interno de um objeto sem alterar sua face externa (interface com o mundo) Classes e Objetos 18

Encapsulamento Ä Um objeto encapsulado deve ser pensado como uma caixa preta Ä Seus

Encapsulamento Ä Um objeto encapsulado deve ser pensado como uma caixa preta Ä Seus algoritmos internos são escondidos do cliente (aquele que o usa), que apenas pode invocar os métodos definidos na interface. Métodos Cliente Dados Classes e Objetos 19

Encapsulamento Tendo em vista que nosso objetivo é sempre fazer os melhores sistemas possíveis,

Encapsulamento Tendo em vista que nosso objetivo é sempre fazer os melhores sistemas possíveis, nós vamos sempre procurar criar classes e objetos que respeitem o preceito básico do encapsulamento. Todos os slides a seguir partem deste pressuposto! Classes e Objetos 20

Abstração e Encapsulamento Ä A abstração diz como um objeto deve se relacionar com

Abstração e Encapsulamento Ä A abstração diz como um objeto deve se relacionar com o mundo. l Uma boa abstação garante que nossas classes fazem aquilo que é necessário para resolver o problema que temos em mãos. Ä O Encapsulamento garante que o mundo não tem nenhuma relação ou conhecimento do que acontece dentro de um objeto. l Um bom encapsulamento garante que nosso código é de boa qualidade e pode ser reutilizado. Classes e Objetos 21

Quais Métodos? Ä Como decidir quais métodos vamos colocar em uma classe? Ä Os

Quais Métodos? Ä Como decidir quais métodos vamos colocar em uma classe? Ä Os método definem o comportamento de um objeto, isto é, o que ele é capaz de fazer. Ä Os métodos também representam a interface de um objeto com o mundo, ou seja, o que o mundo pode pedir ao objeto. Ä Por exemplo l Uma conta bancária tem uma lista de coisas que podem ser realizadas com ela, como abrir, fechar, depositar, sacar, etc. Classes e Objetos 22

Identidade Ä Nem todos os objetos são iguais, mesmo que pertençam a uma mesma

Identidade Ä Nem todos os objetos são iguais, mesmo que pertençam a uma mesma classe: l O retroprojetor que estamos usando não é o mesmo que está sendo usado em outra turma, mesmo que seja da mesma marca e modelo. L Minha conta bancária não é igual à do Bill Gates Classes e Objetos 23

Identidade Nimitz set. Num. Avioes set. Velocidade Num. Avioes Leme set. Leme Roosevelt Vinson

Identidade Nimitz set. Num. Avioes set. Velocidade Num. Avioes Leme set. Leme Roosevelt Vinson set. Num. Avioes set. Velocidade Num. Avioes Leme set. Leme Classes e Objetos 24

Definição Formal Identidade “Identidade é a propriedade de um objeto que o distingue de

Definição Formal Identidade “Identidade é a propriedade de um objeto que o distingue de forma inequívoca de outro objeto --Booch 1994 De forma geral objetos são identificados de forma unívoca pelas suas variáveis de referência, que são usualmente chamadas de seus nomes Entretanto, cuidado ao chamar assim, pois elas só se apontam para um objeto, não sendo iguais a ele. Classes e Objetos 25

Resumo de objetos Ä Objetos possuem l l l estados é um conjunto de

Resumo de objetos Ä Objetos possuem l l l estados é um conjunto de características de cada objeto. Mudar o estado de um objeto não altera o estado de outro objeto. comportamento define o que o objeto é capaz de fazer identidade é o que permite que nos referenciemos separadamente a cada objeto. Ä Encapsulamento esconde do mundo como implementamos o estado que é alterado pelo comportamento que lhe apresentamos. Classes e Objetos 26

Escrevendo as classes. . . Ä Agora vamos começar a aplicar estes conceitos dentro

Escrevendo as classes. . . Ä Agora vamos começar a aplicar estes conceitos dentro do Java. Ä Seria interessante ler o capítulo 4 do livro texto Core Java 2 - V. 1 - Fundamentos Cornell, Gary; Horstmann, Cay Ed. Makron Books Não estou insistindo só por teimosia. Começar a trabalhar com orientação a objetos não é fácil! Os conceitos podem ser extremamente confusos à primeira vista. Classes e Objetos 27

Lembrando : Classes Ä São o elemento básico da programação orientada a objeto, tanto

Lembrando : Classes Ä São o elemento básico da programação orientada a objeto, tanto em Java quanto em qualquer outra LPOO. Ä A classe define as estruturas (variáveis de instância) de um objeto e sua interface funcional (métodos). Ä Uma classe é a planta/receita de um objeto Ä É o modelo a partir do qual cada objeto é criado. l Por exemplo, a classe String é usada para definir objetos String l Cada objeto String contem caracteres específicos (seu estado). l Cada objeto String pode realizar serviços (ter comportamentos) tais como to. Upper. Case, length, concant, etc. Classes e Objetos 28

Lembrando : Objetos Ä Um objeto tem: l l estado - características descritivas (atributos)

Lembrando : Objetos Ä Um objeto tem: l l estado - características descritivas (atributos) comportamento - o que ele pode fazer ou o que pode ser feito com ele (métodos) Ä Por exemplo, seja uma moeda que pode ser jogada para cima de forma que resulte em “cara” ou “coroa” Ä O estado é o último resultado Ä O comportamento é o fato de poder ser jogada. Ä Note que apenas o comportamento pode mudar o seu estado! Classes e Objetos 29

Classes Ä Algumas classes, como a classe String já existem dentro da biblioteca padrão

Classes Ä Algumas classes, como a classe String já existem dentro da biblioteca padrão de classes do Java. Ä Nós podemos querer escrever nossas próprias clases para definir objetos específicos para nossas necessidades. Ä Por exemplo, poderíamos querer escrever uma classe que simule uma moeda. Ä A partir desta classe nós poderíamos criar muitos objetos diferentes representando várias moedas (mais ou menos como a casa da moeda, que faz um molde e depois funde várias cópias). Classes e Objetos 30

Classes Ä Uma classe contém declarações de atributos e declarações de métodos. int x,

Classes Ä Uma classe contém declarações de atributos e declarações de métodos. int x, y; char ch; Declarações de atributos (dados) Declarações de Método Classes e Objetos 31

Classes Ä Um dos atributos de uma classe pode ser um objeto de outra

Classes Ä Um dos atributos de uma classe pode ser um objeto de outra classe String s; int a[]; Declarações de atributos. Note que ambos são objetos de outras classes Ä Isto representa um tipo relacionamento especial chamado “has-a” (possui), que será discutido com todo o cuidado mais adiante. Classes e Objetos 32

Escrevendo métodos Ä Uma declaração de método especifica o código que será executado quando

Escrevendo métodos Ä Uma declaração de método especifica o código que será executado quando o método é invocado (chamado) Ä Quando um método é invocado, o flxuo de controle vai para dentro dele e executa seu código (exatamente igual a um procedimento ou função em linguagem imperativa) Ä Quando o método termina, o fluxo retorna para a instrução seguinte àquela que chamou-o. Ä A invocação pode retornar um valor ou não, dependendo de como o método foi definido. Classes e Objetos 33

Fluxo de Controle em um Método Ä O método chamado pode ser dentro da

Fluxo de Controle em um Método Ä O método chamado pode ser dentro da mesma classe. Ä Neste caso, somente o nome do método é necessário. compute my. Método(); Classes e Objetos 34

Fluxo de Controle em um Método Ä O método chamado pode ser parte de

Fluxo de Controle em um Método Ä O método chamado pode ser parte de outra classe ou objeto. Ä Neste caso temos que qualificar o nome do método chamado usando o nome do objeto que o possui e o ponto (o chamado dot operator). main obj. do. It(); do. It help. Me(); Classes e Objetos 35

Declaração de Método Ä Toda declaração de um método começa com o cabeçalho do

Declaração de Método Ä Toda declaração de um método começa com o cabeçalho do método char calc (int num 1, int num 2, String message) Nome do Método Tipo de retorno Lista de parâmetros ÄA lista de parâmetros especifica o tipo e o nome de cada parâmetro. ÄO nome de cada parâmetro na declaração do método é chamado de argumento formal ÄNenhuma diferença para funções em programação imperativa. Classes e Objetos 36

Declaração de Método Ä O cabeçalho do método é seguido pelo corpo do método

Declaração de Método Ä O cabeçalho do método é seguido pelo corpo do método char calc (int num 1, int num 2, String message) { int sum = num 1 + num 2; char result = message. char. At (sum); return result; Äsum e result variáveis locais } A expressão retornada deve ser consistente com o tipo de retorno definido no cabeçalho. Classes e Objetos são ÄElas são criadas cada vez que o método é chamado, e são destruídas quando ele termina sua execução. 37

Statement return Ä O tipo de retorno de um método indica o tipo do

Statement return Ä O tipo de retorno de um método indica o tipo do valor que o método retorna para a instrução que o chamou. Ä Um método que não retorna valor nenhum tem um tipo de retorno void Ä O statement return especifica o valor que será retornado. Ä A expressão deve ser conforme com o tipo definido no cabeçalho. Classes e Objetos 38

Retornando objetos Ä Um método pode retornar qualquer tipo de dados, incluindo de classes

Retornando objetos Ä Um método pode retornar qualquer tipo de dados, incluindo de classes que sejam criados por nós. Ä Dado que todos os objetos são alocados dinamicamente usando o new, um objeto continua a existir mesmo quando o método no qual ele foi criado termina. Ä Quem “morre” ao fim do escopo é a variável de referência. Ä O objeto só vai morrer quando ninguém mais faz referência a ele (automatic garbage collection). Classes e Objetos 39

Parâmetros Ä Cada vez que um método é chamado, os argumentos reais na chamada

Parâmetros Ä Cada vez que um método é chamado, os argumentos reais na chamada são copiados para os argumentos formais: ch = obj. calc (25, count, "Hello"); char calc (int num 1, int num 2, String message) { int sum = num 1 + num 2; char result = message. char. At (sum); return result; } Classes e Objetos 40

Escrevendo classes Ä Às vezes um objeto deve interagir com outros objetos do mesmo

Escrevendo classes Ä Às vezes um objeto deve interagir com outros objetos do mesmo tipo. Ä Por exemplo, quando queremos comparar duas strings, nós fazemos o seguinte: if s 1. equals(s 2); Ä Um objeto (s 1) executa o método e o outro (s 2) é passado como parâmetro Classes e Objetos 41

Exemplo de Classe public class Moeda { public final int HEADS = 0; public

Exemplo de Classe public class Moeda { public final int HEADS = 0; public final int TAILS = 1; private int face; public Moeda () public void flip() {flip(); } {face = (int) (Math. random() * 2); } public int get. Face() {return face; } public String to. String() { String face. Name; if (face == HEADS) { face. Name = "Heads"; } else {face. Name = "Tails"; } return face. Name; } } Classes e Objetos 42

Sobrecarga de Métodos Ä A sobrecarga de métodos é o processo de usar o

Sobrecarga de Métodos Ä A sobrecarga de métodos é o processo de usar o mesmo nome de método em vários métodos diferentes. Ä A assinatura de cada versão do método sobrecarregado deve ser única. Ä A assianatura inclui o número, o tipo e a ordem dos parâmetros, mas não o tipo de retorno. Ä O compilador deve ser capaz de determinar qual versão do métdo será chamada apenas analisando os parâmetros que lhe são passados Classes e Objetos 43

Sobrecarga de Métodos Versão 1 Versão 2 float try. Me (int x) { return

Sobrecarga de Métodos Versão 1 Versão 2 float try. Me (int x) { return x +. 375; } float try. Me (int x, float y) { return x*y; } Chamada result = try. Me (25, 4. 32) Classes e Objetos 44

Sobrecarga de Métodos Ä Um método que usamos sempre, o println é sobrecarregado: println

Sobrecarga de Métodos Ä Um método que usamos sempre, o println é sobrecarregado: println (String s) println (int i) println (double d) etc. Ä As linhas a seguir chamam as diferentes versões do método println: System. out. println ("The total is: "); System. out. println (total); Classes e Objetos 45

Sobrecarga de Métodos Ä Construtores também podem ser sobrecarregados. Ä Um construtor sobrecarregado permite

Sobrecarga de Métodos Ä Construtores também podem ser sobrecarregados. Ä Um construtor sobrecarregado permite que tenhamos várias maneiras de inicializar um objeto de acordo com o contexto. Ä Como em todos os métodos, a assinatura de cada construtor deve ser distinta de todos os outros. Classes e Objetos 46

Lembrando : Construtores Ä Como vimos na aula 1, um construtor é um método

Lembrando : Construtores Ä Como vimos na aula 1, um construtor é um método especial que é chamado para configurar um objeto quando da sua criação. Ä Quando escrever um construtor, lembre-se: l ele te o nome da classe. l Ele não retorna valor l Ele não tem tipo de retorno, nem mesmo void l É nele onde se inicializam as variáveis das instâncias. Ä Não é obrigatório definir um construtor para uma classe. Classes e Objetos 47

Construtor • O construtor é chamado quando executamos o operador new. • Ele é

Construtor • O construtor é chamado quando executamos o operador new. • Ele é um método que inicializa um objeto imediatamente após a sua criação. • Construtores não tem nenhum tipo de retorno (nem mesmo void). • A maioria das classes define seus próprios construtores, mas o Java fornece um construtor padrão se um não for definido. Classes e Objetos 48

O operador new Ä O operador new cria uma única instância de uma classe

O operador new Ä O operador new cria uma única instância de uma classe nomeada e retorna uma referência para este objeto. Classvariable objectreference = new classname() Ä O statement é composto de dua partes: (1) Classvariable objectreference declara uma variável de referência para um objeto daquela classe (referência esta que tem valor null) (2) objectreference = new classname() aloca memória para o objeto e atribui aquele endereço à variável de referência. Classes e Objetos 49

Variáveis de Instância Ä A variável face na classe Moeda é denominada variável de

Variáveis de Instância Ä A variável face na classe Moeda é denominada variável de instância pois cada instância (objeto) da classe Moeda terá uma cópia separada dele. Ä Uma declaração da classe simplesmente declara o tipo do dado, mas não reserva espaço para ele. Ä Cada vez que um objeto da classe Moeda é criado, um anova variável face também é criada. Ä Os objetos da classe têm as mesmas definições de métodos, mas têm espaços de memória próprios. l Só assim eles podem ter estados diferentes! Classes e Objetos 50

Variáveis de Instância Ä Os dados são parte da declaração dentro de uma classe

Variáveis de Instância Ä Os dados são parte da declaração dentro de uma classe se sua declaração estiver dentro das chaves ( { } ) da declaração da classe. Ä As declarações devariáveis de instância têm a mesma sintaxe da declaração de variáveis locais. Ä A diferença é que as variáveis de instância são declaradas fora do escopo de todos os métodos de uma classe. Classes e Objetos 51

Variáveis de Instância moeda 1 classe moeda face int face; 0 moeda 2 face

Variáveis de Instância moeda 1 classe moeda face int face; 0 moeda 2 face Classes e Objetos 1 52

Lembrando : Encapsulamento Ä Podemos ter duas vistas de um objeto : l l

Lembrando : Encapsulamento Ä Podemos ter duas vistas de um objeto : l l interna - a estrutura de seus dados e os algoritmos de seus métodos. externa - a interação do objeto com outros objetos do sistema. Ä Do ponto de vista externo, um objeto deve ser uma entidade encapsulada que provê serviços específicos, que definem a interface do objeto. Ä Tudo que não for visível na interface deve ser escondido do resto do sistema. Classes e Objetos 53

Lembrando : Encapsulamento Ä Os métodos de um objeto deve ser os únicos autorizados

Lembrando : Encapsulamento Ä Os métodos de um objeto deve ser os únicos autorizados a modificar seu estado. Ä Devemos fazer com que seja difícil, se não impossível, que outro objeto possa alterar o objeto sem passar pelos seus métodos. Ä O usuário, ou cliente, de um objeto deve poder requisitar seus serviços (chamar seus métodos), mas não deve saber como estes serviços são realizados. Classes e Objetos 54

Modificadores de Visibilidade Ä No Java, nós fazemos o encapsulamento através do uso dos

Modificadores de Visibilidade Ä No Java, nós fazemos o encapsulamento através do uso dos modificadores de visibilidade apropriados. Ä Um modificador é uma palavra reservada do Java que especifica uma característica particular de um método ou atributo. • Por exemplo, nós usamos o modificador final para definir uma constante. Ä Java tem três modificadores de visibilidade básicos: • public • private • protected Classes e Objetos 55

Modificadores de Visibilidade Ä Membros de uma classe que são declarados com visibilidade public

Modificadores de Visibilidade Ä Membros de uma classe que são declarados com visibilidade public podem ser acessados de qualquer ponto. Ä Membros de uma classe que são declarados com visibilidade private só podem acessados de dentro da própria classe. Ä Membros declarados sem modificadores de visibilidade têm a chamada visibilidade padrão (default), que consiste em poder ser acessados por qualquer classe dentro do mesmo pacote. Classes e Objetos 56

Modificadores de Visibilidade Ä De forma geral, nenhum atributo deveria ser declarado como público.

Modificadores de Visibilidade Ä De forma geral, nenhum atributo deveria ser declarado como público. Ä Métodos que realizam os serviços do objeto devem ser declarados como públicos, para que possam ser invocados pelos clientes. Estes métodos públicos são muitas vezes chamados de métodos de serviço. Ä Um método criado simplesmente para modularizar seu código e ajudar um método de serviço é chamado de método de suporte e não deve ter visibilidade publica. Classes e Objetos 57

Decompondo métodos Ä Um método deve ser relativamente pequeno, ou pelo menos, o mais

Decompondo métodos Ä Um método deve ser relativamente pequeno, ou pelo menos, o mais compreesível possível. Ä Um método potencialmente grande ou de código compelxo pode ser decomposto em vários métodos menores para aumentar sua clareza. Ä Logo, um método de serviço pode chamar um ou mais métodos de apoio para obtermos este resultado. Classes e Objetos 58

Modificadores de Visibilidade Ä O último destes modificadores é o protected, que impede qualquer

Modificadores de Visibilidade Ä O último destes modificadores é o protected, que impede qualquer outro objeto que não o dono e suas sub-classes acessem aquele elemento. Ä Suas vantagens vão ficar mais claras quando discutirmos herança, mais adiante. Ä Este modificador e o modificador private garantem encapsulamento, não dependendo da boa vontade de ninguém. o C Por isto nós o usamos na classe Moeda. Dado que nós o usamos, precisamos de métodos para pegar os valores dos atributos. Daí a existência do get. Face Classes e Objetos 59

static Ä Este modificador faz com que um membro de uma classe seja definido

static Ä Este modificador faz com que um membro de uma classe seja definido como part da classe, sendo independente de todos os objetos da classe. Ä Nós já vimos isto aplicado a variáveis, mas pode ser usado também em métodos (vide o método main) Ä Este modificador faz com que se crie um membro de classe (atributo ou método) que pode ser referenciado sem chamar um objeto, mas sim uma classe. Ä Exemplo: Math. abs Classes e Objetos 60

main() Ä O método main() é a primeira coisa, após o construtor da classe,

main() Ä O método main() é a primeira coisa, após o construtor da classe, que é chamado quando iniciamos um aplicativo Java. O seu formato é: public static void main(String args[ ]) Ä Public significa que outras classes e objetos podem chamá-lo. Ä Static significa que é um método de classe. Ä Void significa que o método main() não retorna um valor. Ä O parâmetro do método main() consiste nos valores que lhe são passados por linha de comando. Classes e Objetos 61

main() Ä O método main recebe um parâmetro, que consiste em um array contendo

main() Ä O método main recebe um parâmetro, que consiste em um array contendo os parâmetros digitados após o nome da classe sendo executada. Ä O parâmetro args tem um comportamento idêntico a todos os outros arrays de strings em Java. Ä Exemplo: ao executar java classe 1 x y 2. 3, temos o seguinte: • args. length=3 • args[0]=“x” • args[1]=“y” • args[2]=“ 2. 3” Classes e Objetos 62

Dot (. ) Operator Ä O dot(. ) operator é usado para acessar vaiáveis

Dot (. ) Operator Ä O dot(. ) operator é usado para acessar vaiáveis e métodos dentro de um objeto (se forem de instância) ou classe (se forem estáticos) Nome. Objetoou. Classe. nomedavariável Nome. Objetoou. Classe. método(lista-de-parâmetros) Ä Pense nisso como um nome e sobrenome. Dentro da família todos são conhecidos pelo nome (dentro da própria classe um avariável/método é conhecido só pelo seu nome), mas fora da família precisamos do nome e do sobrenome (fora da classe/objeto precisamos do dot operator) Classes e Objetos 63

Manipulando uma Pessoa Ä Vamos analisar os conceitos que vimos até agora analisando a

Manipulando uma Pessoa Ä Vamos analisar os conceitos que vimos até agora analisando a classe Pessoa. Ä Em uma abstração possível, um objeto da classe pessoa poderia ser da seguinte forma: nome age Sobrenome Classes e Objetos 64

Manipulando uma Pessoa Barreira de encapsulamento nome idade Sobrenome A barreira do encapsulamento protege

Manipulando uma Pessoa Barreira de encapsulamento nome idade Sobrenome A barreira do encapsulamento protege os atributos da classe Pessoa de interferência externa indevida Classes e Objetos 65

Manipulando uma Pessoa • Criamos então métodos para que possamos alterar atributos dentro de

Manipulando uma Pessoa • Criamos então métodos para que possamos alterar atributos dentro de um objeto encapsulado. Alteradores (Mutators) setnome set. Idade set. Sobrenome Classes e Objetos 66

Manipulando uma Pessoa • Métodos são criados para permitir leitura de fora de um

Manipulando uma Pessoa • Métodos são criados para permitir leitura de fora de um objeto encapsulado. Leitores (Getters) getnome get. Idade get. Sobrenome Classes e Objetos 67

Manipulando uma Pessoa Ä Para criar uma instância da classe Pessoa, nós podemos executar

Manipulando uma Pessoa Ä Para criar uma instância da classe Pessoa, nós podemos executar a seguinte instrução dentro de qualquer método, como por exemplo o método main ( ): Person person 1 = new Person( ) ; Ä person 1 é uma variável de referência para um objeto da classe Pessoa, ou para simplificar, um objeto da classe Pessoa. Classes e Objetos 68

Manipulando uma Pessoa get. Idade getnome set. Idade get. Sobrenome set. Sobrenome Person 1

Manipulando uma Pessoa get. Idade getnome set. Idade get. Sobrenome set. Sobrenome Person 1 Classes e Objetos 69

Manipulando uma Pessoa Lembre-se : o operador new cria uma única instância de uma

Manipulando uma Pessoa Lembre-se : o operador new cria uma única instância de uma classe nomeada e retorna uma referência a este objeto Sua sintaxe é: Classname variable = new Classname( ) A variável de referência criada é de escopo local, mas o objeto para o qual ela aponta não! Classes e Objetos 70

Manipulando uma Pessoa Ä O dot (. ) operator é usado para acessar métodos

Manipulando uma Pessoa Ä O dot (. ) operator é usado para acessar métodos dentro de um objeto (isto é, métodos que pertencem a um objeto e a ele se aplicam) Ä Sua sintaxe é: Nomedo. Objeto. método (lista-de-parâmetros) Classes e Objetos 71

Exemplo de alteradores: Classe Pessoa get. Idade set. Idade get. Sobrenome setnome getnome person

Exemplo de alteradores: Classe Pessoa get. Idade set. Idade get. Sobrenome setnome getnome person 1. setnome (“John”); person 1. set. Sobrenome (“Smith”); person 1. set. Idade (21); set. Sobrenome Classes e Objetos 72

Exemplo de leitores: Classe Pessoa get. Idade set. Idade get. Sobrenome setnome getnome set.

Exemplo de leitores: Classe Pessoa get. Idade set. Idade get. Sobrenome setnome getnome set. Sobrenome String s=person 1. getnome; String s 2=person 1. get. Sobrenome; int i=person 1. get. Idade; Classes e Objetos 73

Exemplo de Classe public class Ponto { protected int x, y; public Ponto() Propriedades

Exemplo de Classe public class Ponto { protected int x, y; public Ponto() Propriedades encapsuladas dentro do objeto. Só com métodos apropriados elas podem ser acessadas de fora do objeto. {set. Ponto( 0, 0 ); } public Ponto( int x. Coordinate, int y. Coordinate ) {set. Ponto( x. Coordinate, y. Coordinate ); } public void set. Ponto( int x. Coordinate, int y. Coordinate ) { x = x. Coordinate; y = y. Coordinate; } } public int get. X() {return x; } public int get. Y() {return y; } Construtor polimórfico como as assinaturas são diferentes, durante a execução o construtor apropriado é chamado. Métodos alteradores única maneira de alterar o valor de x e y de fora do objeto Métodos leitores são públicos e do mesmo tipo de x e y. Única maneira de um objeto externo à classe Ponto obter o valor de x e y. Classes e Objetos 74