class Main {
public static void main(String[] args) {
System.out.println("Рисуем флаг России:");
System.out.println("Флагшток нарисован");
System.out.println("Полоса белого цвета нарисована");
System.out.println("Полоса синего цвета нарисована");
System.out.println("Полоса красного цвета нарисована");
}
}
class Main {
public static void main(String[] args) {
System.out.println("Рисуем флаг России:");
System.out.println("Флагшток нарисован");
System.out.println("Полоса белого цвета нарисована");
System.out.println("Полоса синего цвета нарисована");
System.out.println("Полоса красного цвета нарисована");
System.out.println("\nРисуем флаг Нидерландов:");
System.out.println("Флагшток нарисован");
System.out.println("Полоса красного цвета нарисована");
System.out.println("Полоса белого цвета нарисована");
System.out.println("Полоса синего цвета нарисована");
}
}
class Colors {
static void paintWhiteColor() {
System.out.println("Полоса белого цвета нарисована");
}
static void paintBlueColor() {
System.out.println("Полоса синего цвета нарисована");
}
static void paintRedColor() {
System.out.println("Полоса красного цвета нарисована");
}
}
class RussianFlag {
void drawFlag() {
drawFlagpole();
Colors.paintWhiteColor();
Colors.paintBlueColor();
Colors.paintRedColor();
}
private void drawFlagpole() {
System.out.println("Флагшток нарисован");
}
}
class NetherlandsFlag {
void drawFlag() {
drawFlagpole();
Colors.paintRedColor();
Colors.paintWhiteColor();
Colors.paintBlueColor();
}
private void drawFlagpole() {
System.out.println("Флагшток нарисован");
}
}
class Main {
public static void main(String[] args) {
System.out.println("Рисуем флаг России:");
RussianFlag russianFlag = new RussianFlag();
russianFlag.drawFlag();
System.out.println("\nРисуем флаг Нидерландов:");
NetherlandsFlag netherlandsFlag = new NetherlandsFlag();
netherlandsFlag.drawFlag();
}
}
class Flagpole {
static void drawFlagpole() {
System.out.println("Флагшток нарисован");
}
}
class RussianFlag extends Flagpole {
void drawFlag() {
drawFlagpole();
Colors.paintWhiteColor();
Colors.paintBlueColor();
Colors.paintRedColor();
}
}
class NetherlandsFlag extends Flagpole {
void drawFlag() {
drawFlagpole();
Colors.paintRedColor();
Colors.paintWhiteColor();
Colors.paintBlueColor();
}
}
abstract class AbstractThreeRowsFlag {
abstract void drawUpperLevel();
abstract void drawMiddleLevel();
abstract void drawBottomLevel();
final void drawFlag() {
drawFlagpole();
drawUpperLevel();
drawMiddleLevel();
drawBottomLevel();
}
private void drawFlagpole() {
System.out.println("Флагшток нарисован");
}
}
class RussianFlag extends AbstractThreeRowsFlag {
@Override
void drawUpperLevel() {
Colors.paintWhiteColor();
}
@Override
void drawMiddleLevel() {
Colors.paintBlueColor();
}
@Override
void drawBottomLevel() {
Colors.paintRedColor();
}
}
class NetherlandsFlag extends AbstractThreeRowsFlag {
@Override
void drawUpperLevel() {
Colors.paintRedColor();
}
@Override
void drawMiddleLevel() {
Colors.paintWhiteColor();
}
@Override
void drawBottomLevel() {
Colors.paintBlueColor();
}
}
class Main {
public static void main(String[] args) {
System.out.println("Рисуем флаг России:");
AbstractThreeRowsFlag russianFlag = new RussianFlag();
russianFlag.drawFlag();
System.out.println("\nРисуем флаг Нидерландов:");
AbstractThreeRowsFlag netherlandsFlag = new NetherlandsFlag();
netherlandsFlag.drawFlag();
}
}
abstract class AbstractThreeRowsFlag {
abstract void drawUpperLevel();
abstract void drawMiddleLevel();
abstract void drawBottomLevel();
final void drawFlag() {
drawFlagpole();
drawUpperLevel();
drawMiddleLevel();
drawBottomLevel();
drawBlazon();
}
void drawFlagpole() {
System.out.println("Флагшток нарисован");
}
void drawBlazon() {}
}
class RussianFlag extends AbstractThreeRowsFlag {
@Override
void drawUpperLevel() {
Colors.paintWhiteColor();
}
@Override
void drawMiddleLevel() {
Colors.paintBlueColor();
}
@Override
void drawBottomLevel() {
Colors.paintRedColor();
}
@Override
void drawBlazon() {
System.out.println("Герб нарисован");
}
}
interface ThreeRowsFlag {
void drawUpperLevel();
void drawMiddleLevel();
void drawBottomLevel();
default void drawFlag() {
drawFlagpole();
drawUpperLevel();
drawMiddleLevel();
drawBottomLevel();
}
default void drawFlagpole() {
System.out.println("Флагшток нарисован");
}
}
class RussianFlag implements ThreeRowsFlag {
@Override
public void drawUpperLevel() {
Colors.paintWhiteColor();
}
@Override
public void drawMiddleLevel() {
Colors.paintBlueColor();
}
@Override
public void drawBottomLevel() {
Colors.paintRedColor();
}
@Override
public void drawFlag() {
drawFlagpole();
System.err.println("Мы изменили алгоритм рисования флага");
System.err.println("Не реализуйте шаблонные методы в интерфейсе");
}
}