BAEL-2431 Implementing multi-inheritance and Polymorphism using interfaces (#5924)
* Implementing Hexagonal Architecture in java * Implementing multi-inheritance and Polymorphism using interfaces * Removing hexagonal code * Deleting hexagonal architecture code * fix for unit test names
This commit is contained in:
parent
1fc93000b6
commit
94f4092314
|
@ -0,0 +1,5 @@
|
||||||
|
package com.baeldung.interfaces.multiinheritance;
|
||||||
|
|
||||||
|
public abstract interface Fly{
|
||||||
|
void fly();
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package com.baeldung.interfaces.multiinheritance;
|
||||||
|
|
||||||
|
public interface Transform {
|
||||||
|
void transform();
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package com.baeldung.interfaces.multiinheritance;
|
||||||
|
|
||||||
|
public class Vehicle implements Fly, Transform {
|
||||||
|
@Override
|
||||||
|
public void fly() {
|
||||||
|
System.out.println("I can Fly!!");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void transform() {
|
||||||
|
System.out.println("I can Transform!!");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.baeldung.interfaces.polymorphysim;
|
||||||
|
|
||||||
|
public class Circle implements Shape {
|
||||||
|
|
||||||
|
private double radius;
|
||||||
|
|
||||||
|
public Circle(double radius){
|
||||||
|
this.radius = radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String name() {
|
||||||
|
return "Circle";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double area() {
|
||||||
|
return Math.PI * (radius * radius);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package com.baeldung.interfaces.polymorphysim;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class DisplayShape {
|
||||||
|
|
||||||
|
private ArrayList<Shape> shapes;
|
||||||
|
|
||||||
|
public DisplayShape() {
|
||||||
|
shapes = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(Shape shape) {
|
||||||
|
shapes.add(shape);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void display() {
|
||||||
|
for (Shape shape : shapes) {
|
||||||
|
System.out.println(shape.name() + " area: " + shape.area());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.baeldung.interfaces.polymorphysim;
|
||||||
|
|
||||||
|
public class MainPolymorphic {
|
||||||
|
public static void main(String[] args){
|
||||||
|
|
||||||
|
Shape circleShape = new Circle(2);
|
||||||
|
Shape squareShape = new Square(2);
|
||||||
|
|
||||||
|
DisplayShape displayShape = new DisplayShape();
|
||||||
|
displayShape.add(circleShape);
|
||||||
|
displayShape.add(squareShape);
|
||||||
|
|
||||||
|
displayShape.display();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.baeldung.interfaces.polymorphysim;
|
||||||
|
|
||||||
|
public interface Shape {
|
||||||
|
public abstract String name();
|
||||||
|
public abstract double area();
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.baeldung.interfaces.polymorphysim;
|
||||||
|
|
||||||
|
public class Square implements Shape {
|
||||||
|
|
||||||
|
private double width;
|
||||||
|
|
||||||
|
public Square(double width) {
|
||||||
|
this.width = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String name() {
|
||||||
|
return "Square";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double area() {
|
||||||
|
return width * width;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package com.baeldung.interfaces;
|
||||||
|
|
||||||
|
import com.baeldung.interfaces.polymorphysim.Circle;
|
||||||
|
import com.baeldung.interfaces.polymorphysim.Shape;
|
||||||
|
import com.baeldung.interfaces.polymorphysim.Square;
|
||||||
|
import org.assertj.core.api.Assertions;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class PolymorphysimUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenInterfacePointsToCircle_CircleAreaMethodisBeingCalled(){
|
||||||
|
double expectedArea = 12.566370614359172;
|
||||||
|
Shape circle = new Circle(2);
|
||||||
|
double actualArea = circle.area();
|
||||||
|
Assertions.assertThat(actualArea).isEqualTo(expectedArea);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenInterfacePointsToSquare_SquareAreaMethodisBeingCalled(){
|
||||||
|
double expectedArea = 4;
|
||||||
|
Shape square = new Square(2);
|
||||||
|
double actualArea = square.area();
|
||||||
|
Assertions.assertThat(actualArea).isEqualTo(expectedArea);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue