Aplicação de poliformismo neste caso

Boa tarde pessoal, estou com um problema de conceito gostaria da ajuda de vocês se possível.

Estou construindo uma classe para plotar gráficos.
e na classe para efetuar o cálculo,


import org.jfree.data.xy.XYSeries;

import linearization.FileIO;

public abstract  class Chart {

	
	protected List<Integer> listIQ;
	protected int[] iArray = new int[1024];
	protected int[] qArray = new int[1024];
	
	public Chart(String sfileName){
		loadFile(sfileName);
	}
	
	public Chart(List list){
		this.listIQ = list;
		divArray(listIQ);
	}
	
	/**
	 * Carrega arquivo que contém os valores de I e Q  
	 *
	 */
	private void loadFile(String sfileName){
		try {
			listIQ = FileIO.getIntegersFromFile(sfileName);
			divArray(listIQ);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * Função para alocar os valores de I no array I
	 * e alocar os valores de Q no array Q
	 *
	 */
	protected void divArray(List<Integer> list){
		for (int i = 0; i < 1024; i++) {
			//os valores de I estão nas primeiras 1024 linhas do arquivo
			this.iArray[i] = list.get(i);
			//os valores de Q estão nas 1024 linhas posteriores 
			this.qArray[i] = list.get(i+1025);
		}
	}
	
	
	public abstract XYSeries plotABS();
	public abstract XYSeries plotPHASE();
}
import Chart;
import math.complex.Complex;

import org.jfree.data.xy.XYSeries;
public class Plot_Chart extends Chart{

	private Complex cx;
	private final double NORM = 65535.0; //valor para normalizar 32bits
	private XYSeries series=null;

	public Plot_Chart(List list) {
		super(list);
		
	}
	
	public Plot_Chart(String sfileName) {
		super(sfileName);
		
	}
	
	
	/**
	 * Função que retorna um XYSerie para plotar gráfico de magnitude
	 * retorna array de 1024 valores calculados por
	 * 20*log(sqrt(re^2 + img^2))
	 * ou 20*log(abs(I,Q))
	 * @return XYSerie
	 */
	public XYSeries plotABS(){
		double value;
		series = new XYSeries("Absolut value");
		for (int i = 0; i < 1024; i++) {
			Complex cx = new Complex(iArray[i]/NORM,qArray[i]/NORM);
			value = 20*Math.log(cx.abs());
			series.add(i,value);
		}
		return series;
	}
	
	/**
	 * Função que retorna um XYSerie para plotar gráfico de fase
	 * retorna array de 1024 valores calculados por
	 * atan(img/re)*180/pi
	 * @return XYSerie 
	 */
	public XYSeries plotPHASE() {
		double value;
		series = new XYSeries("Phase value");
		for(int i=0;i<1024;i++){
			cx = new Complex(iArray[i]/NORM,qArray[i]/NORM);
			value = cx.phase()*180.0/Math.PI;
			series.add(i,value);
		}
		return series;
	}
}

Gostaria de deixar o plot generico por exemplo

public XYSeries plot(){
		double value;
		series = new XYSeries("Absolut value");
		for (int i = 0; i < 1024; i++) {
			Complex cx = new Complex(iArray[i]/NORM,qArray[i]/NORM);
		//invoca classe para realizar cálculo
			series.add(i,value);
		}
		return series;
	}

No caso como eu devo proceder?
criar uma classe abstrata Calc com os metodos calcABS e calcPHASE
e depois chamar naquele trecho de código?
estou um pouco confuso.

grato

Caio Pereira