abstract class Shape{
protected String name;
protected double area;
public abstract double calcArea();
}
---

class Circle extends Shape{
    private double radius;
    public Circle(double r) {
        radius = r;
    }
    public double calcArea() {
        area = 3.14*(radius*radius);
        return (area);
    };
}
---

class CalculateAreas {
    Shape[] shapes;
    double sumTotal=0;
    public CalculateAreas(Shape[] sh){
        this.shapes = sh;
    }
    public double sumAreas() {
        sumTotal=0;
        for (inti=0; i<shapes.length; i++) {
            sumTotal = sumTotal + shapes[i].calcArea();
        }
        return sumTotal;
    }
    public void output() {
        System.out.println("Suma wszystkich pól powierzchni = " + sumTotal);
    }
}
---

public class TestShape {
    public static void main(String args[]) {
        System.out.println("Witaj, świecie!");
        Circle circle = new Circle(1);
        Shape[] shapeArray = new Shape[1];
        shapeArray[0] = circle;
        CalculateAreas ca = new CalculateAreas(shapeArray);
        ca.sumAreas();
        ca.output();
    }
}
---

class CalculateAreas {
    Shape[] shapes;
    double sumTotal=0;
    public CalculateAreas(Shape[] sh){
        this.shapes = sh;
    }
    public double sumAreas() {
        sumTotal=0;
        for (inti=0; i<shapes.length; i++) {
            sumTotal = sumTotal + shapes[i].calcArea();
        }
        return sumTotal;
    }
}

class OutputAreas {
    double areas=0;
    public OutputAreas(double a){
        this.areas = a;
    }
    public void console() {
        System.out.println("Suma wszystkich pól powierzchni = " + areas);
    }
    public void HTML() {
        System.out.println("<HTML>");
        System.out.println("Suma wszystkich pól powierzchni = " + areas);
        System.out.println("</HTML>");
    }
}
---

public class TestShape {
    public static void main(String args[]) {

        System.out.println("Witaj, świecie!");

        Circle circle = new Circle(1);

        Shape[] shapeArray = new Shape[1];
        shapeArray[0] = circle;

        CalculateAreas ca = new CalculateAreas(shapeArray);

        CalculateAreas sum = new CalculateAreas(shapeArray);
        OutputAreas oAreas = new OutputAreas(sum.sumAreas());

        oAreas.console(); // wynik do konsoli
        oAreas.HTML();    // wynik w formacie HTML
    }
}
---

class Rectangle{
    protected double length;
    protected double width;
    public Rectangle(double l, double w) {
        length = l;
        width = w;
    };
}

class CalculateAreas {
    private double area;
    public double calcArea(Rectangle r) {
        area = r.length * r.width;
        return area;
    }
}

public class OpenClosed {
    public static void main(String args[]) {
        System.out.println("Witaj, świecie");
        Rectangle r = new Rectangle(1,2);
        CalculateAreas ca = new CalculateAreas ();
        System.out.println("Pole = "+ ca.calcArea(r));
    }
}
---

abstract class Shape {
    public abstract double getArea();
}

class Rectangle extends Shape
{
    protected double length;
    protected double width;
    public Rectangle(double l, double w) {
        length = l;
        width = w;
    };
    public double getArea() {
        return length*width;
    }
}

class Circle extends Shape
{
    protected double radius;
    public Circle(double r) {
        radius = r;
    };
    public double getArea() {
        return radius*radius*3.14;
    }
}

class CalculateAreas {
    private double area;
    public double calcArea(Shape s) {
        area = s.getArea();
        return area;
    }
}

public class OpenClosed {
    public static void main(String args[]) {
        System.out.println("Witaj, świecie");
        CalculateAreas ca = new CalculateAreas();
        Rectangle r = new Rectangle(1,2);
        System.out.println("Pole = " + ca.calcArea(r));
        Circle c = new Circle(3);
        System.out.println("Pole = " + ca.calcArea(c));
    }
}
---

abstract class Shape{
    protected double area;
    public abstract double calcArea();
}

class Rectangle extends Shape{
    private double length;
    private double width;
    public Rectangle(double l, double w){
        length = l;
        width = w;
    }
    public double calcArea() {
        area = length*width;
        return (area);
    };
}
class Square extends Rectangle{
    public Square(double s){
        super(s, s);
    }
}
public class LiskovSubstitution {
    public static void main(String args[]) {
        System.out.println("Witaj, świecie");
        Rectangle r = new Rectangle(1,2);
        System.out.println("Pole = " + r.calcArea());
        Square s = new Square(2);
        System.out.println("Pole = " + s.calcArea());
    }
}
---

public Rectangle(double l, double w){
    length = l;
    width = w;
}
---

class Square extends Rectangle{
    public Square(double s){
        super(s, s);
    }
---

abstract class Shape {
    protected double area;
    public abstract double calcArea();
}

class Rectangle extends Shape {
    private double length;
    private double width;
    public Rectangle(double l, double w) {
        length = l;
        width = w;
    }
    public double calcArea() {
        area = length*width;
        return (area);
    };
}

class Square extends Shape {
    private double side;
    public Square(double s){
        side = s;
    }

    public double calcArea() {
        area = side*side;
        return (area);
    };
}

public class LiskovSubstitution {
    public static void main(String args[]) {
        System.out.println("Witaj, świecie");
        Rectangle r = new Rectangle(1,2);
        System.out.println("Pole = " + r.calcArea());
        Square s = new Square(2);
        System.out.println("Pole = " + s.calcArea());
    }
}
---

interface IMammal {
    public void eat();
    public void makeNoise();
}

class Dog implements IMammal {
    public void eat() {
        System.out.println("Pies je.");
    }

    public void makeNoise() {
        System.out.println("Pies hałasuje.");
    }
}

public class MyClass {
    public static void main(String args[]) {
        System.out.println("Witaj, świecie");
        Dog fido = new Dog();
        fido.eat();
        fido.makeNoise();
    }
}
---

interface IEat {
    public void eat();
}

interface IMakeNoise {
    public void makeNoise();
}

class Dog implements IEat, IMakeNoise {
    public void eat() {
        System.out.println("Pies je.");
    }

    public void makeNoise() {
        System.out.println("Pies hałasuje.");
    }
}

public class MyClass {
    public static void main(String args[]) {
        System.out.println("Witaj, świecie");
        Dog fido = new Dog();
        fido.eat();
        fido.makeNoise();
    }
}
---

abstract class Mammal
{
    public abstract String makeNoise();
}
---
class Cat extends Mammal
{
    public String makeNoise()
    {
        return "Miau";
    }
}
---

public class TestMammal {
    public static void main(String args[]) {
        System.out.println("Witaj, świecie\n");

        Mammal cat = new Cat();;
        Mammal dog = new Dog();

        System.out.println("Kot robi " + cat.makeNoise());
        System.out.println("Pies robi " + dog.makeNoise());
    }
}
abstract class Mammal
{
    public abstract String makeNoise();
}
class Cat extends Mammal
{
    public String makeNoise()
    {
        return "Miau";
    }
}
class Dog extends Mammal
{
    public String makeNoise()
    {
        return "Hau";
    }
}
----

abstract class MakingNoise
{
    public abstract String makeNoise();
}
class CatNoise extends MakingNoise
{
    public String makeNoise()
    {
        return "Miau";
    }
}
---

abstract class Mammal
{
    public abstract String makeNoise();
}
class Cat extends Mammal
{
    CatNoise behavior = new CatNoise();
    public String makeNoise()
    {
        return behavior.makeNoise();
    }
}
---

public class TestMammal {
    public static void main(String args[]) {

        System.out.println("Witaj, świecie\n");

        Mammal cat = new Cat();;
        Mammal dog = new Dog();

        System.out.println("Kot robi " + cat.makeNoise());
        System.out.println("Pies robi " + dog.makeNoise());
    }
}
abstract class MakingNoise
{
    public abstract String makeNoise();
}
class CatNoise extends MakingNoise
{
    public String makeNoise()
    {
        return "Miau";
    }
}
class DogNoise extends MakingNoise
{
    public String makeNoise()
    {
        return "Hau";
    }
}
abstract class Mammal
{
    public abstract String makeNoise();
}
class Cat extends Mammal
{
    CatNoise behavior = new CatNoise();
    public String makeNoise()
    {
        return behavior.makeNoise();
    }
}
class Dog extends Mammal
{
    DogNoise behavior = new DogNoise();
    public String makeNoise()
    {
        return behavior.makeNoise();
    }
}
---
class Mammal
{
    MakingNoise speaker;

    public Mammal(MakingNoisesb)
    {
        this.speaker = sb;
    }
    public String makeNoise()
    {
        return this.speaker.makeNoise();
    }
}
---

public class TestMammal {
    public static void main(String args[]) {

        System.out.println("Witaj, świecie\n");

        Mammal cat = new Mammal(new CatNoise());
        Mammal dog = new Mammal(new DogNoise());

        System.out.println("Kot robi " + cat.makeNoise());
        System.out.println("Pies robi " + dog.makeNoise());
    }
}
class Mammal
{
    MakingNoise speaker;
    public Mammal(MakingNoisesb)
    {
        this.speaker = sb;
    }
    public String makeNoise()
    {
        return this.speaker.makeNoise();
    }
}
interface MakingNoise
{
    public String makeNoise();
}
class CatNoise implements MakingNoise
{
    public String makeNoise()
    {
        return "Miau";
    }
}
class DogNoise implements MakingNoise
{
    public String makeNoise()
    {
        return "Hau";
    }
}
