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
}