CS2514

Introduction to Java

Dr Derek Bridge

School of Computer Science & Information Technology

University College Cork

Summary of Ticket so far

class Ticket {

    private String occasion;
    private String date;
    private int ticketNumber;
    
    private static int nextTicketNumber = 1;
    
    public Ticket(String occasion, String date) {
        this.occasion = occasion;
        this.date = date;
        ticketNumber = nextTicketNumber;
        nextTicketNumber = nextTicketNumber + 1;
    }
    
    public String toString() {
        // not yet written
    }
       
}

Ticket's toString method

public String toString() {
    int ticketWidth = Math.max(occasion.length(), date.length());
    String str = "";
    str += horizontalLine(ticketWidth);
    str += padString(occasion, ticketWidth);
    str += padString(date, ticketWidth);
    str += horizontalLine(ticketWidth);
    return str;
}

private static String horizontalLine(int width) {
    String str = "+";
    for (int i = 0; i < width; i = i + 1) {
        str = str + "-";
    }
    str = str + "+\n";
    return str;
}
    
private static String padString(String text, int width) {
    int amountOfPadding = width - text.length();
    int amountOfLeftPadding = amountOfPadding / 2;
    int amountOfRightPadding = (int) (Math.round(amountOfPadding / 2.0));
    String str = "|";
    for (int i = 0; i < amountOfLeftPadding; i = i + 1) {
        str = str + " ";
    }
    str = str + text;
    for (int i = 0; i < amountOfRightPadding; i = i + 1) {
        str = str + " ";
    }
    str = str + "|\n";
    return str;
}

Q: Think back to lecture 3. Why are these methods inefficient, and how would you rewrite them to make them more efficient?

Class methods

When do we use class methods?
Rule of thumb

When do we use class methods?
A more accurate rule

Examples of class methods

The main method

What next for you?