All pastes #424752 Raw Edit

Something

public text v1 · immutable
·published 2007-04-04 23:41 UTC
rendered paste body
classe Funcionario:

public abstract class Funcionario {
	// método que informa a comissao.
	public abstract double comissao();
}


classe Garcons:

public class Garcon extends Funcionario {
	// atributos
	private String nome;
	private double [] mesas;
	
	// construtor
	public Garcon( String nome, double [] mesas) {
		this.nome = "";
		this.mesas = mesas;
	}

	// calcula a comissao
	public double comissao() {
		double total = 0;
		for (int i = 0; i < mesas.length; i++) {
			total = total + ( mesas[i] * 0.01);
		}
		return total;
	}
}


classe Gerente:

import java.util.Iterator;
import java.util.LinkedList;

public class Gerente extends Funcionario  {
	// atributos
	private String nome;
	private LinkedList<Garcon> garcons;
	
	// construtor
	public Gerente( String nome, LinkedList<Garcon> garcons) {
		this.nome = "";
		this.garcons = garcons;
	}

	// calcula a comissao do gerente
	public double comissao() {
		// Iterator da API "java.util.Iterator". é um padrão de projeto.
		Iterator<Garcon> i = garcons.iterator();
		double total = 0;
		while( i.hasNext() ) {
			Garcon g = i.next();
			total = total + ( g.comissao() * 3);
		}
		return total;
	}
}


classe Restaurante (classe de teste):

import java.util.LinkedList;

public class Restaurante {
	
	public static void main(String[] args) {
	
		// lista que recebera os garcons.
		LinkedList<Garcon> garcons = new LinkedList<Garcon>();
		
		// instancia dois garcons.
		Garcon a = new Garcon("CARLOS", new double[]{100, 100, 100});
		Garcon b = new Garcon("FELIPE", new double[]{850, 350, 650});
		
		//adiciona garcons a lista.
		garcons.add(a);
		garcons.add(b);
		
		// instacia o gerente
		Gerente chefe = new Gerente( "PAULO", garcons );
		
		System.out.println( "comissao do gerente: R$ " + chefe.comissao());
		
	}
}