Subprogramação e Orientação a Objetos

Documentos relacionados
Orientação a Objetos. Leonardo Gresta Paulino Murta.

Introdução a Orientação a Objetos

Subprogramação. Vanessa Braganholo

Herança e Polimorfismo

Classes e Objetos. Sintaxe de classe em Java

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Organização de programas em Java

Conceitos de Programação Orientada a Objetos

Linguagem de programação Programação Orientada a objetos

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

Linguagem de Programação III

Desenvolvimento Web TCC Turma A-1

Classe Abstrata e Interface

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Linguagem de Programação II Implementação

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Programação Orientada a Objetos JAVA - NETBEANS

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Modelo do Mundo Real. Abstração. Interpretação

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Programação Orientada a Objetos II

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

1 Introdução e Conceitos básicos

CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I

Linguagem de Programação III

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

COMPORTAMENTOS - Observações

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

Modificadores de Acesso JAVA

Introdução. Programação Orientada a Objetos (POO) João Paulo Q. dos Santos

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama]

C com introdução a OO

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Java para Desktop. Programação Orientada à Objetos 2 JSE

Laboratório de programação II

Polimorfismo. O que é polimorfismo?

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Programação Orientada a Objetos

Daniel Wildt

Palavras Reservadas da Linguagem Java

Programação por Objectos. Java

Interfaces e Classes Abstratas

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Linguagem de Programação II Implementação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Vetores Unimensionais

Programação Orientada a Objetos

POO UML e Outros Conceitos. Prof. Vicente Paulo de Camargo

Estruturas de Repetição e String

Estruturas de Repe,ção e String

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

9 Classes Abstractas e Interfaces

Programação Orientada a Objeto (POO)

Programação Orientada a Objetos

Vetores Unimensionais

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Terceira aula

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Programação Orientada a Objetos Flávio de Oliveira Silva 144

Linguagem de Programação IV Introdução

Linguagens de Programação Aula 12

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

AULA 11 PROGRAMAÇÃO ORIENTADA A OBJETOS (INTRODUÇÃO) Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

Programação Orientada a Objetos

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

POO29004 Programação Orientada a Objetos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Subprogramação. Vanessa Braganholo

Operadores e Estruturas de Decisão

Orientação a Objetos e Java

Transcrição:

Subprogramação e Orientação a Objetos Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Aula de hoje Estudaremos três estruturas de encapsulamento da Orientação a Objetos Métodos Classes Pacotes Leonardo Murta Subprogramação e OO 2

Paradigma estruturado Código mais fácil de ler, mas ainda di5cil para sistemas grandes devido a repehção de código Só usa sequência, repehção e decisão O que fazer se for necessário repe8r uma sequência de linhas de código em diferentes locais? Leonardo Murta Subprogramação e OO 3

Encapsulamento Mecanismo uhlizado para lidar com o aumento de complexidade Consiste em exibir o que pode ser feito sem informar como é feito Permite que a granularidade de abstração do sistema seja alterada, criando estruturas mais abstratas Leonardo Murta Subprogramação e OO 4

Paradigma procedimental Sinônimo: paradigma procedural Uso de subprogramação Agrupamento de código permihndo a criação de ações complexas Atribuição de um nome para essas ações complexas Chamada a essas ações complexas de qualquer ponto do programa Essas ações complexas são denominadas procedimentos, sub- rohnas e funções Leonardo Murta Subprogramação e OO 5

Paradigma orientado a objetos (OO) Classes de objetos Agrupamento de procedimentos e variáveis afins Pacotes de classes Agrupamento de classes afins Representam bibliotecas de apoio Leonardo Murta Subprogramação e OO 6

Parte I MÉTODOS Leonardo Murta Subprogramação e OO 7

Exemplo import java.util.scanner; public class IMC { public static void main(string[] args) { Scanner teclado = new Scanner(System.in); Parecidos! } } System.out.print("Entre com a sua altura em metros: "); double altura = teclado.nextdouble(); System.out.print("Entre com a sua massa em kg: "); double massa = teclado.nextdouble(); double imc = massa / Math.pow(altura, 2); System.out.println("Seu IMC é " + imc); Leonardo Murta Subprogramação e OO 8

Exemplo usando método import java.util.scanner; public class IMC { public static double leia(string mensagem) { Scanner teclado = new Scanner(System.in); System.out.print(mensagem); return teclado.nextdouble(); } Declaração do método public static void main(string[] args) { double altura = leia("entre com a sua altura em metros: "); double massa = leia("entre com a sua massa em kg: "); } } double imc = massa / Math.pow(altura, 2); System.out.println("Seu IMC é " + imc); Chamadas ao método Leonardo Murta Subprogramação e OO 9

Dividir para conquistar Antes: um programa gigante Programa Principal Depois: vários programas menores Programa Principal Método A Método C Método B Leonardo Murta Subprogramação e OO 10

Fluxo de execução O programa tem início em um método principal (no caso do Java é o método main) O método principal chama outros métodos Estes métodos podem chamar outros métodos, sucessivamente Ao fim da execução de um método, o programa retorna para a instrução seguinte à da chamada ao método Programa Possível sequencia de chamadas Método Principal Método A Método B Método C Máquina Virtual Java 1 Método Principal 2 4 Método A Método C 3 Método B Leonardo Murta Subprogramação e OO 11

Fluxo de execução Leonardo Murta Subprogramação e OO 12

Fluxo de execução É equivalente ao que acontece quando chamamos um método predefinido do Java Leonardo Murta Subprogramação e OO 13

Vantagens Economia de código Quanto mais repehção, mais economia Facilidade na correção de defeitos Corrigir o defeito em um único local Legibilidade do código Podemos dar nomes mais intuihvos a blocos de código É como se criássemos nossos próprios comandos Melhor tratamento de complexidade Estratégia de dividir para conquistar nos permite lidar melhor com a complexidade de programas grandes Abordagem top- down ajuda a pensar! Leonardo Murta Subprogramação e OO 14

Vamos usar esses modificadores por enquanto Sintaxe de um método Qualquer tipo da linguagem public static int divide(int a, int b) Mesma regra de nome de variável MODIFICADORES TIPO DE RETORNO NOME (ARGUMENTOS) public static void main(string[] args) Significa que não tem retorno Mesma regra de declaração de variáveis, separando por vírgula cada argumento Leonardo Murta Subprogramação e OO 15

Acesso a variáveis Um método não consegue acessar as variáveis de outros métodos Cada método pode criar as suas próprias variáveis locais Os parâmetros para a execução de um método devem ser definidos como argumentos do método Passagem por valor Java copiará o valor de cada argumento para a respechva variável Os nomes das variáveis podem ser diferentes z = calcula(a, b); public static double calcula(int x, int y) Leonardo Murta Subprogramação e OO 16

Exemplo public class Troca { public static void troca(int x, int y) { int aux = x; x = y; y = aux; } public static float media(int x, int y) { return (x + y) / 2f; } public static void main(string[] args) { int a = 5; int b = 7; troca(a, b); System.out.println("a: " + a + ", b: " + b); System.out.println("média: " + media(a,b)); } } Leonardo Murta Subprogramação e OO 17

Sobrecarga de métodos Uma classe pode ter dois ou mais métodos com o mesmo nome, desde que os Hpos de seus argumentos sejam dishntos Isso é úhl quando queremos implementar um método em função de outro Exemplo baseado na classe String: public int indexof(string substring) { } return indexof(substring, 0); Leonardo Murta Subprogramação e OO 18

Métodos sem argumentos Não é necessário ter argumentos nos métodos Nestes casos, é obrigatório ter () depois do nome do método A chamada ao método também precisa conter () Exemplo de declaração: public static void pulalinha() { } System.out.println(); Exemplo de chamada: pulalinha(); Leonardo Murta Subprogramação e OO 19

Exercício Faça uma calculadora que forneça as seguintes opções para o usuário, usando métodos sempre que possível A calculadora deve operar sempre sobre o valor corrente na memória Estado da memória: 0 Opções: (1) Somar (2) Subtrair (3) Multiplicar (4) Dividir (5) Limpar memória (6) Sair do programa Qual opção você deseja? Leonardo Murta Subprogramação e OO 20

Parte II ORIENTAÇÃO A OBJETOS Leonardo Murta Subprogramação e OO 21

Paradigma procedimental versus OO O paradigma procedimental organiza o programa em termos de algoritmos O paradigma OO organiza o programa em termos de objetos Algoritmos Objetos Leonardo Murta Subprogramação e OO 22

AlgoritmosObjetos Podemos criar programa pensando em termos de objetos ao invés de algoritmos? O mundo é composto de objetos Uma loja tem produtos, pedidos, estoque, etc. Um restaurante tem mesas, garçons, comidas, bebidas, etc. Uma universidade tem professores, alunos, disciplinas, etc. Uma rodoviária tem ônibus, passageiros, bagagens, etc. E se criarmos programas basicamente criando objetos equivalentes ao mundo real, e fazendo com que esses objetos se comuniquem? Leonardo Murta Subprogramação e OO 23

Objetos Definição Um objeto é a representação computacional de um elemento ou processo do mundo real Cada objeto possui suas caracterís8cas e seu comportamento Exemplos de Objetos cadeira mesa caneta lápis carro piloto venda mercadoria cliente aula programa computador aluno avião Leonardo Murta Subprogramação e OO 24

Definição Uma caracteríshca descreve uma propriedade de um objeto, ou seja, algum elemento que descreva o objeto. Cada caracteríshca é chamada de atributo e funciona como uma variável pertencente ao objeto Exemplo de caracteríshcas do objeto carro Cor Marca CaracterísHcas de Objetos Número de portas Ano de fabricação Tipo de combushvel Leonardo Murta Subprogramação e OO 25

Comportamento de Objetos Definição Um comportamento representa uma ação ou resposta de um objeto a uma ação do mundo real Cada comportamento é chamado de método e funciona como um procedimento/função pertencente ao objeto Exemplos de comportamento para o objeto carro Acelerar Frear Virar para direita Virar para esquerda Leonardo Murta Subprogramação e OO 26

Mapeamento de Objetos Objeto no Mundo Real Objeto Computacional Características Atributos Comportamento Métodos Leonardo Murta Subprogramação e OO 27

Paradigma Procedimental versus OO (exemplo: Agenda) Paradigma Procedimental Variáveis Vetor de nomes Vetor de endereços Vetor de telefones Procedimentos Listagem de todos os nomes Listagem do endereço dado um nome Listagem do telefone dado um nome Adição de nome, endereço e telefone Remoção de nome, endereço e telefone Paradigma OO Objeto Agenda Atributo Vetor de Contatos Métodos Listagem de Contatos Adição de um Contato Remoção de um Contato Objeto Contato Atributos Nome Endereço Telefone Métodos Exibição de nome, endereço e telefone Edição de nome, endereço e telefone Leonardo Murta Subprogramação e OO 28

Paradigma OO (Exemplo: total da compra) Pedido: 12345 Cliente: João da Silva Endereço: Rua dos Bobos, número zero Item Produto Preço QuanHdade Subtotal 1 Açúcar R$ 2,00 5 R$ 10,00 2 Macarrão R$ 2,50 2 R$ 5,00 3 Feijão R$ 3,00 3 R$ 9,00 TOTAL R$ 24,00 Quais são os objetos participantes do cálculo do total da compra? Leonardo Murta Subprogramação e OO 29

Paradigma OO (Exemplo: total da compra) Pedido: 12345 Cliente: João da Silva Endereço: Rua dos Bobos, número zero Item Produto Preço QuanHdade Subtotal 1 Açúcar R$ 2,00 5 R$ 10,00 2 Macarrão R$ 2,50 2 R$ 5,00 3 Feijão R$ 3,00 3 R$ 9,00 TOTAL R$ 24,00 Item 1 Produto Açúcar 5 2,00 Pedido 12345 Item 2 Produto Macarrão 2 2,50 Item 3 3 Produto Feijão 3,00 Leonardo Murta Subprogramação e OO 30

Paradigma OO (Exemplo: total da compra) Como obter o total da compra? 1. O objeto Caixa pediria ao objeto Pedido seu valor total 2. O objeto Pedido, por sua vez, percorreria todos os seus objetos Item perguntando o seu valor subtotal e somaria esses valores para responder ao objeto Caixa 3. Cada objeto Item perguntaria ao objeto Produto o seu preço e mulhplicaria esse preço pela quanhdade que está sendo comprada, para responder ao objeto Pedido Leonardo Murta Subprogramação e OO 31

Princípios do Paradigma OO Abstração Encapsulamento Modularidade Hierarquia Leonardo Murta Subprogramação e OO 32

Abstração A representação computacional do objeto real deve se concentrar nas caracteríshcas que são relevantes para o problema Fonte: livro Object-Oriented Analysis and Design with Applications Leonardo Murta Subprogramação e OO 33

Abstração São criados somente os atributos e métodos necessários para o problema em mãos Quais seriam os atributos e métodos para o objeto Carro em cada uma das situações seguintes? Sistema de uma locadora de carros Sistema de uma revendedora de carros Sistema de uma oficina mecânica Sistema do DETRAN Leonardo Murta Subprogramação e OO 34

Encapsulamento O objeto deve esconder seus dados e os detalhes de sua implementação Fonte: livro Object-Oriented Analysis and Design with Applications Leonardo Murta Subprogramação e OO 35

Atributos e Métodos Encapsulamento Os métodos formam uma cerca em torno dos atributos Os atributos não devem ser manipulados diretamente Os atributos somente devem ser alterados ou consultados através dos métodos do objeto Leonardo Murta Subprogramação e OO 36

Encapsulamento Métodos Públicos Chamadas de Métodos Métodos e Atributos privados Leonardo Murta Subprogramação e OO 37

Modularidade Um sistema deve ser decomposto em um conjunto altamente coeso e fracamente acoplado de objetos Fonte: livro Object-Oriented Analysis and Design with Applications Leonardo Murta Subprogramação e OO 38

Modularidade Um programa OO é um conjunto de objetos que colaboram entre si para a solução de um problema Objetos colaboram através de chamadas de métodos uns dos outros Carro Freia Motorista Leonardo Murta Subprogramação e OO 39

Hierarquia Os objetos devem ser organizados no sistema de forma hierárquica Fonte: livro Object-Oriented Analysis and Design with Applications Leonardo Murta Subprogramação e OO 40

Hierarquia Objetos herdam atributos e métodos dos seus ancestrais na hierarquia Fonte: livro Object-Oriented Analysis and Design with Applications Leonardo Murta Subprogramação e OO 41

Parte III CLASSES E INTERFACES Leonardo Murta Subprogramação e OO 42

Classes versus Objetos A Classe é o 8po do Objeto Fonte: livro Object-Oriented Analysis and Design with Applications Leonardo Murta Subprogramação e OO 43

Classes versus Objetos Valores têm Hpos primihvos 123 é um valor inteiro True é um valor booleano 12,3 é um valor real Objetos pertencem a classes João, Pedro e Paulo são da classe Pessoa Fusca e Ferrari são da classe Carro Flamengo e Fluminense são da classe Time Tipos PrimiHvos Valores Classes Objetos Leonardo Murta Subprogramação e OO 44

Classes versus Objetos Uma classe é uma fôrma, capaz de produzir objetos Os programadores criam classes, as classes instanciam objetos João, 10 anos, olhos verdes Paulo, 40 anos, olhos castanhos Classe Pessoa Maria, 14 anos, olhos azuis Isabel, 90 anos, olhos verdes Pedro, 56 anos, olhos marrons Leonardo Murta Subprogramação e OO 45

Classes A classe descreve as caracteríshcas e comportamento de um conjunto de objetos Em Java, cada objeto pertence a uma única classe O objeto possuirá os atributos e métodos definidos na classe O objeto é chamado de instância de sua classe A classe é o bloco básico para a construção de programas OO Leonardo Murta Subprogramação e OO 46

Exemplo de Classe public class Carro { private int velocidade; public void acelera() { velocidade++; } Atributos (características) são variáveis globais acessíveis por todos os métodos da classe Métodos (comportamentos) } public void freia() { } velocidade--; Leonardo Murta Subprogramação e OO 47

Criação de objetos A classe é responsável pela criação de seus objetos via método construtor Mesmo nome da classe Sem Hpo de retorno public Carro(int velocidadeinicial) { } velocidade = velocidadeinicial; Leonardo Murta Subprogramação e OO 48

Criação de objetos Objetos devem ser instanciados antes de uhlizados O comando new instancia um objeto, chama o seu construtor Exemplo: Carro fusca = new Carro(10); Carro bmw = new Carro(15); fusca.freia(); bmw.acelera(); fusca = bmw; Qual a velocidade de cada carro em cada momento? O que acontece aqui? Leonardo Murta Subprogramação e OO 49

Criação de objetos Valor null: UHlizado para representar um objeto não inicializado Quando um método retorna um objeto, ele pode retornar null para indicar, por exemplo, que o objeto não foi encontrado É possível atribuir null para descartar um objeto previamente instanciado Exemplo: Carro fusca = new Carro(10); fusca.acelera(); fusca = null; Leonardo Murta Subprogramação e OO 50

Herança Para viabilizar a hierarquia entre objetos, as classes são organizadas em estruturas hierárquicas A classe que forneceu os elementos herdados é chamada de superclasse A classe herdeira é chamada de subclasse A subclasse pode herdar os métodos e atributos de suas superclasses A subclasse pode definir novos atributos e métodos específicos Leonardo Murta Subprogramação e OO 51

Exemplo de herança Veículo Bicicleta Automóvel Navio Avião Furgão Carro Caminhão Trator Leonardo Murta Subprogramação e OO 52

Exemplo de herança Declaração: public class CarroInteligente extends Carro { public void estaciona() { // código mágico para estacionar sozinho } } Uso: CarroInteligente tiguan = new CarroInteligente(10); for (int i = 10; i > 0; i--) { tiguan.freia(); } tiguan.estaciona(); De onde veio isso? Leonardo Murta Subprogramação e OO 53

Exercício IdenHfique as classes e implemente um programa para a seguinte especificação: O supermercado vende diferentes 9pos de produtos. Cada produto tem um preço e uma quan9dade em estoque. Um pedido de um cliente é composto de itens, onde cada item especifica o produto que o cliente deseja e a respec9va quan9dade. Esse pedido pode ser pago em dinheiro, cheque ou cartão. Leonardo Murta Subprogramação e OO 54

Interfaces Tipo especial de classe, que não tem implementação Uma interface define um protocolo Classes podem implementar uma ou mais interfaces Uma interface é um contrato assinado por uma classe A interface define as responsabilidades da classe As responsabilidades são mapeadas em métodos A classe que implementa a interface implementa os métodos A interface contém somente assinatura de métodos e constantes Leonardo Murta Subprogramação e OO 55

Interfaces A definição de uma interface é similar a de uma classe UHlizamos a palavra reservada interface A palavra reservada deve ser seguida do nome da interface Uma interface pode herdar de outras interfaces (extends) A interface possui apenas métodos abstratos e constantes public interface Taxavel { } int ANO_INICIO = 1996; double calculataxa (); Leonardo Murta Subprogramação e OO 56

Classes Abstratas Se uma classe possui algum método sem implementação (abstratos), o modificador abstract deve preceder sua declaração abstract class Carro { <atributos da classe Carro> <métodos comuns da classe Carro> <métodos abstratos da classe Carro> } Leonardo Murta Subprogramação e OO 57

Exemplo public class Ferrari extends Carro implements Taxavel { <atributos da Ferrari> <métodos da Ferrari> <métodos redefinidos de Carro> } <métodos da interface Taxavel> Leonardo Murta Subprogramação e OO 58

Parte III PACOTES Leonardo Murta Subprogramação e OO 59

Pacotes UHlizados para agregar classes relacionadas O pacote de uma classe é indicado na primeira linha da classe Declaração package Se uma classe não declara seu pacote, o interpretador assume que a classe pertence a um pacote default package br.uff.ic; public class Pessoa {... } Leonardo Murta Subprogramação e OO 60

Pacotes Modificadores permitem que determinadas classes sejam visíveis apenas para outras classes do mesmo pacote Leonardo Murta Subprogramação e OO 61

Pacotes Sempre que for usar uma classe de outro pacote, é necessário importar A importação se realiza através da palavra- chave import, seguida do nome da classe desejada As importações são apresentadas antes da declaração da classe mas depois da declaração do pacote package br.uff.ic.prog1; import java.util.scanner; public class Fisica {... } Leonardo Murta Subprogramação e OO 62

Regra de ouro para classes e pacotes Classes devem ser mapeadas em arquivos com o mesmo nome Classe Pessoa Arquivo Pessoa.java Pacotes devem ser mapeados em diretórios Pacote br.uff.ic Diretório br\uff\ic Se o nome completo da classe é br.uff.ic.pessoa Deve haver br\uff\ic\pessoa.java Leonardo Murta Subprogramação e OO 63

Modificadores Retornando aos métodos Estamos até agora usando somente public sta9c O que significam esses modificadores? Quais outros modificadores existem? Passagem de parâmetros O que acontece quando passamos objetos nos argumentos de um método? Leonardo Murta Subprogramação e OO 64

Modificador de visibilidade Indica quem pode acessar o método (ou atributo): O modificador private indica que o método pode ser chamado apenas por outros métodos da própria classe A ausência de modificador é conhecida como package, e indica que o método pode ser chamado somente por classes do mesmo pacote O modificador protected indica que o método pode ser chamado somente por classes do mesmo pacote ou subclasses; O modificador public indica que o método pode ser chamado por qualquer outra classe Leonardo Murta Subprogramação e OO 65

Modificador de escopo Indica a quem pertence o método (ou atributo) Ao objeto (instância) À classe como um todo Métodos estáhcos (sta9c) pertencem à classe como um todo Podem ser chamados diretamente na classe, sem a necessidade de instanciar objetos Só podem manipular atributos estáhcos Leonardo Murta Subprogramação e OO 66

Passagem por valor vs. passagem por referência Algumas linguagens permitem passagem de argumentos por referência Não é o caso de Java, que sempre faz passagem por valor Diferenças Passagem por valor = cópia dos valores para outra posição de memória Passagem por referência = reuso da posição de memória Quando é passado um objeto por valor... Mudanças nos atributos dos objetos são vistas de fora Instanciações de novos objetos nas variáveis não são vistas de fora Leonardo Murta Subprogramação e OO 67

Relações Entre Classes Outras Classes Outras classes podem ser uhlizadas como Hpos dos atributos de uma determinada classe Neste caso, o atributo representa uma relação entre as duas classes O desenvolvedor deve definir a visibilidade da relação, ou seja, quais classes conhecem a relação Leonardo Murta Subprogramação e OO 68

Objetos Atributos Classe A class A { } private B b; Classe B class B { } private A a; Leonardo Murta Subprogramação e OO 69

Polimorfismo Uma subclasse pode redefinir um método herdado Este mecanismo é chamado de polimorfismo O polimorfismo se realiza através da recodificação de um ou mais métodos herdados por uma subclasse Em tempo de execução, o Java saberá qual implementação deve ser usada Leonardo Murta Subprogramação e OO 70

Exercício Faça uma classe Animal com um método abstrato fala Faça as classes Homem, Cão e Gato, herdando de animal, redefinindo o método fala para retornar Oi, Au au e Miau, respechvamente Crie um vetor de 10 Animais e instancie Homens, Cães e Gatos nesse vetor Faça um loop por todos os animais do vetor, pedindo para eles falarem Animal Homem Cão Gato Leonardo Murta Subprogramação e OO 71

Subprogramação e Orientação a Objetos Leonardo Gresta Paulino Murta leomurta@ic.uff.br