23 Interfejsy
Napisz interfejs o nazwie
LoudAnimal, który będzie miał jedną metodę o nazwiemakeNoise(). Następnie stwórz dwie klasy:DogiCat, które będą implementować ten interfejs. Dla każdej klasy zaimplementuj metodęmakeNoise(), tak aby wydrukowała ona odpowiedni dźwięk zwierzęcia.Stwórz interfejs o nazwie
MyComparator, który będzie zawierał metodęcompare(int a, int b): int. Metoda ta powinna zwrócić -1, jeślia < b, 0 jeślia == bi 1 jeślia > b. Następnie stwórz klasęTestMyComparator, która będzie implementować ten interfejs. W klasie tej zaimplementuj metodęcomparezgodnie z jej opisem.Załóżmy, że mamy interfejs
MusicPlayerz metodamiturnOn(),turnOff()inextTrack(). Stwórz klasęRadio, która będzie implementować ten interfejs. W metodzieturnOn()powinien zostać wydrukowany komunikat “Radio włączone”, w metodzieturnOff()- “Radio wyłączone”, a wnextTrack()- “Zmieniono stację radiową”.Napisz interfejs
Converterz trzema abstrakcyjnymi metodami:convertToEuro(double amount)zwracającądouble,convertToUSD(double amount)zwracającądoubleorazgetConversionRate(String currency)przyjmującą nazwę waluty jakoStringi zwracającądouble. Stwórz dwie klasy:CurrencyConverteriUnitConverter, które implementują ten interfejs. W osobnej klasieConverterTest, przetestuj implementację metod dla obiektów obu klas.Utwórz interfejs
Authenticationz trzema metodami abstrakcyjnymi:login(String username, String password)zwracającąboolean,logout()zwracającąvoidorazresetPassword(String username, String oldPassword, String newPassword)zwracającąboolean. Stwórz dwie klasyUserAuthenticationiAdminAuthentication, które implementują ten interfejs. W klasieAuthenticationTestprzetestuj implementacje metod dla obiektów obu klas.Zaprojektuj interfejs
Sensorz trzema metodami abstrakcyjnymi:readValue()zwracającądouble,getStatus()zwracającąStringorazreset()zwracającąvoid. Stwórz dwie klasyTemperatureSensoriPressureSensor, które implementują ten interfejs. W klasieSensorTestprzetestuj działanie metod dla obiektów z obu klas.Opracuj interfejs
MediaPlayerz trzema abstrakcyjnymi metodami:play(String trackName)zwracającąvoid,pause()zwracającąvoidorazgetCurrentTrack()zwracającąString. Stwórz dwie klasyAudioPlayeriVideoPlayer, które implementują ten interfejs. W osobnej klasieMediaPlayerTestsprawdź działanie metod dla obiektów z obu klas.Stwórz interfejs
Storagez trzema metodami abstrakcyjnymi:save(String data)zwracającąboolean,delete(String identifier)zwracającąbooleanorazretrieve(String identifier)zwracającąString. Zaprojektuj dwie klasyFileStorageiDatabaseStorage, które implementują ten interfejs. W klasieStorageTestwykonaj testy metod dla obiektów z obu klas.Wykonaj poniższe czynności:
- Napisz interfejs
DataProcessorz dwoma metodami abstrakcyjnymi:processData(String data)zwracającąStringiisValid(String data)zwracającąboolean. - Stwórz klasę
TextProcessor, która implementujeDataProcessor. W metodzieprocessDatazwróć dane w odwróconej kolejności, a w metodzieisValidsprawdź, czy dane nie są pustym napisem. Zabezpiecz metody przed nullem. - Stwórz drugą klasę
NumberProcessor, która również implementujeDataProcessor. W metodzieprocessDatazwróć dane z dodatkowym tekstem na początku “Processed:”, a w metodzieisValidsprawdź, czy dane są liczbą. - W klasie
TestDataProcessorstwórz obiekty obu klas i przetestuj ich metody.
Wskazówka: W celu sprawdzenia, że string jest liczbą możesz użyć wyrażenia regularne:
str.matches("-?\\d+(\\.\\d+)?")- Wykonaj poniższe czynności:
- Utwórz interfejs
VehicleManagerz dwoma metodami abstrakcyjnymi:startEngine()zwracającąStringigetFuelLevel()zwracającąint. - Stwórz klasę
Car, implementującąVehicleManager. W metodziestartEnginezwróć “Silnik samochodu uruchomiony”, a wgetFuelLevelzwróć wartość 50. - Stwórz klasę
Motorcycle, również implementującąVehicleManager. WstartEnginezwróć “Silnik motocykla uruchomiony”, a wgetFuelLevelzwróć wartość 30. - W klasie
VehicleManagerTeststwórz obiekty obu klas i przetestuj ich metody.
- Wykonaj poniższe czynności:
- Stwórz interfejs
AnimalSoundz jedną metodąmakeSound(). - Rozszerz ten interfejs, tworząc interfejs
DomesticAnimalSound, który dodaje metodęmakeHappySound(). - Stwórz klasę
Dog, która implementujeDomesticAnimalSound. MetodamakeSound()powinna zwracać string “Woof”, amakeHappySound()- “Wag tail”. - W osobnej klasie testującej (
TestAnimals), utwórz obiektDogi wywołaj obie metody.
- Wykonaj poniższe czynności:
- Stwórz interfejs
PowerControlz metodąturnOn(). - Rozszerz ten interfejs, tworząc
AdvancedPowerControl, który dodaje metodęsetPowerSavingMode(). - Stwórz klasę
SmartLamp, implementującąAdvancedPowerControl. MetodaturnOn()powinna aktywować lampę, asetPowerSavingMode()- przełączać ją w tryb oszczędzania energii (metody mają wyświetlać odpowiednie komunikaty). - W osobnej klasie testującej (
TestDevices), utwórz obiektSmartLampi wywołaj obie metody.
- Wykonaj poniższe czynności:
- Stwórz interfejs
Drawablez metodądraw(). - Rozszerz ten interfejs, tworząc
ColorDrawable, który dodaje metodęsetColor(String color). - Stwórz klasę
Circle, implementującąColorDrawable. Metodadraw()powinna rysować koło, asetColor()- zmieniać kolor koła (metody mają wyświetlać odpowiednie komunikaty). - W osobnej klasie testującej (
TestDrawing), utwórz obiektCircle, ustaw kolor i narysuj koło za pomocą obu metod.
- Stwórz interfejs
Drawablez:
- Metodą abstrakcyjną
draw(). - Metodą domyślną
display()wyświetlającą informację “Displaying Drawable”. - Metodą statyczną
getType()zwracającąString“Drawable Type”.
Stwórz klasy Circle i Rectangle, które implementują Drawable. draw() w Circle powinno wyświetlać “Drawing Circle”, a w Rectangle - “Drawing Rectangle”. Stwórz klasę testującą DrawableTester. Utwórz obiekty Circle i Rectangle, wywołaj dla nich draw() i display(), oraz statycznie Drawable.getType().
- Stwórz interfejs
SoundPlayerz:
- Metodą abstrakcyjną
playSound(). - Metodą domyślną
stopSound()wyświetlającą informację “Sound Stopped”. - Metodą statyczną
getDeviceType()zwracającąString“Sound Device”.
Stwórz klasy MusicPlayer i Radio, które implementują SoundPlayer. playSound() w MusicPlayer powinno wyświetlać “Playing Music”, a w Radio - “Playing Radio”. Stwórz klasę testującą SoundTester. Utwórz obiekty MusicPlayer i Radio, wywołaj dla nich playSound() i stopSound(), oraz statycznie SoundPlayer.getDeviceType().
- Stwórz interfejs
MemoryManagerz:
- Metodą abstrakcyjną
allocateMemory(int size). - Metodą domyślną
freeMemory()wyświetlającą informację “Memory Freed”. - Metodą statyczną
getMemoryType()zwracającąString“Memory Type”.
Stwórz klasy RAMManager i DiskManager, które implementują MemoryManager. allocateMemory(int size) w RAMManager powinno wyświetlać “Allocating RAM Memory”, a w DiskManager - “Allocating Disk Space”. Stwórz klasę testującą MemoryTester. Utwórz obiekty RAMManager i DiskManager, wywołaj dla nich allocateMemory(int size) i freeMemory(), oraz statycznie MemoryManager.getMemoryType().
- Stwórz interfejs
VATCalculatorz:
- Polem
double vatRateustawionym na wartość standardowej stawki VAT (np. 23%). - Metodą statyczną
calculateWithVAT(double price), która oblicza i zwraca cenę produktu z doliczonym VAT.
Stwórz klasę testującą VATTest, która wywołuje metodę calculateWithVAT(double price) z przykładową ceną produktu i wyświetla wynik.