Monika Dekster

Laboratorium 5: Dziedziczenie, interfejsy, klasy zagnieżdżone i anonimowe

Zadania:

  1. Napisz interfejs Vehicle zawierający metody:

    1. void start()
    2. void stop()

    Napisz klasę Car implementującą interfejs Vehicle i zawierającą pola:

    
    private String make; 
    private String color; 
    private String model;   
    private int year;
    

    Zaimplementuj odpowiedni konstruktor, metodę toString() oraz metody wymagane przez interfejs (np. wypisujące odpowiedki komunikat).

    Funkcja main() powinna utworzyć i wypisać kilka obiektów klasy Car oraz przetestować działanie funkcji interfejsu.

  2. Dana jest następująca definicja klasy SortedArray:

    
    public class SortedArray {
        private Integer[] array;
        public SortedArray(int n) { ... } // allocate array with n elements
        public SortedArray() { ... } // default ctor; allocate array with 10 elements
    	public void sort(Comparator<Integer> comparator) { ... }
    	@Override
        public String toString() { ... }
    }
    

    Oba konstruktory oprócz alokacji tablicy inicjalizują ją losowymi wartościami. Funkcja main() tworzy obiekt typu SortedArray a następnie sortuje tablicę z tego obiektu wg następujących kryteriów:

    • rosnąco
    • malejąco
    • rosnąco ze względu na ostatnią cyfrę; w przypadku takiej samej ostatniej cyfry bierzemy pod uwagę wartość całej liczby

    Każde wywołanie funkcji sortującej powinno zawierać definicję klasy anonimowej implementującej interfejs Comparator z odpowiednią wersją funkcji porównującej compare(), jak w przykładzie poniżej.

    
    array.sort(new Comparator<>() {
    	@Override
    	public int compare(Integer o1, Integer o2) {
    		...
    	}
    });
    
  3. Napisz klasę Person zawierającą: imię, nazwisko i wiek osoby. W funkcji głównej utwórz tablicę (lub listę) obiektów klasy Person, wypisz ją, a następnie posortuj wg imienia, nazwiska i wieku. Po każdym sortowaniu Wypisz zawartość tablicy. Napisz funkcję sortującą sort(Person[] array, Comparator<Person> comparator) (podobnie jak w zadaniu 2, tym razem Comparator porównuje obiekty typu Person).