1. Napisz klasę Recorder reprezentującą flet prosty
Transkrypt
1. Napisz klasę Recorder reprezentującą flet prosty
1. Napisz klasę Recorder reprezentującą flet prosty -> patrz: https://en.wikipedia.org/wiki/Recorder_(musical_instrument)#Basic_fingering Dla uproszczenia, należy rozważyć w pełni zamknięte/otwarte dziury. Metody klasy Recorder: void openHole(int numer) //otwiera wybraną dziurę void closeHole(int numer) // 0 =< numer <7 //zamyka wybraną dziurę void closeAll() //zamyka wszystkie dziury void openAll() //otwiera wszystkie dziury void setTune(String tonacja) //tonacja = ”F” lub tonacja = ”C” void playNote(); //metoda w oparciu o zadany układ palców i tonację ma ustalić grany dźwięk i dodać to zmiennej melody przechowującej wszystkie zagrane dźwięki. String getMelody() //pobiera zmienną melody. Przykład: Recorder r = new Recorder(); r.setTune(“C”); r.closeAll(); r.playNote(); r.openHole(7); r.playNote(); r.openHole(6); r.playNote(); r.openHole(5); r.openHole(4); r.playNote(); System.out.println(r.getMelody()); // C D E G 2. Napisz klasę do obsługi playlisty muzycznej: Metody klasy Playlist: void addSong(Song s) //dodaj utwór void delSong(int numer) //usuń utwór o danym numerze void showSongs() //wyświetl wszystkie utwory korzystając z metody getInfo w klasie Song void play() //wyświetl Zespół – Album – Tytuł – Czas Trwania void playInShuffleMode() //Analogicznie do play, ale kolejne utwory są losowane z listy; każdy z utworów może być wylosowany tylko raz void repeatAlbum(String tytulAlbumu, int N) //zrób N (liczna powtórzeń) razy play ale tylko dla utworów z albumu o podanym tytule void repeatSong(int id, int N) //zrób N (liczna powtórzeń) razy play ale tylko dla utworu o danym numerze (id) klasa Song{ String band, album, title, format; int ocena; //np 1-5 String czas_trwania; Boolean favorite; String getInfo(){title, album, band, czas trwania, format, ocena, favourite (TAK/NIE)} // trzeba zastanowić się nad konstruktorem // warto też potestować dostęp do zmiennych: private/public! } // Przykład testu w MAIN: Song s1 = new Song(); s1.Set(“Ancestral”, “Hand.Cannot.Erase”, “Steven Wilson”, “13:30”, “FLAC”, 5, true); Song s2 = new Song(); s2.Set(“Perfect Life”, “Hand.Cannot.Erase”, “Steven Wilson”, “4:44”, “FLAC”, 5, true); Song s3 = new Song(); s3.Set(“Caterpillar And The Barbed Wire”, “Love, Fear and the Time Machine”, “Riverside”, “6:56”, “mp3”, 5, true); Song s4 = new Song(); s4.Set(“Rattle That Lock”, “Rattle That Lock”, “David Gilmour”, “4:56”, “mp3”, 4, false); Song s5 = new Song(); s5.Set(“Beauty”, “Rattle That Lock”, “David Gilmour”, “4:29”, “mp3”, 5, true); Song s6 = new Song(); s6.Set(“And Then…”, “Rattle That Lock”, “David Gilmour”, “4:30”, “mp3”, 5, true); Playlist ps = new Playlist(); ps.addSong(s1); ps.addSong(s2); ps.addSong(s3); ps.addSong(s4); ps.addSong(s5); ps.showSongs(); ps.delSong(3); ps.play(); ps.repeatAlbum(“Rattle That Lock”, 10); ps.repeatSong(“And Then…”, 4); 3. Dana jest następująca klasa i jej test: class Gracz{ static int liczbaGraczy; private String imie; Gracz(String n){ Imie = n; liczbaGraczy++; } } public class GraczTester { public static void main(String[] args) { System.out.println(Gracz.iloscGraczy); Gracz pierwszy = new Gracz("David”) System.out.println(Gracz.liczbaGraczy); System.out.println(pierwszy.liczbaGraczy); } } Jaki wynik zostanie wyświetlony i dlaczego? Czy już wiesz dlaczego metoda main jest statyczna? 4. Spróbuj skompilować następujący kod. Dlaczego nie jest to możliwe? public class Kaczka { private int wielkosc; public static void main(String[] args) { System.out.println("Ta kaczka ma rozmiar: " + getWielkosc()); System.out.println("Ta kaczka ma rozmiar: " + wielkosc); } public void setWielkosc(int a) { wielkosc = a; } public int getWielkosc() { return wielkosc; } } 5. Napisz własną klasę do obsługi stałych i podstawowych operacji matematycznych i przetestuj jej działanie. class MyMath{ public static public static public static public static public static final final final final final double double double double double PI; E; //liczba Eulera SQRT2; //pierwiastek(2) SQRT3; //pierwiastek(3) C; //speed of light [km/h] static{ //inicjalizator PI = 3.141592653589793; E = ... //... } public public public public public static static static static static double abs(double x){return ...;} int add(int x, int y){return ...;} double add(double x, double y){return ...;} double power(double x){return ...;} double cube(double x){return ...;} } 6. 11 zawodników drużyny piłkarskiej wchodzi po kolei na murawę boiska. Napisz klasę zawodnika, która w konstruktorze automatycznie ustala numer na jego koszulce w oparciu o kolejność pojawienia się na boisku. Zawodnik pierwszy ma numer 1, a ostatni 11. Klasa z metodą main nazywa się Boisko. class Boisko{ MAIN: Zawodnik z1 = new Zawodnik(); z1.GetNumber() //numer koszulki 1 Zawodnik z2 = new Zawodnik(); z2.GetNumber() //numer koszulki 2 ... ... Zawodnik z11 = new Zawodnik(); z11.GetNumber() //numer koszulki 11 }