Resolução

Propaganda
Exercício de POO
Analise a situação descrita abaixo:
Em uma escola de segundo grau, com curso médio e técnico, a diretoria especificou um software para manter
informações de seus alunos conforme o diagrama UML abaixo. Utilizando a linguagem Java, desenvolver todas as
classes do diagrama, com a devida atenção para:
a.
b.
c.
d.
encapsular obrigatoriamente todos os atributos;
implementar a sobrecarga de métodos construtores em pelo menos uma das classe;
providenciar a implementação dos métodos get e set necessários às classes
Para um aluno do curso médio, o método informarMedia() devolve somente a média do curso médio, comum
a todos os alunos do segundo grau. Já para um aluno do curso técnico, o mesmo método devolve a média
aritmética entre a média do curso médio e a média do curso técnico.
A partir do código abaixo, desenvolva uma aplicação para calcular a potência de quatro ( x 4 ) de um número inteiro
entre 1 e 200, inclusive, digitado pelo usuário. Se esta condição não for atendida, o sistema deverá tratar a exceção e
enviar uma mensagem para o usuário utilizando uma janela de diálogo. A potência calculada também deverá ser
apresentada em uma janela de diálogo.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CalculaPotencia extends JFrame {
private JButton btnCalcular;
private JTextField txtBase;
private JLabel lblBase;
public CalculaPotencia() {
setLayout(new FlowLayout());
lblBase = new JLAbel("Digite a base");
add(lblBase);
txtBase = new JTextField(10);
add(txtBase);
btnCalcular = new JButton("Calcular Potência");
add(btnCalcular);
// Implementar a chamada do evento
}
// Implementar a Classe que trata o evento
1-6
public static void main( String args []){
CalculaPotencia aplicacao = new CalculaPotencia();
aplicacao.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
aplicação.setSize(300,150);
aplicacao.setVisible(true);
}
} // fim da classe CalculaPotencia
Crie uma aplicação em Java para manipular instâncias das classes AlunoMedio e AlunoTecnico criadas na primeira
questão. Esta aplicação deve:

instanciar objetos das classes envolvidas com valores definidos pelo teclado;
Ex:
Aluno do médio: Nome = Carlos, Matrícula = 1000, Média = 8.0 , Código da Disciplina = 100, Descrição =
História
Aluno do técnico: Nome = Jennifer, Matrícula = 2000, Media = 9.5, Código da Disciplina = 201, Descrição =
Eletrônica , Média do Técnico = 6.5

apresentar os dados dos alunos e suas médias implementando, obrigatoriamente, o conceito de polimorfismo.
2-6
Resolução
1o Item
package base;
public abstract class Aluno {
private String nome;
// construtor com um argumento
public Aluno( String no ){
nome = no;
}
// configura o nome
public void setNome( String no ) {
nome = no;
}
// retorna o nome
public String getNome() {
return nome;
}
// métodos abstratos a serem sobrescritos pelas subclasses
public abstract double informarMedia();
}
package escolatecnica;
public class Disciplina {
private int codigo;
private String descricao;
public Disciplina (int cod, String desc){
codigo = cod;
descricao = desc;
}
public void setCodigo (int cod){
codigo = cod;
}
// Retorna matricula
public void setDescricao (String desc) {
descricao = desc;
}
}
package escolatecnica;
import base.*;
public class AlunoSegundoGrau extends Aluno{
private int matricula;
private double media;
private Disciplina disciplina ;
// constructor da classe com 5 argumentos
public AlunoSegundoGrau (String no, int mat, double med, int cod, String desc) {
super (no);
3-6
setMatricula (mat);
setMedia (med);
disciplina = new Disciplina (cod, desc);
} // fim do construtor
// constructor da classe com 2 argumentos
public AlunoSegundoGrau (String no, int mat) {
super (no);
setMatricula (mat);
} // fim do construtor
// Configura matrícula
public void setMatricula (int mat){
matricula = mat;
}
// Retorna matricula
public int getMatricula () {
return matricula;
}
// Configura media do médio
public void setMedia(double med){
if (med < 0 ) med = 0.0;
else media = med;
}
// Retorna media do médio
public double getMedia() {
return media;
}
public double informarMedia() {
return media;
}
}
package escolatecnica;
import base.*;
public class AlunoMedio extends AlunoSegundoGrau{
// construtor com 5 argumentos
public AlunoMedio (String no, int mat, double med, int cod, String desc) {
super(no, mat, med, cod, desc);
} // fim do construtor
}
package escolatecnica;
import base.*;
public class AlunoTecnico extends AlunoSegundoGrau{
private double mediaTecnico;
// construtor com seis argumentos
public AlunoTecnico (String no, int mat, double med, int cod, String desc, double medT) {
super (no, mat, med, cod, desc);
setMediaTecnico (medT);
} // fim do construtor
4-6
// configura o atributo MediaTecnico
public void setMediaTecnico (double mT) {
if ( mediaTecnico < 0.0 ) mediaTecnico = 0.0;
else mediaTecnico = mT ;
}
// retorna o atributo média do técnico
public double getMediaTecnico() {
return mediaTecnico;
}
// retorna o resultado do cáculo da média do aluno técnico
public double informarMedia() {
return ( getMedia() + mediaTecnico) / 2;
}
}
2o Item
// Implementação da chamada do evento
TrataBotao tratador = new TrataBotao();
btnCalcular.addActionListener(tratador);
// Implementação da Classe que trata o evento
private class TrataBotao implements ActionListener {
public void actionPerformed(ActionEvent evento){
if (event.getSource() == btnCalcular){
try{
btnCalcularClick(evento);
}
catch (Exception e){
JOptionPane.showMessageDialog(null,e.getMessage(),"CalculaPotência",
JOptionPane.ERROR_MESSAGE);
}
}
}
}
private void btnCalcularClick( ActionEvent ev) throws Exception{
int base = 0;
try{
base = Integer.parseInt(txtBase.getText());
}
catch( Exception e ){
JOptionPane.showMessageDialog(null,"Você deve digitar um número!!!",
"Calcula Potência", JOptionPane.ERROR_MESSAGE );
return;
}
if( (base < 1) || (base >200) )
throw new Exception( "Número deve ser entre 1 e 200 inclusive!!!" );
else{
int potencia = base * base * base * base;
JOptionPane.showMessageDialog( null, "Potência quarta =" + potencia,
"Calcula potência", JOptionPane.PLAIN_MESSAGE );
5-6
}
}
}
3o Item
import
import
import
import
base.Aluno;
escolatecnica.AlunoMedio;
escolatecnica.AlunoTecnico;
java.util.Scanner;
public class TestaAlunos{
public static void main( String args[] )
{
String nome,descricao;
int mat, cod;
double med, medT;
Scanner entrada = new Scanner(System.in);
System.out.println("Digite o nome do Aluno do curso Médio");
nome = entrada.nextLine();
System.out.println("Digite a matricula");
mat = entrada.nextInt();
System.out.println("Digite média");
med = entrada.nextDouble();
System.out.println("Digite o codigo da disciplina");
cod = entrada.nextInt();
System.out.println("Digite a descricao da disciplina");
descricao = entrada.nextLine();
AlunoMedio
alunoM = new
AlunoMedio ( nome, mat, med, cod, descricao );
System.out.println("Digite o nome do Aluno do curso Técnico");
nome = entrada.nextLine();
System.out.println("Digite a matricula");
mat = entrada.nextInt();
System.out.println("Digite média");
med = entrada.nextDouble();
System.out.println("Digite o codigo da disciplina");
cod = entrada.nextInt();
System.out.println("Digite a descricao da disciplina");
descricao = entrada.nextLine();
System.out.println("Digite média do técnico");
medT = entrada.nextDouble();
AlunoCTecnico
alunoT = new AlunoTecnico ( nome, mat, med, cod, descricao, medT);
// cria uma array alunos de dois elementos
Aluno alunos[] = new Aluno[ 2 ];
// inicializa o vetor com alunos
alunos[ 0 ] = alunoM;
alunos[ 1 ] = alunoT;
for ( Aluno alunoCorrente : alunos )
{
System.out.printf
("A
média
final
do
aluno
é
alunoCorrente.informarMedia() );
} // final do for
} // fim de main
}
6-6
:
%.1f\n\n",
Download