class Main {
static final String WHITE = "\u001B[97m";
static final String BLUE = "\u001B[94m";
static final String RED = "\u001B[91m";
static final String BLOCK = "█";
static final int LEN = 10;
public static void main(String[] args) {
System.out.println("Флаг России:");
System.out.println(WHITE + BLOCK.repeat(LEN));
System.out.println(BLUE + BLOCK.repeat(LEN));
System.out.println(RED + BLOCK.repeat(LEN));
System.out.println(WHITE + BLOCK);
System.out.println(BLOCK);
System.out.println(BLOCK);
}
}
class Main {
static final String WHITE = "\u001B[97m";
static final String BLUE = "\u001B[94m";
static final String RED = "\u001B[91m";
static final String BLOCK = "█";
static final int LEN = 10;
public static void main(String[] args) {
System.out.println("Флаг России:");
System.out.println(WHITE + BLOCK.repeat(LEN));
System.out.println(BLUE + BLOCK.repeat(LEN));
System.out.println(RED + BLOCK.repeat(LEN));
System.out.println(WHITE + BLOCK);
System.out.println(BLOCK);
System.out.println(BLOCK);
System.out.println("\nФлаг Нидерландов:");
System.out.println(RED + BLOCK.repeat(LEN));
System.out.println(WHITE + BLOCK.repeat(LEN));
System.out.println(BLUE + BLOCK.repeat(LEN));
System.out.println(WHITE + BLOCK);
System.out.println(BLOCK);
System.out.println(BLOCK);
}
}
class Colors {
static final String WHITE = "\u001B[97m";
static final String BLUE = "\u001B[94m";
static final String RED = "\u001B[91m";
static final String BLOCK = "█";
static final int LEN = 10;
public static void paintWhiteStripe() {
System.out.println(WHITE + BLOCK.repeat(LEN));
}
public static void paintBlueStripe() {
System.out.println(BLUE + BLOCK.repeat(LEN));
}
public static void paintRedStripe() {
System.out.println(RED + BLOCK.repeat(LEN));
}
} class RussianFlag {
void drawFlag() {
Colors.paintWhiteStripe();
Colors.paintBlueStripe();
Colors.paintRedStripe();
paintFlagpole();
}
private void paintFlagpole() {
System.out.println(Colors.WHITE + Colors.BLOCK);
System.out.println(Colors.BLOCK);
System.out.println(Colors.BLOCK);
}
} class NetherlandsFlag {
void drawFlag() {
Colors.paintRedStripe();
Colors.paintWhiteStripe();
Colors.paintBlueStripe();
paintFlagpole();
}
private void paintFlagpole() {
System.out.println(Colors.WHITE + Colors.BLOCK);
System.out.println(Colors.BLOCK);
System.out.println(Colors.BLOCK);
}
} class Main {
public static void main(String[] args) {
System.out.println("Флаг России:");
RussianFlag rf = new RussianFlag();
rf.drawFlag();
System.out.println("\nФлаг Нидерландов:");
NetherlandsFlag nf = new NetherlandsFlag();
nf.drawFlag();
}
} abstract class AbstractThreeStripeFlag {
void paintFlagpole() {
System.out.println(Colors.WHITE + Colors.BLOCK);
System.out.println(Colors.BLOCK);
System.out.println(Colors.BLOCK);
}
} class RussianFlag extends AbstractThreeStripeFlag {
void drawFlag() {
Colors.paintWhiteStripe();
Colors.paintBlueStripe();
Colors.paintRedStripe();
paintFlagpole();
}
} class NetherlandsFlag extends AbstractThreeStripeFlag {
void drawFlag() {
Colors.paintRedStripe();
Colors.paintWhiteStripe();
Colors.paintBlueStripe();
paintFlagpole();
}
} abstract class AbstractThreeStripeFlag {
abstract void paintUpperStripe();
abstract void paintMiddleStripe();
abstract void paintBottomStripe();
final void drawFlag(String flagName) {
System.out.println("\n" + flagName);
paintUpperStripe();
paintMiddleStripe();
paintBottomStripe();
paintFlagpole();
}
private void paintFlagpole() {
System.out.println(Colors.WHITE + Colors.BLOCK);
System.out.println(Colors.BLOCK);
System.out.println(Colors.BLOCK);
}
} class RussianFlag extends AbstractThreeStripeFlag {
@Override
void paintUpperStripe() {
Colors.paintWhiteStripe();
}
@Override
void paintMiddleStripe() {
Colors.paintBlueStripe();
}
@Override
void paintBottomStripe() {
Colors.paintRedStripe();
}
} class NetherlandsFlag extends AbstractThreeStripeFlag {
@Override
void paintUpperStripe() {
Colors.paintRedStripe();
}
@Override
void paintMiddleStripe() {
Colors.paintWhiteStripe();
}
@Override
void paintBottomStripe() {
Colors.paintBlueStripe();
}
} class Main {
public static void main(String[] args) {
AbstractThreeStripeFlag rf = new RussianFlag();
rf.drawFlag("Флаг России:");
AbstractThreeStripeFlag nf = new NetherlandsFlag();
nf.drawFlag("Флаг Нидерландов:");
}
}
interface ThreeStripeFlag {
void drawUpperStrip();
void drawMiddleStrip();
void drawBottomStrip();
default void drawFlag(String flagName) {
System.out.println("\n" + flagName);
drawUpperStrip();
drawMiddleStrip();
drawBottomStrip();
paintFlagpole();
}
default void paintFlagpole() {
System.out.println(Colors.WHITE + Colors.BLOCK);
System.out.println(Colors.BLOCK);
System.out.println(Colors.BLOCK);
}
} class RussianFlag implements ThreeStripeFlag {
@Override
public void drawUpperStrip() {
Colors.paintWhiteStripe();
}
@Override
public void drawMiddleStrip() {
Colors.paintBlueStripe();
}
@Override
public void drawBottomStrip() {
Colors.paintRedStripe();
}
@Override
public void drawFlag(String flagName) {
System.out.println("""
Мы изменили алгоритм рисования RussianFlag.
Не реализуйте шаблонные методы в интерфейсе.""");
}
}