BAEL-5417 - implements vs extends (#12011)
This commit is contained in:
parent
f8a69008e1
commit
9759513bf9
|
@ -0,0 +1,60 @@
|
||||||
|
package com.baeldung.implementsvsextends;
|
||||||
|
|
||||||
|
import com.baeldung.implementsvsextends.media.model.AudioMedia;
|
||||||
|
import com.baeldung.implementsvsextends.media.model.Media;
|
||||||
|
import com.baeldung.implementsvsextends.media.model.VideoMedia;
|
||||||
|
import com.baeldung.implementsvsextends.media.player.impl.AudioMediaPlayer;
|
||||||
|
import com.baeldung.implementsvsextends.media.player.impl.CustomMediaPlayer;
|
||||||
|
import com.baeldung.implementsvsextends.media.player.impl.MultiMediaPlayer;
|
||||||
|
import com.baeldung.implementsvsextends.media.player.impl.VideoMediaPlayer;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
Media media = new Media();
|
||||||
|
media.setId(001);
|
||||||
|
media.setTitle("Media1");
|
||||||
|
media.setArtist("Artist001");
|
||||||
|
|
||||||
|
AudioMedia audioMedia = new AudioMedia();
|
||||||
|
audioMedia.setId(101);
|
||||||
|
audioMedia.setTitle("Audio1");
|
||||||
|
audioMedia.setArtist("Artist101");
|
||||||
|
audioMedia.setBitrate(3500);
|
||||||
|
audioMedia.setFrequency("256kbps");
|
||||||
|
|
||||||
|
VideoMedia videoMedia = new VideoMedia();
|
||||||
|
videoMedia.setId(201);
|
||||||
|
videoMedia.setTitle("Video1");
|
||||||
|
videoMedia.setArtist("Artist201");
|
||||||
|
videoMedia.setResolution("1024x768");
|
||||||
|
videoMedia.setAspectRatio("16:9");
|
||||||
|
|
||||||
|
System.out.println(media);
|
||||||
|
System.out.println(audioMedia);
|
||||||
|
System.out.println(videoMedia);
|
||||||
|
|
||||||
|
AudioMediaPlayer audioMediaPlayer = new AudioMediaPlayer();
|
||||||
|
audioMediaPlayer.play();
|
||||||
|
audioMediaPlayer.pause();
|
||||||
|
|
||||||
|
VideoMediaPlayer videoMediaPlayer = new VideoMediaPlayer();
|
||||||
|
videoMediaPlayer.play();
|
||||||
|
videoMediaPlayer.pause();
|
||||||
|
|
||||||
|
MultiMediaPlayer multiMediaPlayer = new MultiMediaPlayer();
|
||||||
|
multiMediaPlayer.play();
|
||||||
|
multiMediaPlayer.pause();
|
||||||
|
multiMediaPlayer.seek();
|
||||||
|
multiMediaPlayer.fastForward();
|
||||||
|
|
||||||
|
CustomMediaPlayer customMediaPlayer = new CustomMediaPlayer();
|
||||||
|
customMediaPlayer.play();
|
||||||
|
customMediaPlayer.pause();
|
||||||
|
customMediaPlayer.setId(301);
|
||||||
|
customMediaPlayer.setTitle("Custom1");
|
||||||
|
customMediaPlayer.setArtist("Artist301");
|
||||||
|
System.out.println(customMediaPlayer);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.model;
|
||||||
|
|
||||||
|
public class AudioMedia extends Media {
|
||||||
|
|
||||||
|
private int bitrate;
|
||||||
|
|
||||||
|
private String frequency;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void printTitle() {
|
||||||
|
System.out.println("AudioMedia Title");
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBitrate() {
|
||||||
|
return bitrate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBitrate(int bitrate) {
|
||||||
|
this.bitrate = bitrate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFrequency() {
|
||||||
|
return frequency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFrequency(String frequency) {
|
||||||
|
this.frequency = frequency;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "AudioMedia{" +
|
||||||
|
"id=" + this.getId() +
|
||||||
|
", title='" + this.getTitle() + '\'' +
|
||||||
|
", artist='" + this.getArtist() + '\'' +
|
||||||
|
", bitrate=" + bitrate +
|
||||||
|
", frequency='" + frequency + '\'' +
|
||||||
|
"} ";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.model;
|
||||||
|
|
||||||
|
public class Media {
|
||||||
|
|
||||||
|
private int id;
|
||||||
|
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
private String artist;
|
||||||
|
|
||||||
|
public void printTitle() {
|
||||||
|
System.out.println("Media Title");
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTitle() {
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTitle(String title) {
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getArtist() {
|
||||||
|
return artist;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setArtist(String artist) {
|
||||||
|
this.artist = artist;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Media{" +
|
||||||
|
"id=" + id +
|
||||||
|
", title='" + title + '\'' +
|
||||||
|
", artist='" + artist + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.model;
|
||||||
|
|
||||||
|
public class VideoMedia extends Media {
|
||||||
|
|
||||||
|
private String resolution;
|
||||||
|
|
||||||
|
private String aspectRatio;
|
||||||
|
|
||||||
|
public String getResolution() {
|
||||||
|
return resolution;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setResolution(String resolution) {
|
||||||
|
this.resolution = resolution;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAspectRatio() {
|
||||||
|
return aspectRatio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAspectRatio(String aspectRatio) {
|
||||||
|
this.aspectRatio = aspectRatio;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "VideoMedia{" +
|
||||||
|
"id=" + this.getId() +
|
||||||
|
", title='" + this.getTitle() + '\'' +
|
||||||
|
", artist='" + this.getArtist() + '\'' +
|
||||||
|
"resolution='" + resolution + '\'' +
|
||||||
|
", aspectRatio='" + aspectRatio + '\'' +
|
||||||
|
"} ";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.player;
|
||||||
|
|
||||||
|
public interface AdvancedPlayerOptions {
|
||||||
|
|
||||||
|
void seek();
|
||||||
|
|
||||||
|
void fastForward();
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.player;
|
||||||
|
|
||||||
|
public interface MediaPlayer {
|
||||||
|
|
||||||
|
void play();
|
||||||
|
|
||||||
|
void pause();
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.player.impl;
|
||||||
|
|
||||||
|
import com.baeldung.implementsvsextends.media.player.MediaPlayer;
|
||||||
|
|
||||||
|
public class AudioMediaPlayer implements MediaPlayer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void play() {
|
||||||
|
System.out.println("AudioMediaPlayer is Playing");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pause() {
|
||||||
|
System.out.println("AudioMediaPlayer is Paused");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.player.impl;
|
||||||
|
|
||||||
|
import com.baeldung.implementsvsextends.media.model.Media;
|
||||||
|
import com.baeldung.implementsvsextends.media.player.MediaPlayer;
|
||||||
|
|
||||||
|
public class CustomMediaPlayer extends Media implements MediaPlayer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void play() {
|
||||||
|
System.out.println("CustomMediaPlayer is Playing");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pause() {
|
||||||
|
System.out.println("CustomMediaPlayer is Paused");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.player.impl;
|
||||||
|
|
||||||
|
import com.baeldung.implementsvsextends.media.player.AdvancedPlayerOptions;
|
||||||
|
import com.baeldung.implementsvsextends.media.player.MediaPlayer;
|
||||||
|
|
||||||
|
public class MultiMediaPlayer implements MediaPlayer, AdvancedPlayerOptions {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void play() {
|
||||||
|
System.out.println("MultiMediaPlayer is Playing");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pause() {
|
||||||
|
System.out.println("MultiMediaPlayer is Paused");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void seek() {
|
||||||
|
System.out.println("MultiMediaPlayer is being seeked");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fastForward() {
|
||||||
|
System.out.println("MultiMediaPlayer is being fast forwarded");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.player.impl;
|
||||||
|
|
||||||
|
import com.baeldung.implementsvsextends.media.player.MediaPlayer;
|
||||||
|
|
||||||
|
public class VideoMediaPlayer implements MediaPlayer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void play() {
|
||||||
|
System.out.println("VideoMediaPlayer is Playing");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pause() {
|
||||||
|
System.out.println("VideoMediaPlayer is Paused");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.model;
|
||||||
|
|
||||||
|
import org.hamcrest.CoreMatchers;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class AudioMediaUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenAudioMediaInstance_whenCheckedType_thenIsInstanceOfMedia() {
|
||||||
|
AudioMedia audioMedia = new AudioMedia();
|
||||||
|
Assert.assertThat(audioMedia, CoreMatchers.<AudioMedia>instanceOf(Media.class));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.model;
|
||||||
|
|
||||||
|
import org.hamcrest.CoreMatchers;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class VideoMediaUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenVideoMediaInstance_whenCheckedType_thenIsInstanceOfMedia() {
|
||||||
|
VideoMedia videoMedia = new VideoMedia();
|
||||||
|
Assert.assertThat(videoMedia, CoreMatchers.<VideoMedia>instanceOf(Media.class));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.player.impl;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.jupiter.api.AfterEach;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
|
public class AudioMediaPlayerUnitTest {
|
||||||
|
|
||||||
|
private final PrintStream standardOut = System.out;
|
||||||
|
private final ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream();
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void setUp() {
|
||||||
|
System.setOut(new PrintStream(outputStreamCaptor));
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterEach
|
||||||
|
public void tearDown() {
|
||||||
|
System.setOut(standardOut);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenAudioMediaPlayer_whenPlay_thenPrintsPlayingString() {
|
||||||
|
AudioMediaPlayer audioMediaPlayer = new AudioMediaPlayer();
|
||||||
|
audioMediaPlayer.play();
|
||||||
|
Assert.assertEquals("AudioMediaPlayer is Playing", outputStreamCaptor.toString()
|
||||||
|
.trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenAudioMediaPlayer_whenPause_thenPrintsPausedString() {
|
||||||
|
AudioMediaPlayer audioMediaPlayer = new AudioMediaPlayer();
|
||||||
|
audioMediaPlayer.pause();
|
||||||
|
Assert.assertEquals("AudioMediaPlayer is Paused", outputStreamCaptor.toString()
|
||||||
|
.trim());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.player.impl;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.jupiter.api.AfterEach;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
|
public class MultiMediaPlayerUnitTest {
|
||||||
|
|
||||||
|
private final PrintStream standardOut = System.out;
|
||||||
|
private final ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream();
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void setUp() {
|
||||||
|
System.setOut(new PrintStream(outputStreamCaptor));
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterEach
|
||||||
|
public void tearDown() {
|
||||||
|
System.setOut(standardOut);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenMultiMediaPlayer_whenPlay_thenPrintsPlayingString() {
|
||||||
|
MultiMediaPlayer multiMediaPlayer = new MultiMediaPlayer();
|
||||||
|
multiMediaPlayer.play();
|
||||||
|
Assert.assertEquals("MultiMediaPlayer is Playing", outputStreamCaptor.toString()
|
||||||
|
.trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenMultiMediaPlayer_whenPause_thenPrintsPausedString() {
|
||||||
|
MultiMediaPlayer multiMediaPlayer = new MultiMediaPlayer();
|
||||||
|
multiMediaPlayer.pause();
|
||||||
|
Assert.assertEquals("MultiMediaPlayer is Paused", outputStreamCaptor.toString()
|
||||||
|
.trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenMultiMediaPlayer_whenSeek_thenPrintsPausedString() {
|
||||||
|
MultiMediaPlayer multiMediaPlayer = new MultiMediaPlayer();
|
||||||
|
multiMediaPlayer.seek();
|
||||||
|
Assert.assertEquals("MultiMediaPlayer is being seeked", outputStreamCaptor.toString()
|
||||||
|
.trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenMultiMediaPlayer_whenFastForward_thenPrintsPausedString() {
|
||||||
|
MultiMediaPlayer multiMediaPlayer = new MultiMediaPlayer();
|
||||||
|
multiMediaPlayer.fastForward();
|
||||||
|
Assert.assertEquals("MultiMediaPlayer is being fast forwarded",
|
||||||
|
outputStreamCaptor.toString()
|
||||||
|
.trim());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.baeldung.implementsvsextends.media.player.impl;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.jupiter.api.AfterEach;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
|
public class VideoMediaPlayerUnitTest {
|
||||||
|
|
||||||
|
private final PrintStream standardOut = System.out;
|
||||||
|
private final ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream();
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void setUp() {
|
||||||
|
System.setOut(new PrintStream(outputStreamCaptor));
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterEach
|
||||||
|
public void tearDown() {
|
||||||
|
System.setOut(standardOut);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenVideoMediaPlayer_whenPlay_thenPrintsPlayingString() {
|
||||||
|
VideoMediaPlayer videoMediaPlayer = new VideoMediaPlayer();
|
||||||
|
videoMediaPlayer.play();
|
||||||
|
Assert.assertEquals("VideoMediaPlayer is Playing", outputStreamCaptor.toString()
|
||||||
|
.trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenVideoMediaPlayer_whenPause_thenPrintsPausedString() {
|
||||||
|
VideoMediaPlayer videoMediaPlayer = new VideoMediaPlayer();
|
||||||
|
videoMediaPlayer.pause();
|
||||||
|
Assert.assertEquals("VideoMediaPlayer is Paused", outputStreamCaptor.toString()
|
||||||
|
.trim());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue