Persistência com herança

0 respostas
Mariana.Vecci
Olá gente, fiz a algun meses um programa que era uma loja de video games, mas fiz com somente a classe videogame e queria utilizar herança agora, criar a super classe produto, e ai sim, ter video game, jogo e acessórios, mas o que me preocupa é como irá ficar o dao que eu tinha feito, acho que ajeitar a interface não deve ser muito problema, uso o postgresql. Aqui estão as classes:
public class VideoGame {

	private int codvg;
	private String modelovg;
	private double precovg;
	private int qtdvg;

	public VideoGame(int codvg, String modelovg, double precovg, int qtdvg) {
		super();
		this.codvg = codvg;
		this.modelovg = modelovg;
		this.precovg = precovg;
		this.qtdvg = qtdvg;
	}

	public int getCodvg() {
		return codvg;
	}

	public void setCodvg(int codvg) {
		this.codvg = codvg;
	}

	public String getModelovg() {
		return modelovg;
	}

	public void setModelovg(String modelovg) {
		this.modelovg = modelovg;
	}

	public double getPrecovg() {
		return precovg;
	}

	public void setPrecovg(double precovg) {
		this.precovg = precovg;
	}

	public int getQtdvg() {
		return qtdvg;
	}

	public void setQtdvg(int qtdvg) {
		this.qtdvg = qtdvg;
	}

	public String toString() {
		return String.format("VideoGame: %d - %s - %s - %s", codvg, modelovg, precovg, qtdvg);
	} 

}
package sql;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import model.VideoGame;

public class AcessoVideoGameDAO implements VideoGameDAO{

	private int id;


	public void inserir(VideoGame vg) throws AcessoVideoGameException
	{
		Connection conexao = null;
		PreparedStatement comando = null;
		try
		{
			conexao = Conexao.getConexao();
			String sql = "INSERT INTO videogame VALUES (?, ?, ?, ?)";
			comando = conexao.prepareStatement(sql);
			comando.setInt(1, vg.getCodvg());
			comando.setString(2, vg.getModelovg());
			comando.setDouble(3, vg.getPrecovg());
			comando.setInt(4, vg.getQtdvg());
			comando.executeUpdate();
			System.out.println(sql);
		}
		catch(SQLException e)
		{
			throw new AcessoVideoGameException("erro de inserção de videgame", e);
		}
		finally
		{
			if(conexao != null)
			{
				try
				{
					conexao.close();
					comando.close();
				}
				catch(SQLException e2)
				{
				}
			}
		}
	}

	public List<VideoGame> buscarTodos() {
		Connection conexao = null;
		PreparedStatement comando = null;
		ResultSet resultado = null;

		try {
			try {
				conexao = Conexao.getConexao();

				String sql = "SELECT * FROM videogame ORDER BY modelovg";
				comando = conexao.prepareStatement(sql);
				resultado = comando.executeQuery();

				List<VideoGame> lista = new ArrayList<VideoGame>();
				while(resultado.next()) {
					int codvg = resultado.getInt("codvg");
					String modelovg = resultado.getString("modelovg");
					Double precovg = resultado.getDouble("precovg");
					int qtdvg = resultado.getInt("qtdvg");
					lista.add(new VideoGame(codvg, modelovg, precovg,qtdvg));
				}
				return lista;
			} finally {
				if (resultado != null) resultado.close();
				if (comando != null) comando.close();
				if (conexao != null) conexao.close();
			}
		} catch(SQLException e) {
			e.printStackTrace();
			throw new AcessoClienteException("erro de busca de videogame", e);
		}
	}

	public int buscaIDVideoGame(String modelo) throws SQLException
	{
		Connection conn = Conexao.getConexao();
		String sql = "SELECT codvg FROM videogame WHERE modelovg = ? ";
		PreparedStatement stmt = conn.prepareStatement(sql);
		stmt.setString(1, modelo);

		ResultSet rs = stmt.executeQuery();

		if(rs.next())
		{
			id = rs.getInt("codvg");
		}
		rs.close();
		stmt.close();
		return id;
	}


}
e aqui seria já com herança:
package model;

public class Produto {
	private int cod;
	private double preco;
	private int qtd;

	public Produto(int cod, double preco, int qtd) {
		super();
		this.cod = cod;
		this.preco = preco;
		this.qtd = qtd;
	}

	public int getCod() {
		return cod;
	}

	public void setCod(int cod) {
		this.cod = cod;
	}

	public double getPreco() {
		return preco;
	}

	public void setPreco(double preco) {
		this.preco = preco;
	}

	public int getQtd() {
		return qtd;
	}

	public void setQtd(int qtd) {
		this.qtd = qtd;
	}

}
package model;

public class VideoGame extends Produto {

	private String modelovg;

	public VideoGame(int cod, double preco, int qtd, String modelovg) {
		super(cod, preco, qtd);
		this.modelovg = modelovg;
	}

	public String getModelovg() {
		return modelovg;
	}

	public void setModelovg(String modelovg) {
		this.modelovg = modelovg;
	}

}
package model;

public class Jogo extends Produto{
	private String genero;

	public Jogo(String genero) {
		super(cod, preco, cod);
		this.genero = genero;
	}

	public String getGenero() {
		return genero;
	}

	public void setGenero(String genero) {
		this.genero = genero;
	}

}

Obrigada!

Criado 18 de março de 2011
Respostas 0
Participantes 1