Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
APOSTILA DE decorre do uso crescente de interfaces gráficas e da arquitetura distribuída dos programas atuais,
características que são adequadamente suportadas pela orientação a objetos.
ORIENTAÇÃO A OBJETOS
cada um deles, temos dados e funções. As funções são denominadas “métodos” e contêm o código
responsável pelos serviços providos pelos objetos. Os dados, por sua vez, só podem ser acessados
através do código presente nos métodos do objeto. Por isso, costuma-se dizer que os dados são
encapsulados“.
COM JAVA
Fernando Albuquerque.
1.1. Objetos
Um objeto representa um ‘elemento’ que pode ser identificado de maneira única. Em nível
apropriado de abstração1, praticamente tudo pode ser considerado como objeto. Assim, elementos
específicos como pessoas, organizações, máquinas ou eventos podem ser considerados objetos.
Um objeto é a instância de uma classe. Os objetos que são instâncias de uma mesma classe
armazenam os mesmos tipos de informações e apresentam o mesmo comportamento.
nome do objeto
PROFª. GILENE DO ESP. STO. BORGES GOMES nome do objeto : nome da classe
MESTRA EM CIÊNCIA DA COMPUTAÇÃO
gilene@gomeshp.com atributo 1 = valor
http://www.gomeshp.com atributo 2 = valor
nome do objeto : nome da classe
1
Exame seletivo de determinados aspectos de um problema.
Operações ou métodos são as funções ou transformações que podem ser aplicados em ou por
um objeto numa classe. Todos os objetos numa classe compartilham os mesmos métodos. Cada Objeto: Empregado A Objeto: Empregado B
método tem um objeto alvo como um argumento implícito. Um método pode ter argumentos em atributos: atributos:
adição ao seu objeto alvo, os quais parametrizam o método. nome = João nome = Ana
endereço = R. Maria 12 endereço = R. D. José 30
O método é parte da classe e não parte do objeto. O método pode não ser parte da classe; mas salário = R$ 300,00 salário = R$ 400,00
ser uma herança2 de uma superclasse na hierarquia de classes. métodos: métodos:
atualizar(nome, end, salário) atualizar(nome, end, salário)
Exemplo de classes com alguns de seus atributos e métodos. buscarDados() buscarDados()
2
Descreve o relacionamento entre classes definidas a partir de outras classes.
A visibilidade define como será o acesso ao atributo ou ao método, e pode ser de três tipos: Abstração é o exame seletivo de determinados aspectos de um problema. O objetivo da
pública, protegida ou privada. abstração é isolar os aspectos que sejam importantes para algum propósito e suprimir os que não o
forem. A abstração deve sempre visar a um propósito, porque este determina o que é e o que não é
+ visibilidade pública: significa que todos têm acesso podendo o atributo e/ou método ser importante.
utilizado por métodos declarados dentro de outras classes. É parte da interface de uma classe e é
visível por qualquer porção do ambiente de sua referência; Abstração é o processo de extrair as características essenciais de um objeto real. A abstração é
necessária para se ter um modelo fiel da realidade sobre o qual se possa operar. O conjunto de
# visibilidade protegida: significa que o atributo e/ou método é acessado através de métodos características resultante da abstração forma um tipo de dados abstrato com informações sobre seu
dentro da mesma classe e por métodos de classes ao longo do pacote no qual a classe é definida; estado e comportamento.
- visibilidade privada: declaração que é parte da interface de uma classe, mas não é visível a A abstração nem sempre produz os mesmos resultados, depende do contexto onde é utilizada,
quaisquer outras classes – o atributo e/ou método pode apenas ser acessado por métodos declarados ou seja, a abstração de um objeto por uma pessoa pode ser diferente na visão de outra. Por exemplo,
dentro da mesma classe. para um mecânico, um carro é caracterizado pela marca, modelo, potência, cilindradas, etc. Já um
usuário comum pode caracterizá-lo pela cor, marca, modelo, consumo e preço. E finalmente, para o
Cliente Departamento de Trânsito, um carro pode ser totalmente caracterizado pela placa, proprietário, marca,
+ cod_cliente: long modelo, cor e número de chassi. Veja a ilustração abaixo.
# sit_cliente: long
- lim_credito: long Ponto de vista
do mecânico do usuário do Dep. trânsito
+ obter_limite( ) : float
# bloquear_cliente( ) Carro Carro Carro
- cancelar_cliente( ) - marca : char[40] - marca : char[40] - marca : char[40]
- modelo : char[40] - modelo : char[40] - modelo : char[40]
- potencia : int - cor : char[20] - cor : char[20]
1.7. Mensagens
- cilindradas : int - consumo : float - dono : char[50]
- preco : float - chassi : char[20]
Os objetos se comunicam entre si através da mensagem. A mensagem especifica que um - placa : char[7] - placa : char[7]
determinado método de um objeto necessita utilizar um ou mais métodos de outro objeto. Podem ser
passados objetos como parâmetro, e, opcionalmente, algum resultado ou valor pode ser retornado. As
mensagens especificam que os métodos devem ser executados, não como estes métodos devem ser
executados. Vamos supor que você vai escrever um aplicativo para uma transportadora que trabalha
Quando um objeto A quer que o objeto B faça uma ação, o objeto A envia uma mensagem ao exclusivamente para uma livraria e cobra por livro, apesar do custo ser baseado no peso. É possível ter
objeto B: “A pede para B fazer Ação” = “A pede para B executar Método 1” uma boa noção do peso de um livro sabendo o número de páginas, o formato e o tipo de capa (dura ou
mole). Portanto, você poderá criar um objeto Livro que tenha essas três características. Já se você
MENSAGEM também for escrever um aplicativo semelhante para a livraria, não poderá aproveitar o mesmo objeto
Livro que você criou, pois a abstração é diferente. Para a livraria, interessam características como
autor, título, assunto, editora, preço, etc. que não interessam à transportadora.
Objeto B Objeto A
Um outro exemplo é sobre o corpo
humano, veja a figura a seguir; para
cada abstração, o foco para observação
é diferente.
As vantagens de se usar objetos como blocos para a construção de aplicações são muitas. Pode- 11. O método main torna a classe executável e por ele é iniciada a execução do programa.
se citar: 12. Criada uma instância da classe JavaOO_0101 com nome x, através da palavra reservada
 Simplicidade: os objetos escondem a complexidade do código. Pode-se criar uma new.
complexa aplicação gráfica usando botões, janelas, barras de rolamento, etc., sem conhecer 13. Execução do método iniciar para o objeto x, passando 10 e 2 como parâmetros.
a complexidade do código utilizado para criá-los. 14. Execução do método mostrarArea para o objeto x.
 Reutilização de código: um objeto, depois de criado, pode ser reutilizado por outras 15. Criada uma instância da classe JavaOO_0101 com nome y, através da palavra reservada
aplicações, ter suas funções estendidas e serem usados como blocos fundamentais em new.
sistemas mais complexos. 16. Execução do método iniciar para o objeto y, passando 5 e 3 como parâmetros.
 Integridade dos dados: devido ao uso do encapsulamento.
17. Execução do método mostrarArea para o objeto y.
1. import javax.swing.JOptionPane; 1. Qual é a principal diferença entre o desenvolvimento de sistemas utilizando a decomposição
2. public class JavaOO_0102 { funcional e o desenvolvimento de sistemas utilizando objetos?
3. private float altura;
2. Quais são os principais conceitos da Orientação a Objetos?
4. private float largura;
5. public void lerDados() { 3. Quais são as vantagens da Orientação a Objetos?
6. altura = Float.parseFloat( 4. Defina classe e objeto? O que são atributos e métodos?
7. JOptionPane.showInputDialog("Digite a altura: ")); 5. Em OO o que especifica uma mensagem?
8. largura = Float.parseFloat( 6. Quais são as possíveis formas de definir o acesso de um atributo ou método? Quais são as
9. JOptionPane.showInputDialog("Digite a largura: ")); diferenças?
10. } 7. Quais as vantagens do encapsulamento?
11. public void calcularPerimetro() { 8. Qual é o objetivo da abstração?
12. float perim = 2 * (altura + largura);
13. JOptionPane.showMessageDialog(null,
14. "Perímetro = " + perim);
15. }
9. Defina as classes, com seus atributos e métodos, para os objetos abaixo:
16. public static void main (String args[]) { a) um gato
17. JavaOO_0102 ret1 = new JavaOO_0102(); b) Gol, carro de uma pessoa
18. JavaOO_0102 ret2 = new JavaOO_0102(); c) "Conceitos de Orientação a Objetos", livro a venda em uma livraria
19. ret1.lerDados(); d) Maria, professora em uma universidade
20. ret1.calcularPerimetro(); e) "Engenharia de software", livro em uma biblioteca
21. ret2.lerDados(); f) Corsa, carro a venda em uma concessionária
22. ret2.calcularPerimetro(); g) João, funcionário de uma universidade
23. System.exit(0); h) uma janela do Windows
24. }
25. }
A seguir será descrito a explicação geral do programa, o que cada linha executa: 10. Crie duas abstrações para cada um dos objetos a seguir:
a) Carro: uma para a concessionária e outra para o departamento de trânsito;
1. Inclui no programa a definição da classe JOptionPane, para possibilitar o uso de b) Pessoa: uma para o patrão e outra para a agência de viagens;
c) Boi: uma para o dono e outra para o frigorífico;
seus métodos;
d) Cachorro: uma para o biólogo e outra para o proprietário.
2. Declarada a classe com nome JavaOO_0102 com qualificador public, que
significa que a classe é pública; acessível por qualquer outra classe;
3. Criado o atributo altura do tipo real e privado;
11. Quanto aos conceitos de orientação a objetos, marque V ou F.
4. Criado o atributo largura do tipo real e privado; a.( ) Um método privado pode ser acessado diretamente por qualquer objeto de outra
5. Criado o método lerDados para que o usuário digite os valores dos atributos; classe.
6. O atributo altura recebe o valor transformado em float, que foi digitado; b.( ) A definição de uma classe reserva espaço de memória para conter todos os seus
7. O método showInputDialog permite a entrada de dados como caracteres; atributos.
8. O atributo largura recebe o valor transformado em float, que foi digitado; c.( ) Um método público pode ser acessado por qualquer método público de sua classe.
d.( ) Um método privado pode ser acessado diretamente por qualquer objeto da classe
11. Criado o método público calcularPerimetro; correspondente.
12. A variável local perim recebe o cálculo do perímetro; e.( ) Os atributos de uma classe devem ser do tipo private; para estar de acordo com a
13. Apresentação do cálculo do perímetro através do método showMessageDialog; OO pura.
f.( ) Um método público pode ser acessado por qualquer método público de outra
16. O método main torna a classe executável e por ele é iniciada a execução do classe.
programa;
17. Criada uma instância da classe JavaOO_0102 com nome ret1;
19. Execução do método lerDados para o objeto ret1;
20. Execução do método calcularPerimetro para o objeto ret1.
13. Usando Java, criar uma classe ContaBancaria que possui Observe os exemplos a seguir:
ContaBancaria
quatro atributos: numero, agencia, cliente e saldo e quatro - numero : char[10] 1. public class Livro0 {
métodos para: - agencia : char[10] 2. private String titulo;
a) entrada de todos os dados da conta; - cliente : char[50] 3. private int pag;
b) apresentar os dados da conta; - saldo : float 4. private float preco;
c) realizar saque do valor informado, se houver saldo; caso
contrário, mostrar mensagem de saldo insuficiente; + entrarDados() 5. public void mostrarDados() {
d) realizar depósito do valor informado. + mostrarDados() 6. System.out.println("Título = " + titulo + "\nPáginas = " +
O programa deve criar um objeto e chamar todos os 7. pag + "\nPreço = " + preco);
+ sacar()
métodos. Escolha a ordem de execução e a quantidade de 8. }
+ depositar()
vezes que cada método será executado.
9. public static void main(String args[]) {
10. Livro0 liv = new Livro0();
11. liv.mostrarDados();
12. System.exit(0);
14. Criar em Java uma classe Funcionário e implementar os Funcionario 13. }
métodos apresentados ao lado. O programa deve criar um - cpf : char[11] 14. }
objeto da classe declarada e executar os seus métodos. - nome : char[50]
Escolha a ordem e a freqüência de execução dos métodos. - horasTrab : float 1. public class Livro0 {
- valorHora : float 2. private String titulo;
+ entrarDados() 3. private int pag;
4. private float preco;
+ mostrarDados()
+ calcularSalario() 5. public Livro() {
+ alterarHoras() 6. titulo = "OO com Java";
+ alterarValor() 7. pag = 459;
8. preco = (float)312.56;
9. }
Nota-se que a diferença entre eles é que no primeiro exemplo não foi definido um método Observando o exemplo abaixo, nota-se que na linha 22 há uma chamada ao método
construtor; assim, o construtor executado é o default, onde os atributos são inicializados com zero para imprimirCheque e será executado o método polimórfico da linha 14 porque não foi passado
tipos de dados numéricos e vazio para caracteres. parâmetros. E na chamada da linha 24 será executado o método polimórfico da linha 17 porque foi
passado o número 10 como parâmetro.
A saída de dados do primeiro exemplo é:
Título = 1. public class Conta {
Páginas = 0 2. private String nConta, nAgencia;
Preço = 0.0 3. private float saldo;
4. private int numCheque;
No segundo exemplo, o método construtor foi definido e será executado quando for instanciada
a classe (na linha 15). Ou seja, os atributos serão inicializados com os valores definidos no método 5. public Conta() {
6. nConta = "1034-5";
construtor.
7. nAgencia = "234-X";
8. saldo = 100000;
A saída de dados do segundo exemplo é: 9. numCheque = 85534;
Título = OO com Java 10. }
Páginas = 459
Preço = 312.56 11. public void mostrarCheque() {
12. System.out.println("\nNº Cheque: " + numCheque);
2.2. Polimorfismo 13. }
1. import javax.swing.JOptionPane;
2. class Reta { 2.3. Exercícios 01
3. private float base, altura;
n O que será apresentado pelo programa abaixo:
4. public Reta() {
5. base = Float.parseFloat( class CA {
6. JOptionPane.showInputDialog("Base: ")); public CA() { System.out.println("ASTRA"); }
7. altura = Float.parseFloat( public void MA1() { System.out.println("CORSA"); }
8. JOptionPane.showInputDialog("Altura: ")); public void MA2() { System.out.println("VECTRA"); }
9. } }
class CB {
10. public void mostrarArea() { public CB() { System.out.println("POLO"); }
11. JOptionPane.showMessageDialog(null, public void MB1() { System.out.println("GOL"); }
12. "Área do Retângulo = " + (base * altura)); public void MA2() { System.out.println("GOLF"); }
13. } }
14. } public class JavaOO_0201 {
public static void main(String args[]) {
15. class Para { CA a = new CA();
16. private float altura, largura, compr; CB b = new CB();
a.MA1();
17. public Para() { a.MA2();
18. altura = Float.parseFloat( b.MB1();
19. JOptionPane.showInputDialog("Altura: ")); b.MA2();
20. largura = Float.parseFloat( }
21. JOptionPane.showInputDialog("Largura: ")); }
22. compr = Float.parseFloat(
23. JOptionPane.showInputDialog("Comprimento: "));
24. } o O que será apresentado pelo programa abaixo:
p Dadas as seguintes classes, o que será apresentado pelo programa abaixo: r Dadas as seguintes classes, o que será apresentado pelo programa abaixo:
q Com base nas classes Uni e Dez do exercício anterior, o que será public void desenhar() {
apresentado pelo programa abaixo: System.out.println("desenhando"); }
s Com base nas classes Circulo e Esfera do exercício anterior, o que será
apresentado pelo programa abaixo : 3. Atributos e Métodos static
public class JavaOO_0206 {
public static void main(String args[]) {
Esfera esfera1 = new Esfera(8); Um atributo ou método do tipo static é utilizado para economizar memória quando uma cópia
esfera1.circular(5); dos dados é suficiente para armazenar o dado, não sendo necessário que cada objeto possua uma cópia.
Circulo circulo1 = new Circulo();
circulo1.circular(4,8); Sugere-se invocar os métodos do tipo static utilizando o nome da classe; porque isso enfatiza
Circulo circulo2 = new Circulo(10); que esse método é da classe, ou seja, static. Desta forma, atributos e métodos static podem ser
circulo2.circular(15,7); utilizados mesmo se nenhum objeto da classe tiver sido ainda instanciado.
esfera1.circular(7);
circulo1.circular(2,9); ExStatic
Todo atributo static é automaticamente inicializado, com seus
esfera1.desenhar();
} valores padrões: zero para numéricos, vazio para caracteres. - num : int
} - qtd : int
Ao lado é apresentada uma classe segundo a notação da UML.
Os atributos e métodos static estão sublinhados. + ExStatic(int n)
+ mostrar()
+ quantificar()
A partir do exemplo a seguir, o atributo static (linha 3) é um
atributo de classe e não do objeto, ou seja, é um único atributo visível
e acessível por qualquer objeto da classe. O método static (linha 11) pode acessar somente atributos
static. Pode-se acessar o método static através de seus objetos (linha 19); ou pela sua classe (linhas 21
e 26); mas, mesmo que a classe não possua objetos, é possível acessá-lo através da classe (linha 15).
3.1. Exercícios 01
4. Relacionamentos
1. Quais são os valores apresentados na tela, pela execução do seguinte programa?
As classes costumam possuir relacionamentos entre si, com o intuito de compartilhar
public class Pessoa { informações e colaborarem umas com as outras para permitir a execução dos diversos processos
private String nome, fone;
executados pelo sistema.
private static int qtd;
public Pessoa(String nm, String fn) { As associações descrevem os vínculos existentes entre as classes; são representadas por retas
nome = nm; fone = fn; qtd++; ligando as classes envolvidas; podem também possuir títulos para determinar o tipo de vínculo
} estabelecido entre as classes; e contém outra informação conhecida como multiplicidade.
public void mostrar() { A multiplicidade procura determinar qual das classes envolvidas em uma associação fornece
System.out.println(nome + " - " + fone); informações para as outras, além de permitir especificar o nível de dependências de uma classe para
} com as outras envolvidas na associação.
public static void existente() {
System.out.println("Existem " + qtd + "pessoas."); A tabela abaixo demonstra alguns dos diversos valores de multiplicidade que podem ser
} utilizados em uma associação:
public static void main(String args[]) {
Pessoa.existente(); Multiplicidade Significado
Pessoa P1 = new Pessoa( "Ana", "321.3210" ); 0...1 No mínimo zero (nenhum) e no máximo um.
Pessoa P2 = new Pessoa( "João", "345.3405" ); Indica que os objetos das classes associadas não precisam obrigatoriamente
Pessoa.existente(); estar relacionados, mas se houver relacionamento indica que apenas uma
P2.mostrar(); instância da classe se relaciona com as instâncias da outra classe.
Pessoa P3 = new Pessoa( "Maria", " " ); 1...1 Um e somente um.
Pessoa P4 = new Pessoa( "Carla", "62 341.3939" );
P3.mostrar(); Indica que apenas um objeto da classe se relaciona com os objetos da outra
P4.existente(); classe.
Pessoa P5 = new Pessoa( "José", "11 334.5678" ); 0...* No mínimo nenhum e no máximo muitos.
P1.mostrar(); Indica que pode ou não haver instâncias da classe participando do
P2.existente(); relacionamento.
Pessoa P6 = new Pessoa( "Cíntia", "21 2334.5678" ); * Muitos.
Pessoa P7 = new Pessoa( "Paulo", "35 345.9876" ); Indica que muitos objetos da classe estão envolvidos no relacionamento.
P7.existente(); 1...* No mínimo 1 e no máximo muitos.
Pessoa P8 = new Pessoa( "Augusto", "33 9986.2217" );
P8.mostrar(); Indica que há pelo menos um objeto envolvido no relacionamento, podendo
Pessoa.existente(); haver muitos envolvidos.
} 3...5 No mínimo 3 e no máximo 5.
} Indica que existem pelo menos 3 instâncias envolvidas no relacionamento e
que podem ser 4 ou 5 as instâncias envolvidas, mas não mais do que isso.
A associação binária é o vínculo entre duas classes. Este tipo de associação constitui-se na mais
comum encontrada nos diagramas de classe.
Pessoa Imóvel
Pedido Itens
- nome : char[30] - local : char[30]
- ender : char[50] 1...* - descri : char[50] - numero : long - pedido : long
- fone : char[15] - tipo : char[10] - cliente : char[50] 1...* - numero : int
Compra
- nasc : date - valor : float - fone : char[15] possui - codprod : long
- data : date - valor : float
+ trabalhar() + alugar()
+ receber() + comprar() + registrar() + consultar()
+ pagar() + vender() + obterTotal()
Um objeto da classe Pessoa pode relacionar-se com várias instâncias da classe Imóvel,
conforme demonstra a multiplicidade *, enquanto que, se existir um objeto da classe Imóvel, ele terá 4.3. Herança
que se relacionar obrigatoriamente com no mínimo um objeto da classe Pessoa ou vários, demonstrado
pela multiplicidade 1..*. Herança ou generalização e especialização é um tipo de associação entre classes, onde os
atributos e métodos definidos na superclasse (a classe mais genericamente definida) são
Sócio Dependente compartilhados pela classe mais especializada, a subclasse. Na subclasse é possível ser feita a
definição de mais atributos e métodos e, também, a redefinição dos métodos que foram herdados pela
- nome : char[30] - nome : char[30]
0...* superclasse. É o aproveitamento e extensão das características de uma classe existente.
- ender : char[50] - nasc : date
- fone : char[15] Possui
- nasc : date A notação utilizada para herança é a interligação das classes envolvidas e um triângulo
próximo a superclasse.
+ registrar()
+ consultar()
4.3.1. Herança Simples
Um objeto da classe Sócio pode relacionar-se ou não com instâncias da classe Dependentes, Na herança simples, a subclasse herda os atributos e métodos de uma única superclasse.
conforme demonstra a multiplicidade 0..*, enquanto que, se existir um objeto da classe Dependente,
ele terá que se relacionar obrigatoriamente com um objeto da classe Sócio, pois, como não foi definida Formato fechado
a multiplicidade na extremidade da classe Sócio, isto significa que a multiplicidade é 1..1.
- corPreench : char[20]
- linhaEspes : float
4.2. Agregação
Outro tipo de associação é a agregação ou todo-parte, onde uma classe representa o todo e uma
ou mais classes representam as partes deste todo. Um agregado (o todo) possui partes, que, por sua
Elipse Polígono
vez, podem ter partes.
- raio : float - qtdLados : int
A notação da agregação é representada pela interligação das classes e um símbolo de losango
próximo a classe que ilustra o todo, além da especificação da multiplicidade.
No exemplo acima, um Formato fechado pode ser uma Elipse ou um Polígono. Tanto a classe
O exemplo abaixo especifica que um acervo é composto por um ou mais livros; e cada livro é Polígono quanto a classe Elipse herdam os atributos da classe Formato fechado. A classe Elipse possui
composto por uma ou mais páginas. ainda o atributo raio e a classe Polígono possui o atributo qtdLados. Portanto, a classe Elipse possui os
1...* 1...*
atributos corPreench, linhaEspes e raio; e a classe Polígono possui os atributos corPreench, linhaEspes
Acervo Livro Página e qtdLados.
- espinha : float - sangue : char Uma classe abstrata é uma classe que não possui instâncias diretas, mas cujas descendentes,
sim. Uma classe concreta é uma classe instanciável; isto é, pode ter instâncias diretas. Uma classe
+ calcificar() + amamentar() direta pode ter subclasses abstratas (mas estas, por sua vez, devem possuir descendentes concretos).
4.4. Exercícios 01
4.5. Exercícios 02
Em programação, a herança ocorre quando uma classe obtém a implementação (atributos e
métodos) de outra classe para desenvolver uma especialização. A herança permite a formação de uma Para cada um dos grupos de classes a seguir; faça e nomeie as associações existentes entre as
hierarquia de classes, onde cada nível é uma especialização do nível anterior, que é mais genérico. classes; determine alguns atributos e métodos.
f)
Lobisomem g)
h)
4.6. Exercícios 03
5. Herança em Java
Identifique os atributos e métodos das classes abaixo e as associações de herança entre elas:
5.1. Herança simples - Exemplo de um programa completo
Mamífero Carro Homem Memória de
Computador Fazer um programa para definir as classes abaixo, observando a implementação da herança
(reaproveitamento de atributos e métodos). Criar um objeto para cada classe e executar todos os
métodos de cada objeto.
Ônibus Avião Menu Vertical Menu
Veiculo Caminhao
RESOLUÇÃO:
Roda Processador Periférico de Polígono
Saída • Criar uma relação de herança entre Caminhão e Veiculo, como apresentado a seguir.
Assim, a subclasse Caminhão aproveita alguns atributos e métodos da superclasse.
• Note que para que a classe caminhão tenha acesso aos atributos, eles devem ser declarados
Carro Motor Ponto Teclado
como protected.
• Há a redefinição do método mostrarDados( ), pois as implementações serão diferentes
para cada classe.
Memória Periféricos Porta Mouse
Veiculo Caminhao
+ Veiculo() + Caminhao()
+ abastecer() + mostrarDados()
+ mostrarDados()
A D A C
# atr1 : float # atr2 : float # atr10 : int # atr20 : int
3. Dadas as classes abaixo, responda o que se pede. CX - atr50 : int
+ mtdA() + mtdD() + mtdA() + mtdC()
a) Atributos da classe CX? # atr1 : float
- atr2 : int + mtdD1()
- met1()
b) Atributos da classe CW? B C D B
# atr2 : float # atr1 : float # atr30 : int # atr10 : int
# atr4 : float # atr2 : float # atr20 : int
c) Métodos da classe CY? # atr5 : int - atr3 : int + mtdD() # atr30 : int
CY + mtdB() + mtdA() # atr40 : int
+ mtdD() + mtdC()
d) Métodos da classe CX? - atr3 : float + mtdA()
+ mtdD1() + mtdD()
+ atr4 : int
+ mtdD1() + mtdB()
# met2() + mtdC()
e) Atributos da classe CY? + met3() + mtdD()
CW
- atr5 : float
- met4()
+ Corrente() + Poupanca()
+ mostrarDados() + mostrarDados()
+ emitirCheque() + calcularRend()
3º)
class UNI {
public UNI() { System.out.println("UM"); }
public void WRITE() { System.out.println("DOIS"); }
public void READ() { System.out.println("TRES"); }
}
class DEZ extends UNI {
public DEZ() { System.out.println("DEZ"); }
public void WRITE() { System.out.println("DEZESSETE"); }
}