Isso seria Composição

2 respostas
F

Fala galera, tudo na paz. Galera eu to tentando implementar composição em java. Aí eu fiz um exemplozinho aqui entre duas classes Professor e Turma. Pelo que eu pesquisei sobre compsição eu cheguei á esses códigos, isso seria composição ou eu inventei coisa.
Quem quiser saber do começo da historia e só entra nesse tópico.

http://www.guj.com.br/posts/list/36812.java

classe Professor

/*
 * Created on 11/07/2006
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package controle.mapeamento;

import java.util.ArrayList;
import java.util.Collection;

/**
 * @author foguinho
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
public class Professor {
	private int codigo;
	private String nome;
	private int idade;
	private Turma turma;
	private Collection turmas =  new ArrayList();

	/**
	 * 
	 */
	public Professor(int codigo,String nome,int idade,int codigoT,String nomeT,String turno) {
		this.codigo=codigo;
		this.nome=nome;
		this.idade=idade;
		turma= new Turma(codigoT,nomeT,turno);
		addTurma(turma);
	}
	/**
	 * @return Returns the codigo.
	 */
	public int getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo
	 *            The codigo to set.
	 */
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return Returns the idade.
	 */
	public int getIdade() {
		return idade;
	}

	/**
	 * @param idade
	 *            The idade to set.
	 */
	public void setIdade(int idade) {
		this.idade = idade;
	}

	/**
	 * @return Returns the nome.
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * @param nome
	 *            The nome to set.
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

    
    public void addTurma(Turma turma) {
		turmas.add(turma);
    }

    public void removeTurma(Turma turma) {
    	((ArrayList) turmas).remove(turma);
    }
    
    //métodos gets e sets referentes a classe Turma
    public int getCodigoDaTurma(){
    	return turma.getCodigoTurma();
    }
    
    public void setCodigoDaTurma(int codigo){
    	turma.setCodigoTurma(codigo);
    }
    
    public String getNomeDaTurma(){
    	return turma.getNomeTurma();
    }
    
    public void setNomeDaTurma(String nome){
    	turma.setNomeTurma(nome);
    }
    
    public String getTurnoDaTurma(){
    	return turma.getTurnoTurma();
    }
    
    public void setTurnoDaTurma(String turno){
    	turma.setTurnoTurma(turno);
    }
    
   
}

classe Turma

/*
 * Created on 11/07/2006
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package controle.mapeamento;

/**
 * @author foguinho
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class Turma {
	private int codigoTurma;
	private String nomeTurma;
	private String turnoTurma;
	
	
	/**
	 * 
	 */
	public Turma() {
	}
	
	/**
	 * 
	 */
	public Turma(int codigoTurma,String nomeTurma,String turnoTurma) {
		this.codigoTurma=codigoTurma;
		this.nomeTurma=nomeTurma;
		this.turnoTurma=turnoTurma;
	}
	/**
	 * @return Returns the codigo.
	 */
	public int getCodigoTurma() {
		return codigoTurma;
	}
	/**
	 * @param codigo The codigo to set.
	 */
	public void setCodigoTurma(int codigoTurma) {
		this.codigoTurma = codigoTurma;
	}
	/**
	 * @return Returns the nome.
	 */
	public String getNomeTurma() {
		return nomeTurma;
	}
	/**
	 * @param nome The nome to set.
	 */
	public void setNomeTurma(String nomeTurma) {
		this.nomeTurma = nomeTurma;
	}
	/**
	 * @return Returns the turno.
	 */
	public String getTurnoTurma() {
		return turnoTurma;
	}
	/**
	 * @param turno The turno to set.
	 */
	public void setTurnoTurma(String turnoTurma) {
		this.turnoTurma = turnoTurma;
	}
	
}

classe TesteMain

/*
 * Created on 11/07/2006
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package controle.mapeamento;

import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;



/**
 * @author foguinho
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 */
public class TesteMain {
	private Connection conn;
	private boolean connected = false;
	private String DRIVER = "com.mysql.jdbc.Driver";
	private String URL_STRING = "jdbc:mysql://localhost/test";
	private String USER = "";
	private String PASSWD = "";

	public void conectar() {
		try {
			Class.forName(DRIVER);
			conn = (Connection) DriverManager.getConnection(URL_STRING, USER, PASSWD);
		} catch (ClassNotFoundException ex) {
			System.out.println("Driver JDBC não encontrado.\n" + ex);
		} catch (SQLException ex1) {
			System.out.println("Falha durante o processo de conexão.\n" + ex1);
		}
	}

	public void incluirDados() {
		try {
			//prepared statement para inserção
	 		PreparedStatement stmt = (PreparedStatement) conn.prepareStatement("INSERT INTO Professor(codigoProf,nomeProf,idadeProf) values (?,?,?)");
	 		
	 		
	 		Professor p = new Professor(1,"joana",22,1,"L","Vespertino");
	 		
	 		stmt.setInt(1,p.getCodigo());
	 		stmt.setString(2,p.getNome());
	 		stmt.setInt(3,p.getIdade());
	 		
	 		//executa
	 		stmt.execute();
	 		
	 		stmt = (PreparedStatement) conn.prepareStatement("INSERT INTO Turma(codigoTurma,Professor_CodigoProf,nomeTurma,turnoTurma) values (?,?,?,?)");
	 		
	 		stmt.setInt(1,p.getCodigoDaTurma());
	 		stmt.setInt(2,p.getCodigo());
	 		stmt.setString(3,p.getNomeDaTurma());
	 		stmt.setString(4,p.getTurnoDaTurma());
	 		
	 		// executa
	 		stmt.execute();
	 		
	 		stmt.close();
			
		}catch(Exception e){
	    	JOptionPane.showMessageDialog(null,e.getMessage(),
	    	"Informação",JOptionPane.ERROR_MESSAGE);
	    }
	}
	
	
	public void removerDados() {
		try {
			//prepared statement para inserção
	 		PreparedStatement stmt = (PreparedStatement) conn.prepareStatement("");
	 		
	 	
	 	
	 		// executa
	 		stmt.execute();
	 		
	 		stmt.close();
			
		}catch(Exception e){
	    	JOptionPane.showMessageDialog(null,e.getMessage(),
	    	"Informação",JOptionPane.ERROR_MESSAGE);
	    }
	}
	
	public static void main(String[] args) {
		TesteMain tm = new TesteMain();
		
		tm.conectar();
		tm.incluirDados();
		//tm.removerDados();
	
		
	}
}

2 Respostas

danieldestro
public class ContaEspecial {

   // outros atributos especificos de contaespecial

   private Conta conta;   

   public ContaEspecial debitar(double valor) {
      // coisas especiais de conta
      conta.debitar(valor);

   }
}

Ou veja os slides 4 e 5: http://www.argonavis.com.br/cursos/java/j100/java_09.pdf

F

Valeu obrigado aí pela confirmação que isso é composição.

Criado 14 de julho de 2006
Ultima resposta 16 de jul. de 2006
Respostas 2
Participantes 2