Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.Serializable;
- /**
- * Created by Eirik on 12.02.15.
- */
- public abstract class Tribune implements Comparable<Tribune>, Serializable {
- private final String tribunenavn;
- private final int kapasitet;
- private final int pris;
- public Tribune(String tribunenavn, int kapasitet, int pris) {
- this.tribunenavn = tribunenavn;
- this.kapasitet = kapasitet;
- this.pris = pris;
- }
- public String getTribunenavn() {
- return tribunenavn;
- }
- public int getKapasitet() {
- return kapasitet;
- }
- public int getPris() {
- return pris;
- }
- public abstract Billett[] kjøpBilletter(int antall);
- public abstract Billett[] kjøpBilletter(String[] kunder);
- public abstract int finnAntallSolgteBilletter();
- public int finnInntekt(){
- return finnAntallSolgteBilletter()*getPris();
- }
- public String toString() {
- return "Navn: " + tribunenavn + "\nKap: " + kapasitet + "\nSolgte: " + finnAntallSolgteBilletter() + "\nInntekt: " + finnInntekt();
- }
- public int compareTo(Tribune trib) {
- if (this.finnInntekt() > trib.finnInntekt()){
- return -1;
- } else if (this.finnInntekt() == trib.finnInntekt()) {
- return 0;
- }
- return 1;
- }
- }
- class StaaTribune extends Tribune {
- private int antSolgteBilletter;
- public StaaTribune(String tribunenavn, int kapasitet, int pris) {
- super(tribunenavn, kapasitet, pris);
- this.antSolgteBilletter = 0;
- }
- public Billett[] kjøpBilletter(int antall) {
- if (antSolgteBilletter + antall > getKapasitet()) {
- return null;
- }
- antSolgteBilletter += antall;
- Billett[] billetter = new Billett[antall];
- for (int i = 0; i < antall; i++) {
- billetter[i] = new StaaplassBillett(getTribunenavn(), getPris());
- }
- return billetter;
- }
- public Billett[] kjøpBilletter(String[] kunder) {
- return kjøpBilletter(kunder.length);
- }
- public int finnAntallSolgteBilletter() {
- return antSolgteBilletter;
- }
- }
- class SitteTribune extends Tribune {
- private int[] antOpptatt;
- public SitteTribune(String tribunenavn, int kapasitet, int pris, int rader) {
- super(tribunenavn, kapasitet, pris);
- this.antOpptatt = new int[rader];
- }
- public int finnAntallSolgteBilletter() {
- int solgte = 0;
- for (int i = 0; i < antOpptatt.length; i++) {
- solgte += antOpptatt[i];
- }
- return solgte;
- }
- public Billett[] kjøpBilletter(int antall) {
- if (antall + finnAntallSolgteBilletter() > getKapasitet()){
- return null;
- }
- for (int i = 0; i < antOpptatt.length; i++) {
- if (antOpptatt[i] + antall <= getKapasitet()/antOpptatt.length){
- Billett[] billetter = new Billett[antall];
- for (int j = 0; j < antall; j++) {
- billetter[j] = new SitteplassBillett(getTribunenavn(), getPris(), i, antOpptatt[i]);
- antOpptatt[i]++;
- }
- return billetter;
- }
- }
- return null;
- }
- public Billett[] kjøpBilletter(String[] kunder) {
- return kjøpBilletter(kunder.length);
- }
- }
- class VIPTribune extends SitteTribune {
- private String[][] tilskuer;
- public VIPTribune(String tribunenavn, int kapasitet, int pris, int rader) {
- super(tribunenavn, kapasitet, pris, rader);
- tilskuer = new String[rader][kapasitet/rader];
- }
- public Billett[] kjøpBilletter(int antall) {
- return null;
- }
- public Billett[] kjøpBilletter(String[] kunder) {
- if (kunder.length + finnAntallSolgteBilletter() > getKapasitet()){
- return null;
- }
- Billett[] billetter = super.kjøpBilletter(kunder.length); // Kjøper billetter med superklassemetoden
- if (billetter != null) { // Hvis det går (plass til alle på en rad / ikke fullt);
- for (int i = 0; i < billetter.length; i++) {
- SitteplassBillett bill = (SitteplassBillett) billetter[i];
- tilskuer[bill.getRad()][bill.getPlass()] = kunder[i]; // Legg til kundenavn på rett rad og plass
- }
- }
- return billetter;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement