23 Interfejsy
Napisz interfejs o nazwie
LoudAnimal
, który będzie miał jedną metodę o nazwiemakeNoise()
. Następnie stwórz dwie klasy:Dog
iCat
, 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 == b
i 1 jeślia > b
. Następnie stwórz klasęTestMyComparator
, która będzie implementować ten interfejs. W klasie tej zaimplementuj metodęcompare
zgodnie z jej opisem.Załóżmy, że mamy interfejs
MusicPlayer
z 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
Converter
z trzema abstrakcyjnymi metodami:convertToEuro(double amount)
zwracającądouble
,convertToUSD(double amount)
zwracającądouble
orazgetConversionRate(String currency)
przyjmującą nazwę waluty jakoString
i zwracającądouble
. Stwórz dwie klasy:CurrencyConverter
iUnitConverter
, które implementują ten interfejs. W osobnej klasieConverterTest
, przetestuj implementację metod dla obiektów obu klas.Utwórz interfejs
Authentication
z trzema metodami abstrakcyjnymi:login(String username, String password)
zwracającąboolean
,logout()
zwracającąvoid
orazresetPassword(String username, String oldPassword, String newPassword)
zwracającąboolean
. Stwórz dwie klasyUserAuthentication
iAdminAuthentication
, które implementują ten interfejs. W klasieAuthenticationTest
przetestuj implementacje metod dla obiektów obu klas.Zaprojektuj interfejs
Sensor
z trzema metodami abstrakcyjnymi:readValue()
zwracającądouble
,getStatus()
zwracającąString
orazreset()
zwracającąvoid
. Stwórz dwie klasyTemperatureSensor
iPressureSensor
, które implementują ten interfejs. W klasieSensorTest
przetestuj działanie metod dla obiektów z obu klas.Opracuj interfejs
MediaPlayer
z trzema abstrakcyjnymi metodami:play(String trackName)
zwracającąvoid
,pause()
zwracającąvoid
orazgetCurrentTrack()
zwracającąString
. Stwórz dwie klasyAudioPlayer
iVideoPlayer
, które implementują ten interfejs. W osobnej klasieMediaPlayerTest
sprawdź działanie metod dla obiektów z obu klas.Stwórz interfejs
Storage
z trzema metodami abstrakcyjnymi:save(String data)
zwracającąboolean
,delete(String identifier)
zwracającąboolean
orazretrieve(String identifier)
zwracającąString
. Zaprojektuj dwie klasyFileStorage
iDatabaseStorage
, które implementują ten interfejs. W klasieStorageTest
wykonaj testy metod dla obiektów z obu klas.Wykonaj poniższe czynności:
- Napisz interfejs
DataProcessor
z dwoma metodami abstrakcyjnymi:processData(String data)
zwracającąString
iisValid(String data)
zwracającąboolean
. - Stwórz klasę
TextProcessor
, która implementujeDataProcessor
. W metodzieprocessData
zwróć dane w odwróconej kolejności, a w metodzieisValid
sprawdź, czy dane nie są pustym napisem. Zabezpiecz metody przed nullem. - Stwórz drugą klasę
NumberProcessor
, która również implementujeDataProcessor
. W metodzieprocessData
zwróć dane z dodatkowym tekstem na początku “Processed:”, a w metodzieisValid
sprawdź, czy dane są liczbą. - W klasie
TestDataProcessor
stwórz obiekty obu klas i przetestuj ich metody.
Wskazówka: W celu sprawdzenia, że string jest liczbą możesz użyć wyrażenia regularne:
.matches("-?\\d+(\\.\\d+)?") str
- Wykonaj poniższe czynności:
- Utwórz interfejs
VehicleManager
z dwoma metodami abstrakcyjnymi:startEngine()
zwracającąString
igetFuelLevel()
zwracającąint
. - Stwórz klasę
Car
, implementującąVehicleManager
. W metodziestartEngine
zwróć “Silnik samochodu uruchomiony”, a wgetFuelLevel
zwróć wartość 50. - Stwórz klasę
Motorcycle
, również implementującąVehicleManager
. WstartEngine
zwróć “Silnik motocykla uruchomiony”, a wgetFuelLevel
zwróć wartość 30. - W klasie
VehicleManagerTest
stwórz obiekty obu klas i przetestuj ich metody.
- Wykonaj poniższe czynności:
- Stwórz interfejs
AnimalSound
z 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 obiektDog
i wywołaj obie metody.
- Wykonaj poniższe czynności:
- Stwórz interfejs
PowerControl
z 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 obiektSmartLamp
i wywołaj obie metody.
- Wykonaj poniższe czynności:
- Stwórz interfejs
Drawable
z 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
Drawable
z:
- 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
SoundPlayer
z:
- 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
MemoryManager
z:
- 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
VATCalculator
z:
- Polem
double vatRate
ustawionym 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.